diff --git a/src/rtl/neuron_matrix.sv b/src/rtl/neuron_matrix.sv
index 1dea4b82282376d21d640d6f186cdc223204f2a9..57107df25361bdcc91bbc030b21afd06cd6e6a78 100644
--- a/src/rtl/neuron_matrix.sv
+++ b/src/rtl/neuron_matrix.sv
@@ -57,21 +57,27 @@ module neuron_matrix #(
 
     // wires for wiring the network together
     wire [NUMBER_NEURONS_W-1:0][values_layer+1:0]translated_address;
-    for(gv=0;gv<NUMBER_NEURONS_W;gv=gv+1) begin
-        assign translated_address[gv] = address-gv*values_layer;
-    end
+    generate
+        for(gv=0;gv<NUMBER_NEURONS_W;gv=gv+1) begin : translate_addr_m
+            assign translated_address[gv] = address-gv*values_layer;
+        end
+    endgenerate
 
     wire[NUMBER_NEURONS_W-1:0][NUMBER_NEURONS_H-1:0] layer_output_array;
 
     wire [NUMBER_NEURONS_W-1:0] read_enable_array;
-    for(gv=0;gv<NUMBER_NEURONS_W;gv=gv+1) begin
-        assign read_enable_array[gv] = (translated_address[gv]<values_layer) && read_enable;
-    end
+    generate
+        for(gv=0;gv<NUMBER_NEURONS_W;gv=gv+1) begin : re_arr_m
+            assign read_enable_array[gv] = (translated_address[gv]<values_layer) && read_enable;
+        end
+    endgenerate
 
     wire [NUMBER_NEURONS_W-1:0] write_enable_array;
-    for(gv=0;gv<NUMBER_NEURONS_W;gv=gv+1) begin
-        assign write_enable_array[gv] = (translated_address[gv]<values_layer) && write_enable;
-    end
+    generate
+        for(gv=0;gv<NUMBER_NEURONS_W;gv=gv+1) begin : rw_arr_m
+            assign write_enable_array[gv] = (translated_address[gv]<values_layer) && write_enable;
+        end
+    endgenerate
 
     wire[NUMBER_NEURONS_W-1:0] inference_done_array;
     wire[NUMBER_NEURONS_W-1:0] backprop_done_array;
@@ -101,35 +107,37 @@ module neuron_matrix #(
     end
 
     genvar gv;
-    for(gv=0;gv<NUMBER_NEURONS_W;gv=gv+1) begin
-        layer #(
-            .NUMBER_SYNAPSES(NUMBER_SYNAPSES),
-            .NUMBER_NEURONS(NUMBER_NEURONS_H)
-        )
-        hidden_layer(
-            .clk(clk),
-            .rst(rst),
-            // Enable inference
-            .run_inference((gv==0)?run_inference:inference_done_array[gv-1]),
-            .inference_done(inference_done_array[gv]),
-            // Data IO
-            .layer_inputs((gv==0)?layer_inputs:layer_output_array[gv-1]),
-            .layer_outputs(layer_output_array[gv]),
-            // Backprop
-            .backprop_in_port((gv==0)?backprop_in_port:backprop_ports[gv-1]),
-            .backprop_out_port(backprop_ports[gv]),
-            .backprop_done(backprop_done_array[gv]),
-            .backprop_enable(backprop_enable),
-            // Data interface
-            .write_enable(write_enable_array[gv]),
-            .read_enable(read_enable_array[gv]),
-            .write_done(write_done_array[gv]),
-            .read_done(read_done_array[gv]),
-            .address(translated_address[gv]),
-            .data_i(data_i),
-            .data_o(data_o_array[gv])
-        );
-    end
+    generate
+        for(gv=0;gv<NUMBER_NEURONS_W;gv=gv+1) begin : matrix_layers
+            layer #(
+                .NUMBER_SYNAPSES(NUMBER_SYNAPSES),
+                .NUMBER_NEURONS(NUMBER_NEURONS_H)
+            )
+            hidden_layer(
+                .clk(clk),
+                .rst(rst),
+                // Enable inference
+                .run_inference((gv==0)?run_inference:inference_done_array[gv-1]),
+                .inference_done(inference_done_array[gv]),
+                // Data IO
+                .layer_inputs((gv==0)?layer_inputs:layer_output_array[gv-1]),
+                .layer_outputs(layer_output_array[gv]),
+                // Backprop
+                .backprop_in_port((gv==0)?backprop_in_port:backprop_ports[gv-1]),
+                .backprop_out_port(backprop_ports[gv]),
+                .backprop_done(backprop_done_array[gv]),
+                .backprop_enable(backprop_enable),
+                // Data interface
+                .write_enable(write_enable_array[gv]),
+                .read_enable(read_enable_array[gv]),
+                .write_done(write_done_array[gv]),
+                .read_done(read_done_array[gv]),
+                .address(translated_address[gv]),
+                .data_i(data_i),
+                .data_o(data_o_array[gv])
+            );
+        end
+    endgenerate
 
     assign backprop_out_port = backprop_ports[NUMBER_NEURONS_W-1];
     assign layer_outputs = layer_output_array[NUMBER_NEURONS_W-1];