aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjoshua <joshua@joshuayun.com>2023-12-22 20:39:14 -0500
committerjoshua <joshua@joshuayun.com>2023-12-22 20:39:58 -0500
commitc2f4f7dad93d68d2757b86ff28c1058982c22da5 (patch)
tree1bbae88e073cc20b9459dec338790d18150e1e1e
parent64174676bb02a59cda6640ccd1eb941f906494b1 (diff)
downloadriscv-processor-c2f4f7dad93d68d2757b86ff28c1058982c22da5.tar.gz
initial multiplier commit
-rw-r--r--.gitignore1
-rw-r--r--multiplier/Makefile10
-rw-r--r--multiplier/full_adder.v12
-rwxr-xr-xmultiplier/gen_wallace.py354
-rw-r--r--multiplier/half_adder.v11
-rw-r--r--multiplier/multiplier.v15
-rw-r--r--multiplier/partial_products.v15
-rw-r--r--multiplier/tb_multiplier.cpp93
-rw-r--r--multiplier/wallace_adder.v1521
9 files changed, 2032 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..5ca9299
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+*obj_dir*
diff --git a/multiplier/Makefile b/multiplier/Makefile
new file mode 100644
index 0000000..d14a14f
--- /dev/null
+++ b/multiplier/Makefile
@@ -0,0 +1,10 @@
+all: tree test
+tree:
+ ./gen_wallace.py 32 -a
+test:
+ verilator --trace --cc --exe --build -j 0 -Wall tb_multiplier.cpp multiplier.v
+ ./obj_dir/Vmultiplier
+synth:
+ yosys -p "read_verilog multiplier.v ; hierarchy -top multiplier -libdir . ; synth_ecp5"
+clean:
+ rm -rf log_* obj_dir
diff --git a/multiplier/full_adder.v b/multiplier/full_adder.v
new file mode 100644
index 0000000..1238aa7
--- /dev/null
+++ b/multiplier/full_adder.v
@@ -0,0 +1,12 @@
+module full_adder (
+ input logic a,
+ input logic b,
+ input logic c,
+ output logic sum,
+ output logic carry
+);
+
+assign sum = a ^ b ^ c;
+assign carry = (a & b) | (c & (a ^ b));
+
+endmodule
diff --git a/multiplier/gen_wallace.py b/multiplier/gen_wallace.py
new file mode 100755
index 0000000..ed5c4f5
--- /dev/null
+++ b/multiplier/gen_wallace.py
@@ -0,0 +1,354 @@
+#!/usr/bin/python3
+import argparse
+
+def gen_half_adder():
+ print(f"---------- Half adder generation ----------")
+ f = open(f"half_adder.v", "w")
+ f.write(f"""module half_adder (
+ input logic a,
+ input logic b,
+ output logic sum,
+ output logic carry
+);
+
+assign sum = a ^ b;
+assign carry = a & b;
+
+endmodule
+""")
+ f.close()
+
+def gen_full_adder():
+ print(f"---------- Full adder generation ----------")
+ f = open(f"full_adder.v", "w")
+ f.write(f"""module full_adder (
+ input logic a,
+ input logic b,
+ input logic c,
+ output logic sum,
+ output logic carry
+);
+
+assign sum = a ^ b ^ c;
+assign carry = (a & b) | (c & (a ^ b));
+
+endmodule
+""")
+ f.close()
+
+def gen_multiplier(bits):
+ print(f"\n---------- {bits} Bit Top Level Multiplier Generation ----------")
+ f = open(f"multiplier.v", "w")
+ f.write(f"""module multiplier(
+ input logic [{bits-1}:0] a,
+ input logic [{bits-1}:0] b,
+ output logic [{2*bits-1}:0] c
+);
+
+ logic [{bits-1}:0] partial_prod [0:{bits-1}];
+ logic [{2*bits-1}:0] partial_sum;
+
+ assign c = partial_sum;
+
+ wallace_adder wadder0(partial_prod, partial_sum);
+ partial_products partprod0(a, b, partial_prod);
+
+endmodule
+""")
+ f.close()
+
+def gen_partial_products(bits):
+ print(f"------------ {bits} Bit Partial Products Generation ------------")
+ f = open(f"partial_products.v", "w")
+ f.write(f"""module partial_products
+(
+ input logic [{bits-1}:0] a,
+ input logic [{bits-1}:0] b,
+ output logic [{bits-1}:0] c [0:{bits-1}]
+);
+
+always @ (*) begin
+ integer i;
+ for (i = 0; i < {bits}; i=i+1) begin
+ c[i][{bits-1}:0] = {{{bits}{{b[i]}}}} & a;
+ end
+end
+
+endmodule
+""")
+
+ f.close()
+
+def add_half_adder(reduction_layers, instantiations, net_names, col, col_idx, curr_layer, prev_layer, debug):
+ # Generates nets and updates the layer net array
+ curr_col_net_idx = len(reduction_layers[curr_layer][col_idx])
+ next_col_net_idx = len(reduction_layers[curr_layer][col_idx+1])
+ cout = f"layer{curr_layer}_col{col_idx}_net{curr_col_net_idx}"
+ sout = f"layer{curr_layer}_col{col_idx+1}_net{next_col_net_idx}"
+
+ reduction_layers[curr_layer][col_idx].append(cout)
+ reduction_layers[curr_layer][col_idx+1].append(sout)
+
+ # Adds half adder to instantiations
+ net_names[prev_layer].append(cout)
+ net_names[prev_layer].append(sout)
+ a, b = [col.pop() for i in range(2)]
+ instantiations[prev_layer].append(f"half_adder ha_add{curr_layer}_{len(instantiations[prev_layer])} ({a}, {b}, {cout}, {sout});")
+
+ # Debug Print half adder
+ if debug:
+ print(f"half_adder ha_add{curr_layer}_{len(instantiations[prev_layer])} ({a}, {b}, {cout}, {sout});")
+
+ pass
+
+def add_full_adder(reduction_layers, instantiations, net_names, col, col_idx, curr_layer, prev_layer, debug):
+ # Generates nets and updates the layer net array
+ curr_col_net_idx = len(reduction_layers[curr_layer][col_idx])
+ next_col_net_idx = len(reduction_layers[curr_layer][col_idx+1])
+ cout = f"layer{curr_layer}_col{col_idx}_net{curr_col_net_idx}"
+ sout = f"layer{curr_layer}_col{col_idx+1}_net{next_col_net_idx}"
+ reduction_layers[curr_layer][col_idx].append(cout)
+ reduction_layers[curr_layer][col_idx+1].append(sout)
+
+ # Adds nets and adders to be instantiated
+ net_names[prev_layer].append(cout)
+ net_names[prev_layer].append(sout)
+ a, b, cin = [col.pop() for i in range(3)]
+ instantiations[prev_layer].append(f"full_adder fa_add{curr_layer}_{len(instantiations[prev_layer])} ({a}, {b}, {cin}, {cout}, {sout});")
+
+ # Debug Print half adder
+ if debug:
+ print(f"full_adder fa_add{curr_layer}_{len(instantiations[prev_layer])} ({a}, {b}, {cin}, {cout}, {sout});")
+
+def add_passthrough(reduction_layers, instantiations, net_names, col, col_idx, curr_layer, prev_layer, debug):
+# Assigns passthrough for remaining logic and updates the counter
+ curr_col_net_idx = len(reduction_layers[curr_layer][col_idx])
+ passthrough = f"layer{curr_layer}_col{col_idx}_net{curr_col_net_idx}"
+
+ # Adds passthrough to netlist array
+ reduction_layers[curr_layer][col_idx].append(passthrough)
+
+ # Adds the assign statement to passthrough
+ net_names[prev_layer].append(passthrough)
+ input_net1 = col.pop()
+ instantiations[prev_layer].append(f"assign {passthrough} = {input_net1};")
+
+ if debug:
+ print(f"assign {passthrough} = {input_net1};")
+
+def gen_adder_tree(bits, debug):
+ print(f"--------------- {bits} Bit Adder Tree Generation ---------------")
+
+ # Parameters of the adder tree generate script
+ num_cols = (2 * bits)
+ layer_limit = 50
+
+ # Initialize reduction layer array
+ reduction_layers = []
+
+ # Initialize instantiations and net names
+ ha_instantiations = []
+ fa_instantiations = []
+ pass_instantiations = []
+ net_names = []
+
+ # Partial layer is the "zeroeth" reduction layer, initialize it
+ curr_layer = 0
+ reduction_layers.append([[] for i in range(num_cols)])
+
+ # Fill up partial layer
+ for i in range(bits):
+ for j in range(bits):
+ reduction_layers[curr_layer][i+j].append(f"partial_prod[{i}][{j}]")
+
+ # Debug partial layer print
+ if debug:
+ print(f"\n--------- LAYER {curr_layer} -------------")
+ for col_idx, reduce in enumerate(reduction_layers[curr_layer]):
+ print(f"Col: {col_idx}, Length: {len(reduce)}, {reduce}")
+
+ # Build out subsequent reduction layers
+ curr_layer = 1
+ prev_layer = 0
+
+ instantiation_idx = 0
+
+ # Run until we can add the remaining bit vectors together or non-convergent solution
+ while (len(max(reduction_layers[prev_layer], key=len)) > 2 and curr_layer < layer_limit):
+ # Allocate next layer
+ if debug:
+ print(f"--------- LAYER {prev_layer} -------------")
+ reduction_layers.append([[] for i in range(num_cols)])
+ pass_instantiations.append([])
+ ha_instantiations.append([])
+ fa_instantiations.append([])
+ net_names.append([])
+
+ carry_propogation = 0
+ extra_ha = (len(max(reduction_layers[prev_layer], key=len)) == 3)
+ fa_used = False
+ ha_used = False
+
+ # Counts how many bits need to be eventually removed by this bit
+ for col_idx, col in enumerate(reduction_layers[prev_layer]):
+
+ # Check that this is actually solvable using only 2*bits output
+ if (col_idx+1 == len(reduction_layers[prev_layer]) and (len(col) + carry_propogation) > 2):
+ print("Cannot SOLVE")
+ return -1
+
+ # Debug print for this column
+ if debug:
+ print(f"Index: {col_idx}, Length: {len(col)}")
+
+ next_layer_size = carry_propogation
+ carry_propogation = 0
+
+ # Add full adders if needed
+ while (len(col) > 3):
+ add_full_adder(reduction_layers, fa_instantiations, net_names, col, col_idx, curr_layer, prev_layer, debug)
+ fa_used = True
+ # 1 carry will go to the next column next layer, and the sum will go to this col next layer
+ carry_propogation += 1
+ next_layer_size += 1
+
+ if (len(col) == 3):
+ # Only add half adder if no propogations or other adders created
+ if (fa_used == False and (ha_used == False or extra_ha == True) and next_layer_size == 0):
+ add_half_adder(reduction_layers, ha_instantiations, net_names, col, col_idx, curr_layer, prev_layer, debug)
+ ha_used = True
+ else:
+ fa_used = True
+ add_full_adder(reduction_layers, fa_instantiations, net_names, col, col_idx, curr_layer, prev_layer, debug)
+
+ # Increment the propogation and current size
+ carry_propogation += 1
+ next_layer_size += 1
+
+ if (len(col) == 2):
+ # Only add half adder if there is propogation from previous columns and if there is less than three in the next col, else pass through both
+ if (fa_used == False and (ha_used == False or extra_ha == True) and next_layer_size == 1 ):
+ add_half_adder(reduction_layers, ha_instantiations, net_names, col, col_idx, curr_layer, prev_layer, debug)
+ ha_used = True
+ carry_propogation += 1
+ next_layer_size += 1
+ else:
+ add_passthrough(reduction_layers, pass_instantiations, net_names, col, col_idx, curr_layer, prev_layer, debug)
+ add_passthrough(reduction_layers, pass_instantiations, net_names, col, col_idx, curr_layer, prev_layer, debug)
+
+ if (len(col) == 1):
+ add_passthrough(reduction_layers, pass_instantiations, net_names, col, col_idx, curr_layer, prev_layer, debug)
+
+ # Update the layer indices
+ prev_layer = curr_layer
+ curr_layer += 1
+
+ # Debug reduction layer print
+ if debug:
+ for col_idx, reduce in enumerate(reduction_layers[prev_layer]):
+ print(f"Col: {col_idx}, Length: {len(reduce)}, {reduce}")
+
+
+ # Debug final reduction layer to be added
+ if debug:
+ print("\n--------- BIT PAIRS ----------")
+ add_layer = list(zip(reduction_layers[prev_layer]))
+ add_layer.reverse()
+ for bit_pair in add_layer:
+ print(bit_pair[0])
+
+ # Add the two remaining rows of bits at the end
+ bit_vector_0 = "{ "
+ bit_vector_1 = "{ "
+ for bit_pair_idx, bit_pair in enumerate(reversed(list(zip(reduction_layers[prev_layer])))):
+
+ # Exclude MSB if no overflows to it
+ if (len(bit_pair[0]) == 0 and bit_pair_idx == 0):
+ continue
+
+ # Generate bit string for both vectors, order doesn't matter here
+ bit_vector_0 += f"{bit_pair[0][0]}, "
+ if (len(bit_pair[0]) == 2):
+ bit_vector_1 += f"{bit_pair[0][1]}, "
+ else:
+ bit_vector_1 += "1'b0, "
+
+ bit_vector_0 = bit_vector_0[:-2] + "}"
+ bit_vector_1 = bit_vector_1[:-2] + "};"
+
+ f = open(f"wallace_adder.v", "w")
+
+ # Start by printing module declaration
+ f.write(f"module wallace_adder (\n")
+ f.write(f"\tinput logic [{bits-1}:0] partial_prod[0:{bits-1}],\n")
+ f.write(f"\toutput logic [{2*bits-1}:0] partial_sum\n")
+ f.write(");\n\n")
+
+ # Print out net names
+ for net_layer in net_names:
+ netstring = "logic "
+ net_idx_len = len(net_layer)
+ for net_idx, net in enumerate(net_layer):
+ if (net_idx != net_idx_len - 1):
+ netstring += f"{net}, "
+ else:
+ netstring += f"{net};"
+ f.write(netstring + '\n')
+
+ # Print out entire reduction tree and calculate stats
+ ha_count = 0
+ fa_count = 0
+ for layer in range(len(pass_instantiations)):
+ f.write(f"\n//----------- Reduction Layer {layer+1} Start --------------\n\n")
+ for passthrough in pass_instantiations[layer]:
+ f.write(passthrough + '\n')
+
+ for half_adder in ha_instantiations[layer]:
+ ha_count += 1
+ f.write(half_adder + '\n')
+
+ for full_adder in fa_instantiations[layer]:
+ fa_count += 1
+ f.write(full_adder + '\n')
+
+ # Print final two number adder
+
+ f.write(f"\n//----------- Adding Layer Start --------------\n\n")
+ f.write(f"assign partial_sum = {bit_vector_0} + {bit_vector_1}\n")
+
+ # Endmodule
+ f.write("\nendmodule\n")
+
+ f.close()
+
+ # Print stats of the wallace adder
+ print(f"{ha_count} Half Adders Used")
+ print(f"{fa_count} Full Adders Used")
+ print(f"{len(pass_instantiations)-1} Reduction Layers")
+
+def main():
+ parser = argparse.ArgumentParser(prog="Multiplier Generator", description="Generates a n bit multiplier based on the bits argument provided",
+ epilog="bits sets the bit width of the multiplier, the output of the multiplier is 2 times the number of bits")
+ parser.add_argument("bits", type=int, help="The bit width of the multiplier")
+ parser.add_argument("-a", "--adder", help="Generates the full and half adders for you to use", action='store_true')
+ parser.add_argument("-d", "--debug", help="Enables debug prints during generation scripting", action='store_true')
+ args = parser.parse_args()
+
+ bits = args.bits
+ debug = args.debug
+ adder = args.adder
+
+ if (adder):
+ gen_half_adder()
+ gen_full_adder()
+
+ gen_multiplier(bits)
+ gen_partial_products(bits)
+
+ if (gen_adder_tree(bits, debug) == -1):
+ return -1
+
+ print("----------- GENERATION COMPLETE WITHOUT ERROR ----------- \n\n")
+
+if __name__ == "__main__":
+ main()
diff --git a/multiplier/half_adder.v b/multiplier/half_adder.v
new file mode 100644
index 0000000..a322900
--- /dev/null
+++ b/multiplier/half_adder.v
@@ -0,0 +1,11 @@
+module half_adder (
+ input logic a,
+ input logic b,
+ output logic sum,
+ output logic carry
+);
+
+assign sum = a ^ b;
+assign carry = a & b;
+
+endmodule
diff --git a/multiplier/multiplier.v b/multiplier/multiplier.v
new file mode 100644
index 0000000..0522800
--- /dev/null
+++ b/multiplier/multiplier.v
@@ -0,0 +1,15 @@
+module multiplier(
+ input logic [31:0] a,
+ input logic [31:0] b,
+ output logic [63:0] c
+);
+
+ logic [31:0] partial_prod [0:31];
+ logic [63:0] partial_sum;
+
+ assign c = partial_sum;
+
+ wallace_adder wadder0(partial_prod, partial_sum);
+ partial_products partprod0(a, b, partial_prod);
+
+endmodule
diff --git a/multiplier/partial_products.v b/multiplier/partial_products.v
new file mode 100644
index 0000000..e05c859
--- /dev/null
+++ b/multiplier/partial_products.v
@@ -0,0 +1,15 @@
+module partial_products
+(
+ input logic [31:0] a,
+ input logic [31:0] b,
+ output logic [31:0] c [0:31]
+);
+
+always @ (*) begin
+ integer i;
+ for (i = 0; i < 32; i=i+1) begin
+ c[i][31:0] = {32{b[i]}} & a;
+ end
+end
+
+endmodule
diff --git a/multiplier/tb_multiplier.cpp b/multiplier/tb_multiplier.cpp
new file mode 100644
index 0000000..040df80
--- /dev/null
+++ b/multiplier/tb_multiplier.cpp
@@ -0,0 +1,93 @@
+#include <iostream>
+#include <iomanip>
+#include <bitset>
+#include <cstdint>
+
+#include "Vmultiplier.h"
+#include "verilated.h"
+
+#define BITWIDTH 32
+
+int main(int argc, char** argv, char** env) {
+
+ if (false && argc && argv && env) {}
+
+ Verilated::mkdir("logs");
+ VerilatedContext* contextp = new VerilatedContext;
+
+ contextp->debug(0);
+ contextp->randReset(2);
+ contextp->traceEverOn(true);
+ contextp->commandArgs(argc, argv);
+
+ Vmultiplier* dut = new Vmultiplier{contextp};
+
+ uint32_t testsize = 0x1000;
+
+ for (int i = 0; i < testsize; i++) {
+ for (int j = 0; j < testsize; j++) {
+ dut->a = (uint32_t) i;
+ dut->b = (uint32_t) j;
+ unsigned int answer = (unsigned int) (i * j);
+
+ dut->eval();
+ if (answer != dut->c) {
+ std::bitset<BITWIDTH> in1(dut->a);
+ std::bitset<BITWIDTH> in2(dut->b);
+ std::bitset<BITWIDTH*2> expected(answer);
+ std::bitset<BITWIDTH*2> actual(dut->c);
+ std::cout << "Inputs: 1: " << in1 << " 2: " << in2 << '\n';
+ std::cout << "Expected: " << expected << '\n';
+ std::cout << "Actual: " << actual << '\n';
+ return -1;
+ }
+ }
+ }
+
+
+ std::cout << "LOWER HALF PASSED\n";
+
+ uint64_t top = 1;
+ for (int i = 1; i < BITWIDTH; i++) {
+ top <<= 1;
+ top |= 1;
+ }
+ uint64_t bottom = top - testsize;
+
+ for (uint64_t i = bottom; i < top; i++) {
+ for (uint64_t j = bottom; j < top; j++) {
+
+ dut->a = (uint32_t) i;
+ dut->b = (uint32_t) j;
+
+ uint64_t answer = i * j;
+
+ dut->eval();
+ if (answer != dut->c) {
+ std::bitset<BITWIDTH> in1(dut->a);
+ std::bitset<BITWIDTH> in2(dut->b);
+ std::bitset<BITWIDTH*2> expected(answer);
+ std::bitset<BITWIDTH*2> actual(dut->c);
+ std::cout << "In 1: " << in1 << '\n';
+ std::cout << "In 2: " << in2 << '\n';
+ std::cout << "Expected: " << expected << '\n';
+ std::cout << "Actual: " << actual << '\n';
+
+ std::cout << "In 1: " << std::hex << (uint32_t) dut->a << '\n';
+ std::cout << "In 2: " << std::hex << (uint32_t) dut->b << '\n';
+ std::cout << "Expected: " << std::hex << (uint64_t) answer << '\n';
+ std::cout << "Actual: " << std::hex << (uint64_t) dut->c << '\n';
+ return -1;
+ }
+ }
+ }
+
+ std::cout << "UPPER HALF PASSED\n";
+
+
+ std::cout << "Test Passed for " << BITWIDTH << " bit multiplier\n";
+
+ delete dut;
+ delete contextp;
+ return 0;
+}
diff --git a/multiplier/wallace_adder.v b/multiplier/wallace_adder.v
new file mode 100644
index 0000000..34c9ecd
--- /dev/null
+++ b/multiplier/wallace_adder.v
@@ -0,0 +1,1521 @@
+module wallace_adder (
+ input logic [31:0] partial_prod[0:31],
+ output logic [63:0] partial_sum
+);
+
+logic layer1_col0_net0, layer1_col1_net0, layer1_col1_net1, layer1_col2_net0, layer1_col3_net0, layer1_col2_net1, layer1_col3_net1, layer1_col4_net0, layer1_col3_net2, layer1_col4_net1, layer1_col5_net0, layer1_col4_net2, layer1_col4_net3, layer1_col5_net1, layer1_col6_net0, layer1_col5_net2, layer1_col6_net1, layer1_col6_net2, layer1_col7_net0, layer1_col6_net3, layer1_col7_net1, layer1_col6_net4, layer1_col7_net2, layer1_col8_net0, layer1_col7_net3, layer1_col8_net1, layer1_col7_net4, layer1_col7_net5, layer1_col8_net2, layer1_col9_net0, layer1_col8_net3, layer1_col9_net1, layer1_col8_net4, layer1_col9_net2, layer1_col9_net3, layer1_col10_net0, layer1_col9_net4, layer1_col10_net1, layer1_col9_net5, layer1_col10_net2, layer1_col9_net6, layer1_col10_net3, layer1_col11_net0, layer1_col10_net4, layer1_col11_net1, layer1_col10_net5, layer1_col11_net2, layer1_col10_net6, layer1_col10_net7, layer1_col11_net3, layer1_col12_net0, layer1_col11_net4, layer1_col12_net1, layer1_col11_net5, layer1_col12_net2, layer1_col11_net6, layer1_col12_net3, layer1_col12_net4, layer1_col13_net0, layer1_col12_net5, layer1_col13_net1, layer1_col12_net6, layer1_col13_net2, layer1_col12_net7, layer1_col13_net3, layer1_col12_net8, layer1_col13_net4, layer1_col14_net0, layer1_col13_net5, layer1_col14_net1, layer1_col13_net6, layer1_col14_net2, layer1_col13_net7, layer1_col14_net3, layer1_col13_net8, layer1_col13_net9, layer1_col14_net4, layer1_col15_net0, layer1_col14_net5, layer1_col15_net1, layer1_col14_net6, layer1_col15_net2, layer1_col14_net7, layer1_col15_net3, layer1_col14_net8, layer1_col15_net4, layer1_col15_net5, layer1_col16_net0, layer1_col15_net6, layer1_col16_net1, layer1_col15_net7, layer1_col16_net2, layer1_col15_net8, layer1_col16_net3, layer1_col15_net9, layer1_col16_net4, layer1_col15_net10, layer1_col16_net5, layer1_col17_net0, layer1_col16_net6, layer1_col17_net1, layer1_col16_net7, layer1_col17_net2, layer1_col16_net8, layer1_col17_net3, layer1_col16_net9, layer1_col17_net4, layer1_col16_net10, layer1_col16_net11, layer1_col17_net5, layer1_col18_net0, layer1_col17_net6, layer1_col18_net1, layer1_col17_net7, layer1_col18_net2, layer1_col17_net8, layer1_col18_net3, layer1_col17_net9, layer1_col18_net4, layer1_col17_net10, layer1_col18_net5, layer1_col18_net6, layer1_col19_net0, layer1_col18_net7, layer1_col19_net1, layer1_col18_net8, layer1_col19_net2, layer1_col18_net9, layer1_col19_net3, layer1_col18_net10, layer1_col19_net4, layer1_col18_net11, layer1_col19_net5, layer1_col18_net12, layer1_col19_net6, layer1_col20_net0, layer1_col19_net7, layer1_col20_net1, layer1_col19_net8, layer1_col20_net2, layer1_col19_net9, layer1_col20_net3, layer1_col19_net10, layer1_col20_net4, layer1_col19_net11, layer1_col20_net5, layer1_col19_net12, layer1_col19_net13, layer1_col20_net6, layer1_col21_net0, layer1_col20_net7, layer1_col21_net1, layer1_col20_net8, layer1_col21_net2, layer1_col20_net9, layer1_col21_net3, layer1_col20_net10, layer1_col21_net4, layer1_col20_net11, layer1_col21_net5, layer1_col20_net12, layer1_col21_net6, layer1_col21_net7, layer1_col22_net0, layer1_col21_net8, layer1_col22_net1, layer1_col21_net9, layer1_col22_net2, layer1_col21_net10, layer1_col22_net3, layer1_col21_net11, layer1_col22_net4, layer1_col21_net12, layer1_col22_net5, layer1_col21_net13, layer1_col22_net6, layer1_col21_net14, layer1_col22_net7, layer1_col23_net0, layer1_col22_net8, layer1_col23_net1, layer1_col22_net9, layer1_col23_net2, layer1_col22_net10, layer1_col23_net3, layer1_col22_net11, layer1_col23_net4, layer1_col22_net12, layer1_col23_net5, layer1_col22_net13, layer1_col23_net6, layer1_col22_net14, layer1_col22_net15, layer1_col23_net7, layer1_col24_net0, layer1_col23_net8, layer1_col24_net1, layer1_col23_net9, layer1_col24_net2, layer1_col23_net10, layer1_col24_net3, layer1_col23_net11, layer1_col24_net4, layer1_col23_net12, layer1_col24_net5, layer1_col23_net13, layer1_col24_net6, layer1_col23_net14, layer1_col24_net7, layer1_col24_net8, layer1_col25_net0, layer1_col24_net9, layer1_col25_net1, layer1_col24_net10, layer1_col25_net2, layer1_col24_net11, layer1_col25_net3, layer1_col24_net12, layer1_col25_net4, layer1_col24_net13, layer1_col25_net5, layer1_col24_net14, layer1_col25_net6, layer1_col24_net15, layer1_col25_net7, layer1_col24_net16, layer1_col25_net8, layer1_col26_net0, layer1_col25_net9, layer1_col26_net1, layer1_col25_net10, layer1_col26_net2, layer1_col25_net11, layer1_col26_net3, layer1_col25_net12, layer1_col26_net4, layer1_col25_net13, layer1_col26_net5, layer1_col25_net14, layer1_col26_net6, layer1_col25_net15, layer1_col26_net7, layer1_col25_net16, layer1_col25_net17, layer1_col26_net8, layer1_col27_net0, layer1_col26_net9, layer1_col27_net1, layer1_col26_net10, layer1_col27_net2, layer1_col26_net11, layer1_col27_net3, layer1_col26_net12, layer1_col27_net4, layer1_col26_net13, layer1_col27_net5, layer1_col26_net14, layer1_col27_net6, layer1_col26_net15, layer1_col27_net7, layer1_col26_net16, layer1_col27_net8, layer1_col27_net9, layer1_col28_net0, layer1_col27_net10, layer1_col28_net1, layer1_col27_net11, layer1_col28_net2, layer1_col27_net12, layer1_col28_net3, layer1_col27_net13, layer1_col28_net4, layer1_col27_net14, layer1_col28_net5, layer1_col27_net15, layer1_col28_net6, layer1_col27_net16, layer1_col28_net7, layer1_col27_net17, layer1_col28_net8, layer1_col27_net18, layer1_col28_net9, layer1_col29_net0, layer1_col28_net10, layer1_col29_net1, layer1_col28_net11, layer1_col29_net2, layer1_col28_net12, layer1_col29_net3, layer1_col28_net13, layer1_col29_net4, layer1_col28_net14, layer1_col29_net5, layer1_col28_net15, layer1_col29_net6, layer1_col28_net16, layer1_col29_net7, layer1_col28_net17, layer1_col29_net8, layer1_col28_net18, layer1_col28_net19, layer1_col29_net9, layer1_col30_net0, layer1_col29_net10, layer1_col30_net1, layer1_col29_net11, layer1_col30_net2, layer1_col29_net12, layer1_col30_net3, layer1_col29_net13, layer1_col30_net4, layer1_col29_net14, layer1_col30_net5, layer1_col29_net15, layer1_col30_net6, layer1_col29_net16, layer1_col30_net7, layer1_col29_net17, layer1_col30_net8, layer1_col29_net18, layer1_col30_net9, layer1_col30_net10, layer1_col31_net0, layer1_col30_net11, layer1_col31_net1, layer1_col30_net12, layer1_col31_net2, layer1_col30_net13, layer1_col31_net3, layer1_col30_net14, layer1_col31_net4, layer1_col30_net15, layer1_col31_net5, layer1_col30_net16, layer1_col31_net6, layer1_col30_net17, layer1_col31_net7, layer1_col30_net18, layer1_col31_net8, layer1_col30_net19, layer1_col31_net9, layer1_col30_net20, layer1_col31_net10, layer1_col32_net0, layer1_col31_net11, layer1_col32_net1, layer1_col31_net12, layer1_col32_net2, layer1_col31_net13, layer1_col32_net3, layer1_col31_net14, layer1_col32_net4, layer1_col31_net15, layer1_col32_net5, layer1_col31_net16, layer1_col32_net6, layer1_col31_net17, layer1_col32_net7, layer1_col31_net18, layer1_col32_net8, layer1_col31_net19, layer1_col32_net9, layer1_col31_net20, layer1_col31_net21, layer1_col32_net10, layer1_col33_net0, layer1_col32_net11, layer1_col33_net1, layer1_col32_net12, layer1_col33_net2, layer1_col32_net13, layer1_col33_net3, layer1_col32_net14, layer1_col33_net4, layer1_col32_net15, layer1_col33_net5, layer1_col32_net16, layer1_col33_net6, layer1_col32_net17, layer1_col33_net7, layer1_col32_net18, layer1_col33_net8, layer1_col32_net19, layer1_col33_net9, layer1_col32_net20, layer1_col33_net10, layer1_col34_net0, layer1_col33_net11, layer1_col34_net1, layer1_col33_net12, layer1_col34_net2, layer1_col33_net13, layer1_col34_net3, layer1_col33_net14, layer1_col34_net4, layer1_col33_net15, layer1_col34_net5, layer1_col33_net16, layer1_col34_net6, layer1_col33_net17, layer1_col34_net7, layer1_col33_net18, layer1_col34_net8, layer1_col33_net19, layer1_col34_net9, layer1_col34_net10, layer1_col35_net0, layer1_col34_net11, layer1_col35_net1, layer1_col34_net12, layer1_col35_net2, layer1_col34_net13, layer1_col35_net3, layer1_col34_net14, layer1_col35_net4, layer1_col34_net15, layer1_col35_net5, layer1_col34_net16, layer1_col35_net6, layer1_col34_net17, layer1_col35_net7, layer1_col34_net18, layer1_col35_net8, layer1_col34_net19, layer1_col34_net20, layer1_col35_net9, layer1_col36_net0, layer1_col35_net10, layer1_col36_net1, layer1_col35_net11, layer1_col36_net2, layer1_col35_net12, layer1_col36_net3, layer1_col35_net13, layer1_col36_net4, layer1_col35_net14, layer1_col36_net5, layer1_col35_net15, layer1_col36_net6, layer1_col35_net16, layer1_col36_net7, layer1_col35_net17, layer1_col36_net8, layer1_col35_net18, layer1_col36_net9, layer1_col37_net0, layer1_col36_net10, layer1_col37_net1, layer1_col36_net11, layer1_col37_net2, layer1_col36_net12, layer1_col37_net3, layer1_col36_net13, layer1_col37_net4, layer1_col36_net14, layer1_col37_net5, layer1_col36_net15, layer1_col37_net6, layer1_col36_net16, layer1_col37_net7, layer1_col36_net17, layer1_col37_net8, layer1_col37_net9, layer1_col38_net0, layer1_col37_net10, layer1_col38_net1, layer1_col37_net11, layer1_col38_net2, layer1_col37_net12, layer1_col38_net3, layer1_col37_net13, layer1_col38_net4, layer1_col37_net14, layer1_col38_net5, layer1_col37_net15, layer1_col38_net6, layer1_col37_net16, layer1_col38_net7, layer1_col37_net17, layer1_col37_net18, layer1_col38_net8, layer1_col39_net0, layer1_col38_net9, layer1_col39_net1, layer1_col38_net10, layer1_col39_net2, layer1_col38_net11, layer1_col39_net3, layer1_col38_net12, layer1_col39_net4, layer1_col38_net13, layer1_col39_net5, layer1_col38_net14, layer1_col39_net6, layer1_col38_net15, layer1_col39_net7, layer1_col38_net16, layer1_col39_net8, layer1_col40_net0, layer1_col39_net9, layer1_col40_net1, layer1_col39_net10, layer1_col40_net2, layer1_col39_net11, layer1_col40_net3, layer1_col39_net12, layer1_col40_net4, layer1_col39_net13, layer1_col40_net5, layer1_col39_net14, layer1_col40_net6, layer1_col39_net15, layer1_col40_net7, layer1_col40_net8, layer1_col41_net0, layer1_col40_net9, layer1_col41_net1, layer1_col40_net10, layer1_col41_net2, layer1_col40_net11, layer1_col41_net3, layer1_col40_net12, layer1_col41_net4, layer1_col40_net13, layer1_col41_net5, layer1_col40_net14, layer1_col41_net6, layer1_col40_net15, layer1_col40_net16, layer1_col41_net7, layer1_col42_net0, layer1_col41_net8, layer1_col42_net1, layer1_col41_net9, layer1_col42_net2, layer1_col41_net10, layer1_col42_net3, layer1_col41_net11, layer1_col42_net4, layer1_col41_net12, layer1_col42_net5, layer1_col41_net13, layer1_col42_net6, layer1_col41_net14, layer1_col42_net7, layer1_col43_net0, layer1_col42_net8, layer1_col43_net1, layer1_col42_net9, layer1_col43_net2, layer1_col42_net10, layer1_col43_net3, layer1_col42_net11, layer1_col43_net4, layer1_col42_net12, layer1_col43_net5, layer1_col42_net13, layer1_col43_net6, layer1_col43_net7, layer1_col44_net0, layer1_col43_net8, layer1_col44_net1, layer1_col43_net9, layer1_col44_net2, layer1_col43_net10, layer1_col44_net3, layer1_col43_net11, layer1_col44_net4, layer1_col43_net12, layer1_col44_net5, layer1_col43_net13, layer1_col43_net14, layer1_col44_net6, layer1_col45_net0, layer1_col44_net7, layer1_col45_net1, layer1_col44_net8, layer1_col45_net2, layer1_col44_net9, layer1_col45_net3, layer1_col44_net10, layer1_col45_net4, layer1_col44_net11, layer1_col45_net5, layer1_col44_net12, layer1_col45_net6, layer1_col46_net0, layer1_col45_net7, layer1_col46_net1, layer1_col45_net8, layer1_col46_net2, layer1_col45_net9, layer1_col46_net3, layer1_col45_net10, layer1_col46_net4, layer1_col45_net11, layer1_col46_net5, layer1_col46_net6, layer1_col47_net0, layer1_col46_net7, layer1_col47_net1, layer1_col46_net8, layer1_col47_net2, layer1_col46_net9, layer1_col47_net3, layer1_col46_net10, layer1_col47_net4, layer1_col46_net11, layer1_col46_net12, layer1_col47_net5, layer1_col48_net0, layer1_col47_net6, layer1_col48_net1, layer1_col47_net7, layer1_col48_net2, layer1_col47_net8, layer1_col48_net3, layer1_col47_net9, layer1_col48_net4, layer1_col47_net10, layer1_col48_net5, layer1_col49_net0, layer1_col48_net6, layer1_col49_net1, layer1_col48_net7, layer1_col49_net2, layer1_col48_net8, layer1_col49_net3, layer1_col48_net9, layer1_col49_net4, layer1_col49_net5, layer1_col50_net0, layer1_col49_net6, layer1_col50_net1, layer1_col49_net7, layer1_col50_net2, layer1_col49_net8, layer1_col50_net3, layer1_col49_net9, layer1_col49_net10, layer1_col50_net4, layer1_col51_net0, layer1_col50_net5, layer1_col51_net1, layer1_col50_net6, layer1_col51_net2, layer1_col50_net7, layer1_col51_net3, layer1_col50_net8, layer1_col51_net4, layer1_col52_net0, layer1_col51_net5, layer1_col52_net1, layer1_col51_net6, layer1_col52_net2, layer1_col51_net7, layer1_col52_net3, layer1_col52_net4, layer1_col53_net0, layer1_col52_net5, layer1_col53_net1, layer1_col52_net6, layer1_col53_net2, layer1_col52_net7, layer1_col52_net8, layer1_col53_net3, layer1_col54_net0, layer1_col53_net4, layer1_col54_net1, layer1_col53_net5, layer1_col54_net2, layer1_col53_net6, layer1_col54_net3, layer1_col55_net0, layer1_col54_net4, layer1_col55_net1, layer1_col54_net5, layer1_col55_net2, layer1_col55_net3, layer1_col56_net0, layer1_col55_net4, layer1_col56_net1, layer1_col55_net5, layer1_col55_net6, layer1_col56_net2, layer1_col57_net0, layer1_col56_net3, layer1_col57_net1, layer1_col56_net4, layer1_col57_net2, layer1_col58_net0, layer1_col57_net3, layer1_col58_net1, layer1_col58_net2, layer1_col59_net0, layer1_col58_net3, layer1_col58_net4, layer1_col59_net1, layer1_col60_net0, layer1_col59_net2, layer1_col60_net1, layer1_col61_net0, layer1_col61_net1, layer1_col61_net2, layer1_col62_net0;
+logic layer2_col0_net0, layer2_col1_net0, layer2_col1_net1, layer2_col2_net0, layer2_col2_net1, layer2_col3_net0, layer2_col4_net0, layer2_col3_net1, layer2_col4_net1, layer2_col5_net0, layer2_col4_net2, layer2_col5_net1, layer2_col6_net0, layer2_col6_net1, layer2_col7_net0, layer2_col6_net2, layer2_col6_net3, layer2_col7_net1, layer2_col8_net0, layer2_col7_net2, layer2_col8_net1, layer2_col8_net2, layer2_col9_net0, layer2_col8_net3, layer2_col8_net4, layer2_col9_net1, layer2_col10_net0, layer2_col9_net2, layer2_col10_net1, layer2_col9_net3, layer2_col10_net2, layer2_col11_net0, layer2_col10_net3, layer2_col11_net1, layer2_col10_net4, layer2_col10_net5, layer2_col11_net2, layer2_col12_net0, layer2_col11_net3, layer2_col12_net1, layer2_col11_net4, layer2_col12_net2, layer2_col13_net0, layer2_col12_net3, layer2_col13_net1, layer2_col12_net4, layer2_col13_net2, layer2_col13_net3, layer2_col14_net0, layer2_col13_net4, layer2_col14_net1, layer2_col13_net5, layer2_col14_net2, layer2_col13_net6, layer2_col14_net3, layer2_col15_net0, layer2_col14_net4, layer2_col15_net1, layer2_col14_net5, layer2_col15_net2, layer2_col15_net3, layer2_col16_net0, layer2_col15_net4, layer2_col16_net1, layer2_col15_net5, layer2_col16_net2, layer2_col15_net6, layer2_col15_net7, layer2_col16_net3, layer2_col17_net0, layer2_col16_net4, layer2_col17_net1, layer2_col16_net5, layer2_col17_net2, layer2_col16_net6, layer2_col17_net3, layer2_col17_net4, layer2_col18_net0, layer2_col17_net5, layer2_col18_net1, layer2_col17_net6, layer2_col18_net2, layer2_col17_net7, layer2_col17_net8, layer2_col18_net3, layer2_col19_net0, layer2_col18_net4, layer2_col19_net1, layer2_col18_net5, layer2_col19_net2, layer2_col18_net6, layer2_col19_net3, layer2_col18_net7, layer2_col19_net4, layer2_col20_net0, layer2_col19_net5, layer2_col20_net1, layer2_col19_net6, layer2_col20_net2, layer2_col19_net7, layer2_col20_net3, layer2_col19_net8, layer2_col19_net9, layer2_col20_net4, layer2_col21_net0, layer2_col20_net5, layer2_col21_net1, layer2_col20_net6, layer2_col21_net2, layer2_col20_net7, layer2_col21_net3, layer2_col20_net8, layer2_col21_net4, layer2_col22_net0, layer2_col21_net5, layer2_col22_net1, layer2_col21_net6, layer2_col22_net2, layer2_col21_net7, layer2_col22_net3, layer2_col21_net8, layer2_col22_net4, layer2_col22_net5, layer2_col23_net0, layer2_col22_net6, layer2_col23_net1, layer2_col22_net7, layer2_col23_net2, layer2_col22_net8, layer2_col23_net3, layer2_col22_net9, layer2_col23_net4, layer2_col22_net10, layer2_col23_net5, layer2_col24_net0, layer2_col23_net6, layer2_col24_net1, layer2_col23_net7, layer2_col24_net2, layer2_col23_net8, layer2_col24_net3, layer2_col23_net9, layer2_col24_net4, layer2_col24_net5, layer2_col25_net0, layer2_col24_net6, layer2_col25_net1, layer2_col24_net7, layer2_col25_net2, layer2_col24_net8, layer2_col25_net3, layer2_col24_net9, layer2_col25_net4, layer2_col24_net10, layer2_col24_net11, layer2_col25_net5, layer2_col26_net0, layer2_col25_net6, layer2_col26_net1, layer2_col25_net7, layer2_col26_net2, layer2_col25_net8, layer2_col26_net3, layer2_col25_net9, layer2_col26_net4, layer2_col25_net10, layer2_col26_net5, layer2_col26_net6, layer2_col27_net0, layer2_col26_net7, layer2_col27_net1, layer2_col26_net8, layer2_col27_net2, layer2_col26_net9, layer2_col27_net3, layer2_col26_net10, layer2_col27_net4, layer2_col26_net11, layer2_col26_net12, layer2_col27_net5, layer2_col28_net0, layer2_col27_net6, layer2_col28_net1, layer2_col27_net7, layer2_col28_net2, layer2_col27_net8, layer2_col28_net3, layer2_col27_net9, layer2_col28_net4, layer2_col27_net10, layer2_col28_net5, layer2_col27_net11, layer2_col28_net6, layer2_col29_net0, layer2_col28_net7, layer2_col29_net1, layer2_col28_net8, layer2_col29_net2, layer2_col28_net9, layer2_col29_net3, layer2_col28_net10, layer2_col29_net4, layer2_col28_net11, layer2_col29_net5, layer2_col28_net12, layer2_col28_net13, layer2_col29_net6, layer2_col30_net0, layer2_col29_net7, layer2_col30_net1, layer2_col29_net8, layer2_col30_net2, layer2_col29_net9, layer2_col30_net3, layer2_col29_net10, layer2_col30_net4, layer2_col29_net11, layer2_col30_net5, layer2_col29_net12, layer2_col30_net6, layer2_col31_net0, layer2_col30_net7, layer2_col31_net1, layer2_col30_net8, layer2_col31_net2, layer2_col30_net9, layer2_col31_net3, layer2_col30_net10, layer2_col31_net4, layer2_col30_net11, layer2_col31_net5, layer2_col30_net12, layer2_col31_net6, layer2_col31_net7, layer2_col32_net0, layer2_col31_net8, layer2_col32_net1, layer2_col31_net9, layer2_col32_net2, layer2_col31_net10, layer2_col32_net3, layer2_col31_net11, layer2_col32_net4, layer2_col31_net12, layer2_col32_net5, layer2_col31_net13, layer2_col32_net6, layer2_col31_net14, layer2_col32_net7, layer2_col33_net0, layer2_col32_net8, layer2_col33_net1, layer2_col32_net9, layer2_col33_net2, layer2_col32_net10, layer2_col33_net3, layer2_col32_net11, layer2_col33_net4, layer2_col32_net12, layer2_col33_net5, layer2_col32_net13, layer2_col33_net6, layer2_col33_net7, layer2_col34_net0, layer2_col33_net8, layer2_col34_net1, layer2_col33_net9, layer2_col34_net2, layer2_col33_net10, layer2_col34_net3, layer2_col33_net11, layer2_col34_net4, layer2_col33_net12, layer2_col34_net5, layer2_col33_net13, layer2_col33_net14, layer2_col34_net6, layer2_col35_net0, layer2_col34_net7, layer2_col35_net1, layer2_col34_net8, layer2_col35_net2, layer2_col34_net9, layer2_col35_net3, layer2_col34_net10, layer2_col35_net4, layer2_col34_net11, layer2_col35_net5, layer2_col34_net12, layer2_col35_net6, layer2_col35_net7, layer2_col36_net0, layer2_col35_net8, layer2_col36_net1, layer2_col35_net9, layer2_col36_net2, layer2_col35_net10, layer2_col36_net3, layer2_col35_net11, layer2_col36_net4, layer2_col35_net12, layer2_col36_net5, layer2_col35_net13, layer2_col36_net6, layer2_col37_net0, layer2_col36_net7, layer2_col37_net1, layer2_col36_net8, layer2_col37_net2, layer2_col36_net9, layer2_col37_net3, layer2_col36_net10, layer2_col37_net4, layer2_col36_net11, layer2_col37_net5, layer2_col37_net6, layer2_col38_net0, layer2_col37_net7, layer2_col38_net1, layer2_col37_net8, layer2_col38_net2, layer2_col37_net9, layer2_col38_net3, layer2_col37_net10, layer2_col38_net4, layer2_col37_net11, layer2_col38_net5, layer2_col37_net12, layer2_col38_net6, layer2_col39_net0, layer2_col38_net7, layer2_col39_net1, layer2_col38_net8, layer2_col39_net2, layer2_col38_net9, layer2_col39_net3, layer2_col38_net10, layer2_col39_net4, layer2_col38_net11, layer2_col38_net12, layer2_col39_net5, layer2_col40_net0, layer2_col39_net6, layer2_col40_net1, layer2_col39_net7, layer2_col40_net2, layer2_col39_net8, layer2_col40_net3, layer2_col39_net9, layer2_col40_net4, layer2_col39_net10, layer2_col40_net5, layer2_col41_net0, layer2_col40_net6, layer2_col41_net1, layer2_col40_net7, layer2_col41_net2, layer2_col40_net8, layer2_col41_net3, layer2_col40_net9, layer2_col41_net4, layer2_col40_net10, layer2_col40_net11, layer2_col41_net5, layer2_col42_net0, layer2_col41_net6, layer2_col42_net1, layer2_col41_net7, layer2_col42_net2, layer2_col41_net8, layer2_col42_net3, layer2_col41_net9, layer2_col42_net4, layer2_col42_net5, layer2_col43_net0, layer2_col42_net6, layer2_col43_net1, layer2_col42_net7, layer2_col43_net2, layer2_col42_net8, layer2_col43_net3, layer2_col42_net9, layer2_col42_net10, layer2_col43_net4, layer2_col44_net0, layer2_col43_net5, layer2_col44_net1, layer2_col43_net6, layer2_col44_net2, layer2_col43_net7, layer2_col44_net3, layer2_col43_net8, layer2_col44_net4, layer2_col44_net5, layer2_col45_net0, layer2_col44_net6, layer2_col45_net1, layer2_col44_net7, layer2_col45_net2, layer2_col44_net8, layer2_col45_net3, layer2_col44_net9, layer2_col45_net4, layer2_col46_net0, layer2_col45_net5, layer2_col46_net1, layer2_col45_net6, layer2_col46_net2, layer2_col45_net7, layer2_col46_net3, layer2_col46_net4, layer2_col47_net0, layer2_col46_net5, layer2_col47_net1, layer2_col46_net6, layer2_col47_net2, layer2_col46_net7, layer2_col47_net3, layer2_col46_net8, layer2_col47_net4, layer2_col48_net0, layer2_col47_net5, layer2_col48_net1, layer2_col47_net6, layer2_col48_net2, layer2_col47_net7, layer2_col47_net8, layer2_col48_net3, layer2_col49_net0, layer2_col48_net4, layer2_col49_net1, layer2_col48_net5, layer2_col49_net2, layer2_col48_net6, layer2_col49_net3, layer2_col50_net0, layer2_col49_net4, layer2_col50_net1, layer2_col49_net5, layer2_col50_net2, layer2_col49_net6, layer2_col49_net7, layer2_col50_net3, layer2_col51_net0, layer2_col50_net4, layer2_col51_net1, layer2_col50_net5, layer2_col51_net2, layer2_col51_net3, layer2_col52_net0, layer2_col51_net4, layer2_col52_net1, layer2_col51_net5, layer2_col51_net6, layer2_col52_net2, layer2_col53_net0, layer2_col52_net3, layer2_col53_net1, layer2_col52_net4, layer2_col53_net2, layer2_col53_net3, layer2_col54_net0, layer2_col53_net4, layer2_col54_net1, layer2_col53_net5, layer2_col54_net2, layer2_col55_net0, layer2_col54_net3, layer2_col55_net1, layer2_col55_net2, layer2_col56_net0, layer2_col55_net3, layer2_col56_net1, layer2_col55_net4, layer2_col56_net2, layer2_col57_net0, layer2_col56_net3, layer2_col56_net4, layer2_col57_net1, layer2_col58_net0, layer2_col57_net2, layer2_col58_net1, layer2_col59_net0, layer2_col58_net2, layer2_col58_net3, layer2_col59_net1, layer2_col60_net0, layer2_col60_net1, layer2_col60_net2, layer2_col61_net0, layer2_col62_net0, layer2_col62_net1;
+logic layer3_col0_net0, layer3_col1_net0, layer3_col1_net1, layer3_col2_net0, layer3_col2_net1, layer3_col3_net0, layer3_col3_net1, layer3_col4_net0, layer3_col5_net0, layer3_col4_net1, layer3_col5_net1, layer3_col5_net2, layer3_col6_net0, layer3_col7_net0, layer3_col6_net1, layer3_col7_net1, layer3_col8_net0, layer3_col8_net1, layer3_col9_net0, layer3_col8_net2, layer3_col8_net3, layer3_col9_net1, layer3_col10_net0, layer3_col9_net2, layer3_col10_net1, layer3_col11_net0, layer3_col10_net2, layer3_col11_net1, layer3_col11_net2, layer3_col12_net0, layer3_col11_net3, layer3_col11_net4, layer3_col12_net1, layer3_col13_net0, layer3_col12_net2, layer3_col12_net3, layer3_col13_net1, layer3_col14_net0, layer3_col13_net2, layer3_col14_net1, layer3_col13_net3, layer3_col14_net2, layer3_col15_net0, layer3_col14_net3, layer3_col15_net1, layer3_col15_net2, layer3_col16_net0, layer3_col15_net3, layer3_col16_net1, layer3_col15_net4, layer3_col15_net5, layer3_col16_net2, layer3_col17_net0, layer3_col16_net3, layer3_col17_net1, layer3_col16_net4, layer3_col17_net2, layer3_col18_net0, layer3_col17_net3, layer3_col18_net1, layer3_col17_net4, layer3_col18_net2, layer3_col18_net3, layer3_col19_net0, layer3_col18_net4, layer3_col19_net1, layer3_col18_net5, layer3_col18_net6, layer3_col19_net2, layer3_col20_net0, layer3_col19_net3, layer3_col20_net1, layer3_col19_net4, layer3_col20_net2, layer3_col19_net5, layer3_col20_net3, layer3_col21_net0, layer3_col20_net4, layer3_col21_net1, layer3_col20_net5, layer3_col21_net2, layer3_col21_net3, layer3_col22_net0, layer3_col21_net4, layer3_col22_net1, layer3_col21_net5, layer3_col22_net2, layer3_col22_net3, layer3_col23_net0, layer3_col22_net4, layer3_col23_net1, layer3_col22_net5, layer3_col23_net2, layer3_col22_net6, layer3_col22_net7, layer3_col23_net3, layer3_col24_net0, layer3_col23_net4, layer3_col24_net1, layer3_col23_net5, layer3_col24_net2, layer3_col23_net6, layer3_col24_net3, layer3_col25_net0, layer3_col24_net4, layer3_col25_net1, layer3_col24_net5, layer3_col25_net2, layer3_col24_net6, layer3_col25_net3, layer3_col25_net4, layer3_col26_net0, layer3_col25_net5, layer3_col26_net1, layer3_col25_net6, layer3_col26_net2, layer3_col25_net7, layer3_col25_net8, layer3_col26_net3, layer3_col27_net0, layer3_col26_net4, layer3_col27_net1, layer3_col26_net5, layer3_col27_net2, layer3_col26_net6, layer3_col27_net3, layer3_col26_net7, layer3_col27_net4, layer3_col28_net0, layer3_col27_net5, layer3_col28_net1, layer3_col27_net6, layer3_col28_net2, layer3_col27_net7, layer3_col28_net3, layer3_col28_net4, layer3_col29_net0, layer3_col28_net5, layer3_col29_net1, layer3_col28_net6, layer3_col29_net2, layer3_col28_net7, layer3_col29_net3, layer3_col28_net8, layer3_col28_net9, layer3_col29_net4, layer3_col30_net0, layer3_col29_net5, layer3_col30_net1, layer3_col29_net6, layer3_col30_net2, layer3_col29_net7, layer3_col30_net3, layer3_col29_net8, layer3_col30_net4, layer3_col31_net0, layer3_col30_net5, layer3_col31_net1, layer3_col30_net6, layer3_col31_net2, layer3_col30_net7, layer3_col31_net3, layer3_col30_net8, layer3_col31_net4, layer3_col32_net0, layer3_col31_net5, layer3_col32_net1, layer3_col31_net6, layer3_col32_net2, layer3_col31_net7, layer3_col32_net3, layer3_col31_net8, layer3_col32_net4, layer3_col32_net5, layer3_col33_net0, layer3_col32_net6, layer3_col33_net1, layer3_col32_net7, layer3_col33_net2, layer3_col32_net8, layer3_col33_net3, layer3_col32_net9, layer3_col32_net10, layer3_col33_net4, layer3_col34_net0, layer3_col33_net5, layer3_col34_net1, layer3_col33_net6, layer3_col34_net2, layer3_col33_net7, layer3_col34_net3, layer3_col33_net8, layer3_col34_net4, layer3_col34_net5, layer3_col35_net0, layer3_col34_net6, layer3_col35_net1, layer3_col34_net7, layer3_col35_net2, layer3_col34_net8, layer3_col35_net3, layer3_col34_net9, layer3_col35_net4, layer3_col36_net0, layer3_col35_net5, layer3_col36_net1, layer3_col35_net6, layer3_col36_net2, layer3_col35_net7, layer3_col36_net3, layer3_col35_net8, layer3_col35_net9, layer3_col36_net4, layer3_col37_net0, layer3_col36_net5, layer3_col37_net1, layer3_col36_net6, layer3_col37_net2, layer3_col36_net7, layer3_col37_net3, layer3_col37_net4, layer3_col38_net0, layer3_col37_net5, layer3_col38_net1, layer3_col37_net6, layer3_col38_net2, layer3_col37_net7, layer3_col38_net3, layer3_col37_net8, layer3_col38_net4, layer3_col39_net0, layer3_col38_net5, layer3_col39_net1, layer3_col38_net6, layer3_col39_net2, layer3_col38_net7, layer3_col39_net3, layer3_col38_net8, layer3_col39_net4, layer3_col40_net0, layer3_col39_net5, layer3_col40_net1, layer3_col39_net6, layer3_col40_net2, layer3_col39_net7, layer3_col39_net8, layer3_col40_net3, layer3_col41_net0, layer3_col40_net4, layer3_col41_net1, layer3_col40_net5, layer3_col41_net2, layer3_col40_net6, layer3_col41_net3, layer3_col41_net4, layer3_col42_net0, layer3_col41_net5, layer3_col42_net1, layer3_col41_net6, layer3_col42_net2, layer3_col41_net7, layer3_col42_net3, layer3_col43_net0, layer3_col42_net4, layer3_col43_net1, layer3_col42_net5, layer3_col43_net2, layer3_col42_net6, layer3_col42_net7, layer3_col43_net3, layer3_col44_net0, layer3_col43_net4, layer3_col44_net1, layer3_col43_net5, layer3_col44_net2, layer3_col44_net3, layer3_col45_net0, layer3_col44_net4, layer3_col45_net1, layer3_col44_net5, layer3_col45_net2, layer3_col44_net6, layer3_col45_net3, layer3_col46_net0, layer3_col45_net4, layer3_col46_net1, layer3_col45_net5, layer3_col45_net6, layer3_col46_net2, layer3_col47_net0, layer3_col46_net3, layer3_col47_net1, layer3_col46_net4, layer3_col47_net2, layer3_col47_net3, layer3_col48_net0, layer3_col47_net4, layer3_col48_net1, layer3_col47_net5, layer3_col48_net2, layer3_col48_net3, layer3_col49_net0, layer3_col48_net4, layer3_col49_net1, layer3_col48_net5, layer3_col49_net2, layer3_col50_net0, layer3_col49_net3, layer3_col50_net1, layer3_col49_net4, layer3_col49_net5, layer3_col50_net2, layer3_col51_net0, layer3_col50_net3, layer3_col51_net1, layer3_col51_net2, layer3_col52_net0, layer3_col51_net3, layer3_col52_net1, layer3_col51_net4, layer3_col52_net2, layer3_col53_net0, layer3_col52_net3, layer3_col52_net4, layer3_col53_net1, layer3_col54_net0, layer3_col53_net2, layer3_col54_net1, layer3_col54_net2, layer3_col55_net0, layer3_col54_net3, layer3_col55_net1, layer3_col56_net0, layer3_col55_net2, layer3_col55_net3, layer3_col56_net1, layer3_col57_net0, layer3_col56_net2, layer3_col56_net3, layer3_col57_net1, layer3_col58_net0, layer3_col58_net1, layer3_col59_net0, layer3_col58_net2, layer3_col59_net1, layer3_col59_net2, layer3_col60_net0, layer3_col61_net0, layer3_col61_net1, layer3_col62_net0, layer3_col62_net1;
+logic layer4_col0_net0, layer4_col1_net0, layer4_col1_net1, layer4_col2_net0, layer4_col2_net1, layer4_col3_net0, layer4_col3_net1, layer4_col4_net0, layer4_col4_net1, layer4_col5_net0, layer4_col6_net0, layer4_col5_net1, layer4_col6_net1, layer4_col6_net2, layer4_col7_net0, layer4_col7_net1, layer4_col8_net0, layer4_col9_net0, layer4_col8_net1, layer4_col9_net1, layer4_col10_net0, layer4_col10_net1, layer4_col11_net0, layer4_col11_net1, layer4_col12_net0, layer4_col11_net2, layer4_col11_net3, layer4_col12_net1, layer4_col13_net0, layer4_col12_net2, layer4_col13_net1, layer4_col14_net0, layer4_col13_net2, layer4_col14_net1, layer4_col15_net0, layer4_col14_net2, layer4_col15_net1, layer4_col16_net0, layer4_col15_net2, layer4_col16_net1, layer4_col16_net2, layer4_col17_net0, layer4_col16_net3, layer4_col16_net4, layer4_col17_net1, layer4_col18_net0, layer4_col17_net2, layer4_col17_net3, layer4_col18_net1, layer4_col19_net0, layer4_col18_net2, layer4_col19_net1, layer4_col18_net3, layer4_col19_net2, layer4_col20_net0, layer4_col19_net3, layer4_col20_net1, layer4_col20_net2, layer4_col21_net0, layer4_col20_net3, layer4_col21_net1, layer4_col21_net2, layer4_col22_net0, layer4_col21_net3, layer4_col22_net1, layer4_col22_net2, layer4_col23_net0, layer4_col22_net3, layer4_col23_net1, layer4_col22_net4, layer4_col22_net5, layer4_col23_net2, layer4_col24_net0, layer4_col23_net3, layer4_col24_net1, layer4_col23_net4, layer4_col24_net2, layer4_col25_net0, layer4_col24_net3, layer4_col25_net1, layer4_col24_net4, layer4_col25_net2, layer4_col26_net0, layer4_col25_net3, layer4_col26_net1, layer4_col25_net4, layer4_col26_net2, layer4_col26_net3, layer4_col27_net0, layer4_col26_net4, layer4_col27_net1, layer4_col26_net5, layer4_col26_net6, layer4_col27_net2, layer4_col28_net0, layer4_col27_net3, layer4_col28_net1, layer4_col27_net4, layer4_col27_net5, layer4_col28_net2, layer4_col29_net0, layer4_col28_net3, layer4_col29_net1, layer4_col28_net4, layer4_col29_net2, layer4_col28_net5, layer4_col29_net3, layer4_col30_net0, layer4_col29_net4, layer4_col30_net1, layer4_col29_net5, layer4_col30_net2, layer4_col30_net3, layer4_col31_net0, layer4_col30_net4, layer4_col31_net1, layer4_col30_net5, layer4_col31_net2, layer4_col31_net3, layer4_col32_net0, layer4_col31_net4, layer4_col32_net1, layer4_col31_net5, layer4_col32_net2, layer4_col32_net3, layer4_col33_net0, layer4_col32_net4, layer4_col33_net1, layer4_col32_net5, layer4_col33_net2, layer4_col32_net6, layer4_col32_net7, layer4_col33_net3, layer4_col34_net0, layer4_col33_net4, layer4_col34_net1, layer4_col33_net5, layer4_col34_net2, layer4_col34_net3, layer4_col35_net0, layer4_col34_net4, layer4_col35_net1, layer4_col34_net5, layer4_col35_net2, layer4_col34_net6, layer4_col35_net3, layer4_col36_net0, layer4_col35_net4, layer4_col36_net1, layer4_col35_net5, layer4_col36_net2, layer4_col35_net6, layer4_col36_net3, layer4_col37_net0, layer4_col36_net4, layer4_col37_net1, layer4_col36_net5, layer4_col36_net6, layer4_col37_net2, layer4_col38_net0, layer4_col37_net3, layer4_col38_net1, layer4_col37_net4, layer4_col38_net2, layer4_col38_net3, layer4_col39_net0, layer4_col38_net4, layer4_col39_net1, layer4_col38_net5, layer4_col39_net2, layer4_col39_net3, layer4_col40_net0, layer4_col39_net4, layer4_col40_net1, layer4_col39_net5, layer4_col40_net2, layer4_col40_net3, layer4_col41_net0, layer4_col40_net4, layer4_col41_net1, layer4_col40_net5, layer4_col41_net2, layer4_col42_net0, layer4_col41_net3, layer4_col42_net1, layer4_col41_net4, layer4_col41_net5, layer4_col42_net2, layer4_col43_net0, layer4_col42_net3, layer4_col43_net1, layer4_col42_net4, layer4_col42_net5, layer4_col43_net2, layer4_col44_net0, layer4_col43_net3, layer4_col44_net1, layer4_col44_net2, layer4_col45_net0, layer4_col44_net3, layer4_col45_net1, layer4_col44_net4, layer4_col45_net2, layer4_col46_net0, layer4_col45_net3, layer4_col46_net1, layer4_col45_net4, layer4_col46_net2, layer4_col47_net0, layer4_col46_net3, layer4_col46_net4, layer4_col47_net1, layer4_col48_net0, layer4_col47_net2, layer4_col48_net1, layer4_col48_net2, layer4_col49_net0, layer4_col48_net3, layer4_col49_net1, layer4_col49_net2, layer4_col50_net0, layer4_col49_net3, layer4_col50_net1, layer4_col50_net2, layer4_col51_net0, layer4_col50_net3, layer4_col51_net1, layer4_col52_net0, layer4_col51_net2, layer4_col51_net3, layer4_col52_net1, layer4_col53_net0, layer4_col52_net2, layer4_col52_net3, layer4_col53_net1, layer4_col54_net0, layer4_col54_net1, layer4_col55_net0, layer4_col54_net2, layer4_col55_net1, layer4_col56_net0, layer4_col55_net2, layer4_col56_net1, layer4_col57_net0, layer4_col56_net2, layer4_col57_net1, layer4_col57_net2, layer4_col58_net0, layer4_col59_net0, layer4_col59_net1, layer4_col60_net0, layer4_col60_net1, layer4_col61_net0, layer4_col61_net1, layer4_col62_net0, layer4_col62_net1;
+logic layer5_col0_net0, layer5_col1_net0, layer5_col1_net1, layer5_col2_net0, layer5_col2_net1, layer5_col3_net0, layer5_col3_net1, layer5_col4_net0, layer5_col4_net1, layer5_col5_net0, layer5_col5_net1, layer5_col6_net0, layer5_col7_net0, layer5_col6_net1, layer5_col7_net1, layer5_col7_net2, layer5_col8_net0, layer5_col8_net1, layer5_col9_net0, layer5_col9_net1, layer5_col10_net0, layer5_col10_net1, layer5_col11_net0, layer5_col12_net0, layer5_col11_net1, layer5_col12_net1, layer5_col13_net0, layer5_col13_net1, layer5_col14_net0, layer5_col14_net1, layer5_col15_net0, layer5_col15_net1, layer5_col16_net0, layer5_col16_net1, layer5_col17_net0, layer5_col16_net2, layer5_col16_net3, layer5_col17_net1, layer5_col18_net0, layer5_col17_net2, layer5_col18_net1, layer5_col19_net0, layer5_col18_net2, layer5_col19_net1, layer5_col20_net0, layer5_col19_net2, layer5_col20_net1, layer5_col21_net0, layer5_col20_net2, layer5_col21_net1, layer5_col22_net0, layer5_col21_net2, layer5_col22_net1, layer5_col23_net0, layer5_col22_net2, layer5_col23_net1, layer5_col23_net2, layer5_col24_net0, layer5_col23_net3, layer5_col23_net4, layer5_col24_net1, layer5_col25_net0, layer5_col24_net2, layer5_col24_net3, layer5_col25_net1, layer5_col26_net0, layer5_col25_net2, layer5_col25_net3, layer5_col26_net1, layer5_col27_net0, layer5_col26_net2, layer5_col27_net1, layer5_col26_net3, layer5_col27_net2, layer5_col28_net0, layer5_col27_net3, layer5_col28_net1, layer5_col28_net2, layer5_col29_net0, layer5_col28_net3, layer5_col29_net1, layer5_col29_net2, layer5_col30_net0, layer5_col29_net3, layer5_col30_net1, layer5_col30_net2, layer5_col31_net0, layer5_col30_net3, layer5_col31_net1, layer5_col31_net2, layer5_col32_net0, layer5_col31_net3, layer5_col32_net1, layer5_col32_net2, layer5_col33_net0, layer5_col32_net3, layer5_col33_net1, layer5_col32_net4, layer5_col32_net5, layer5_col33_net2, layer5_col34_net0, layer5_col33_net3, layer5_col34_net1, layer5_col34_net2, layer5_col35_net0, layer5_col34_net3, layer5_col35_net1, layer5_col34_net4, layer5_col35_net2, layer5_col36_net0, layer5_col35_net3, layer5_col36_net1, layer5_col35_net4, layer5_col36_net2, layer5_col37_net0, layer5_col36_net3, layer5_col37_net1, layer5_col36_net4, layer5_col37_net2, layer5_col38_net0, layer5_col37_net3, layer5_col37_net4, layer5_col38_net1, layer5_col39_net0, layer5_col38_net2, layer5_col39_net1, layer5_col39_net2, layer5_col40_net0, layer5_col39_net3, layer5_col40_net1, layer5_col40_net2, layer5_col41_net0, layer5_col40_net3, layer5_col41_net1, layer5_col41_net2, layer5_col42_net0, layer5_col41_net3, layer5_col42_net1, layer5_col42_net2, layer5_col43_net0, layer5_col42_net3, layer5_col43_net1, layer5_col43_net2, layer5_col44_net0, layer5_col43_net3, layer5_col44_net1, layer5_col45_net0, layer5_col44_net2, layer5_col44_net3, layer5_col45_net1, layer5_col46_net0, layer5_col45_net2, layer5_col45_net3, layer5_col46_net1, layer5_col47_net0, layer5_col46_net2, layer5_col46_net3, layer5_col47_net1, layer5_col48_net0, layer5_col48_net1, layer5_col49_net0, layer5_col48_net2, layer5_col49_net1, layer5_col50_net0, layer5_col49_net2, layer5_col50_net1, layer5_col51_net0, layer5_col50_net2, layer5_col51_net1, layer5_col52_net0, layer5_col51_net2, layer5_col52_net1, layer5_col53_net0, layer5_col52_net2, layer5_col53_net1, layer5_col53_net2, layer5_col54_net0, layer5_col55_net0, layer5_col55_net1, layer5_col56_net0, layer5_col56_net1, layer5_col57_net0, layer5_col57_net1, layer5_col58_net0, layer5_col58_net1, layer5_col59_net0, layer5_col59_net1, layer5_col60_net0, layer5_col60_net1, layer5_col61_net0, layer5_col61_net1, layer5_col62_net0, layer5_col62_net1;
+logic layer6_col0_net0, layer6_col1_net0, layer6_col1_net1, layer6_col2_net0, layer6_col2_net1, layer6_col3_net0, layer6_col3_net1, layer6_col4_net0, layer6_col4_net1, layer6_col5_net0, layer6_col5_net1, layer6_col6_net0, layer6_col6_net1, layer6_col7_net0, layer6_col8_net0, layer6_col7_net1, layer6_col8_net1, layer6_col8_net2, layer6_col9_net0, layer6_col9_net1, layer6_col10_net0, layer6_col10_net1, layer6_col11_net0, layer6_col11_net1, layer6_col12_net0, layer6_col12_net1, layer6_col13_net0, layer6_col13_net1, layer6_col14_net0, layer6_col14_net1, layer6_col15_net0, layer6_col15_net1, layer6_col16_net0, layer6_col17_net0, layer6_col16_net1, layer6_col17_net1, layer6_col18_net0, layer6_col18_net1, layer6_col19_net0, layer6_col19_net1, layer6_col20_net0, layer6_col20_net1, layer6_col21_net0, layer6_col21_net1, layer6_col22_net0, layer6_col22_net1, layer6_col23_net0, layer6_col23_net1, layer6_col24_net0, layer6_col23_net2, layer6_col23_net3, layer6_col24_net1, layer6_col25_net0, layer6_col24_net2, layer6_col25_net1, layer6_col26_net0, layer6_col25_net2, layer6_col26_net1, layer6_col27_net0, layer6_col26_net2, layer6_col27_net1, layer6_col28_net0, layer6_col27_net2, layer6_col28_net1, layer6_col29_net0, layer6_col28_net2, layer6_col29_net1, layer6_col30_net0, layer6_col29_net2, layer6_col30_net1, layer6_col31_net0, layer6_col30_net2, layer6_col31_net1, layer6_col32_net0, layer6_col31_net2, layer6_col32_net1, layer6_col33_net0, layer6_col32_net2, layer6_col33_net1, layer6_col33_net2, layer6_col34_net0, layer6_col33_net3, layer6_col34_net1, layer6_col35_net0, layer6_col34_net2, layer6_col34_net3, layer6_col35_net1, layer6_col36_net0, layer6_col35_net2, layer6_col35_net3, layer6_col36_net1, layer6_col37_net0, layer6_col36_net2, layer6_col36_net3, layer6_col37_net1, layer6_col38_net0, layer6_col37_net2, layer6_col37_net3, layer6_col38_net1, layer6_col39_net0, layer6_col39_net1, layer6_col40_net0, layer6_col39_net2, layer6_col40_net1, layer6_col41_net0, layer6_col40_net2, layer6_col41_net1, layer6_col42_net0, layer6_col41_net2, layer6_col42_net1, layer6_col43_net0, layer6_col42_net2, layer6_col43_net1, layer6_col44_net0, layer6_col43_net2, layer6_col44_net1, layer6_col45_net0, layer6_col44_net2, layer6_col45_net1, layer6_col46_net0, layer6_col45_net2, layer6_col46_net1, layer6_col47_net0, layer6_col46_net2, layer6_col47_net1, layer6_col47_net2, layer6_col48_net0, layer6_col49_net0, layer6_col49_net1, layer6_col50_net0, layer6_col50_net1, layer6_col51_net0, layer6_col51_net1, layer6_col52_net0, layer6_col52_net1, layer6_col53_net0, layer6_col53_net1, layer6_col54_net0, layer6_col54_net1, layer6_col55_net0, layer6_col55_net1, layer6_col56_net0, layer6_col56_net1, layer6_col57_net0, layer6_col57_net1, layer6_col58_net0, layer6_col58_net1, layer6_col59_net0, layer6_col59_net1, layer6_col60_net0, layer6_col60_net1, layer6_col61_net0, layer6_col61_net1, layer6_col62_net0, layer6_col62_net1;
+logic layer7_col0_net0, layer7_col1_net0, layer7_col1_net1, layer7_col2_net0, layer7_col2_net1, layer7_col3_net0, layer7_col3_net1, layer7_col4_net0, layer7_col4_net1, layer7_col5_net0, layer7_col5_net1, layer7_col6_net0, layer7_col6_net1, layer7_col7_net0, layer7_col7_net1, layer7_col8_net0, layer7_col9_net0, layer7_col8_net1, layer7_col9_net1, layer7_col9_net2, layer7_col10_net0, layer7_col10_net1, layer7_col11_net0, layer7_col11_net1, layer7_col12_net0, layer7_col12_net1, layer7_col13_net0, layer7_col13_net1, layer7_col14_net0, layer7_col14_net1, layer7_col15_net0, layer7_col15_net1, layer7_col16_net0, layer7_col16_net1, layer7_col17_net0, layer7_col17_net1, layer7_col18_net0, layer7_col18_net1, layer7_col19_net0, layer7_col19_net1, layer7_col20_net0, layer7_col20_net1, layer7_col21_net0, layer7_col21_net1, layer7_col22_net0, layer7_col22_net1, layer7_col23_net0, layer7_col24_net0, layer7_col23_net1, layer7_col24_net1, layer7_col25_net0, layer7_col25_net1, layer7_col26_net0, layer7_col26_net1, layer7_col27_net0, layer7_col27_net1, layer7_col28_net0, layer7_col28_net1, layer7_col29_net0, layer7_col29_net1, layer7_col30_net0, layer7_col30_net1, layer7_col31_net0, layer7_col31_net1, layer7_col32_net0, layer7_col32_net1, layer7_col33_net0, layer7_col33_net1, layer7_col34_net0, layer7_col33_net2, layer7_col34_net1, layer7_col35_net0, layer7_col34_net2, layer7_col35_net1, layer7_col36_net0, layer7_col35_net2, layer7_col36_net1, layer7_col37_net0, layer7_col36_net2, layer7_col37_net1, layer7_col38_net0, layer7_col37_net2, layer7_col38_net1, layer7_col38_net2, layer7_col39_net0, layer7_col40_net0, layer7_col40_net1, layer7_col41_net0, layer7_col41_net1, layer7_col42_net0, layer7_col42_net1, layer7_col43_net0, layer7_col43_net1, layer7_col44_net0, layer7_col44_net1, layer7_col45_net0, layer7_col45_net1, layer7_col46_net0, layer7_col46_net1, layer7_col47_net0, layer7_col47_net1, layer7_col48_net0, layer7_col48_net1, layer7_col49_net0, layer7_col49_net1, layer7_col50_net0, layer7_col50_net1, layer7_col51_net0, layer7_col51_net1, layer7_col52_net0, layer7_col52_net1, layer7_col53_net0, layer7_col53_net1, layer7_col54_net0, layer7_col54_net1, layer7_col55_net0, layer7_col55_net1, layer7_col56_net0, layer7_col56_net1, layer7_col57_net0, layer7_col57_net1, layer7_col58_net0, layer7_col58_net1, layer7_col59_net0, layer7_col59_net1, layer7_col60_net0, layer7_col60_net1, layer7_col61_net0, layer7_col61_net1, layer7_col62_net0, layer7_col62_net1;
+logic layer8_col0_net0, layer8_col1_net0, layer8_col1_net1, layer8_col2_net0, layer8_col2_net1, layer8_col3_net0, layer8_col3_net1, layer8_col4_net0, layer8_col4_net1, layer8_col5_net0, layer8_col5_net1, layer8_col6_net0, layer8_col6_net1, layer8_col7_net0, layer8_col7_net1, layer8_col8_net0, layer8_col8_net1, layer8_col9_net0, layer8_col10_net0, layer8_col9_net1, layer8_col10_net1, layer8_col11_net0, layer8_col11_net1, layer8_col12_net0, layer8_col12_net1, layer8_col13_net0, layer8_col13_net1, layer8_col14_net0, layer8_col14_net1, layer8_col15_net0, layer8_col15_net1, layer8_col16_net0, layer8_col16_net1, layer8_col17_net0, layer8_col17_net1, layer8_col18_net0, layer8_col18_net1, layer8_col19_net0, layer8_col19_net1, layer8_col20_net0, layer8_col20_net1, layer8_col21_net0, layer8_col21_net1, layer8_col22_net0, layer8_col22_net1, layer8_col23_net0, layer8_col23_net1, layer8_col24_net0, layer8_col24_net1, layer8_col25_net0, layer8_col25_net1, layer8_col26_net0, layer8_col26_net1, layer8_col27_net0, layer8_col27_net1, layer8_col28_net0, layer8_col28_net1, layer8_col29_net0, layer8_col29_net1, layer8_col30_net0, layer8_col30_net1, layer8_col31_net0, layer8_col31_net1, layer8_col32_net0, layer8_col32_net1, layer8_col33_net0, layer8_col33_net1, layer8_col34_net0, layer8_col34_net1, layer8_col35_net0, layer8_col35_net1, layer8_col36_net0, layer8_col36_net1, layer8_col37_net0, layer8_col37_net1, layer8_col38_net0, layer8_col38_net1, layer8_col39_net0, layer8_col39_net1, layer8_col40_net0, layer8_col40_net1, layer8_col41_net0, layer8_col41_net1, layer8_col42_net0, layer8_col42_net1, layer8_col43_net0, layer8_col43_net1, layer8_col44_net0, layer8_col44_net1, layer8_col45_net0, layer8_col45_net1, layer8_col46_net0, layer8_col46_net1, layer8_col47_net0, layer8_col47_net1, layer8_col48_net0, layer8_col48_net1, layer8_col49_net0, layer8_col49_net1, layer8_col50_net0, layer8_col50_net1, layer8_col51_net0, layer8_col51_net1, layer8_col52_net0, layer8_col52_net1, layer8_col53_net0, layer8_col53_net1, layer8_col54_net0, layer8_col54_net1, layer8_col55_net0, layer8_col55_net1, layer8_col56_net0, layer8_col56_net1, layer8_col57_net0, layer8_col57_net1, layer8_col58_net0, layer8_col58_net1, layer8_col59_net0, layer8_col59_net1, layer8_col60_net0, layer8_col60_net1, layer8_col61_net0, layer8_col61_net1, layer8_col62_net0, layer8_col62_net1;
+
+//----------- Reduction Layer 1 Start --------------
+
+assign layer1_col0_net0 = partial_prod[0][0];
+assign layer1_col1_net0 = partial_prod[1][0];
+assign layer1_col1_net1 = partial_prod[0][1];
+assign layer1_col2_net1 = partial_prod[0][2];
+assign layer1_col3_net2 = partial_prod[0][3];
+assign layer1_col4_net2 = partial_prod[1][3];
+assign layer1_col4_net3 = partial_prod[0][4];
+assign layer1_col6_net4 = partial_prod[0][6];
+assign layer1_col7_net4 = partial_prod[1][6];
+assign layer1_col7_net5 = partial_prod[0][7];
+assign layer1_col9_net6 = partial_prod[0][9];
+assign layer1_col10_net6 = partial_prod[1][9];
+assign layer1_col10_net7 = partial_prod[0][10];
+assign layer1_col12_net8 = partial_prod[0][12];
+assign layer1_col13_net8 = partial_prod[1][12];
+assign layer1_col13_net9 = partial_prod[0][13];
+assign layer1_col15_net10 = partial_prod[0][15];
+assign layer1_col16_net10 = partial_prod[1][15];
+assign layer1_col16_net11 = partial_prod[0][16];
+assign layer1_col18_net12 = partial_prod[0][18];
+assign layer1_col19_net12 = partial_prod[1][18];
+assign layer1_col19_net13 = partial_prod[0][19];
+assign layer1_col21_net14 = partial_prod[0][21];
+assign layer1_col22_net14 = partial_prod[1][21];
+assign layer1_col22_net15 = partial_prod[0][22];
+assign layer1_col24_net16 = partial_prod[0][24];
+assign layer1_col25_net16 = partial_prod[1][24];
+assign layer1_col25_net17 = partial_prod[0][25];
+assign layer1_col27_net18 = partial_prod[0][27];
+assign layer1_col28_net18 = partial_prod[1][27];
+assign layer1_col28_net19 = partial_prod[0][28];
+assign layer1_col30_net20 = partial_prod[0][30];
+assign layer1_col31_net20 = partial_prod[1][30];
+assign layer1_col31_net21 = partial_prod[0][31];
+assign layer1_col32_net20 = partial_prod[1][31];
+assign layer1_col34_net19 = partial_prod[4][30];
+assign layer1_col34_net20 = partial_prod[3][31];
+assign layer1_col35_net18 = partial_prod[4][31];
+assign layer1_col37_net17 = partial_prod[7][30];
+assign layer1_col37_net18 = partial_prod[6][31];
+assign layer1_col38_net16 = partial_prod[7][31];
+assign layer1_col40_net15 = partial_prod[10][30];
+assign layer1_col40_net16 = partial_prod[9][31];
+assign layer1_col41_net14 = partial_prod[10][31];
+assign layer1_col43_net13 = partial_prod[13][30];
+assign layer1_col43_net14 = partial_prod[12][31];
+assign layer1_col44_net12 = partial_prod[13][31];
+assign layer1_col46_net11 = partial_prod[16][30];
+assign layer1_col46_net12 = partial_prod[15][31];
+assign layer1_col47_net10 = partial_prod[16][31];
+assign layer1_col49_net9 = partial_prod[19][30];
+assign layer1_col49_net10 = partial_prod[18][31];
+assign layer1_col50_net8 = partial_prod[19][31];
+assign layer1_col52_net7 = partial_prod[22][30];
+assign layer1_col52_net8 = partial_prod[21][31];
+assign layer1_col53_net6 = partial_prod[22][31];
+assign layer1_col55_net5 = partial_prod[25][30];
+assign layer1_col55_net6 = partial_prod[24][31];
+assign layer1_col56_net4 = partial_prod[25][31];
+assign layer1_col58_net3 = partial_prod[28][30];
+assign layer1_col58_net4 = partial_prod[27][31];
+assign layer1_col59_net2 = partial_prod[28][31];
+assign layer1_col61_net1 = partial_prod[31][30];
+assign layer1_col61_net2 = partial_prod[30][31];
+assign layer1_col62_net0 = partial_prod[31][31];
+half_adder ha_add1_0 (partial_prod[2][0], partial_prod[1][1], layer1_col2_net0, layer1_col3_net0);
+full_adder fa_add1_0 (partial_prod[3][0], partial_prod[2][1], partial_prod[1][2], layer1_col3_net1, layer1_col4_net0);
+full_adder fa_add1_1 (partial_prod[4][0], partial_prod[3][1], partial_prod[2][2], layer1_col4_net1, layer1_col5_net0);
+full_adder fa_add1_2 (partial_prod[5][0], partial_prod[4][1], partial_prod[3][2], layer1_col5_net1, layer1_col6_net0);
+full_adder fa_add1_3 (partial_prod[2][3], partial_prod[1][4], partial_prod[0][5], layer1_col5_net2, layer1_col6_net1);
+full_adder fa_add1_4 (partial_prod[6][0], partial_prod[5][1], partial_prod[4][2], layer1_col6_net2, layer1_col7_net0);
+full_adder fa_add1_5 (partial_prod[3][3], partial_prod[2][4], partial_prod[1][5], layer1_col6_net3, layer1_col7_net1);
+full_adder fa_add1_6 (partial_prod[7][0], partial_prod[6][1], partial_prod[5][2], layer1_col7_net2, layer1_col8_net0);
+full_adder fa_add1_7 (partial_prod[4][3], partial_prod[3][4], partial_prod[2][5], layer1_col7_net3, layer1_col8_net1);
+full_adder fa_add1_8 (partial_prod[8][0], partial_prod[7][1], partial_prod[6][2], layer1_col8_net2, layer1_col9_net0);
+full_adder fa_add1_9 (partial_prod[5][3], partial_prod[4][4], partial_prod[3][5], layer1_col8_net3, layer1_col9_net1);
+full_adder fa_add1_10 (partial_prod[2][6], partial_prod[1][7], partial_prod[0][8], layer1_col8_net4, layer1_col9_net2);
+full_adder fa_add1_11 (partial_prod[9][0], partial_prod[8][1], partial_prod[7][2], layer1_col9_net3, layer1_col10_net0);
+full_adder fa_add1_12 (partial_prod[6][3], partial_prod[5][4], partial_prod[4][5], layer1_col9_net4, layer1_col10_net1);
+full_adder fa_add1_13 (partial_prod[3][6], partial_prod[2][7], partial_prod[1][8], layer1_col9_net5, layer1_col10_net2);
+full_adder fa_add1_14 (partial_prod[10][0], partial_prod[9][1], partial_prod[8][2], layer1_col10_net3, layer1_col11_net0);
+full_adder fa_add1_15 (partial_prod[7][3], partial_prod[6][4], partial_prod[5][5], layer1_col10_net4, layer1_col11_net1);
+full_adder fa_add1_16 (partial_prod[4][6], partial_prod[3][7], partial_prod[2][8], layer1_col10_net5, layer1_col11_net2);
+full_adder fa_add1_17 (partial_prod[11][0], partial_prod[10][1], partial_prod[9][2], layer1_col11_net3, layer1_col12_net0);
+full_adder fa_add1_18 (partial_prod[8][3], partial_prod[7][4], partial_prod[6][5], layer1_col11_net4, layer1_col12_net1);
+full_adder fa_add1_19 (partial_prod[5][6], partial_prod[4][7], partial_prod[3][8], layer1_col11_net5, layer1_col12_net2);
+full_adder fa_add1_20 (partial_prod[2][9], partial_prod[1][10], partial_prod[0][11], layer1_col11_net6, layer1_col12_net3);
+full_adder fa_add1_21 (partial_prod[12][0], partial_prod[11][1], partial_prod[10][2], layer1_col12_net4, layer1_col13_net0);
+full_adder fa_add1_22 (partial_prod[9][3], partial_prod[8][4], partial_prod[7][5], layer1_col12_net5, layer1_col13_net1);
+full_adder fa_add1_23 (partial_prod[6][6], partial_prod[5][7], partial_prod[4][8], layer1_col12_net6, layer1_col13_net2);
+full_adder fa_add1_24 (partial_prod[3][9], partial_prod[2][10], partial_prod[1][11], layer1_col12_net7, layer1_col13_net3);
+full_adder fa_add1_25 (partial_prod[13][0], partial_prod[12][1], partial_prod[11][2], layer1_col13_net4, layer1_col14_net0);
+full_adder fa_add1_26 (partial_prod[10][3], partial_prod[9][4], partial_prod[8][5], layer1_col13_net5, layer1_col14_net1);
+full_adder fa_add1_27 (partial_prod[7][6], partial_prod[6][7], partial_prod[5][8], layer1_col13_net6, layer1_col14_net2);
+full_adder fa_add1_28 (partial_prod[4][9], partial_prod[3][10], partial_prod[2][11], layer1_col13_net7, layer1_col14_net3);
+full_adder fa_add1_29 (partial_prod[14][0], partial_prod[13][1], partial_prod[12][2], layer1_col14_net4, layer1_col15_net0);
+full_adder fa_add1_30 (partial_prod[11][3], partial_prod[10][4], partial_prod[9][5], layer1_col14_net5, layer1_col15_net1);
+full_adder fa_add1_31 (partial_prod[8][6], partial_prod[7][7], partial_prod[6][8], layer1_col14_net6, layer1_col15_net2);
+full_adder fa_add1_32 (partial_prod[5][9], partial_prod[4][10], partial_prod[3][11], layer1_col14_net7, layer1_col15_net3);
+full_adder fa_add1_33 (partial_prod[2][12], partial_prod[1][13], partial_prod[0][14], layer1_col14_net8, layer1_col15_net4);
+full_adder fa_add1_34 (partial_prod[15][0], partial_prod[14][1], partial_prod[13][2], layer1_col15_net5, layer1_col16_net0);
+full_adder fa_add1_35 (partial_prod[12][3], partial_prod[11][4], partial_prod[10][5], layer1_col15_net6, layer1_col16_net1);
+full_adder fa_add1_36 (partial_prod[9][6], partial_prod[8][7], partial_prod[7][8], layer1_col15_net7, layer1_col16_net2);
+full_adder fa_add1_37 (partial_prod[6][9], partial_prod[5][10], partial_prod[4][11], layer1_col15_net8, layer1_col16_net3);
+full_adder fa_add1_38 (partial_prod[3][12], partial_prod[2][13], partial_prod[1][14], layer1_col15_net9, layer1_col16_net4);
+full_adder fa_add1_39 (partial_prod[16][0], partial_prod[15][1], partial_prod[14][2], layer1_col16_net5, layer1_col17_net0);
+full_adder fa_add1_40 (partial_prod[13][3], partial_prod[12][4], partial_prod[11][5], layer1_col16_net6, layer1_col17_net1);
+full_adder fa_add1_41 (partial_prod[10][6], partial_prod[9][7], partial_prod[8][8], layer1_col16_net7, layer1_col17_net2);
+full_adder fa_add1_42 (partial_prod[7][9], partial_prod[6][10], partial_prod[5][11], layer1_col16_net8, layer1_col17_net3);
+full_adder fa_add1_43 (partial_prod[4][12], partial_prod[3][13], partial_prod[2][14], layer1_col16_net9, layer1_col17_net4);
+full_adder fa_add1_44 (partial_prod[17][0], partial_prod[16][1], partial_prod[15][2], layer1_col17_net5, layer1_col18_net0);
+full_adder fa_add1_45 (partial_prod[14][3], partial_prod[13][4], partial_prod[12][5], layer1_col17_net6, layer1_col18_net1);
+full_adder fa_add1_46 (partial_prod[11][6], partial_prod[10][7], partial_prod[9][8], layer1_col17_net7, layer1_col18_net2);
+full_adder fa_add1_47 (partial_prod[8][9], partial_prod[7][10], partial_prod[6][11], layer1_col17_net8, layer1_col18_net3);
+full_adder fa_add1_48 (partial_prod[5][12], partial_prod[4][13], partial_prod[3][14], layer1_col17_net9, layer1_col18_net4);
+full_adder fa_add1_49 (partial_prod[2][15], partial_prod[1][16], partial_prod[0][17], layer1_col17_net10, layer1_col18_net5);
+full_adder fa_add1_50 (partial_prod[18][0], partial_prod[17][1], partial_prod[16][2], layer1_col18_net6, layer1_col19_net0);
+full_adder fa_add1_51 (partial_prod[15][3], partial_prod[14][4], partial_prod[13][5], layer1_col18_net7, layer1_col19_net1);
+full_adder fa_add1_52 (partial_prod[12][6], partial_prod[11][7], partial_prod[10][8], layer1_col18_net8, layer1_col19_net2);
+full_adder fa_add1_53 (partial_prod[9][9], partial_prod[8][10], partial_prod[7][11], layer1_col18_net9, layer1_col19_net3);
+full_adder fa_add1_54 (partial_prod[6][12], partial_prod[5][13], partial_prod[4][14], layer1_col18_net10, layer1_col19_net4);
+full_adder fa_add1_55 (partial_prod[3][15], partial_prod[2][16], partial_prod[1][17], layer1_col18_net11, layer1_col19_net5);
+full_adder fa_add1_56 (partial_prod[19][0], partial_prod[18][1], partial_prod[17][2], layer1_col19_net6, layer1_col20_net0);
+full_adder fa_add1_57 (partial_prod[16][3], partial_prod[15][4], partial_prod[14][5], layer1_col19_net7, layer1_col20_net1);
+full_adder fa_add1_58 (partial_prod[13][6], partial_prod[12][7], partial_prod[11][8], layer1_col19_net8, layer1_col20_net2);
+full_adder fa_add1_59 (partial_prod[10][9], partial_prod[9][10], partial_prod[8][11], layer1_col19_net9, layer1_col20_net3);
+full_adder fa_add1_60 (partial_prod[7][12], partial_prod[6][13], partial_prod[5][14], layer1_col19_net10, layer1_col20_net4);
+full_adder fa_add1_61 (partial_prod[4][15], partial_prod[3][16], partial_prod[2][17], layer1_col19_net11, layer1_col20_net5);
+full_adder fa_add1_62 (partial_prod[20][0], partial_prod[19][1], partial_prod[18][2], layer1_col20_net6, layer1_col21_net0);
+full_adder fa_add1_63 (partial_prod[17][3], partial_prod[16][4], partial_prod[15][5], layer1_col20_net7, layer1_col21_net1);
+full_adder fa_add1_64 (partial_prod[14][6], partial_prod[13][7], partial_prod[12][8], layer1_col20_net8, layer1_col21_net2);
+full_adder fa_add1_65 (partial_prod[11][9], partial_prod[10][10], partial_prod[9][11], layer1_col20_net9, layer1_col21_net3);
+full_adder fa_add1_66 (partial_prod[8][12], partial_prod[7][13], partial_prod[6][14], layer1_col20_net10, layer1_col21_net4);
+full_adder fa_add1_67 (partial_prod[5][15], partial_prod[4][16], partial_prod[3][17], layer1_col20_net11, layer1_col21_net5);
+full_adder fa_add1_68 (partial_prod[2][18], partial_prod[1][19], partial_prod[0][20], layer1_col20_net12, layer1_col21_net6);
+full_adder fa_add1_69 (partial_prod[21][0], partial_prod[20][1], partial_prod[19][2], layer1_col21_net7, layer1_col22_net0);
+full_adder fa_add1_70 (partial_prod[18][3], partial_prod[17][4], partial_prod[16][5], layer1_col21_net8, layer1_col22_net1);
+full_adder fa_add1_71 (partial_prod[15][6], partial_prod[14][7], partial_prod[13][8], layer1_col21_net9, layer1_col22_net2);
+full_adder fa_add1_72 (partial_prod[12][9], partial_prod[11][10], partial_prod[10][11], layer1_col21_net10, layer1_col22_net3);
+full_adder fa_add1_73 (partial_prod[9][12], partial_prod[8][13], partial_prod[7][14], layer1_col21_net11, layer1_col22_net4);
+full_adder fa_add1_74 (partial_prod[6][15], partial_prod[5][16], partial_prod[4][17], layer1_col21_net12, layer1_col22_net5);
+full_adder fa_add1_75 (partial_prod[3][18], partial_prod[2][19], partial_prod[1][20], layer1_col21_net13, layer1_col22_net6);
+full_adder fa_add1_76 (partial_prod[22][0], partial_prod[21][1], partial_prod[20][2], layer1_col22_net7, layer1_col23_net0);
+full_adder fa_add1_77 (partial_prod[19][3], partial_prod[18][4], partial_prod[17][5], layer1_col22_net8, layer1_col23_net1);
+full_adder fa_add1_78 (partial_prod[16][6], partial_prod[15][7], partial_prod[14][8], layer1_col22_net9, layer1_col23_net2);
+full_adder fa_add1_79 (partial_prod[13][9], partial_prod[12][10], partial_prod[11][11], layer1_col22_net10, layer1_col23_net3);
+full_adder fa_add1_80 (partial_prod[10][12], partial_prod[9][13], partial_prod[8][14], layer1_col22_net11, layer1_col23_net4);
+full_adder fa_add1_81 (partial_prod[7][15], partial_prod[6][16], partial_prod[5][17], layer1_col22_net12, layer1_col23_net5);
+full_adder fa_add1_82 (partial_prod[4][18], partial_prod[3][19], partial_prod[2][20], layer1_col22_net13, layer1_col23_net6);
+full_adder fa_add1_83 (partial_prod[23][0], partial_prod[22][1], partial_prod[21][2], layer1_col23_net7, layer1_col24_net0);
+full_adder fa_add1_84 (partial_prod[20][3], partial_prod[19][4], partial_prod[18][5], layer1_col23_net8, layer1_col24_net1);
+full_adder fa_add1_85 (partial_prod[17][6], partial_prod[16][7], partial_prod[15][8], layer1_col23_net9, layer1_col24_net2);
+full_adder fa_add1_86 (partial_prod[14][9], partial_prod[13][10], partial_prod[12][11], layer1_col23_net10, layer1_col24_net3);
+full_adder fa_add1_87 (partial_prod[11][12], partial_prod[10][13], partial_prod[9][14], layer1_col23_net11, layer1_col24_net4);
+full_adder fa_add1_88 (partial_prod[8][15], partial_prod[7][16], partial_prod[6][17], layer1_col23_net12, layer1_col24_net5);
+full_adder fa_add1_89 (partial_prod[5][18], partial_prod[4][19], partial_prod[3][20], layer1_col23_net13, layer1_col24_net6);
+full_adder fa_add1_90 (partial_prod[2][21], partial_prod[1][22], partial_prod[0][23], layer1_col23_net14, layer1_col24_net7);
+full_adder fa_add1_91 (partial_prod[24][0], partial_prod[23][1], partial_prod[22][2], layer1_col24_net8, layer1_col25_net0);
+full_adder fa_add1_92 (partial_prod[21][3], partial_prod[20][4], partial_prod[19][5], layer1_col24_net9, layer1_col25_net1);
+full_adder fa_add1_93 (partial_prod[18][6], partial_prod[17][7], partial_prod[16][8], layer1_col24_net10, layer1_col25_net2);
+full_adder fa_add1_94 (partial_prod[15][9], partial_prod[14][10], partial_prod[13][11], layer1_col24_net11, layer1_col25_net3);
+full_adder fa_add1_95 (partial_prod[12][12], partial_prod[11][13], partial_prod[10][14], layer1_col24_net12, layer1_col25_net4);
+full_adder fa_add1_96 (partial_prod[9][15], partial_prod[8][16], partial_prod[7][17], layer1_col24_net13, layer1_col25_net5);
+full_adder fa_add1_97 (partial_prod[6][18], partial_prod[5][19], partial_prod[4][20], layer1_col24_net14, layer1_col25_net6);
+full_adder fa_add1_98 (partial_prod[3][21], partial_prod[2][22], partial_prod[1][23], layer1_col24_net15, layer1_col25_net7);
+full_adder fa_add1_99 (partial_prod[25][0], partial_prod[24][1], partial_prod[23][2], layer1_col25_net8, layer1_col26_net0);
+full_adder fa_add1_100 (partial_prod[22][3], partial_prod[21][4], partial_prod[20][5], layer1_col25_net9, layer1_col26_net1);
+full_adder fa_add1_101 (partial_prod[19][6], partial_prod[18][7], partial_prod[17][8], layer1_col25_net10, layer1_col26_net2);
+full_adder fa_add1_102 (partial_prod[16][9], partial_prod[15][10], partial_prod[14][11], layer1_col25_net11, layer1_col26_net3);
+full_adder fa_add1_103 (partial_prod[13][12], partial_prod[12][13], partial_prod[11][14], layer1_col25_net12, layer1_col26_net4);
+full_adder fa_add1_104 (partial_prod[10][15], partial_prod[9][16], partial_prod[8][17], layer1_col25_net13, layer1_col26_net5);
+full_adder fa_add1_105 (partial_prod[7][18], partial_prod[6][19], partial_prod[5][20], layer1_col25_net14, layer1_col26_net6);
+full_adder fa_add1_106 (partial_prod[4][21], partial_prod[3][22], partial_prod[2][23], layer1_col25_net15, layer1_col26_net7);
+full_adder fa_add1_107 (partial_prod[26][0], partial_prod[25][1], partial_prod[24][2], layer1_col26_net8, layer1_col27_net0);
+full_adder fa_add1_108 (partial_prod[23][3], partial_prod[22][4], partial_prod[21][5], layer1_col26_net9, layer1_col27_net1);
+full_adder fa_add1_109 (partial_prod[20][6], partial_prod[19][7], partial_prod[18][8], layer1_col26_net10, layer1_col27_net2);
+full_adder fa_add1_110 (partial_prod[17][9], partial_prod[16][10], partial_prod[15][11], layer1_col26_net11, layer1_col27_net3);
+full_adder fa_add1_111 (partial_prod[14][12], partial_prod[13][13], partial_prod[12][14], layer1_col26_net12, layer1_col27_net4);
+full_adder fa_add1_112 (partial_prod[11][15], partial_prod[10][16], partial_prod[9][17], layer1_col26_net13, layer1_col27_net5);
+full_adder fa_add1_113 (partial_prod[8][18], partial_prod[7][19], partial_prod[6][20], layer1_col26_net14, layer1_col27_net6);
+full_adder fa_add1_114 (partial_prod[5][21], partial_prod[4][22], partial_prod[3][23], layer1_col26_net15, layer1_col27_net7);
+full_adder fa_add1_115 (partial_prod[2][24], partial_prod[1][25], partial_prod[0][26], layer1_col26_net16, layer1_col27_net8);
+full_adder fa_add1_116 (partial_prod[27][0], partial_prod[26][1], partial_prod[25][2], layer1_col27_net9, layer1_col28_net0);
+full_adder fa_add1_117 (partial_prod[24][3], partial_prod[23][4], partial_prod[22][5], layer1_col27_net10, layer1_col28_net1);
+full_adder fa_add1_118 (partial_prod[21][6], partial_prod[20][7], partial_prod[19][8], layer1_col27_net11, layer1_col28_net2);
+full_adder fa_add1_119 (partial_prod[18][9], partial_prod[17][10], partial_prod[16][11], layer1_col27_net12, layer1_col28_net3);
+full_adder fa_add1_120 (partial_prod[15][12], partial_prod[14][13], partial_prod[13][14], layer1_col27_net13, layer1_col28_net4);
+full_adder fa_add1_121 (partial_prod[12][15], partial_prod[11][16], partial_prod[10][17], layer1_col27_net14, layer1_col28_net5);
+full_adder fa_add1_122 (partial_prod[9][18], partial_prod[8][19], partial_prod[7][20], layer1_col27_net15, layer1_col28_net6);
+full_adder fa_add1_123 (partial_prod[6][21], partial_prod[5][22], partial_prod[4][23], layer1_col27_net16, layer1_col28_net7);
+full_adder fa_add1_124 (partial_prod[3][24], partial_prod[2][25], partial_prod[1][26], layer1_col27_net17, layer1_col28_net8);
+full_adder fa_add1_125 (partial_prod[28][0], partial_prod[27][1], partial_prod[26][2], layer1_col28_net9, layer1_col29_net0);
+full_adder fa_add1_126 (partial_prod[25][3], partial_prod[24][4], partial_prod[23][5], layer1_col28_net10, layer1_col29_net1);
+full_adder fa_add1_127 (partial_prod[22][6], partial_prod[21][7], partial_prod[20][8], layer1_col28_net11, layer1_col29_net2);
+full_adder fa_add1_128 (partial_prod[19][9], partial_prod[18][10], partial_prod[17][11], layer1_col28_net12, layer1_col29_net3);
+full_adder fa_add1_129 (partial_prod[16][12], partial_prod[15][13], partial_prod[14][14], layer1_col28_net13, layer1_col29_net4);
+full_adder fa_add1_130 (partial_prod[13][15], partial_prod[12][16], partial_prod[11][17], layer1_col28_net14, layer1_col29_net5);
+full_adder fa_add1_131 (partial_prod[10][18], partial_prod[9][19], partial_prod[8][20], layer1_col28_net15, layer1_col29_net6);
+full_adder fa_add1_132 (partial_prod[7][21], partial_prod[6][22], partial_prod[5][23], layer1_col28_net16, layer1_col29_net7);
+full_adder fa_add1_133 (partial_prod[4][24], partial_prod[3][25], partial_prod[2][26], layer1_col28_net17, layer1_col29_net8);
+full_adder fa_add1_134 (partial_prod[29][0], partial_prod[28][1], partial_prod[27][2], layer1_col29_net9, layer1_col30_net0);
+full_adder fa_add1_135 (partial_prod[26][3], partial_prod[25][4], partial_prod[24][5], layer1_col29_net10, layer1_col30_net1);
+full_adder fa_add1_136 (partial_prod[23][6], partial_prod[22][7], partial_prod[21][8], layer1_col29_net11, layer1_col30_net2);
+full_adder fa_add1_137 (partial_prod[20][9], partial_prod[19][10], partial_prod[18][11], layer1_col29_net12, layer1_col30_net3);
+full_adder fa_add1_138 (partial_prod[17][12], partial_prod[16][13], partial_prod[15][14], layer1_col29_net13, layer1_col30_net4);
+full_adder fa_add1_139 (partial_prod[14][15], partial_prod[13][16], partial_prod[12][17], layer1_col29_net14, layer1_col30_net5);
+full_adder fa_add1_140 (partial_prod[11][18], partial_prod[10][19], partial_prod[9][20], layer1_col29_net15, layer1_col30_net6);
+full_adder fa_add1_141 (partial_prod[8][21], partial_prod[7][22], partial_prod[6][23], layer1_col29_net16, layer1_col30_net7);
+full_adder fa_add1_142 (partial_prod[5][24], partial_prod[4][25], partial_prod[3][26], layer1_col29_net17, layer1_col30_net8);
+full_adder fa_add1_143 (partial_prod[2][27], partial_prod[1][28], partial_prod[0][29], layer1_col29_net18, layer1_col30_net9);
+full_adder fa_add1_144 (partial_prod[30][0], partial_prod[29][1], partial_prod[28][2], layer1_col30_net10, layer1_col31_net0);
+full_adder fa_add1_145 (partial_prod[27][3], partial_prod[26][4], partial_prod[25][5], layer1_col30_net11, layer1_col31_net1);
+full_adder fa_add1_146 (partial_prod[24][6], partial_prod[23][7], partial_prod[22][8], layer1_col30_net12, layer1_col31_net2);
+full_adder fa_add1_147 (partial_prod[21][9], partial_prod[20][10], partial_prod[19][11], layer1_col30_net13, layer1_col31_net3);
+full_adder fa_add1_148 (partial_prod[18][12], partial_prod[17][13], partial_prod[16][14], layer1_col30_net14, layer1_col31_net4);
+full_adder fa_add1_149 (partial_prod[15][15], partial_prod[14][16], partial_prod[13][17], layer1_col30_net15, layer1_col31_net5);
+full_adder fa_add1_150 (partial_prod[12][18], partial_prod[11][19], partial_prod[10][20], layer1_col30_net16, layer1_col31_net6);
+full_adder fa_add1_151 (partial_prod[9][21], partial_prod[8][22], partial_prod[7][23], layer1_col30_net17, layer1_col31_net7);
+full_adder fa_add1_152 (partial_prod[6][24], partial_prod[5][25], partial_prod[4][26], layer1_col30_net18, layer1_col31_net8);
+full_adder fa_add1_153 (partial_prod[3][27], partial_prod[2][28], partial_prod[1][29], layer1_col30_net19, layer1_col31_net9);
+full_adder fa_add1_154 (partial_prod[31][0], partial_prod[30][1], partial_prod[29][2], layer1_col31_net10, layer1_col32_net0);
+full_adder fa_add1_155 (partial_prod[28][3], partial_prod[27][4], partial_prod[26][5], layer1_col31_net11, layer1_col32_net1);
+full_adder fa_add1_156 (partial_prod[25][6], partial_prod[24][7], partial_prod[23][8], layer1_col31_net12, layer1_col32_net2);
+full_adder fa_add1_157 (partial_prod[22][9], partial_prod[21][10], partial_prod[20][11], layer1_col31_net13, layer1_col32_net3);
+full_adder fa_add1_158 (partial_prod[19][12], partial_prod[18][13], partial_prod[17][14], layer1_col31_net14, layer1_col32_net4);
+full_adder fa_add1_159 (partial_prod[16][15], partial_prod[15][16], partial_prod[14][17], layer1_col31_net15, layer1_col32_net5);
+full_adder fa_add1_160 (partial_prod[13][18], partial_prod[12][19], partial_prod[11][20], layer1_col31_net16, layer1_col32_net6);
+full_adder fa_add1_161 (partial_prod[10][21], partial_prod[9][22], partial_prod[8][23], layer1_col31_net17, layer1_col32_net7);
+full_adder fa_add1_162 (partial_prod[7][24], partial_prod[6][25], partial_prod[5][26], layer1_col31_net18, layer1_col32_net8);
+full_adder fa_add1_163 (partial_prod[4][27], partial_prod[3][28], partial_prod[2][29], layer1_col31_net19, layer1_col32_net9);
+full_adder fa_add1_164 (partial_prod[31][1], partial_prod[30][2], partial_prod[29][3], layer1_col32_net10, layer1_col33_net0);
+full_adder fa_add1_165 (partial_prod[28][4], partial_prod[27][5], partial_prod[26][6], layer1_col32_net11, layer1_col33_net1);
+full_adder fa_add1_166 (partial_prod[25][7], partial_prod[24][8], partial_prod[23][9], layer1_col32_net12, layer1_col33_net2);
+full_adder fa_add1_167 (partial_prod[22][10], partial_prod[21][11], partial_prod[20][12], layer1_col32_net13, layer1_col33_net3);
+full_adder fa_add1_168 (partial_prod[19][13], partial_prod[18][14], partial_prod[17][15], layer1_col32_net14, layer1_col33_net4);
+full_adder fa_add1_169 (partial_prod[16][16], partial_prod[15][17], partial_prod[14][18], layer1_col32_net15, layer1_col33_net5);
+full_adder fa_add1_170 (partial_prod[13][19], partial_prod[12][20], partial_prod[11][21], layer1_col32_net16, layer1_col33_net6);
+full_adder fa_add1_171 (partial_prod[10][22], partial_prod[9][23], partial_prod[8][24], layer1_col32_net17, layer1_col33_net7);
+full_adder fa_add1_172 (partial_prod[7][25], partial_prod[6][26], partial_prod[5][27], layer1_col32_net18, layer1_col33_net8);
+full_adder fa_add1_173 (partial_prod[4][28], partial_prod[3][29], partial_prod[2][30], layer1_col32_net19, layer1_col33_net9);
+full_adder fa_add1_174 (partial_prod[31][2], partial_prod[30][3], partial_prod[29][4], layer1_col33_net10, layer1_col34_net0);
+full_adder fa_add1_175 (partial_prod[28][5], partial_prod[27][6], partial_prod[26][7], layer1_col33_net11, layer1_col34_net1);
+full_adder fa_add1_176 (partial_prod[25][8], partial_prod[24][9], partial_prod[23][10], layer1_col33_net12, layer1_col34_net2);
+full_adder fa_add1_177 (partial_prod[22][11], partial_prod[21][12], partial_prod[20][13], layer1_col33_net13, layer1_col34_net3);
+full_adder fa_add1_178 (partial_prod[19][14], partial_prod[18][15], partial_prod[17][16], layer1_col33_net14, layer1_col34_net4);
+full_adder fa_add1_179 (partial_prod[16][17], partial_prod[15][18], partial_prod[14][19], layer1_col33_net15, layer1_col34_net5);
+full_adder fa_add1_180 (partial_prod[13][20], partial_prod[12][21], partial_prod[11][22], layer1_col33_net16, layer1_col34_net6);
+full_adder fa_add1_181 (partial_prod[10][23], partial_prod[9][24], partial_prod[8][25], layer1_col33_net17, layer1_col34_net7);
+full_adder fa_add1_182 (partial_prod[7][26], partial_prod[6][27], partial_prod[5][28], layer1_col33_net18, layer1_col34_net8);
+full_adder fa_add1_183 (partial_prod[4][29], partial_prod[3][30], partial_prod[2][31], layer1_col33_net19, layer1_col34_net9);
+full_adder fa_add1_184 (partial_prod[31][3], partial_prod[30][4], partial_prod[29][5], layer1_col34_net10, layer1_col35_net0);
+full_adder fa_add1_185 (partial_prod[28][6], partial_prod[27][7], partial_prod[26][8], layer1_col34_net11, layer1_col35_net1);
+full_adder fa_add1_186 (partial_prod[25][9], partial_prod[24][10], partial_prod[23][11], layer1_col34_net12, layer1_col35_net2);
+full_adder fa_add1_187 (partial_prod[22][12], partial_prod[21][13], partial_prod[20][14], layer1_col34_net13, layer1_col35_net3);
+full_adder fa_add1_188 (partial_prod[19][15], partial_prod[18][16], partial_prod[17][17], layer1_col34_net14, layer1_col35_net4);
+full_adder fa_add1_189 (partial_prod[16][18], partial_prod[15][19], partial_prod[14][20], layer1_col34_net15, layer1_col35_net5);
+full_adder fa_add1_190 (partial_prod[13][21], partial_prod[12][22], partial_prod[11][23], layer1_col34_net16, layer1_col35_net6);
+full_adder fa_add1_191 (partial_prod[10][24], partial_prod[9][25], partial_prod[8][26], layer1_col34_net17, layer1_col35_net7);
+full_adder fa_add1_192 (partial_prod[7][27], partial_prod[6][28], partial_prod[5][29], layer1_col34_net18, layer1_col35_net8);
+full_adder fa_add1_193 (partial_prod[31][4], partial_prod[30][5], partial_prod[29][6], layer1_col35_net9, layer1_col36_net0);
+full_adder fa_add1_194 (partial_prod[28][7], partial_prod[27][8], partial_prod[26][9], layer1_col35_net10, layer1_col36_net1);
+full_adder fa_add1_195 (partial_prod[25][10], partial_prod[24][11], partial_prod[23][12], layer1_col35_net11, layer1_col36_net2);
+full_adder fa_add1_196 (partial_prod[22][13], partial_prod[21][14], partial_prod[20][15], layer1_col35_net12, layer1_col36_net3);
+full_adder fa_add1_197 (partial_prod[19][16], partial_prod[18][17], partial_prod[17][18], layer1_col35_net13, layer1_col36_net4);
+full_adder fa_add1_198 (partial_prod[16][19], partial_prod[15][20], partial_prod[14][21], layer1_col35_net14, layer1_col36_net5);
+full_adder fa_add1_199 (partial_prod[13][22], partial_prod[12][23], partial_prod[11][24], layer1_col35_net15, layer1_col36_net6);
+full_adder fa_add1_200 (partial_prod[10][25], partial_prod[9][26], partial_prod[8][27], layer1_col35_net16, layer1_col36_net7);
+full_adder fa_add1_201 (partial_prod[7][28], partial_prod[6][29], partial_prod[5][30], layer1_col35_net17, layer1_col36_net8);
+full_adder fa_add1_202 (partial_prod[31][5], partial_prod[30][6], partial_prod[29][7], layer1_col36_net9, layer1_col37_net0);
+full_adder fa_add1_203 (partial_prod[28][8], partial_prod[27][9], partial_prod[26][10], layer1_col36_net10, layer1_col37_net1);
+full_adder fa_add1_204 (partial_prod[25][11], partial_prod[24][12], partial_prod[23][13], layer1_col36_net11, layer1_col37_net2);
+full_adder fa_add1_205 (partial_prod[22][14], partial_prod[21][15], partial_prod[20][16], layer1_col36_net12, layer1_col37_net3);
+full_adder fa_add1_206 (partial_prod[19][17], partial_prod[18][18], partial_prod[17][19], layer1_col36_net13, layer1_col37_net4);
+full_adder fa_add1_207 (partial_prod[16][20], partial_prod[15][21], partial_prod[14][22], layer1_col36_net14, layer1_col37_net5);
+full_adder fa_add1_208 (partial_prod[13][23], partial_prod[12][24], partial_prod[11][25], layer1_col36_net15, layer1_col37_net6);
+full_adder fa_add1_209 (partial_prod[10][26], partial_prod[9][27], partial_prod[8][28], layer1_col36_net16, layer1_col37_net7);
+full_adder fa_add1_210 (partial_prod[7][29], partial_prod[6][30], partial_prod[5][31], layer1_col36_net17, layer1_col37_net8);
+full_adder fa_add1_211 (partial_prod[31][6], partial_prod[30][7], partial_prod[29][8], layer1_col37_net9, layer1_col38_net0);
+full_adder fa_add1_212 (partial_prod[28][9], partial_prod[27][10], partial_prod[26][11], layer1_col37_net10, layer1_col38_net1);
+full_adder fa_add1_213 (partial_prod[25][12], partial_prod[24][13], partial_prod[23][14], layer1_col37_net11, layer1_col38_net2);
+full_adder fa_add1_214 (partial_prod[22][15], partial_prod[21][16], partial_prod[20][17], layer1_col37_net12, layer1_col38_net3);
+full_adder fa_add1_215 (partial_prod[19][18], partial_prod[18][19], partial_prod[17][20], layer1_col37_net13, layer1_col38_net4);
+full_adder fa_add1_216 (partial_prod[16][21], partial_prod[15][22], partial_prod[14][23], layer1_col37_net14, layer1_col38_net5);
+full_adder fa_add1_217 (partial_prod[13][24], partial_prod[12][25], partial_prod[11][26], layer1_col37_net15, layer1_col38_net6);
+full_adder fa_add1_218 (partial_prod[10][27], partial_prod[9][28], partial_prod[8][29], layer1_col37_net16, layer1_col38_net7);
+full_adder fa_add1_219 (partial_prod[31][7], partial_prod[30][8], partial_prod[29][9], layer1_col38_net8, layer1_col39_net0);
+full_adder fa_add1_220 (partial_prod[28][10], partial_prod[27][11], partial_prod[26][12], layer1_col38_net9, layer1_col39_net1);
+full_adder fa_add1_221 (partial_prod[25][13], partial_prod[24][14], partial_prod[23][15], layer1_col38_net10, layer1_col39_net2);
+full_adder fa_add1_222 (partial_prod[22][16], partial_prod[21][17], partial_prod[20][18], layer1_col38_net11, layer1_col39_net3);
+full_adder fa_add1_223 (partial_prod[19][19], partial_prod[18][20], partial_prod[17][21], layer1_col38_net12, layer1_col39_net4);
+full_adder fa_add1_224 (partial_prod[16][22], partial_prod[15][23], partial_prod[14][24], layer1_col38_net13, layer1_col39_net5);
+full_adder fa_add1_225 (partial_prod[13][25], partial_prod[12][26], partial_prod[11][27], layer1_col38_net14, layer1_col39_net6);
+full_adder fa_add1_226 (partial_prod[10][28], partial_prod[9][29], partial_prod[8][30], layer1_col38_net15, layer1_col39_net7);
+full_adder fa_add1_227 (partial_prod[31][8], partial_prod[30][9], partial_prod[29][10], layer1_col39_net8, layer1_col40_net0);
+full_adder fa_add1_228 (partial_prod[28][11], partial_prod[27][12], partial_prod[26][13], layer1_col39_net9, layer1_col40_net1);
+full_adder fa_add1_229 (partial_prod[25][14], partial_prod[24][15], partial_prod[23][16], layer1_col39_net10, layer1_col40_net2);
+full_adder fa_add1_230 (partial_prod[22][17], partial_prod[21][18], partial_prod[20][19], layer1_col39_net11, layer1_col40_net3);
+full_adder fa_add1_231 (partial_prod[19][20], partial_prod[18][21], partial_prod[17][22], layer1_col39_net12, layer1_col40_net4);
+full_adder fa_add1_232 (partial_prod[16][23], partial_prod[15][24], partial_prod[14][25], layer1_col39_net13, layer1_col40_net5);
+full_adder fa_add1_233 (partial_prod[13][26], partial_prod[12][27], partial_prod[11][28], layer1_col39_net14, layer1_col40_net6);
+full_adder fa_add1_234 (partial_prod[10][29], partial_prod[9][30], partial_prod[8][31], layer1_col39_net15, layer1_col40_net7);
+full_adder fa_add1_235 (partial_prod[31][9], partial_prod[30][10], partial_prod[29][11], layer1_col40_net8, layer1_col41_net0);
+full_adder fa_add1_236 (partial_prod[28][12], partial_prod[27][13], partial_prod[26][14], layer1_col40_net9, layer1_col41_net1);
+full_adder fa_add1_237 (partial_prod[25][15], partial_prod[24][16], partial_prod[23][17], layer1_col40_net10, layer1_col41_net2);
+full_adder fa_add1_238 (partial_prod[22][18], partial_prod[21][19], partial_prod[20][20], layer1_col40_net11, layer1_col41_net3);
+full_adder fa_add1_239 (partial_prod[19][21], partial_prod[18][22], partial_prod[17][23], layer1_col40_net12, layer1_col41_net4);
+full_adder fa_add1_240 (partial_prod[16][24], partial_prod[15][25], partial_prod[14][26], layer1_col40_net13, layer1_col41_net5);
+full_adder fa_add1_241 (partial_prod[13][27], partial_prod[12][28], partial_prod[11][29], layer1_col40_net14, layer1_col41_net6);
+full_adder fa_add1_242 (partial_prod[31][10], partial_prod[30][11], partial_prod[29][12], layer1_col41_net7, layer1_col42_net0);
+full_adder fa_add1_243 (partial_prod[28][13], partial_prod[27][14], partial_prod[26][15], layer1_col41_net8, layer1_col42_net1);
+full_adder fa_add1_244 (partial_prod[25][16], partial_prod[24][17], partial_prod[23][18], layer1_col41_net9, layer1_col42_net2);
+full_adder fa_add1_245 (partial_prod[22][19], partial_prod[21][20], partial_prod[20][21], layer1_col41_net10, layer1_col42_net3);
+full_adder fa_add1_246 (partial_prod[19][22], partial_prod[18][23], partial_prod[17][24], layer1_col41_net11, layer1_col42_net4);
+full_adder fa_add1_247 (partial_prod[16][25], partial_prod[15][26], partial_prod[14][27], layer1_col41_net12, layer1_col42_net5);
+full_adder fa_add1_248 (partial_prod[13][28], partial_prod[12][29], partial_prod[11][30], layer1_col41_net13, layer1_col42_net6);
+full_adder fa_add1_249 (partial_prod[31][11], partial_prod[30][12], partial_prod[29][13], layer1_col42_net7, layer1_col43_net0);
+full_adder fa_add1_250 (partial_prod[28][14], partial_prod[27][15], partial_prod[26][16], layer1_col42_net8, layer1_col43_net1);
+full_adder fa_add1_251 (partial_prod[25][17], partial_prod[24][18], partial_prod[23][19], layer1_col42_net9, layer1_col43_net2);
+full_adder fa_add1_252 (partial_prod[22][20], partial_prod[21][21], partial_prod[20][22], layer1_col42_net10, layer1_col43_net3);
+full_adder fa_add1_253 (partial_prod[19][23], partial_prod[18][24], partial_prod[17][25], layer1_col42_net11, layer1_col43_net4);
+full_adder fa_add1_254 (partial_prod[16][26], partial_prod[15][27], partial_prod[14][28], layer1_col42_net12, layer1_col43_net5);
+full_adder fa_add1_255 (partial_prod[13][29], partial_prod[12][30], partial_prod[11][31], layer1_col42_net13, layer1_col43_net6);
+full_adder fa_add1_256 (partial_prod[31][12], partial_prod[30][13], partial_prod[29][14], layer1_col43_net7, layer1_col44_net0);
+full_adder fa_add1_257 (partial_prod[28][15], partial_prod[27][16], partial_prod[26][17], layer1_col43_net8, layer1_col44_net1);
+full_adder fa_add1_258 (partial_prod[25][18], partial_prod[24][19], partial_prod[23][20], layer1_col43_net9, layer1_col44_net2);
+full_adder fa_add1_259 (partial_prod[22][21], partial_prod[21][22], partial_prod[20][23], layer1_col43_net10, layer1_col44_net3);
+full_adder fa_add1_260 (partial_prod[19][24], partial_prod[18][25], partial_prod[17][26], layer1_col43_net11, layer1_col44_net4);
+full_adder fa_add1_261 (partial_prod[16][27], partial_prod[15][28], partial_prod[14][29], layer1_col43_net12, layer1_col44_net5);
+full_adder fa_add1_262 (partial_prod[31][13], partial_prod[30][14], partial_prod[29][15], layer1_col44_net6, layer1_col45_net0);
+full_adder fa_add1_263 (partial_prod[28][16], partial_prod[27][17], partial_prod[26][18], layer1_col44_net7, layer1_col45_net1);
+full_adder fa_add1_264 (partial_prod[25][19], partial_prod[24][20], partial_prod[23][21], layer1_col44_net8, layer1_col45_net2);
+full_adder fa_add1_265 (partial_prod[22][22], partial_prod[21][23], partial_prod[20][24], layer1_col44_net9, layer1_col45_net3);
+full_adder fa_add1_266 (partial_prod[19][25], partial_prod[18][26], partial_prod[17][27], layer1_col44_net10, layer1_col45_net4);
+full_adder fa_add1_267 (partial_prod[16][28], partial_prod[15][29], partial_prod[14][30], layer1_col44_net11, layer1_col45_net5);
+full_adder fa_add1_268 (partial_prod[31][14], partial_prod[30][15], partial_prod[29][16], layer1_col45_net6, layer1_col46_net0);
+full_adder fa_add1_269 (partial_prod[28][17], partial_prod[27][18], partial_prod[26][19], layer1_col45_net7, layer1_col46_net1);
+full_adder fa_add1_270 (partial_prod[25][20], partial_prod[24][21], partial_prod[23][22], layer1_col45_net8, layer1_col46_net2);
+full_adder fa_add1_271 (partial_prod[22][23], partial_prod[21][24], partial_prod[20][25], layer1_col45_net9, layer1_col46_net3);
+full_adder fa_add1_272 (partial_prod[19][26], partial_prod[18][27], partial_prod[17][28], layer1_col45_net10, layer1_col46_net4);
+full_adder fa_add1_273 (partial_prod[16][29], partial_prod[15][30], partial_prod[14][31], layer1_col45_net11, layer1_col46_net5);
+full_adder fa_add1_274 (partial_prod[31][15], partial_prod[30][16], partial_prod[29][17], layer1_col46_net6, layer1_col47_net0);
+full_adder fa_add1_275 (partial_prod[28][18], partial_prod[27][19], partial_prod[26][20], layer1_col46_net7, layer1_col47_net1);
+full_adder fa_add1_276 (partial_prod[25][21], partial_prod[24][22], partial_prod[23][23], layer1_col46_net8, layer1_col47_net2);
+full_adder fa_add1_277 (partial_prod[22][24], partial_prod[21][25], partial_prod[20][26], layer1_col46_net9, layer1_col47_net3);
+full_adder fa_add1_278 (partial_prod[19][27], partial_prod[18][28], partial_prod[17][29], layer1_col46_net10, layer1_col47_net4);
+full_adder fa_add1_279 (partial_prod[31][16], partial_prod[30][17], partial_prod[29][18], layer1_col47_net5, layer1_col48_net0);
+full_adder fa_add1_280 (partial_prod[28][19], partial_prod[27][20], partial_prod[26][21], layer1_col47_net6, layer1_col48_net1);
+full_adder fa_add1_281 (partial_prod[25][22], partial_prod[24][23], partial_prod[23][24], layer1_col47_net7, layer1_col48_net2);
+full_adder fa_add1_282 (partial_prod[22][25], partial_prod[21][26], partial_prod[20][27], layer1_col47_net8, layer1_col48_net3);
+full_adder fa_add1_283 (partial_prod[19][28], partial_prod[18][29], partial_prod[17][30], layer1_col47_net9, layer1_col48_net4);
+full_adder fa_add1_284 (partial_prod[31][17], partial_prod[30][18], partial_prod[29][19], layer1_col48_net5, layer1_col49_net0);
+full_adder fa_add1_285 (partial_prod[28][20], partial_prod[27][21], partial_prod[26][22], layer1_col48_net6, layer1_col49_net1);
+full_adder fa_add1_286 (partial_prod[25][23], partial_prod[24][24], partial_prod[23][25], layer1_col48_net7, layer1_col49_net2);
+full_adder fa_add1_287 (partial_prod[22][26], partial_prod[21][27], partial_prod[20][28], layer1_col48_net8, layer1_col49_net3);
+full_adder fa_add1_288 (partial_prod[19][29], partial_prod[18][30], partial_prod[17][31], layer1_col48_net9, layer1_col49_net4);
+full_adder fa_add1_289 (partial_prod[31][18], partial_prod[30][19], partial_prod[29][20], layer1_col49_net5, layer1_col50_net0);
+full_adder fa_add1_290 (partial_prod[28][21], partial_prod[27][22], partial_prod[26][23], layer1_col49_net6, layer1_col50_net1);
+full_adder fa_add1_291 (partial_prod[25][24], partial_prod[24][25], partial_prod[23][26], layer1_col49_net7, layer1_col50_net2);
+full_adder fa_add1_292 (partial_prod[22][27], partial_prod[21][28], partial_prod[20][29], layer1_col49_net8, layer1_col50_net3);
+full_adder fa_add1_293 (partial_prod[31][19], partial_prod[30][20], partial_prod[29][21], layer1_col50_net4, layer1_col51_net0);
+full_adder fa_add1_294 (partial_prod[28][22], partial_prod[27][23], partial_prod[26][24], layer1_col50_net5, layer1_col51_net1);
+full_adder fa_add1_295 (partial_prod[25][25], partial_prod[24][26], partial_prod[23][27], layer1_col50_net6, layer1_col51_net2);
+full_adder fa_add1_296 (partial_prod[22][28], partial_prod[21][29], partial_prod[20][30], layer1_col50_net7, layer1_col51_net3);
+full_adder fa_add1_297 (partial_prod[31][20], partial_prod[30][21], partial_prod[29][22], layer1_col51_net4, layer1_col52_net0);
+full_adder fa_add1_298 (partial_prod[28][23], partial_prod[27][24], partial_prod[26][25], layer1_col51_net5, layer1_col52_net1);
+full_adder fa_add1_299 (partial_prod[25][26], partial_prod[24][27], partial_prod[23][28], layer1_col51_net6, layer1_col52_net2);
+full_adder fa_add1_300 (partial_prod[22][29], partial_prod[21][30], partial_prod[20][31], layer1_col51_net7, layer1_col52_net3);
+full_adder fa_add1_301 (partial_prod[31][21], partial_prod[30][22], partial_prod[29][23], layer1_col52_net4, layer1_col53_net0);
+full_adder fa_add1_302 (partial_prod[28][24], partial_prod[27][25], partial_prod[26][26], layer1_col52_net5, layer1_col53_net1);
+full_adder fa_add1_303 (partial_prod[25][27], partial_prod[24][28], partial_prod[23][29], layer1_col52_net6, layer1_col53_net2);
+full_adder fa_add1_304 (partial_prod[31][22], partial_prod[30][23], partial_prod[29][24], layer1_col53_net3, layer1_col54_net0);
+full_adder fa_add1_305 (partial_prod[28][25], partial_prod[27][26], partial_prod[26][27], layer1_col53_net4, layer1_col54_net1);
+full_adder fa_add1_306 (partial_prod[25][28], partial_prod[24][29], partial_prod[23][30], layer1_col53_net5, layer1_col54_net2);
+full_adder fa_add1_307 (partial_prod[31][23], partial_prod[30][24], partial_prod[29][25], layer1_col54_net3, layer1_col55_net0);
+full_adder fa_add1_308 (partial_prod[28][26], partial_prod[27][27], partial_prod[26][28], layer1_col54_net4, layer1_col55_net1);
+full_adder fa_add1_309 (partial_prod[25][29], partial_prod[24][30], partial_prod[23][31], layer1_col54_net5, layer1_col55_net2);
+full_adder fa_add1_310 (partial_prod[31][24], partial_prod[30][25], partial_prod[29][26], layer1_col55_net3, layer1_col56_net0);
+full_adder fa_add1_311 (partial_prod[28][27], partial_prod[27][28], partial_prod[26][29], layer1_col55_net4, layer1_col56_net1);
+full_adder fa_add1_312 (partial_prod[31][25], partial_prod[30][26], partial_prod[29][27], layer1_col56_net2, layer1_col57_net0);
+full_adder fa_add1_313 (partial_prod[28][28], partial_prod[27][29], partial_prod[26][30], layer1_col56_net3, layer1_col57_net1);
+full_adder fa_add1_314 (partial_prod[31][26], partial_prod[30][27], partial_prod[29][28], layer1_col57_net2, layer1_col58_net0);
+full_adder fa_add1_315 (partial_prod[28][29], partial_prod[27][30], partial_prod[26][31], layer1_col57_net3, layer1_col58_net1);
+full_adder fa_add1_316 (partial_prod[31][27], partial_prod[30][28], partial_prod[29][29], layer1_col58_net2, layer1_col59_net0);
+full_adder fa_add1_317 (partial_prod[31][28], partial_prod[30][29], partial_prod[29][30], layer1_col59_net1, layer1_col60_net0);
+full_adder fa_add1_318 (partial_prod[31][29], partial_prod[30][30], partial_prod[29][31], layer1_col60_net1, layer1_col61_net0);
+
+//----------- Reduction Layer 2 Start --------------
+
+assign layer2_col0_net0 = layer1_col0_net0;
+assign layer2_col1_net0 = layer1_col1_net1;
+assign layer2_col1_net1 = layer1_col1_net0;
+assign layer2_col2_net0 = layer1_col2_net1;
+assign layer2_col2_net1 = layer1_col2_net0;
+assign layer2_col3_net1 = layer1_col3_net0;
+assign layer2_col4_net2 = layer1_col4_net0;
+assign layer2_col6_net2 = layer1_col6_net1;
+assign layer2_col6_net3 = layer1_col6_net0;
+assign layer2_col8_net3 = layer1_col8_net1;
+assign layer2_col8_net4 = layer1_col8_net0;
+assign layer2_col9_net3 = layer1_col9_net0;
+assign layer2_col10_net4 = layer1_col10_net1;
+assign layer2_col10_net5 = layer1_col10_net0;
+assign layer2_col11_net4 = layer1_col11_net0;
+assign layer2_col13_net6 = layer1_col13_net0;
+assign layer2_col15_net6 = layer1_col15_net1;
+assign layer2_col15_net7 = layer1_col15_net0;
+assign layer2_col17_net7 = layer1_col17_net1;
+assign layer2_col17_net8 = layer1_col17_net0;
+assign layer2_col18_net7 = layer1_col18_net0;
+assign layer2_col19_net8 = layer1_col19_net1;
+assign layer2_col19_net9 = layer1_col19_net0;
+assign layer2_col20_net8 = layer1_col20_net0;
+assign layer2_col22_net10 = layer1_col22_net0;
+assign layer2_col24_net10 = layer1_col24_net1;
+assign layer2_col24_net11 = layer1_col24_net0;
+assign layer2_col26_net11 = layer1_col26_net1;
+assign layer2_col26_net12 = layer1_col26_net0;
+assign layer2_col27_net11 = layer1_col27_net0;
+assign layer2_col28_net12 = layer1_col28_net1;
+assign layer2_col28_net13 = layer1_col28_net0;
+assign layer2_col29_net12 = layer1_col29_net0;
+assign layer2_col31_net14 = layer1_col31_net0;
+assign layer2_col33_net13 = layer1_col33_net1;
+assign layer2_col33_net14 = layer1_col33_net0;
+assign layer2_col35_net13 = layer1_col35_net0;
+assign layer2_col37_net12 = layer1_col37_net0;
+assign layer2_col38_net11 = layer1_col38_net1;
+assign layer2_col38_net12 = layer1_col38_net0;
+assign layer2_col39_net10 = layer1_col39_net0;
+assign layer2_col40_net10 = layer1_col40_net1;
+assign layer2_col40_net11 = layer1_col40_net0;
+assign layer2_col42_net9 = layer1_col42_net1;
+assign layer2_col42_net10 = layer1_col42_net0;
+assign layer2_col44_net9 = layer1_col44_net0;
+assign layer2_col46_net8 = layer1_col46_net0;
+assign layer2_col47_net7 = layer1_col47_net1;
+assign layer2_col47_net8 = layer1_col47_net0;
+assign layer2_col48_net6 = layer1_col48_net0;
+assign layer2_col49_net6 = layer1_col49_net1;
+assign layer2_col49_net7 = layer1_col49_net0;
+assign layer2_col51_net5 = layer1_col51_net1;
+assign layer2_col51_net6 = layer1_col51_net0;
+assign layer2_col53_net5 = layer1_col53_net0;
+assign layer2_col55_net4 = layer1_col55_net0;
+assign layer2_col56_net3 = layer1_col56_net1;
+assign layer2_col56_net4 = layer1_col56_net0;
+assign layer2_col57_net2 = layer1_col57_net0;
+assign layer2_col58_net2 = layer1_col58_net1;
+assign layer2_col58_net3 = layer1_col58_net0;
+assign layer2_col60_net1 = layer1_col60_net1;
+assign layer2_col60_net2 = layer1_col60_net0;
+assign layer2_col62_net1 = layer1_col62_net0;
+half_adder ha_add2_0 (layer1_col3_net2, layer1_col3_net1, layer2_col3_net0, layer2_col4_net0);
+full_adder fa_add2_0 (layer1_col4_net3, layer1_col4_net2, layer1_col4_net1, layer2_col4_net1, layer2_col5_net0);
+full_adder fa_add2_1 (layer1_col5_net2, layer1_col5_net1, layer1_col5_net0, layer2_col5_net1, layer2_col6_net0);
+full_adder fa_add2_2 (layer1_col6_net4, layer1_col6_net3, layer1_col6_net2, layer2_col6_net1, layer2_col7_net0);
+full_adder fa_add2_3 (layer1_col7_net5, layer1_col7_net4, layer1_col7_net3, layer2_col7_net1, layer2_col8_net0);
+full_adder fa_add2_4 (layer1_col7_net2, layer1_col7_net1, layer1_col7_net0, layer2_col7_net2, layer2_col8_net1);
+full_adder fa_add2_5 (layer1_col8_net4, layer1_col8_net3, layer1_col8_net2, layer2_col8_net2, layer2_col9_net0);
+full_adder fa_add2_6 (layer1_col9_net6, layer1_col9_net5, layer1_col9_net4, layer2_col9_net1, layer2_col10_net0);
+full_adder fa_add2_7 (layer1_col9_net3, layer1_col9_net2, layer1_col9_net1, layer2_col9_net2, layer2_col10_net1);
+full_adder fa_add2_8 (layer1_col10_net7, layer1_col10_net6, layer1_col10_net5, layer2_col10_net2, layer2_col11_net0);
+full_adder fa_add2_9 (layer1_col10_net4, layer1_col10_net3, layer1_col10_net2, layer2_col10_net3, layer2_col11_net1);
+full_adder fa_add2_10 (layer1_col11_net6, layer1_col11_net5, layer1_col11_net4, layer2_col11_net2, layer2_col12_net0);
+full_adder fa_add2_11 (layer1_col11_net3, layer1_col11_net2, layer1_col11_net1, layer2_col11_net3, layer2_col12_net1);
+full_adder fa_add2_12 (layer1_col12_net8, layer1_col12_net7, layer1_col12_net6, layer2_col12_net2, layer2_col13_net0);
+full_adder fa_add2_13 (layer1_col12_net5, layer1_col12_net4, layer1_col12_net3, layer2_col12_net3, layer2_col13_net1);
+full_adder fa_add2_14 (layer1_col12_net2, layer1_col12_net1, layer1_col12_net0, layer2_col12_net4, layer2_col13_net2);
+full_adder fa_add2_15 (layer1_col13_net9, layer1_col13_net8, layer1_col13_net7, layer2_col13_net3, layer2_col14_net0);
+full_adder fa_add2_16 (layer1_col13_net6, layer1_col13_net5, layer1_col13_net4, layer2_col13_net4, layer2_col14_net1);
+full_adder fa_add2_17 (layer1_col13_net3, layer1_col13_net2, layer1_col13_net1, layer2_col13_net5, layer2_col14_net2);
+full_adder fa_add2_18 (layer1_col14_net8, layer1_col14_net7, layer1_col14_net6, layer2_col14_net3, layer2_col15_net0);
+full_adder fa_add2_19 (layer1_col14_net5, layer1_col14_net4, layer1_col14_net3, layer2_col14_net4, layer2_col15_net1);
+full_adder fa_add2_20 (layer1_col14_net2, layer1_col14_net1, layer1_col14_net0, layer2_col14_net5, layer2_col15_net2);
+full_adder fa_add2_21 (layer1_col15_net10, layer1_col15_net9, layer1_col15_net8, layer2_col15_net3, layer2_col16_net0);
+full_adder fa_add2_22 (layer1_col15_net7, layer1_col15_net6, layer1_col15_net5, layer2_col15_net4, layer2_col16_net1);
+full_adder fa_add2_23 (layer1_col15_net4, layer1_col15_net3, layer1_col15_net2, layer2_col15_net5, layer2_col16_net2);
+full_adder fa_add2_24 (layer1_col16_net11, layer1_col16_net10, layer1_col16_net9, layer2_col16_net3, layer2_col17_net0);
+full_adder fa_add2_25 (layer1_col16_net8, layer1_col16_net7, layer1_col16_net6, layer2_col16_net4, layer2_col17_net1);
+full_adder fa_add2_26 (layer1_col16_net5, layer1_col16_net4, layer1_col16_net3, layer2_col16_net5, layer2_col17_net2);
+full_adder fa_add2_27 (layer1_col16_net2, layer1_col16_net1, layer1_col16_net0, layer2_col16_net6, layer2_col17_net3);
+full_adder fa_add2_28 (layer1_col17_net10, layer1_col17_net9, layer1_col17_net8, layer2_col17_net4, layer2_col18_net0);
+full_adder fa_add2_29 (layer1_col17_net7, layer1_col17_net6, layer1_col17_net5, layer2_col17_net5, layer2_col18_net1);
+full_adder fa_add2_30 (layer1_col17_net4, layer1_col17_net3, layer1_col17_net2, layer2_col17_net6, layer2_col18_net2);
+full_adder fa_add2_31 (layer1_col18_net12, layer1_col18_net11, layer1_col18_net10, layer2_col18_net3, layer2_col19_net0);
+full_adder fa_add2_32 (layer1_col18_net9, layer1_col18_net8, layer1_col18_net7, layer2_col18_net4, layer2_col19_net1);
+full_adder fa_add2_33 (layer1_col18_net6, layer1_col18_net5, layer1_col18_net4, layer2_col18_net5, layer2_col19_net2);
+full_adder fa_add2_34 (layer1_col18_net3, layer1_col18_net2, layer1_col18_net1, layer2_col18_net6, layer2_col19_net3);
+full_adder fa_add2_35 (layer1_col19_net13, layer1_col19_net12, layer1_col19_net11, layer2_col19_net4, layer2_col20_net0);
+full_adder fa_add2_36 (layer1_col19_net10, layer1_col19_net9, layer1_col19_net8, layer2_col19_net5, layer2_col20_net1);
+full_adder fa_add2_37 (layer1_col19_net7, layer1_col19_net6, layer1_col19_net5, layer2_col19_net6, layer2_col20_net2);
+full_adder fa_add2_38 (layer1_col19_net4, layer1_col19_net3, layer1_col19_net2, layer2_col19_net7, layer2_col20_net3);
+full_adder fa_add2_39 (layer1_col20_net12, layer1_col20_net11, layer1_col20_net10, layer2_col20_net4, layer2_col21_net0);
+full_adder fa_add2_40 (layer1_col20_net9, layer1_col20_net8, layer1_col20_net7, layer2_col20_net5, layer2_col21_net1);
+full_adder fa_add2_41 (layer1_col20_net6, layer1_col20_net5, layer1_col20_net4, layer2_col20_net6, layer2_col21_net2);
+full_adder fa_add2_42 (layer1_col20_net3, layer1_col20_net2, layer1_col20_net1, layer2_col20_net7, layer2_col21_net3);
+full_adder fa_add2_43 (layer1_col21_net14, layer1_col21_net13, layer1_col21_net12, layer2_col21_net4, layer2_col22_net0);
+full_adder fa_add2_44 (layer1_col21_net11, layer1_col21_net10, layer1_col21_net9, layer2_col21_net5, layer2_col22_net1);
+full_adder fa_add2_45 (layer1_col21_net8, layer1_col21_net7, layer1_col21_net6, layer2_col21_net6, layer2_col22_net2);
+full_adder fa_add2_46 (layer1_col21_net5, layer1_col21_net4, layer1_col21_net3, layer2_col21_net7, layer2_col22_net3);
+full_adder fa_add2_47 (layer1_col21_net2, layer1_col21_net1, layer1_col21_net0, layer2_col21_net8, layer2_col22_net4);
+full_adder fa_add2_48 (layer1_col22_net15, layer1_col22_net14, layer1_col22_net13, layer2_col22_net5, layer2_col23_net0);
+full_adder fa_add2_49 (layer1_col22_net12, layer1_col22_net11, layer1_col22_net10, layer2_col22_net6, layer2_col23_net1);
+full_adder fa_add2_50 (layer1_col22_net9, layer1_col22_net8, layer1_col22_net7, layer2_col22_net7, layer2_col23_net2);
+full_adder fa_add2_51 (layer1_col22_net6, layer1_col22_net5, layer1_col22_net4, layer2_col22_net8, layer2_col23_net3);
+full_adder fa_add2_52 (layer1_col22_net3, layer1_col22_net2, layer1_col22_net1, layer2_col22_net9, layer2_col23_net4);
+full_adder fa_add2_53 (layer1_col23_net14, layer1_col23_net13, layer1_col23_net12, layer2_col23_net5, layer2_col24_net0);
+full_adder fa_add2_54 (layer1_col23_net11, layer1_col23_net10, layer1_col23_net9, layer2_col23_net6, layer2_col24_net1);
+full_adder fa_add2_55 (layer1_col23_net8, layer1_col23_net7, layer1_col23_net6, layer2_col23_net7, layer2_col24_net2);
+full_adder fa_add2_56 (layer1_col23_net5, layer1_col23_net4, layer1_col23_net3, layer2_col23_net8, layer2_col24_net3);
+full_adder fa_add2_57 (layer1_col23_net2, layer1_col23_net1, layer1_col23_net0, layer2_col23_net9, layer2_col24_net4);
+full_adder fa_add2_58 (layer1_col24_net16, layer1_col24_net15, layer1_col24_net14, layer2_col24_net5, layer2_col25_net0);
+full_adder fa_add2_59 (layer1_col24_net13, layer1_col24_net12, layer1_col24_net11, layer2_col24_net6, layer2_col25_net1);
+full_adder fa_add2_60 (layer1_col24_net10, layer1_col24_net9, layer1_col24_net8, layer2_col24_net7, layer2_col25_net2);
+full_adder fa_add2_61 (layer1_col24_net7, layer1_col24_net6, layer1_col24_net5, layer2_col24_net8, layer2_col25_net3);
+full_adder fa_add2_62 (layer1_col24_net4, layer1_col24_net3, layer1_col24_net2, layer2_col24_net9, layer2_col25_net4);
+full_adder fa_add2_63 (layer1_col25_net17, layer1_col25_net16, layer1_col25_net15, layer2_col25_net5, layer2_col26_net0);
+full_adder fa_add2_64 (layer1_col25_net14, layer1_col25_net13, layer1_col25_net12, layer2_col25_net6, layer2_col26_net1);
+full_adder fa_add2_65 (layer1_col25_net11, layer1_col25_net10, layer1_col25_net9, layer2_col25_net7, layer2_col26_net2);
+full_adder fa_add2_66 (layer1_col25_net8, layer1_col25_net7, layer1_col25_net6, layer2_col25_net8, layer2_col26_net3);
+full_adder fa_add2_67 (layer1_col25_net5, layer1_col25_net4, layer1_col25_net3, layer2_col25_net9, layer2_col26_net4);
+full_adder fa_add2_68 (layer1_col25_net2, layer1_col25_net1, layer1_col25_net0, layer2_col25_net10, layer2_col26_net5);
+full_adder fa_add2_69 (layer1_col26_net16, layer1_col26_net15, layer1_col26_net14, layer2_col26_net6, layer2_col27_net0);
+full_adder fa_add2_70 (layer1_col26_net13, layer1_col26_net12, layer1_col26_net11, layer2_col26_net7, layer2_col27_net1);
+full_adder fa_add2_71 (layer1_col26_net10, layer1_col26_net9, layer1_col26_net8, layer2_col26_net8, layer2_col27_net2);
+full_adder fa_add2_72 (layer1_col26_net7, layer1_col26_net6, layer1_col26_net5, layer2_col26_net9, layer2_col27_net3);
+full_adder fa_add2_73 (layer1_col26_net4, layer1_col26_net3, layer1_col26_net2, layer2_col26_net10, layer2_col27_net4);
+full_adder fa_add2_74 (layer1_col27_net18, layer1_col27_net17, layer1_col27_net16, layer2_col27_net5, layer2_col28_net0);
+full_adder fa_add2_75 (layer1_col27_net15, layer1_col27_net14, layer1_col27_net13, layer2_col27_net6, layer2_col28_net1);
+full_adder fa_add2_76 (layer1_col27_net12, layer1_col27_net11, layer1_col27_net10, layer2_col27_net7, layer2_col28_net2);
+full_adder fa_add2_77 (layer1_col27_net9, layer1_col27_net8, layer1_col27_net7, layer2_col27_net8, layer2_col28_net3);
+full_adder fa_add2_78 (layer1_col27_net6, layer1_col27_net5, layer1_col27_net4, layer2_col27_net9, layer2_col28_net4);
+full_adder fa_add2_79 (layer1_col27_net3, layer1_col27_net2, layer1_col27_net1, layer2_col27_net10, layer2_col28_net5);
+full_adder fa_add2_80 (layer1_col28_net19, layer1_col28_net18, layer1_col28_net17, layer2_col28_net6, layer2_col29_net0);
+full_adder fa_add2_81 (layer1_col28_net16, layer1_col28_net15, layer1_col28_net14, layer2_col28_net7, layer2_col29_net1);
+full_adder fa_add2_82 (layer1_col28_net13, layer1_col28_net12, layer1_col28_net11, layer2_col28_net8, layer2_col29_net2);
+full_adder fa_add2_83 (layer1_col28_net10, layer1_col28_net9, layer1_col28_net8, layer2_col28_net9, layer2_col29_net3);
+full_adder fa_add2_84 (layer1_col28_net7, layer1_col28_net6, layer1_col28_net5, layer2_col28_net10, layer2_col29_net4);
+full_adder fa_add2_85 (layer1_col28_net4, layer1_col28_net3, layer1_col28_net2, layer2_col28_net11, layer2_col29_net5);
+full_adder fa_add2_86 (layer1_col29_net18, layer1_col29_net17, layer1_col29_net16, layer2_col29_net6, layer2_col30_net0);
+full_adder fa_add2_87 (layer1_col29_net15, layer1_col29_net14, layer1_col29_net13, layer2_col29_net7, layer2_col30_net1);
+full_adder fa_add2_88 (layer1_col29_net12, layer1_col29_net11, layer1_col29_net10, layer2_col29_net8, layer2_col30_net2);
+full_adder fa_add2_89 (layer1_col29_net9, layer1_col29_net8, layer1_col29_net7, layer2_col29_net9, layer2_col30_net3);
+full_adder fa_add2_90 (layer1_col29_net6, layer1_col29_net5, layer1_col29_net4, layer2_col29_net10, layer2_col30_net4);
+full_adder fa_add2_91 (layer1_col29_net3, layer1_col29_net2, layer1_col29_net1, layer2_col29_net11, layer2_col30_net5);
+full_adder fa_add2_92 (layer1_col30_net20, layer1_col30_net19, layer1_col30_net18, layer2_col30_net6, layer2_col31_net0);
+full_adder fa_add2_93 (layer1_col30_net17, layer1_col30_net16, layer1_col30_net15, layer2_col30_net7, layer2_col31_net1);
+full_adder fa_add2_94 (layer1_col30_net14, layer1_col30_net13, layer1_col30_net12, layer2_col30_net8, layer2_col31_net2);
+full_adder fa_add2_95 (layer1_col30_net11, layer1_col30_net10, layer1_col30_net9, layer2_col30_net9, layer2_col31_net3);
+full_adder fa_add2_96 (layer1_col30_net8, layer1_col30_net7, layer1_col30_net6, layer2_col30_net10, layer2_col31_net4);
+full_adder fa_add2_97 (layer1_col30_net5, layer1_col30_net4, layer1_col30_net3, layer2_col30_net11, layer2_col31_net5);
+full_adder fa_add2_98 (layer1_col30_net2, layer1_col30_net1, layer1_col30_net0, layer2_col30_net12, layer2_col31_net6);
+full_adder fa_add2_99 (layer1_col31_net21, layer1_col31_net20, layer1_col31_net19, layer2_col31_net7, layer2_col32_net0);
+full_adder fa_add2_100 (layer1_col31_net18, layer1_col31_net17, layer1_col31_net16, layer2_col31_net8, layer2_col32_net1);
+full_adder fa_add2_101 (layer1_col31_net15, layer1_col31_net14, layer1_col31_net13, layer2_col31_net9, layer2_col32_net2);
+full_adder fa_add2_102 (layer1_col31_net12, layer1_col31_net11, layer1_col31_net10, layer2_col31_net10, layer2_col32_net3);
+full_adder fa_add2_103 (layer1_col31_net9, layer1_col31_net8, layer1_col31_net7, layer2_col31_net11, layer2_col32_net4);
+full_adder fa_add2_104 (layer1_col31_net6, layer1_col31_net5, layer1_col31_net4, layer2_col31_net12, layer2_col32_net5);
+full_adder fa_add2_105 (layer1_col31_net3, layer1_col31_net2, layer1_col31_net1, layer2_col31_net13, layer2_col32_net6);
+full_adder fa_add2_106 (layer1_col32_net20, layer1_col32_net19, layer1_col32_net18, layer2_col32_net7, layer2_col33_net0);
+full_adder fa_add2_107 (layer1_col32_net17, layer1_col32_net16, layer1_col32_net15, layer2_col32_net8, layer2_col33_net1);
+full_adder fa_add2_108 (layer1_col32_net14, layer1_col32_net13, layer1_col32_net12, layer2_col32_net9, layer2_col33_net2);
+full_adder fa_add2_109 (layer1_col32_net11, layer1_col32_net10, layer1_col32_net9, layer2_col32_net10, layer2_col33_net3);
+full_adder fa_add2_110 (layer1_col32_net8, layer1_col32_net7, layer1_col32_net6, layer2_col32_net11, layer2_col33_net4);
+full_adder fa_add2_111 (layer1_col32_net5, layer1_col32_net4, layer1_col32_net3, layer2_col32_net12, layer2_col33_net5);
+full_adder fa_add2_112 (layer1_col32_net2, layer1_col32_net1, layer1_col32_net0, layer2_col32_net13, layer2_col33_net6);
+full_adder fa_add2_113 (layer1_col33_net19, layer1_col33_net18, layer1_col33_net17, layer2_col33_net7, layer2_col34_net0);
+full_adder fa_add2_114 (layer1_col33_net16, layer1_col33_net15, layer1_col33_net14, layer2_col33_net8, layer2_col34_net1);
+full_adder fa_add2_115 (layer1_col33_net13, layer1_col33_net12, layer1_col33_net11, layer2_col33_net9, layer2_col34_net2);
+full_adder fa_add2_116 (layer1_col33_net10, layer1_col33_net9, layer1_col33_net8, layer2_col33_net10, layer2_col34_net3);
+full_adder fa_add2_117 (layer1_col33_net7, layer1_col33_net6, layer1_col33_net5, layer2_col33_net11, layer2_col34_net4);
+full_adder fa_add2_118 (layer1_col33_net4, layer1_col33_net3, layer1_col33_net2, layer2_col33_net12, layer2_col34_net5);
+full_adder fa_add2_119 (layer1_col34_net20, layer1_col34_net19, layer1_col34_net18, layer2_col34_net6, layer2_col35_net0);
+full_adder fa_add2_120 (layer1_col34_net17, layer1_col34_net16, layer1_col34_net15, layer2_col34_net7, layer2_col35_net1);
+full_adder fa_add2_121 (layer1_col34_net14, layer1_col34_net13, layer1_col34_net12, layer2_col34_net8, layer2_col35_net2);
+full_adder fa_add2_122 (layer1_col34_net11, layer1_col34_net10, layer1_col34_net9, layer2_col34_net9, layer2_col35_net3);
+full_adder fa_add2_123 (layer1_col34_net8, layer1_col34_net7, layer1_col34_net6, layer2_col34_net10, layer2_col35_net4);
+full_adder fa_add2_124 (layer1_col34_net5, layer1_col34_net4, layer1_col34_net3, layer2_col34_net11, layer2_col35_net5);
+full_adder fa_add2_125 (layer1_col34_net2, layer1_col34_net1, layer1_col34_net0, layer2_col34_net12, layer2_col35_net6);
+full_adder fa_add2_126 (layer1_col35_net18, layer1_col35_net17, layer1_col35_net16, layer2_col35_net7, layer2_col36_net0);
+full_adder fa_add2_127 (layer1_col35_net15, layer1_col35_net14, layer1_col35_net13, layer2_col35_net8, layer2_col36_net1);
+full_adder fa_add2_128 (layer1_col35_net12, layer1_col35_net11, layer1_col35_net10, layer2_col35_net9, layer2_col36_net2);
+full_adder fa_add2_129 (layer1_col35_net9, layer1_col35_net8, layer1_col35_net7, layer2_col35_net10, layer2_col36_net3);
+full_adder fa_add2_130 (layer1_col35_net6, layer1_col35_net5, layer1_col35_net4, layer2_col35_net11, layer2_col36_net4);
+full_adder fa_add2_131 (layer1_col35_net3, layer1_col35_net2, layer1_col35_net1, layer2_col35_net12, layer2_col36_net5);
+full_adder fa_add2_132 (layer1_col36_net17, layer1_col36_net16, layer1_col36_net15, layer2_col36_net6, layer2_col37_net0);
+full_adder fa_add2_133 (layer1_col36_net14, layer1_col36_net13, layer1_col36_net12, layer2_col36_net7, layer2_col37_net1);
+full_adder fa_add2_134 (layer1_col36_net11, layer1_col36_net10, layer1_col36_net9, layer2_col36_net8, layer2_col37_net2);
+full_adder fa_add2_135 (layer1_col36_net8, layer1_col36_net7, layer1_col36_net6, layer2_col36_net9, layer2_col37_net3);
+full_adder fa_add2_136 (layer1_col36_net5, layer1_col36_net4, layer1_col36_net3, layer2_col36_net10, layer2_col37_net4);
+full_adder fa_add2_137 (layer1_col36_net2, layer1_col36_net1, layer1_col36_net0, layer2_col36_net11, layer2_col37_net5);
+full_adder fa_add2_138 (layer1_col37_net18, layer1_col37_net17, layer1_col37_net16, layer2_col37_net6, layer2_col38_net0);
+full_adder fa_add2_139 (layer1_col37_net15, layer1_col37_net14, layer1_col37_net13, layer2_col37_net7, layer2_col38_net1);
+full_adder fa_add2_140 (layer1_col37_net12, layer1_col37_net11, layer1_col37_net10, layer2_col37_net8, layer2_col38_net2);
+full_adder fa_add2_141 (layer1_col37_net9, layer1_col37_net8, layer1_col37_net7, layer2_col37_net9, layer2_col38_net3);
+full_adder fa_add2_142 (layer1_col37_net6, layer1_col37_net5, layer1_col37_net4, layer2_col37_net10, layer2_col38_net4);
+full_adder fa_add2_143 (layer1_col37_net3, layer1_col37_net2, layer1_col37_net1, layer2_col37_net11, layer2_col38_net5);
+full_adder fa_add2_144 (layer1_col38_net16, layer1_col38_net15, layer1_col38_net14, layer2_col38_net6, layer2_col39_net0);
+full_adder fa_add2_145 (layer1_col38_net13, layer1_col38_net12, layer1_col38_net11, layer2_col38_net7, layer2_col39_net1);
+full_adder fa_add2_146 (layer1_col38_net10, layer1_col38_net9, layer1_col38_net8, layer2_col38_net8, layer2_col39_net2);
+full_adder fa_add2_147 (layer1_col38_net7, layer1_col38_net6, layer1_col38_net5, layer2_col38_net9, layer2_col39_net3);
+full_adder fa_add2_148 (layer1_col38_net4, layer1_col38_net3, layer1_col38_net2, layer2_col38_net10, layer2_col39_net4);
+full_adder fa_add2_149 (layer1_col39_net15, layer1_col39_net14, layer1_col39_net13, layer2_col39_net5, layer2_col40_net0);
+full_adder fa_add2_150 (layer1_col39_net12, layer1_col39_net11, layer1_col39_net10, layer2_col39_net6, layer2_col40_net1);
+full_adder fa_add2_151 (layer1_col39_net9, layer1_col39_net8, layer1_col39_net7, layer2_col39_net7, layer2_col40_net2);
+full_adder fa_add2_152 (layer1_col39_net6, layer1_col39_net5, layer1_col39_net4, layer2_col39_net8, layer2_col40_net3);
+full_adder fa_add2_153 (layer1_col39_net3, layer1_col39_net2, layer1_col39_net1, layer2_col39_net9, layer2_col40_net4);
+full_adder fa_add2_154 (layer1_col40_net16, layer1_col40_net15, layer1_col40_net14, layer2_col40_net5, layer2_col41_net0);
+full_adder fa_add2_155 (layer1_col40_net13, layer1_col40_net12, layer1_col40_net11, layer2_col40_net6, layer2_col41_net1);
+full_adder fa_add2_156 (layer1_col40_net10, layer1_col40_net9, layer1_col40_net8, layer2_col40_net7, layer2_col41_net2);
+full_adder fa_add2_157 (layer1_col40_net7, layer1_col40_net6, layer1_col40_net5, layer2_col40_net8, layer2_col41_net3);
+full_adder fa_add2_158 (layer1_col40_net4, layer1_col40_net3, layer1_col40_net2, layer2_col40_net9, layer2_col41_net4);
+full_adder fa_add2_159 (layer1_col41_net14, layer1_col41_net13, layer1_col41_net12, layer2_col41_net5, layer2_col42_net0);
+full_adder fa_add2_160 (layer1_col41_net11, layer1_col41_net10, layer1_col41_net9, layer2_col41_net6, layer2_col42_net1);
+full_adder fa_add2_161 (layer1_col41_net8, layer1_col41_net7, layer1_col41_net6, layer2_col41_net7, layer2_col42_net2);
+full_adder fa_add2_162 (layer1_col41_net5, layer1_col41_net4, layer1_col41_net3, layer2_col41_net8, layer2_col42_net3);
+full_adder fa_add2_163 (layer1_col41_net2, layer1_col41_net1, layer1_col41_net0, layer2_col41_net9, layer2_col42_net4);
+full_adder fa_add2_164 (layer1_col42_net13, layer1_col42_net12, layer1_col42_net11, layer2_col42_net5, layer2_col43_net0);
+full_adder fa_add2_165 (layer1_col42_net10, layer1_col42_net9, layer1_col42_net8, layer2_col42_net6, layer2_col43_net1);
+full_adder fa_add2_166 (layer1_col42_net7, layer1_col42_net6, layer1_col42_net5, layer2_col42_net7, layer2_col43_net2);
+full_adder fa_add2_167 (layer1_col42_net4, layer1_col42_net3, layer1_col42_net2, layer2_col42_net8, layer2_col43_net3);
+full_adder fa_add2_168 (layer1_col43_net14, layer1_col43_net13, layer1_col43_net12, layer2_col43_net4, layer2_col44_net0);
+full_adder fa_add2_169 (layer1_col43_net11, layer1_col43_net10, layer1_col43_net9, layer2_col43_net5, layer2_col44_net1);
+full_adder fa_add2_170 (layer1_col43_net8, layer1_col43_net7, layer1_col43_net6, layer2_col43_net6, layer2_col44_net2);
+full_adder fa_add2_171 (layer1_col43_net5, layer1_col43_net4, layer1_col43_net3, layer2_col43_net7, layer2_col44_net3);
+full_adder fa_add2_172 (layer1_col43_net2, layer1_col43_net1, layer1_col43_net0, layer2_col43_net8, layer2_col44_net4);
+full_adder fa_add2_173 (layer1_col44_net12, layer1_col44_net11, layer1_col44_net10, layer2_col44_net5, layer2_col45_net0);
+full_adder fa_add2_174 (layer1_col44_net9, layer1_col44_net8, layer1_col44_net7, layer2_col44_net6, layer2_col45_net1);
+full_adder fa_add2_175 (layer1_col44_net6, layer1_col44_net5, layer1_col44_net4, layer2_col44_net7, layer2_col45_net2);
+full_adder fa_add2_176 (layer1_col44_net3, layer1_col44_net2, layer1_col44_net1, layer2_col44_net8, layer2_col45_net3);
+full_adder fa_add2_177 (layer1_col45_net11, layer1_col45_net10, layer1_col45_net9, layer2_col45_net4, layer2_col46_net0);
+full_adder fa_add2_178 (layer1_col45_net8, layer1_col45_net7, layer1_col45_net6, layer2_col45_net5, layer2_col46_net1);
+full_adder fa_add2_179 (layer1_col45_net5, layer1_col45_net4, layer1_col45_net3, layer2_col45_net6, layer2_col46_net2);
+full_adder fa_add2_180 (layer1_col45_net2, layer1_col45_net1, layer1_col45_net0, layer2_col45_net7, layer2_col46_net3);
+full_adder fa_add2_181 (layer1_col46_net12, layer1_col46_net11, layer1_col46_net10, layer2_col46_net4, layer2_col47_net0);
+full_adder fa_add2_182 (layer1_col46_net9, layer1_col46_net8, layer1_col46_net7, layer2_col46_net5, layer2_col47_net1);
+full_adder fa_add2_183 (layer1_col46_net6, layer1_col46_net5, layer1_col46_net4, layer2_col46_net6, layer2_col47_net2);
+full_adder fa_add2_184 (layer1_col46_net3, layer1_col46_net2, layer1_col46_net1, layer2_col46_net7, layer2_col47_net3);
+full_adder fa_add2_185 (layer1_col47_net10, layer1_col47_net9, layer1_col47_net8, layer2_col47_net4, layer2_col48_net0);
+full_adder fa_add2_186 (layer1_col47_net7, layer1_col47_net6, layer1_col47_net5, layer2_col47_net5, layer2_col48_net1);
+full_adder fa_add2_187 (layer1_col47_net4, layer1_col47_net3, layer1_col47_net2, layer2_col47_net6, layer2_col48_net2);
+full_adder fa_add2_188 (layer1_col48_net9, layer1_col48_net8, layer1_col48_net7, layer2_col48_net3, layer2_col49_net0);
+full_adder fa_add2_189 (layer1_col48_net6, layer1_col48_net5, layer1_col48_net4, layer2_col48_net4, layer2_col49_net1);
+full_adder fa_add2_190 (layer1_col48_net3, layer1_col48_net2, layer1_col48_net1, layer2_col48_net5, layer2_col49_net2);
+full_adder fa_add2_191 (layer1_col49_net10, layer1_col49_net9, layer1_col49_net8, layer2_col49_net3, layer2_col50_net0);
+full_adder fa_add2_192 (layer1_col49_net7, layer1_col49_net6, layer1_col49_net5, layer2_col49_net4, layer2_col50_net1);
+full_adder fa_add2_193 (layer1_col49_net4, layer1_col49_net3, layer1_col49_net2, layer2_col49_net5, layer2_col50_net2);
+full_adder fa_add2_194 (layer1_col50_net8, layer1_col50_net7, layer1_col50_net6, layer2_col50_net3, layer2_col51_net0);
+full_adder fa_add2_195 (layer1_col50_net5, layer1_col50_net4, layer1_col50_net3, layer2_col50_net4, layer2_col51_net1);
+full_adder fa_add2_196 (layer1_col50_net2, layer1_col50_net1, layer1_col50_net0, layer2_col50_net5, layer2_col51_net2);
+full_adder fa_add2_197 (layer1_col51_net7, layer1_col51_net6, layer1_col51_net5, layer2_col51_net3, layer2_col52_net0);
+full_adder fa_add2_198 (layer1_col51_net4, layer1_col51_net3, layer1_col51_net2, layer2_col51_net4, layer2_col52_net1);
+full_adder fa_add2_199 (layer1_col52_net8, layer1_col52_net7, layer1_col52_net6, layer2_col52_net2, layer2_col53_net0);
+full_adder fa_add2_200 (layer1_col52_net5, layer1_col52_net4, layer1_col52_net3, layer2_col52_net3, layer2_col53_net1);
+full_adder fa_add2_201 (layer1_col52_net2, layer1_col52_net1, layer1_col52_net0, layer2_col52_net4, layer2_col53_net2);
+full_adder fa_add2_202 (layer1_col53_net6, layer1_col53_net5, layer1_col53_net4, layer2_col53_net3, layer2_col54_net0);
+full_adder fa_add2_203 (layer1_col53_net3, layer1_col53_net2, layer1_col53_net1, layer2_col53_net4, layer2_col54_net1);
+full_adder fa_add2_204 (layer1_col54_net5, layer1_col54_net4, layer1_col54_net3, layer2_col54_net2, layer2_col55_net0);
+full_adder fa_add2_205 (layer1_col54_net2, layer1_col54_net1, layer1_col54_net0, layer2_col54_net3, layer2_col55_net1);
+full_adder fa_add2_206 (layer1_col55_net6, layer1_col55_net5, layer1_col55_net4, layer2_col55_net2, layer2_col56_net0);
+full_adder fa_add2_207 (layer1_col55_net3, layer1_col55_net2, layer1_col55_net1, layer2_col55_net3, layer2_col56_net1);
+full_adder fa_add2_208 (layer1_col56_net4, layer1_col56_net3, layer1_col56_net2, layer2_col56_net2, layer2_col57_net0);
+full_adder fa_add2_209 (layer1_col57_net3, layer1_col57_net2, layer1_col57_net1, layer2_col57_net1, layer2_col58_net0);
+full_adder fa_add2_210 (layer1_col58_net4, layer1_col58_net3, layer1_col58_net2, layer2_col58_net1, layer2_col59_net0);
+full_adder fa_add2_211 (layer1_col59_net2, layer1_col59_net1, layer1_col59_net0, layer2_col59_net1, layer2_col60_net0);
+full_adder fa_add2_212 (layer1_col61_net2, layer1_col61_net1, layer1_col61_net0, layer2_col61_net0, layer2_col62_net0);
+
+//----------- Reduction Layer 3 Start --------------
+
+assign layer3_col0_net0 = layer2_col0_net0;
+assign layer3_col1_net0 = layer2_col1_net1;
+assign layer3_col1_net1 = layer2_col1_net0;
+assign layer3_col2_net0 = layer2_col2_net1;
+assign layer3_col2_net1 = layer2_col2_net0;
+assign layer3_col3_net0 = layer2_col3_net1;
+assign layer3_col3_net1 = layer2_col3_net0;
+assign layer3_col4_net1 = layer2_col4_net0;
+assign layer3_col5_net1 = layer2_col5_net1;
+assign layer3_col5_net2 = layer2_col5_net0;
+assign layer3_col6_net1 = layer2_col6_net0;
+assign layer3_col8_net2 = layer2_col8_net1;
+assign layer3_col8_net3 = layer2_col8_net0;
+assign layer3_col9_net2 = layer2_col9_net0;
+assign layer3_col11_net3 = layer2_col11_net1;
+assign layer3_col11_net4 = layer2_col11_net0;
+assign layer3_col12_net2 = layer2_col12_net1;
+assign layer3_col12_net3 = layer2_col12_net0;
+assign layer3_col13_net3 = layer2_col13_net0;
+assign layer3_col15_net4 = layer2_col15_net1;
+assign layer3_col15_net5 = layer2_col15_net0;
+assign layer3_col16_net4 = layer2_col16_net0;
+assign layer3_col18_net5 = layer2_col18_net1;
+assign layer3_col18_net6 = layer2_col18_net0;
+assign layer3_col19_net5 = layer2_col19_net0;
+assign layer3_col22_net6 = layer2_col22_net1;
+assign layer3_col22_net7 = layer2_col22_net0;
+assign layer3_col23_net6 = layer2_col23_net0;
+assign layer3_col25_net7 = layer2_col25_net1;
+assign layer3_col25_net8 = layer2_col25_net0;
+assign layer3_col26_net7 = layer2_col26_net0;
+assign layer3_col28_net8 = layer2_col28_net1;
+assign layer3_col28_net9 = layer2_col28_net0;
+assign layer3_col29_net8 = layer2_col29_net0;
+assign layer3_col30_net8 = layer2_col30_net0;
+assign layer3_col32_net9 = layer2_col32_net1;
+assign layer3_col32_net10 = layer2_col32_net0;
+assign layer3_col34_net9 = layer2_col34_net0;
+assign layer3_col35_net8 = layer2_col35_net1;
+assign layer3_col35_net9 = layer2_col35_net0;
+assign layer3_col37_net8 = layer2_col37_net0;
+assign layer3_col38_net8 = layer2_col38_net0;
+assign layer3_col39_net7 = layer2_col39_net1;
+assign layer3_col39_net8 = layer2_col39_net0;
+assign layer3_col41_net7 = layer2_col41_net0;
+assign layer3_col42_net6 = layer2_col42_net1;
+assign layer3_col42_net7 = layer2_col42_net0;
+assign layer3_col44_net6 = layer2_col44_net0;
+assign layer3_col45_net5 = layer2_col45_net1;
+assign layer3_col45_net6 = layer2_col45_net0;
+assign layer3_col48_net5 = layer2_col48_net0;
+assign layer3_col49_net4 = layer2_col49_net1;
+assign layer3_col49_net5 = layer2_col49_net0;
+assign layer3_col51_net4 = layer2_col51_net0;
+assign layer3_col52_net3 = layer2_col52_net1;
+assign layer3_col52_net4 = layer2_col52_net0;
+assign layer3_col54_net3 = layer2_col54_net0;
+assign layer3_col55_net2 = layer2_col55_net1;
+assign layer3_col55_net3 = layer2_col55_net0;
+assign layer3_col56_net2 = layer2_col56_net1;
+assign layer3_col56_net3 = layer2_col56_net0;
+assign layer3_col58_net2 = layer2_col58_net0;
+assign layer3_col59_net1 = layer2_col59_net1;
+assign layer3_col59_net2 = layer2_col59_net0;
+assign layer3_col61_net1 = layer2_col61_net0;
+assign layer3_col62_net0 = layer2_col62_net1;
+assign layer3_col62_net1 = layer2_col62_net0;
+half_adder ha_add3_0 (layer2_col4_net2, layer2_col4_net1, layer3_col4_net0, layer3_col5_net0);
+full_adder fa_add3_0 (layer2_col6_net3, layer2_col6_net2, layer2_col6_net1, layer3_col6_net0, layer3_col7_net0);
+full_adder fa_add3_1 (layer2_col7_net2, layer2_col7_net1, layer2_col7_net0, layer3_col7_net1, layer3_col8_net0);
+full_adder fa_add3_2 (layer2_col8_net4, layer2_col8_net3, layer2_col8_net2, layer3_col8_net1, layer3_col9_net0);
+full_adder fa_add3_3 (layer2_col9_net3, layer2_col9_net2, layer2_col9_net1, layer3_col9_net1, layer3_col10_net0);
+full_adder fa_add3_4 (layer2_col10_net5, layer2_col10_net4, layer2_col10_net3, layer3_col10_net1, layer3_col11_net0);
+full_adder fa_add3_5 (layer2_col10_net2, layer2_col10_net1, layer2_col10_net0, layer3_col10_net2, layer3_col11_net1);
+full_adder fa_add3_6 (layer2_col11_net4, layer2_col11_net3, layer2_col11_net2, layer3_col11_net2, layer3_col12_net0);
+full_adder fa_add3_7 (layer2_col12_net4, layer2_col12_net3, layer2_col12_net2, layer3_col12_net1, layer3_col13_net0);
+full_adder fa_add3_8 (layer2_col13_net6, layer2_col13_net5, layer2_col13_net4, layer3_col13_net1, layer3_col14_net0);
+full_adder fa_add3_9 (layer2_col13_net3, layer2_col13_net2, layer2_col13_net1, layer3_col13_net2, layer3_col14_net1);
+full_adder fa_add3_10 (layer2_col14_net5, layer2_col14_net4, layer2_col14_net3, layer3_col14_net2, layer3_col15_net0);
+full_adder fa_add3_11 (layer2_col14_net2, layer2_col14_net1, layer2_col14_net0, layer3_col14_net3, layer3_col15_net1);
+full_adder fa_add3_12 (layer2_col15_net7, layer2_col15_net6, layer2_col15_net5, layer3_col15_net2, layer3_col16_net0);
+full_adder fa_add3_13 (layer2_col15_net4, layer2_col15_net3, layer2_col15_net2, layer3_col15_net3, layer3_col16_net1);
+full_adder fa_add3_14 (layer2_col16_net6, layer2_col16_net5, layer2_col16_net4, layer3_col16_net2, layer3_col17_net0);
+full_adder fa_add3_15 (layer2_col16_net3, layer2_col16_net2, layer2_col16_net1, layer3_col16_net3, layer3_col17_net1);
+full_adder fa_add3_16 (layer2_col17_net8, layer2_col17_net7, layer2_col17_net6, layer3_col17_net2, layer3_col18_net0);
+full_adder fa_add3_17 (layer2_col17_net5, layer2_col17_net4, layer2_col17_net3, layer3_col17_net3, layer3_col18_net1);
+full_adder fa_add3_18 (layer2_col17_net2, layer2_col17_net1, layer2_col17_net0, layer3_col17_net4, layer3_col18_net2);
+full_adder fa_add3_19 (layer2_col18_net7, layer2_col18_net6, layer2_col18_net5, layer3_col18_net3, layer3_col19_net0);
+full_adder fa_add3_20 (layer2_col18_net4, layer2_col18_net3, layer2_col18_net2, layer3_col18_net4, layer3_col19_net1);
+full_adder fa_add3_21 (layer2_col19_net9, layer2_col19_net8, layer2_col19_net7, layer3_col19_net2, layer3_col20_net0);
+full_adder fa_add3_22 (layer2_col19_net6, layer2_col19_net5, layer2_col19_net4, layer3_col19_net3, layer3_col20_net1);
+full_adder fa_add3_23 (layer2_col19_net3, layer2_col19_net2, layer2_col19_net1, layer3_col19_net4, layer3_col20_net2);
+full_adder fa_add3_24 (layer2_col20_net8, layer2_col20_net7, layer2_col20_net6, layer3_col20_net3, layer3_col21_net0);
+full_adder fa_add3_25 (layer2_col20_net5, layer2_col20_net4, layer2_col20_net3, layer3_col20_net4, layer3_col21_net1);
+full_adder fa_add3_26 (layer2_col20_net2, layer2_col20_net1, layer2_col20_net0, layer3_col20_net5, layer3_col21_net2);
+full_adder fa_add3_27 (layer2_col21_net8, layer2_col21_net7, layer2_col21_net6, layer3_col21_net3, layer3_col22_net0);
+full_adder fa_add3_28 (layer2_col21_net5, layer2_col21_net4, layer2_col21_net3, layer3_col21_net4, layer3_col22_net1);
+full_adder fa_add3_29 (layer2_col21_net2, layer2_col21_net1, layer2_col21_net0, layer3_col21_net5, layer3_col22_net2);
+full_adder fa_add3_30 (layer2_col22_net10, layer2_col22_net9, layer2_col22_net8, layer3_col22_net3, layer3_col23_net0);
+full_adder fa_add3_31 (layer2_col22_net7, layer2_col22_net6, layer2_col22_net5, layer3_col22_net4, layer3_col23_net1);
+full_adder fa_add3_32 (layer2_col22_net4, layer2_col22_net3, layer2_col22_net2, layer3_col22_net5, layer3_col23_net2);
+full_adder fa_add3_33 (layer2_col23_net9, layer2_col23_net8, layer2_col23_net7, layer3_col23_net3, layer3_col24_net0);
+full_adder fa_add3_34 (layer2_col23_net6, layer2_col23_net5, layer2_col23_net4, layer3_col23_net4, layer3_col24_net1);
+full_adder fa_add3_35 (layer2_col23_net3, layer2_col23_net2, layer2_col23_net1, layer3_col23_net5, layer3_col24_net2);
+full_adder fa_add3_36 (layer2_col24_net11, layer2_col24_net10, layer2_col24_net9, layer3_col24_net3, layer3_col25_net0);
+full_adder fa_add3_37 (layer2_col24_net8, layer2_col24_net7, layer2_col24_net6, layer3_col24_net4, layer3_col25_net1);
+full_adder fa_add3_38 (layer2_col24_net5, layer2_col24_net4, layer2_col24_net3, layer3_col24_net5, layer3_col25_net2);
+full_adder fa_add3_39 (layer2_col24_net2, layer2_col24_net1, layer2_col24_net0, layer3_col24_net6, layer3_col25_net3);
+full_adder fa_add3_40 (layer2_col25_net10, layer2_col25_net9, layer2_col25_net8, layer3_col25_net4, layer3_col26_net0);
+full_adder fa_add3_41 (layer2_col25_net7, layer2_col25_net6, layer2_col25_net5, layer3_col25_net5, layer3_col26_net1);
+full_adder fa_add3_42 (layer2_col25_net4, layer2_col25_net3, layer2_col25_net2, layer3_col25_net6, layer3_col26_net2);
+full_adder fa_add3_43 (layer2_col26_net12, layer2_col26_net11, layer2_col26_net10, layer3_col26_net3, layer3_col27_net0);
+full_adder fa_add3_44 (layer2_col26_net9, layer2_col26_net8, layer2_col26_net7, layer3_col26_net4, layer3_col27_net1);
+full_adder fa_add3_45 (layer2_col26_net6, layer2_col26_net5, layer2_col26_net4, layer3_col26_net5, layer3_col27_net2);
+full_adder fa_add3_46 (layer2_col26_net3, layer2_col26_net2, layer2_col26_net1, layer3_col26_net6, layer3_col27_net3);
+full_adder fa_add3_47 (layer2_col27_net11, layer2_col27_net10, layer2_col27_net9, layer3_col27_net4, layer3_col28_net0);
+full_adder fa_add3_48 (layer2_col27_net8, layer2_col27_net7, layer2_col27_net6, layer3_col27_net5, layer3_col28_net1);
+full_adder fa_add3_49 (layer2_col27_net5, layer2_col27_net4, layer2_col27_net3, layer3_col27_net6, layer3_col28_net2);
+full_adder fa_add3_50 (layer2_col27_net2, layer2_col27_net1, layer2_col27_net0, layer3_col27_net7, layer3_col28_net3);
+full_adder fa_add3_51 (layer2_col28_net13, layer2_col28_net12, layer2_col28_net11, layer3_col28_net4, layer3_col29_net0);
+full_adder fa_add3_52 (layer2_col28_net10, layer2_col28_net9, layer2_col28_net8, layer3_col28_net5, layer3_col29_net1);
+full_adder fa_add3_53 (layer2_col28_net7, layer2_col28_net6, layer2_col28_net5, layer3_col28_net6, layer3_col29_net2);
+full_adder fa_add3_54 (layer2_col28_net4, layer2_col28_net3, layer2_col28_net2, layer3_col28_net7, layer3_col29_net3);
+full_adder fa_add3_55 (layer2_col29_net12, layer2_col29_net11, layer2_col29_net10, layer3_col29_net4, layer3_col30_net0);
+full_adder fa_add3_56 (layer2_col29_net9, layer2_col29_net8, layer2_col29_net7, layer3_col29_net5, layer3_col30_net1);
+full_adder fa_add3_57 (layer2_col29_net6, layer2_col29_net5, layer2_col29_net4, layer3_col29_net6, layer3_col30_net2);
+full_adder fa_add3_58 (layer2_col29_net3, layer2_col29_net2, layer2_col29_net1, layer3_col29_net7, layer3_col30_net3);
+full_adder fa_add3_59 (layer2_col30_net12, layer2_col30_net11, layer2_col30_net10, layer3_col30_net4, layer3_col31_net0);
+full_adder fa_add3_60 (layer2_col30_net9, layer2_col30_net8, layer2_col30_net7, layer3_col30_net5, layer3_col31_net1);
+full_adder fa_add3_61 (layer2_col30_net6, layer2_col30_net5, layer2_col30_net4, layer3_col30_net6, layer3_col31_net2);
+full_adder fa_add3_62 (layer2_col30_net3, layer2_col30_net2, layer2_col30_net1, layer3_col30_net7, layer3_col31_net3);
+full_adder fa_add3_63 (layer2_col31_net14, layer2_col31_net13, layer2_col31_net12, layer3_col31_net4, layer3_col32_net0);
+full_adder fa_add3_64 (layer2_col31_net11, layer2_col31_net10, layer2_col31_net9, layer3_col31_net5, layer3_col32_net1);
+full_adder fa_add3_65 (layer2_col31_net8, layer2_col31_net7, layer2_col31_net6, layer3_col31_net6, layer3_col32_net2);
+full_adder fa_add3_66 (layer2_col31_net5, layer2_col31_net4, layer2_col31_net3, layer3_col31_net7, layer3_col32_net3);
+full_adder fa_add3_67 (layer2_col31_net2, layer2_col31_net1, layer2_col31_net0, layer3_col31_net8, layer3_col32_net4);
+full_adder fa_add3_68 (layer2_col32_net13, layer2_col32_net12, layer2_col32_net11, layer3_col32_net5, layer3_col33_net0);
+full_adder fa_add3_69 (layer2_col32_net10, layer2_col32_net9, layer2_col32_net8, layer3_col32_net6, layer3_col33_net1);
+full_adder fa_add3_70 (layer2_col32_net7, layer2_col32_net6, layer2_col32_net5, layer3_col32_net7, layer3_col33_net2);
+full_adder fa_add3_71 (layer2_col32_net4, layer2_col32_net3, layer2_col32_net2, layer3_col32_net8, layer3_col33_net3);
+full_adder fa_add3_72 (layer2_col33_net14, layer2_col33_net13, layer2_col33_net12, layer3_col33_net4, layer3_col34_net0);
+full_adder fa_add3_73 (layer2_col33_net11, layer2_col33_net10, layer2_col33_net9, layer3_col33_net5, layer3_col34_net1);
+full_adder fa_add3_74 (layer2_col33_net8, layer2_col33_net7, layer2_col33_net6, layer3_col33_net6, layer3_col34_net2);
+full_adder fa_add3_75 (layer2_col33_net5, layer2_col33_net4, layer2_col33_net3, layer3_col33_net7, layer3_col34_net3);
+full_adder fa_add3_76 (layer2_col33_net2, layer2_col33_net1, layer2_col33_net0, layer3_col33_net8, layer3_col34_net4);
+full_adder fa_add3_77 (layer2_col34_net12, layer2_col34_net11, layer2_col34_net10, layer3_col34_net5, layer3_col35_net0);
+full_adder fa_add3_78 (layer2_col34_net9, layer2_col34_net8, layer2_col34_net7, layer3_col34_net6, layer3_col35_net1);
+full_adder fa_add3_79 (layer2_col34_net6, layer2_col34_net5, layer2_col34_net4, layer3_col34_net7, layer3_col35_net2);
+full_adder fa_add3_80 (layer2_col34_net3, layer2_col34_net2, layer2_col34_net1, layer3_col34_net8, layer3_col35_net3);
+full_adder fa_add3_81 (layer2_col35_net13, layer2_col35_net12, layer2_col35_net11, layer3_col35_net4, layer3_col36_net0);
+full_adder fa_add3_82 (layer2_col35_net10, layer2_col35_net9, layer2_col35_net8, layer3_col35_net5, layer3_col36_net1);
+full_adder fa_add3_83 (layer2_col35_net7, layer2_col35_net6, layer2_col35_net5, layer3_col35_net6, layer3_col36_net2);
+full_adder fa_add3_84 (layer2_col35_net4, layer2_col35_net3, layer2_col35_net2, layer3_col35_net7, layer3_col36_net3);
+full_adder fa_add3_85 (layer2_col36_net11, layer2_col36_net10, layer2_col36_net9, layer3_col36_net4, layer3_col37_net0);
+full_adder fa_add3_86 (layer2_col36_net8, layer2_col36_net7, layer2_col36_net6, layer3_col36_net5, layer3_col37_net1);
+full_adder fa_add3_87 (layer2_col36_net5, layer2_col36_net4, layer2_col36_net3, layer3_col36_net6, layer3_col37_net2);
+full_adder fa_add3_88 (layer2_col36_net2, layer2_col36_net1, layer2_col36_net0, layer3_col36_net7, layer3_col37_net3);
+full_adder fa_add3_89 (layer2_col37_net12, layer2_col37_net11, layer2_col37_net10, layer3_col37_net4, layer3_col38_net0);
+full_adder fa_add3_90 (layer2_col37_net9, layer2_col37_net8, layer2_col37_net7, layer3_col37_net5, layer3_col38_net1);
+full_adder fa_add3_91 (layer2_col37_net6, layer2_col37_net5, layer2_col37_net4, layer3_col37_net6, layer3_col38_net2);
+full_adder fa_add3_92 (layer2_col37_net3, layer2_col37_net2, layer2_col37_net1, layer3_col37_net7, layer3_col38_net3);
+full_adder fa_add3_93 (layer2_col38_net12, layer2_col38_net11, layer2_col38_net10, layer3_col38_net4, layer3_col39_net0);
+full_adder fa_add3_94 (layer2_col38_net9, layer2_col38_net8, layer2_col38_net7, layer3_col38_net5, layer3_col39_net1);
+full_adder fa_add3_95 (layer2_col38_net6, layer2_col38_net5, layer2_col38_net4, layer3_col38_net6, layer3_col39_net2);
+full_adder fa_add3_96 (layer2_col38_net3, layer2_col38_net2, layer2_col38_net1, layer3_col38_net7, layer3_col39_net3);
+full_adder fa_add3_97 (layer2_col39_net10, layer2_col39_net9, layer2_col39_net8, layer3_col39_net4, layer3_col40_net0);
+full_adder fa_add3_98 (layer2_col39_net7, layer2_col39_net6, layer2_col39_net5, layer3_col39_net5, layer3_col40_net1);
+full_adder fa_add3_99 (layer2_col39_net4, layer2_col39_net3, layer2_col39_net2, layer3_col39_net6, layer3_col40_net2);
+full_adder fa_add3_100 (layer2_col40_net11, layer2_col40_net10, layer2_col40_net9, layer3_col40_net3, layer3_col41_net0);
+full_adder fa_add3_101 (layer2_col40_net8, layer2_col40_net7, layer2_col40_net6, layer3_col40_net4, layer3_col41_net1);
+full_adder fa_add3_102 (layer2_col40_net5, layer2_col40_net4, layer2_col40_net3, layer3_col40_net5, layer3_col41_net2);
+full_adder fa_add3_103 (layer2_col40_net2, layer2_col40_net1, layer2_col40_net0, layer3_col40_net6, layer3_col41_net3);
+full_adder fa_add3_104 (layer2_col41_net9, layer2_col41_net8, layer2_col41_net7, layer3_col41_net4, layer3_col42_net0);
+full_adder fa_add3_105 (layer2_col41_net6, layer2_col41_net5, layer2_col41_net4, layer3_col41_net5, layer3_col42_net1);
+full_adder fa_add3_106 (layer2_col41_net3, layer2_col41_net2, layer2_col41_net1, layer3_col41_net6, layer3_col42_net2);
+full_adder fa_add3_107 (layer2_col42_net10, layer2_col42_net9, layer2_col42_net8, layer3_col42_net3, layer3_col43_net0);
+full_adder fa_add3_108 (layer2_col42_net7, layer2_col42_net6, layer2_col42_net5, layer3_col42_net4, layer3_col43_net1);
+full_adder fa_add3_109 (layer2_col42_net4, layer2_col42_net3, layer2_col42_net2, layer3_col42_net5, layer3_col43_net2);
+full_adder fa_add3_110 (layer2_col43_net8, layer2_col43_net7, layer2_col43_net6, layer3_col43_net3, layer3_col44_net0);
+full_adder fa_add3_111 (layer2_col43_net5, layer2_col43_net4, layer2_col43_net3, layer3_col43_net4, layer3_col44_net1);
+full_adder fa_add3_112 (layer2_col43_net2, layer2_col43_net1, layer2_col43_net0, layer3_col43_net5, layer3_col44_net2);
+full_adder fa_add3_113 (layer2_col44_net9, layer2_col44_net8, layer2_col44_net7, layer3_col44_net3, layer3_col45_net0);
+full_adder fa_add3_114 (layer2_col44_net6, layer2_col44_net5, layer2_col44_net4, layer3_col44_net4, layer3_col45_net1);
+full_adder fa_add3_115 (layer2_col44_net3, layer2_col44_net2, layer2_col44_net1, layer3_col44_net5, layer3_col45_net2);
+full_adder fa_add3_116 (layer2_col45_net7, layer2_col45_net6, layer2_col45_net5, layer3_col45_net3, layer3_col46_net0);
+full_adder fa_add3_117 (layer2_col45_net4, layer2_col45_net3, layer2_col45_net2, layer3_col45_net4, layer3_col46_net1);
+full_adder fa_add3_118 (layer2_col46_net8, layer2_col46_net7, layer2_col46_net6, layer3_col46_net2, layer3_col47_net0);
+full_adder fa_add3_119 (layer2_col46_net5, layer2_col46_net4, layer2_col46_net3, layer3_col46_net3, layer3_col47_net1);
+full_adder fa_add3_120 (layer2_col46_net2, layer2_col46_net1, layer2_col46_net0, layer3_col46_net4, layer3_col47_net2);
+full_adder fa_add3_121 (layer2_col47_net8, layer2_col47_net7, layer2_col47_net6, layer3_col47_net3, layer3_col48_net0);
+full_adder fa_add3_122 (layer2_col47_net5, layer2_col47_net4, layer2_col47_net3, layer3_col47_net4, layer3_col48_net1);
+full_adder fa_add3_123 (layer2_col47_net2, layer2_col47_net1, layer2_col47_net0, layer3_col47_net5, layer3_col48_net2);
+full_adder fa_add3_124 (layer2_col48_net6, layer2_col48_net5, layer2_col48_net4, layer3_col48_net3, layer3_col49_net0);
+full_adder fa_add3_125 (layer2_col48_net3, layer2_col48_net2, layer2_col48_net1, layer3_col48_net4, layer3_col49_net1);
+full_adder fa_add3_126 (layer2_col49_net7, layer2_col49_net6, layer2_col49_net5, layer3_col49_net2, layer3_col50_net0);
+full_adder fa_add3_127 (layer2_col49_net4, layer2_col49_net3, layer2_col49_net2, layer3_col49_net3, layer3_col50_net1);
+full_adder fa_add3_128 (layer2_col50_net5, layer2_col50_net4, layer2_col50_net3, layer3_col50_net2, layer3_col51_net0);
+full_adder fa_add3_129 (layer2_col50_net2, layer2_col50_net1, layer2_col50_net0, layer3_col50_net3, layer3_col51_net1);
+full_adder fa_add3_130 (layer2_col51_net6, layer2_col51_net5, layer2_col51_net4, layer3_col51_net2, layer3_col52_net0);
+full_adder fa_add3_131 (layer2_col51_net3, layer2_col51_net2, layer2_col51_net1, layer3_col51_net3, layer3_col52_net1);
+full_adder fa_add3_132 (layer2_col52_net4, layer2_col52_net3, layer2_col52_net2, layer3_col52_net2, layer3_col53_net0);
+full_adder fa_add3_133 (layer2_col53_net5, layer2_col53_net4, layer2_col53_net3, layer3_col53_net1, layer3_col54_net0);
+full_adder fa_add3_134 (layer2_col53_net2, layer2_col53_net1, layer2_col53_net0, layer3_col53_net2, layer3_col54_net1);
+full_adder fa_add3_135 (layer2_col54_net3, layer2_col54_net2, layer2_col54_net1, layer3_col54_net2, layer3_col55_net0);
+full_adder fa_add3_136 (layer2_col55_net4, layer2_col55_net3, layer2_col55_net2, layer3_col55_net1, layer3_col56_net0);
+full_adder fa_add3_137 (layer2_col56_net4, layer2_col56_net3, layer2_col56_net2, layer3_col56_net1, layer3_col57_net0);
+full_adder fa_add3_138 (layer2_col57_net2, layer2_col57_net1, layer2_col57_net0, layer3_col57_net1, layer3_col58_net0);
+full_adder fa_add3_139 (layer2_col58_net3, layer2_col58_net2, layer2_col58_net1, layer3_col58_net1, layer3_col59_net0);
+full_adder fa_add3_140 (layer2_col60_net2, layer2_col60_net1, layer2_col60_net0, layer3_col60_net0, layer3_col61_net0);
+
+//----------- Reduction Layer 4 Start --------------
+
+assign layer4_col0_net0 = layer3_col0_net0;
+assign layer4_col1_net0 = layer3_col1_net1;
+assign layer4_col1_net1 = layer3_col1_net0;
+assign layer4_col2_net0 = layer3_col2_net1;
+assign layer4_col2_net1 = layer3_col2_net0;
+assign layer4_col3_net0 = layer3_col3_net1;
+assign layer4_col3_net1 = layer3_col3_net0;
+assign layer4_col4_net0 = layer3_col4_net1;
+assign layer4_col4_net1 = layer3_col4_net0;
+assign layer4_col5_net1 = layer3_col5_net0;
+assign layer4_col6_net1 = layer3_col6_net1;
+assign layer4_col6_net2 = layer3_col6_net0;
+assign layer4_col7_net0 = layer3_col7_net1;
+assign layer4_col7_net1 = layer3_col7_net0;
+assign layer4_col8_net1 = layer3_col8_net0;
+assign layer4_col11_net2 = layer3_col11_net1;
+assign layer4_col11_net3 = layer3_col11_net0;
+assign layer4_col12_net2 = layer3_col12_net0;
+assign layer4_col13_net2 = layer3_col13_net0;
+assign layer4_col14_net2 = layer3_col14_net0;
+assign layer4_col16_net3 = layer3_col16_net1;
+assign layer4_col16_net4 = layer3_col16_net0;
+assign layer4_col17_net2 = layer3_col17_net1;
+assign layer4_col17_net3 = layer3_col17_net0;
+assign layer4_col18_net3 = layer3_col18_net0;
+assign layer4_col22_net4 = layer3_col22_net1;
+assign layer4_col22_net5 = layer3_col22_net0;
+assign layer4_col23_net4 = layer3_col23_net0;
+assign layer4_col24_net4 = layer3_col24_net0;
+assign layer4_col26_net5 = layer3_col26_net1;
+assign layer4_col26_net6 = layer3_col26_net0;
+assign layer4_col27_net4 = layer3_col27_net1;
+assign layer4_col27_net5 = layer3_col27_net0;
+assign layer4_col28_net5 = layer3_col28_net0;
+assign layer4_col32_net6 = layer3_col32_net1;
+assign layer4_col32_net7 = layer3_col32_net0;
+assign layer4_col34_net6 = layer3_col34_net0;
+assign layer4_col35_net6 = layer3_col35_net0;
+assign layer4_col36_net5 = layer3_col36_net1;
+assign layer4_col36_net6 = layer3_col36_net0;
+assign layer4_col40_net5 = layer3_col40_net0;
+assign layer4_col41_net4 = layer3_col41_net1;
+assign layer4_col41_net5 = layer3_col41_net0;
+assign layer4_col42_net4 = layer3_col42_net1;
+assign layer4_col42_net5 = layer3_col42_net0;
+assign layer4_col44_net4 = layer3_col44_net0;
+assign layer4_col45_net4 = layer3_col45_net0;
+assign layer4_col46_net3 = layer3_col46_net1;
+assign layer4_col46_net4 = layer3_col46_net0;
+assign layer4_col50_net3 = layer3_col50_net0;
+assign layer4_col51_net2 = layer3_col51_net1;
+assign layer4_col51_net3 = layer3_col51_net0;
+assign layer4_col52_net2 = layer3_col52_net1;
+assign layer4_col52_net3 = layer3_col52_net0;
+assign layer4_col54_net2 = layer3_col54_net0;
+assign layer4_col55_net2 = layer3_col55_net0;
+assign layer4_col56_net2 = layer3_col56_net0;
+assign layer4_col57_net1 = layer3_col57_net1;
+assign layer4_col57_net2 = layer3_col57_net0;
+assign layer4_col60_net1 = layer3_col60_net0;
+assign layer4_col61_net0 = layer3_col61_net1;
+assign layer4_col61_net1 = layer3_col61_net0;
+assign layer4_col62_net0 = layer3_col62_net1;
+assign layer4_col62_net1 = layer3_col62_net0;
+half_adder ha_add4_0 (layer3_col5_net2, layer3_col5_net1, layer4_col5_net0, layer4_col6_net0);
+full_adder fa_add4_0 (layer3_col8_net3, layer3_col8_net2, layer3_col8_net1, layer4_col8_net0, layer4_col9_net0);
+full_adder fa_add4_1 (layer3_col9_net2, layer3_col9_net1, layer3_col9_net0, layer4_col9_net1, layer4_col10_net0);
+full_adder fa_add4_2 (layer3_col10_net2, layer3_col10_net1, layer3_col10_net0, layer4_col10_net1, layer4_col11_net0);
+full_adder fa_add4_3 (layer3_col11_net4, layer3_col11_net3, layer3_col11_net2, layer4_col11_net1, layer4_col12_net0);
+full_adder fa_add4_4 (layer3_col12_net3, layer3_col12_net2, layer3_col12_net1, layer4_col12_net1, layer4_col13_net0);
+full_adder fa_add4_5 (layer3_col13_net3, layer3_col13_net2, layer3_col13_net1, layer4_col13_net1, layer4_col14_net0);
+full_adder fa_add4_6 (layer3_col14_net3, layer3_col14_net2, layer3_col14_net1, layer4_col14_net1, layer4_col15_net0);
+full_adder fa_add4_7 (layer3_col15_net5, layer3_col15_net4, layer3_col15_net3, layer4_col15_net1, layer4_col16_net0);
+full_adder fa_add4_8 (layer3_col15_net2, layer3_col15_net1, layer3_col15_net0, layer4_col15_net2, layer4_col16_net1);
+full_adder fa_add4_9 (layer3_col16_net4, layer3_col16_net3, layer3_col16_net2, layer4_col16_net2, layer4_col17_net0);
+full_adder fa_add4_10 (layer3_col17_net4, layer3_col17_net3, layer3_col17_net2, layer4_col17_net1, layer4_col18_net0);
+full_adder fa_add4_11 (layer3_col18_net6, layer3_col18_net5, layer3_col18_net4, layer4_col18_net1, layer4_col19_net0);
+full_adder fa_add4_12 (layer3_col18_net3, layer3_col18_net2, layer3_col18_net1, layer4_col18_net2, layer4_col19_net1);
+full_adder fa_add4_13 (layer3_col19_net5, layer3_col19_net4, layer3_col19_net3, layer4_col19_net2, layer4_col20_net0);
+full_adder fa_add4_14 (layer3_col19_net2, layer3_col19_net1, layer3_col19_net0, layer4_col19_net3, layer4_col20_net1);
+full_adder fa_add4_15 (layer3_col20_net5, layer3_col20_net4, layer3_col20_net3, layer4_col20_net2, layer4_col21_net0);
+full_adder fa_add4_16 (layer3_col20_net2, layer3_col20_net1, layer3_col20_net0, layer4_col20_net3, layer4_col21_net1);
+full_adder fa_add4_17 (layer3_col21_net5, layer3_col21_net4, layer3_col21_net3, layer4_col21_net2, layer4_col22_net0);
+full_adder fa_add4_18 (layer3_col21_net2, layer3_col21_net1, layer3_col21_net0, layer4_col21_net3, layer4_col22_net1);
+full_adder fa_add4_19 (layer3_col22_net7, layer3_col22_net6, layer3_col22_net5, layer4_col22_net2, layer4_col23_net0);
+full_adder fa_add4_20 (layer3_col22_net4, layer3_col22_net3, layer3_col22_net2, layer4_col22_net3, layer4_col23_net1);
+full_adder fa_add4_21 (layer3_col23_net6, layer3_col23_net5, layer3_col23_net4, layer4_col23_net2, layer4_col24_net0);
+full_adder fa_add4_22 (layer3_col23_net3, layer3_col23_net2, layer3_col23_net1, layer4_col23_net3, layer4_col24_net1);
+full_adder fa_add4_23 (layer3_col24_net6, layer3_col24_net5, layer3_col24_net4, layer4_col24_net2, layer4_col25_net0);
+full_adder fa_add4_24 (layer3_col24_net3, layer3_col24_net2, layer3_col24_net1, layer4_col24_net3, layer4_col25_net1);
+full_adder fa_add4_25 (layer3_col25_net8, layer3_col25_net7, layer3_col25_net6, layer4_col25_net2, layer4_col26_net0);
+full_adder fa_add4_26 (layer3_col25_net5, layer3_col25_net4, layer3_col25_net3, layer4_col25_net3, layer4_col26_net1);
+full_adder fa_add4_27 (layer3_col25_net2, layer3_col25_net1, layer3_col25_net0, layer4_col25_net4, layer4_col26_net2);
+full_adder fa_add4_28 (layer3_col26_net7, layer3_col26_net6, layer3_col26_net5, layer4_col26_net3, layer4_col27_net0);
+full_adder fa_add4_29 (layer3_col26_net4, layer3_col26_net3, layer3_col26_net2, layer4_col26_net4, layer4_col27_net1);
+full_adder fa_add4_30 (layer3_col27_net7, layer3_col27_net6, layer3_col27_net5, layer4_col27_net2, layer4_col28_net0);
+full_adder fa_add4_31 (layer3_col27_net4, layer3_col27_net3, layer3_col27_net2, layer4_col27_net3, layer4_col28_net1);
+full_adder fa_add4_32 (layer3_col28_net9, layer3_col28_net8, layer3_col28_net7, layer4_col28_net2, layer4_col29_net0);
+full_adder fa_add4_33 (layer3_col28_net6, layer3_col28_net5, layer3_col28_net4, layer4_col28_net3, layer4_col29_net1);
+full_adder fa_add4_34 (layer3_col28_net3, layer3_col28_net2, layer3_col28_net1, layer4_col28_net4, layer4_col29_net2);
+full_adder fa_add4_35 (layer3_col29_net8, layer3_col29_net7, layer3_col29_net6, layer4_col29_net3, layer4_col30_net0);
+full_adder fa_add4_36 (layer3_col29_net5, layer3_col29_net4, layer3_col29_net3, layer4_col29_net4, layer4_col30_net1);
+full_adder fa_add4_37 (layer3_col29_net2, layer3_col29_net1, layer3_col29_net0, layer4_col29_net5, layer4_col30_net2);
+full_adder fa_add4_38 (layer3_col30_net8, layer3_col30_net7, layer3_col30_net6, layer4_col30_net3, layer4_col31_net0);
+full_adder fa_add4_39 (layer3_col30_net5, layer3_col30_net4, layer3_col30_net3, layer4_col30_net4, layer4_col31_net1);
+full_adder fa_add4_40 (layer3_col30_net2, layer3_col30_net1, layer3_col30_net0, layer4_col30_net5, layer4_col31_net2);
+full_adder fa_add4_41 (layer3_col31_net8, layer3_col31_net7, layer3_col31_net6, layer4_col31_net3, layer4_col32_net0);
+full_adder fa_add4_42 (layer3_col31_net5, layer3_col31_net4, layer3_col31_net3, layer4_col31_net4, layer4_col32_net1);
+full_adder fa_add4_43 (layer3_col31_net2, layer3_col31_net1, layer3_col31_net0, layer4_col31_net5, layer4_col32_net2);
+full_adder fa_add4_44 (layer3_col32_net10, layer3_col32_net9, layer3_col32_net8, layer4_col32_net3, layer4_col33_net0);
+full_adder fa_add4_45 (layer3_col32_net7, layer3_col32_net6, layer3_col32_net5, layer4_col32_net4, layer4_col33_net1);
+full_adder fa_add4_46 (layer3_col32_net4, layer3_col32_net3, layer3_col32_net2, layer4_col32_net5, layer4_col33_net2);
+full_adder fa_add4_47 (layer3_col33_net8, layer3_col33_net7, layer3_col33_net6, layer4_col33_net3, layer4_col34_net0);
+full_adder fa_add4_48 (layer3_col33_net5, layer3_col33_net4, layer3_col33_net3, layer4_col33_net4, layer4_col34_net1);
+full_adder fa_add4_49 (layer3_col33_net2, layer3_col33_net1, layer3_col33_net0, layer4_col33_net5, layer4_col34_net2);
+full_adder fa_add4_50 (layer3_col34_net9, layer3_col34_net8, layer3_col34_net7, layer4_col34_net3, layer4_col35_net0);
+full_adder fa_add4_51 (layer3_col34_net6, layer3_col34_net5, layer3_col34_net4, layer4_col34_net4, layer4_col35_net1);
+full_adder fa_add4_52 (layer3_col34_net3, layer3_col34_net2, layer3_col34_net1, layer4_col34_net5, layer4_col35_net2);
+full_adder fa_add4_53 (layer3_col35_net9, layer3_col35_net8, layer3_col35_net7, layer4_col35_net3, layer4_col36_net0);
+full_adder fa_add4_54 (layer3_col35_net6, layer3_col35_net5, layer3_col35_net4, layer4_col35_net4, layer4_col36_net1);
+full_adder fa_add4_55 (layer3_col35_net3, layer3_col35_net2, layer3_col35_net1, layer4_col35_net5, layer4_col36_net2);
+full_adder fa_add4_56 (layer3_col36_net7, layer3_col36_net6, layer3_col36_net5, layer4_col36_net3, layer4_col37_net0);
+full_adder fa_add4_57 (layer3_col36_net4, layer3_col36_net3, layer3_col36_net2, layer4_col36_net4, layer4_col37_net1);
+full_adder fa_add4_58 (layer3_col37_net8, layer3_col37_net7, layer3_col37_net6, layer4_col37_net2, layer4_col38_net0);
+full_adder fa_add4_59 (layer3_col37_net5, layer3_col37_net4, layer3_col37_net3, layer4_col37_net3, layer4_col38_net1);
+full_adder fa_add4_60 (layer3_col37_net2, layer3_col37_net1, layer3_col37_net0, layer4_col37_net4, layer4_col38_net2);
+full_adder fa_add4_61 (layer3_col38_net8, layer3_col38_net7, layer3_col38_net6, layer4_col38_net3, layer4_col39_net0);
+full_adder fa_add4_62 (layer3_col38_net5, layer3_col38_net4, layer3_col38_net3, layer4_col38_net4, layer4_col39_net1);
+full_adder fa_add4_63 (layer3_col38_net2, layer3_col38_net1, layer3_col38_net0, layer4_col38_net5, layer4_col39_net2);
+full_adder fa_add4_64 (layer3_col39_net8, layer3_col39_net7, layer3_col39_net6, layer4_col39_net3, layer4_col40_net0);
+full_adder fa_add4_65 (layer3_col39_net5, layer3_col39_net4, layer3_col39_net3, layer4_col39_net4, layer4_col40_net1);
+full_adder fa_add4_66 (layer3_col39_net2, layer3_col39_net1, layer3_col39_net0, layer4_col39_net5, layer4_col40_net2);
+full_adder fa_add4_67 (layer3_col40_net6, layer3_col40_net5, layer3_col40_net4, layer4_col40_net3, layer4_col41_net0);
+full_adder fa_add4_68 (layer3_col40_net3, layer3_col40_net2, layer3_col40_net1, layer4_col40_net4, layer4_col41_net1);
+full_adder fa_add4_69 (layer3_col41_net7, layer3_col41_net6, layer3_col41_net5, layer4_col41_net2, layer4_col42_net0);
+full_adder fa_add4_70 (layer3_col41_net4, layer3_col41_net3, layer3_col41_net2, layer4_col41_net3, layer4_col42_net1);
+full_adder fa_add4_71 (layer3_col42_net7, layer3_col42_net6, layer3_col42_net5, layer4_col42_net2, layer4_col43_net0);
+full_adder fa_add4_72 (layer3_col42_net4, layer3_col42_net3, layer3_col42_net2, layer4_col42_net3, layer4_col43_net1);
+full_adder fa_add4_73 (layer3_col43_net5, layer3_col43_net4, layer3_col43_net3, layer4_col43_net2, layer4_col44_net0);
+full_adder fa_add4_74 (layer3_col43_net2, layer3_col43_net1, layer3_col43_net0, layer4_col43_net3, layer4_col44_net1);
+full_adder fa_add4_75 (layer3_col44_net6, layer3_col44_net5, layer3_col44_net4, layer4_col44_net2, layer4_col45_net0);
+full_adder fa_add4_76 (layer3_col44_net3, layer3_col44_net2, layer3_col44_net1, layer4_col44_net3, layer4_col45_net1);
+full_adder fa_add4_77 (layer3_col45_net6, layer3_col45_net5, layer3_col45_net4, layer4_col45_net2, layer4_col46_net0);
+full_adder fa_add4_78 (layer3_col45_net3, layer3_col45_net2, layer3_col45_net1, layer4_col45_net3, layer4_col46_net1);
+full_adder fa_add4_79 (layer3_col46_net4, layer3_col46_net3, layer3_col46_net2, layer4_col46_net2, layer4_col47_net0);
+full_adder fa_add4_80 (layer3_col47_net5, layer3_col47_net4, layer3_col47_net3, layer4_col47_net1, layer4_col48_net0);
+full_adder fa_add4_81 (layer3_col47_net2, layer3_col47_net1, layer3_col47_net0, layer4_col47_net2, layer4_col48_net1);
+full_adder fa_add4_82 (layer3_col48_net5, layer3_col48_net4, layer3_col48_net3, layer4_col48_net2, layer4_col49_net0);
+full_adder fa_add4_83 (layer3_col48_net2, layer3_col48_net1, layer3_col48_net0, layer4_col48_net3, layer4_col49_net1);
+full_adder fa_add4_84 (layer3_col49_net5, layer3_col49_net4, layer3_col49_net3, layer4_col49_net2, layer4_col50_net0);
+full_adder fa_add4_85 (layer3_col49_net2, layer3_col49_net1, layer3_col49_net0, layer4_col49_net3, layer4_col50_net1);
+full_adder fa_add4_86 (layer3_col50_net3, layer3_col50_net2, layer3_col50_net1, layer4_col50_net2, layer4_col51_net0);
+full_adder fa_add4_87 (layer3_col51_net4, layer3_col51_net3, layer3_col51_net2, layer4_col51_net1, layer4_col52_net0);
+full_adder fa_add4_88 (layer3_col52_net4, layer3_col52_net3, layer3_col52_net2, layer4_col52_net1, layer4_col53_net0);
+full_adder fa_add4_89 (layer3_col53_net2, layer3_col53_net1, layer3_col53_net0, layer4_col53_net1, layer4_col54_net0);
+full_adder fa_add4_90 (layer3_col54_net3, layer3_col54_net2, layer3_col54_net1, layer4_col54_net1, layer4_col55_net0);
+full_adder fa_add4_91 (layer3_col55_net3, layer3_col55_net2, layer3_col55_net1, layer4_col55_net1, layer4_col56_net0);
+full_adder fa_add4_92 (layer3_col56_net3, layer3_col56_net2, layer3_col56_net1, layer4_col56_net1, layer4_col57_net0);
+full_adder fa_add4_93 (layer3_col58_net2, layer3_col58_net1, layer3_col58_net0, layer4_col58_net0, layer4_col59_net0);
+full_adder fa_add4_94 (layer3_col59_net2, layer3_col59_net1, layer3_col59_net0, layer4_col59_net1, layer4_col60_net0);
+
+//----------- Reduction Layer 5 Start --------------
+
+assign layer5_col0_net0 = layer4_col0_net0;
+assign layer5_col1_net0 = layer4_col1_net1;
+assign layer5_col1_net1 = layer4_col1_net0;
+assign layer5_col2_net0 = layer4_col2_net1;
+assign layer5_col2_net1 = layer4_col2_net0;
+assign layer5_col3_net0 = layer4_col3_net1;
+assign layer5_col3_net1 = layer4_col3_net0;
+assign layer5_col4_net0 = layer4_col4_net1;
+assign layer5_col4_net1 = layer4_col4_net0;
+assign layer5_col5_net0 = layer4_col5_net1;
+assign layer5_col5_net1 = layer4_col5_net0;
+assign layer5_col6_net1 = layer4_col6_net0;
+assign layer5_col7_net1 = layer4_col7_net1;
+assign layer5_col7_net2 = layer4_col7_net0;
+assign layer5_col8_net0 = layer4_col8_net1;
+assign layer5_col8_net1 = layer4_col8_net0;
+assign layer5_col9_net0 = layer4_col9_net1;
+assign layer5_col9_net1 = layer4_col9_net0;
+assign layer5_col10_net0 = layer4_col10_net1;
+assign layer5_col10_net1 = layer4_col10_net0;
+assign layer5_col11_net1 = layer4_col11_net0;
+assign layer5_col16_net2 = layer4_col16_net1;
+assign layer5_col16_net3 = layer4_col16_net0;
+assign layer5_col17_net2 = layer4_col17_net0;
+assign layer5_col18_net2 = layer4_col18_net0;
+assign layer5_col19_net2 = layer4_col19_net0;
+assign layer5_col20_net2 = layer4_col20_net0;
+assign layer5_col21_net2 = layer4_col21_net0;
+assign layer5_col23_net3 = layer4_col23_net1;
+assign layer5_col23_net4 = layer4_col23_net0;
+assign layer5_col24_net2 = layer4_col24_net1;
+assign layer5_col24_net3 = layer4_col24_net0;
+assign layer5_col25_net2 = layer4_col25_net1;
+assign layer5_col25_net3 = layer4_col25_net0;
+assign layer5_col26_net3 = layer4_col26_net0;
+assign layer5_col32_net4 = layer4_col32_net1;
+assign layer5_col32_net5 = layer4_col32_net0;
+assign layer5_col34_net4 = layer4_col34_net0;
+assign layer5_col35_net4 = layer4_col35_net0;
+assign layer5_col36_net4 = layer4_col36_net0;
+assign layer5_col37_net3 = layer4_col37_net1;
+assign layer5_col37_net4 = layer4_col37_net0;
+assign layer5_col43_net3 = layer4_col43_net0;
+assign layer5_col44_net2 = layer4_col44_net1;
+assign layer5_col44_net3 = layer4_col44_net0;
+assign layer5_col45_net2 = layer4_col45_net1;
+assign layer5_col45_net3 = layer4_col45_net0;
+assign layer5_col46_net2 = layer4_col46_net1;
+assign layer5_col46_net3 = layer4_col46_net0;
+assign layer5_col48_net2 = layer4_col48_net0;
+assign layer5_col49_net2 = layer4_col49_net0;
+assign layer5_col50_net2 = layer4_col50_net0;
+assign layer5_col51_net2 = layer4_col51_net0;
+assign layer5_col52_net2 = layer4_col52_net0;
+assign layer5_col53_net1 = layer4_col53_net1;
+assign layer5_col53_net2 = layer4_col53_net0;
+assign layer5_col58_net1 = layer4_col58_net0;
+assign layer5_col59_net0 = layer4_col59_net1;
+assign layer5_col59_net1 = layer4_col59_net0;
+assign layer5_col60_net0 = layer4_col60_net1;
+assign layer5_col60_net1 = layer4_col60_net0;
+assign layer5_col61_net0 = layer4_col61_net1;
+assign layer5_col61_net1 = layer4_col61_net0;
+assign layer5_col62_net0 = layer4_col62_net1;
+assign layer5_col62_net1 = layer4_col62_net0;
+half_adder ha_add5_0 (layer4_col6_net2, layer4_col6_net1, layer5_col6_net0, layer5_col7_net0);
+full_adder fa_add5_0 (layer4_col11_net3, layer4_col11_net2, layer4_col11_net1, layer5_col11_net0, layer5_col12_net0);
+full_adder fa_add5_1 (layer4_col12_net2, layer4_col12_net1, layer4_col12_net0, layer5_col12_net1, layer5_col13_net0);
+full_adder fa_add5_2 (layer4_col13_net2, layer4_col13_net1, layer4_col13_net0, layer5_col13_net1, layer5_col14_net0);
+full_adder fa_add5_3 (layer4_col14_net2, layer4_col14_net1, layer4_col14_net0, layer5_col14_net1, layer5_col15_net0);
+full_adder fa_add5_4 (layer4_col15_net2, layer4_col15_net1, layer4_col15_net0, layer5_col15_net1, layer5_col16_net0);
+full_adder fa_add5_5 (layer4_col16_net4, layer4_col16_net3, layer4_col16_net2, layer5_col16_net1, layer5_col17_net0);
+full_adder fa_add5_6 (layer4_col17_net3, layer4_col17_net2, layer4_col17_net1, layer5_col17_net1, layer5_col18_net0);
+full_adder fa_add5_7 (layer4_col18_net3, layer4_col18_net2, layer4_col18_net1, layer5_col18_net1, layer5_col19_net0);
+full_adder fa_add5_8 (layer4_col19_net3, layer4_col19_net2, layer4_col19_net1, layer5_col19_net1, layer5_col20_net0);
+full_adder fa_add5_9 (layer4_col20_net3, layer4_col20_net2, layer4_col20_net1, layer5_col20_net1, layer5_col21_net0);
+full_adder fa_add5_10 (layer4_col21_net3, layer4_col21_net2, layer4_col21_net1, layer5_col21_net1, layer5_col22_net0);
+full_adder fa_add5_11 (layer4_col22_net5, layer4_col22_net4, layer4_col22_net3, layer5_col22_net1, layer5_col23_net0);
+full_adder fa_add5_12 (layer4_col22_net2, layer4_col22_net1, layer4_col22_net0, layer5_col22_net2, layer5_col23_net1);
+full_adder fa_add5_13 (layer4_col23_net4, layer4_col23_net3, layer4_col23_net2, layer5_col23_net2, layer5_col24_net0);
+full_adder fa_add5_14 (layer4_col24_net4, layer4_col24_net3, layer4_col24_net2, layer5_col24_net1, layer5_col25_net0);
+full_adder fa_add5_15 (layer4_col25_net4, layer4_col25_net3, layer4_col25_net2, layer5_col25_net1, layer5_col26_net0);
+full_adder fa_add5_16 (layer4_col26_net6, layer4_col26_net5, layer4_col26_net4, layer5_col26_net1, layer5_col27_net0);
+full_adder fa_add5_17 (layer4_col26_net3, layer4_col26_net2, layer4_col26_net1, layer5_col26_net2, layer5_col27_net1);
+full_adder fa_add5_18 (layer4_col27_net5, layer4_col27_net4, layer4_col27_net3, layer5_col27_net2, layer5_col28_net0);
+full_adder fa_add5_19 (layer4_col27_net2, layer4_col27_net1, layer4_col27_net0, layer5_col27_net3, layer5_col28_net1);
+full_adder fa_add5_20 (layer4_col28_net5, layer4_col28_net4, layer4_col28_net3, layer5_col28_net2, layer5_col29_net0);
+full_adder fa_add5_21 (layer4_col28_net2, layer4_col28_net1, layer4_col28_net0, layer5_col28_net3, layer5_col29_net1);
+full_adder fa_add5_22 (layer4_col29_net5, layer4_col29_net4, layer4_col29_net3, layer5_col29_net2, layer5_col30_net0);
+full_adder fa_add5_23 (layer4_col29_net2, layer4_col29_net1, layer4_col29_net0, layer5_col29_net3, layer5_col30_net1);
+full_adder fa_add5_24 (layer4_col30_net5, layer4_col30_net4, layer4_col30_net3, layer5_col30_net2, layer5_col31_net0);
+full_adder fa_add5_25 (layer4_col30_net2, layer4_col30_net1, layer4_col30_net0, layer5_col30_net3, layer5_col31_net1);
+full_adder fa_add5_26 (layer4_col31_net5, layer4_col31_net4, layer4_col31_net3, layer5_col31_net2, layer5_col32_net0);
+full_adder fa_add5_27 (layer4_col31_net2, layer4_col31_net1, layer4_col31_net0, layer5_col31_net3, layer5_col32_net1);
+full_adder fa_add5_28 (layer4_col32_net7, layer4_col32_net6, layer4_col32_net5, layer5_col32_net2, layer5_col33_net0);
+full_adder fa_add5_29 (layer4_col32_net4, layer4_col32_net3, layer4_col32_net2, layer5_col32_net3, layer5_col33_net1);
+full_adder fa_add5_30 (layer4_col33_net5, layer4_col33_net4, layer4_col33_net3, layer5_col33_net2, layer5_col34_net0);
+full_adder fa_add5_31 (layer4_col33_net2, layer4_col33_net1, layer4_col33_net0, layer5_col33_net3, layer5_col34_net1);
+full_adder fa_add5_32 (layer4_col34_net6, layer4_col34_net5, layer4_col34_net4, layer5_col34_net2, layer5_col35_net0);
+full_adder fa_add5_33 (layer4_col34_net3, layer4_col34_net2, layer4_col34_net1, layer5_col34_net3, layer5_col35_net1);
+full_adder fa_add5_34 (layer4_col35_net6, layer4_col35_net5, layer4_col35_net4, layer5_col35_net2, layer5_col36_net0);
+full_adder fa_add5_35 (layer4_col35_net3, layer4_col35_net2, layer4_col35_net1, layer5_col35_net3, layer5_col36_net1);
+full_adder fa_add5_36 (layer4_col36_net6, layer4_col36_net5, layer4_col36_net4, layer5_col36_net2, layer5_col37_net0);
+full_adder fa_add5_37 (layer4_col36_net3, layer4_col36_net2, layer4_col36_net1, layer5_col36_net3, layer5_col37_net1);
+full_adder fa_add5_38 (layer4_col37_net4, layer4_col37_net3, layer4_col37_net2, layer5_col37_net2, layer5_col38_net0);
+full_adder fa_add5_39 (layer4_col38_net5, layer4_col38_net4, layer4_col38_net3, layer5_col38_net1, layer5_col39_net0);
+full_adder fa_add5_40 (layer4_col38_net2, layer4_col38_net1, layer4_col38_net0, layer5_col38_net2, layer5_col39_net1);
+full_adder fa_add5_41 (layer4_col39_net5, layer4_col39_net4, layer4_col39_net3, layer5_col39_net2, layer5_col40_net0);
+full_adder fa_add5_42 (layer4_col39_net2, layer4_col39_net1, layer4_col39_net0, layer5_col39_net3, layer5_col40_net1);
+full_adder fa_add5_43 (layer4_col40_net5, layer4_col40_net4, layer4_col40_net3, layer5_col40_net2, layer5_col41_net0);
+full_adder fa_add5_44 (layer4_col40_net2, layer4_col40_net1, layer4_col40_net0, layer5_col40_net3, layer5_col41_net1);
+full_adder fa_add5_45 (layer4_col41_net5, layer4_col41_net4, layer4_col41_net3, layer5_col41_net2, layer5_col42_net0);
+full_adder fa_add5_46 (layer4_col41_net2, layer4_col41_net1, layer4_col41_net0, layer5_col41_net3, layer5_col42_net1);
+full_adder fa_add5_47 (layer4_col42_net5, layer4_col42_net4, layer4_col42_net3, layer5_col42_net2, layer5_col43_net0);
+full_adder fa_add5_48 (layer4_col42_net2, layer4_col42_net1, layer4_col42_net0, layer5_col42_net3, layer5_col43_net1);
+full_adder fa_add5_49 (layer4_col43_net3, layer4_col43_net2, layer4_col43_net1, layer5_col43_net2, layer5_col44_net0);
+full_adder fa_add5_50 (layer4_col44_net4, layer4_col44_net3, layer4_col44_net2, layer5_col44_net1, layer5_col45_net0);
+full_adder fa_add5_51 (layer4_col45_net4, layer4_col45_net3, layer4_col45_net2, layer5_col45_net1, layer5_col46_net0);
+full_adder fa_add5_52 (layer4_col46_net4, layer4_col46_net3, layer4_col46_net2, layer5_col46_net1, layer5_col47_net0);
+full_adder fa_add5_53 (layer4_col47_net2, layer4_col47_net1, layer4_col47_net0, layer5_col47_net1, layer5_col48_net0);
+full_adder fa_add5_54 (layer4_col48_net3, layer4_col48_net2, layer4_col48_net1, layer5_col48_net1, layer5_col49_net0);
+full_adder fa_add5_55 (layer4_col49_net3, layer4_col49_net2, layer4_col49_net1, layer5_col49_net1, layer5_col50_net0);
+full_adder fa_add5_56 (layer4_col50_net3, layer4_col50_net2, layer4_col50_net1, layer5_col50_net1, layer5_col51_net0);
+full_adder fa_add5_57 (layer4_col51_net3, layer4_col51_net2, layer4_col51_net1, layer5_col51_net1, layer5_col52_net0);
+full_adder fa_add5_58 (layer4_col52_net3, layer4_col52_net2, layer4_col52_net1, layer5_col52_net1, layer5_col53_net0);
+full_adder fa_add5_59 (layer4_col54_net2, layer4_col54_net1, layer4_col54_net0, layer5_col54_net0, layer5_col55_net0);
+full_adder fa_add5_60 (layer4_col55_net2, layer4_col55_net1, layer4_col55_net0, layer5_col55_net1, layer5_col56_net0);
+full_adder fa_add5_61 (layer4_col56_net2, layer4_col56_net1, layer4_col56_net0, layer5_col56_net1, layer5_col57_net0);
+full_adder fa_add5_62 (layer4_col57_net2, layer4_col57_net1, layer4_col57_net0, layer5_col57_net1, layer5_col58_net0);
+
+//----------- Reduction Layer 6 Start --------------
+
+assign layer6_col0_net0 = layer5_col0_net0;
+assign layer6_col1_net0 = layer5_col1_net1;
+assign layer6_col1_net1 = layer5_col1_net0;
+assign layer6_col2_net0 = layer5_col2_net1;
+assign layer6_col2_net1 = layer5_col2_net0;
+assign layer6_col3_net0 = layer5_col3_net1;
+assign layer6_col3_net1 = layer5_col3_net0;
+assign layer6_col4_net0 = layer5_col4_net1;
+assign layer6_col4_net1 = layer5_col4_net0;
+assign layer6_col5_net0 = layer5_col5_net1;
+assign layer6_col5_net1 = layer5_col5_net0;
+assign layer6_col6_net0 = layer5_col6_net1;
+assign layer6_col6_net1 = layer5_col6_net0;
+assign layer6_col7_net1 = layer5_col7_net0;
+assign layer6_col8_net1 = layer5_col8_net1;
+assign layer6_col8_net2 = layer5_col8_net0;
+assign layer6_col9_net0 = layer5_col9_net1;
+assign layer6_col9_net1 = layer5_col9_net0;
+assign layer6_col10_net0 = layer5_col10_net1;
+assign layer6_col10_net1 = layer5_col10_net0;
+assign layer6_col11_net0 = layer5_col11_net1;
+assign layer6_col11_net1 = layer5_col11_net0;
+assign layer6_col12_net0 = layer5_col12_net1;
+assign layer6_col12_net1 = layer5_col12_net0;
+assign layer6_col13_net0 = layer5_col13_net1;
+assign layer6_col13_net1 = layer5_col13_net0;
+assign layer6_col14_net0 = layer5_col14_net1;
+assign layer6_col14_net1 = layer5_col14_net0;
+assign layer6_col15_net0 = layer5_col15_net1;
+assign layer6_col15_net1 = layer5_col15_net0;
+assign layer6_col16_net1 = layer5_col16_net0;
+assign layer6_col23_net2 = layer5_col23_net1;
+assign layer6_col23_net3 = layer5_col23_net0;
+assign layer6_col24_net2 = layer5_col24_net0;
+assign layer6_col25_net2 = layer5_col25_net0;
+assign layer6_col26_net2 = layer5_col26_net0;
+assign layer6_col27_net2 = layer5_col27_net0;
+assign layer6_col28_net2 = layer5_col28_net0;
+assign layer6_col29_net2 = layer5_col29_net0;
+assign layer6_col30_net2 = layer5_col30_net0;
+assign layer6_col31_net2 = layer5_col31_net0;
+assign layer6_col33_net3 = layer5_col33_net0;
+assign layer6_col34_net2 = layer5_col34_net1;
+assign layer6_col34_net3 = layer5_col34_net0;
+assign layer6_col35_net2 = layer5_col35_net1;
+assign layer6_col35_net3 = layer5_col35_net0;
+assign layer6_col36_net2 = layer5_col36_net1;
+assign layer6_col36_net3 = layer5_col36_net0;
+assign layer6_col37_net2 = layer5_col37_net1;
+assign layer6_col37_net3 = layer5_col37_net0;
+assign layer6_col39_net2 = layer5_col39_net0;
+assign layer6_col40_net2 = layer5_col40_net0;
+assign layer6_col41_net2 = layer5_col41_net0;
+assign layer6_col42_net2 = layer5_col42_net0;
+assign layer6_col43_net2 = layer5_col43_net0;
+assign layer6_col44_net2 = layer5_col44_net0;
+assign layer6_col45_net2 = layer5_col45_net0;
+assign layer6_col46_net2 = layer5_col46_net0;
+assign layer6_col47_net1 = layer5_col47_net1;
+assign layer6_col47_net2 = layer5_col47_net0;
+assign layer6_col54_net1 = layer5_col54_net0;
+assign layer6_col55_net0 = layer5_col55_net1;
+assign layer6_col55_net1 = layer5_col55_net0;
+assign layer6_col56_net0 = layer5_col56_net1;
+assign layer6_col56_net1 = layer5_col56_net0;
+assign layer6_col57_net0 = layer5_col57_net1;
+assign layer6_col57_net1 = layer5_col57_net0;
+assign layer6_col58_net0 = layer5_col58_net1;
+assign layer6_col58_net1 = layer5_col58_net0;
+assign layer6_col59_net0 = layer5_col59_net1;
+assign layer6_col59_net1 = layer5_col59_net0;
+assign layer6_col60_net0 = layer5_col60_net1;
+assign layer6_col60_net1 = layer5_col60_net0;
+assign layer6_col61_net0 = layer5_col61_net1;
+assign layer6_col61_net1 = layer5_col61_net0;
+assign layer6_col62_net0 = layer5_col62_net1;
+assign layer6_col62_net1 = layer5_col62_net0;
+half_adder ha_add6_0 (layer5_col7_net2, layer5_col7_net1, layer6_col7_net0, layer6_col8_net0);
+full_adder fa_add6_0 (layer5_col16_net3, layer5_col16_net2, layer5_col16_net1, layer6_col16_net0, layer6_col17_net0);
+full_adder fa_add6_1 (layer5_col17_net2, layer5_col17_net1, layer5_col17_net0, layer6_col17_net1, layer6_col18_net0);
+full_adder fa_add6_2 (layer5_col18_net2, layer5_col18_net1, layer5_col18_net0, layer6_col18_net1, layer6_col19_net0);
+full_adder fa_add6_3 (layer5_col19_net2, layer5_col19_net1, layer5_col19_net0, layer6_col19_net1, layer6_col20_net0);
+full_adder fa_add6_4 (layer5_col20_net2, layer5_col20_net1, layer5_col20_net0, layer6_col20_net1, layer6_col21_net0);
+full_adder fa_add6_5 (layer5_col21_net2, layer5_col21_net1, layer5_col21_net0, layer6_col21_net1, layer6_col22_net0);
+full_adder fa_add6_6 (layer5_col22_net2, layer5_col22_net1, layer5_col22_net0, layer6_col22_net1, layer6_col23_net0);
+full_adder fa_add6_7 (layer5_col23_net4, layer5_col23_net3, layer5_col23_net2, layer6_col23_net1, layer6_col24_net0);
+full_adder fa_add6_8 (layer5_col24_net3, layer5_col24_net2, layer5_col24_net1, layer6_col24_net1, layer6_col25_net0);
+full_adder fa_add6_9 (layer5_col25_net3, layer5_col25_net2, layer5_col25_net1, layer6_col25_net1, layer6_col26_net0);
+full_adder fa_add6_10 (layer5_col26_net3, layer5_col26_net2, layer5_col26_net1, layer6_col26_net1, layer6_col27_net0);
+full_adder fa_add6_11 (layer5_col27_net3, layer5_col27_net2, layer5_col27_net1, layer6_col27_net1, layer6_col28_net0);
+full_adder fa_add6_12 (layer5_col28_net3, layer5_col28_net2, layer5_col28_net1, layer6_col28_net1, layer6_col29_net0);
+full_adder fa_add6_13 (layer5_col29_net3, layer5_col29_net2, layer5_col29_net1, layer6_col29_net1, layer6_col30_net0);
+full_adder fa_add6_14 (layer5_col30_net3, layer5_col30_net2, layer5_col30_net1, layer6_col30_net1, layer6_col31_net0);
+full_adder fa_add6_15 (layer5_col31_net3, layer5_col31_net2, layer5_col31_net1, layer6_col31_net1, layer6_col32_net0);
+full_adder fa_add6_16 (layer5_col32_net5, layer5_col32_net4, layer5_col32_net3, layer6_col32_net1, layer6_col33_net0);
+full_adder fa_add6_17 (layer5_col32_net2, layer5_col32_net1, layer5_col32_net0, layer6_col32_net2, layer6_col33_net1);
+full_adder fa_add6_18 (layer5_col33_net3, layer5_col33_net2, layer5_col33_net1, layer6_col33_net2, layer6_col34_net0);
+full_adder fa_add6_19 (layer5_col34_net4, layer5_col34_net3, layer5_col34_net2, layer6_col34_net1, layer6_col35_net0);
+full_adder fa_add6_20 (layer5_col35_net4, layer5_col35_net3, layer5_col35_net2, layer6_col35_net1, layer6_col36_net0);
+full_adder fa_add6_21 (layer5_col36_net4, layer5_col36_net3, layer5_col36_net2, layer6_col36_net1, layer6_col37_net0);
+full_adder fa_add6_22 (layer5_col37_net4, layer5_col37_net3, layer5_col37_net2, layer6_col37_net1, layer6_col38_net0);
+full_adder fa_add6_23 (layer5_col38_net2, layer5_col38_net1, layer5_col38_net0, layer6_col38_net1, layer6_col39_net0);
+full_adder fa_add6_24 (layer5_col39_net3, layer5_col39_net2, layer5_col39_net1, layer6_col39_net1, layer6_col40_net0);
+full_adder fa_add6_25 (layer5_col40_net3, layer5_col40_net2, layer5_col40_net1, layer6_col40_net1, layer6_col41_net0);
+full_adder fa_add6_26 (layer5_col41_net3, layer5_col41_net2, layer5_col41_net1, layer6_col41_net1, layer6_col42_net0);
+full_adder fa_add6_27 (layer5_col42_net3, layer5_col42_net2, layer5_col42_net1, layer6_col42_net1, layer6_col43_net0);
+full_adder fa_add6_28 (layer5_col43_net3, layer5_col43_net2, layer5_col43_net1, layer6_col43_net1, layer6_col44_net0);
+full_adder fa_add6_29 (layer5_col44_net3, layer5_col44_net2, layer5_col44_net1, layer6_col44_net1, layer6_col45_net0);
+full_adder fa_add6_30 (layer5_col45_net3, layer5_col45_net2, layer5_col45_net1, layer6_col45_net1, layer6_col46_net0);
+full_adder fa_add6_31 (layer5_col46_net3, layer5_col46_net2, layer5_col46_net1, layer6_col46_net1, layer6_col47_net0);
+full_adder fa_add6_32 (layer5_col48_net2, layer5_col48_net1, layer5_col48_net0, layer6_col48_net0, layer6_col49_net0);
+full_adder fa_add6_33 (layer5_col49_net2, layer5_col49_net1, layer5_col49_net0, layer6_col49_net1, layer6_col50_net0);
+full_adder fa_add6_34 (layer5_col50_net2, layer5_col50_net1, layer5_col50_net0, layer6_col50_net1, layer6_col51_net0);
+full_adder fa_add6_35 (layer5_col51_net2, layer5_col51_net1, layer5_col51_net0, layer6_col51_net1, layer6_col52_net0);
+full_adder fa_add6_36 (layer5_col52_net2, layer5_col52_net1, layer5_col52_net0, layer6_col52_net1, layer6_col53_net0);
+full_adder fa_add6_37 (layer5_col53_net2, layer5_col53_net1, layer5_col53_net0, layer6_col53_net1, layer6_col54_net0);
+
+//----------- Reduction Layer 7 Start --------------
+
+assign layer7_col0_net0 = layer6_col0_net0;
+assign layer7_col1_net0 = layer6_col1_net1;
+assign layer7_col1_net1 = layer6_col1_net0;
+assign layer7_col2_net0 = layer6_col2_net1;
+assign layer7_col2_net1 = layer6_col2_net0;
+assign layer7_col3_net0 = layer6_col3_net1;
+assign layer7_col3_net1 = layer6_col3_net0;
+assign layer7_col4_net0 = layer6_col4_net1;
+assign layer7_col4_net1 = layer6_col4_net0;
+assign layer7_col5_net0 = layer6_col5_net1;
+assign layer7_col5_net1 = layer6_col5_net0;
+assign layer7_col6_net0 = layer6_col6_net1;
+assign layer7_col6_net1 = layer6_col6_net0;
+assign layer7_col7_net0 = layer6_col7_net1;
+assign layer7_col7_net1 = layer6_col7_net0;
+assign layer7_col8_net1 = layer6_col8_net0;
+assign layer7_col9_net1 = layer6_col9_net1;
+assign layer7_col9_net2 = layer6_col9_net0;
+assign layer7_col10_net0 = layer6_col10_net1;
+assign layer7_col10_net1 = layer6_col10_net0;
+assign layer7_col11_net0 = layer6_col11_net1;
+assign layer7_col11_net1 = layer6_col11_net0;
+assign layer7_col12_net0 = layer6_col12_net1;
+assign layer7_col12_net1 = layer6_col12_net0;
+assign layer7_col13_net0 = layer6_col13_net1;
+assign layer7_col13_net1 = layer6_col13_net0;
+assign layer7_col14_net0 = layer6_col14_net1;
+assign layer7_col14_net1 = layer6_col14_net0;
+assign layer7_col15_net0 = layer6_col15_net1;
+assign layer7_col15_net1 = layer6_col15_net0;
+assign layer7_col16_net0 = layer6_col16_net1;
+assign layer7_col16_net1 = layer6_col16_net0;
+assign layer7_col17_net0 = layer6_col17_net1;
+assign layer7_col17_net1 = layer6_col17_net0;
+assign layer7_col18_net0 = layer6_col18_net1;
+assign layer7_col18_net1 = layer6_col18_net0;
+assign layer7_col19_net0 = layer6_col19_net1;
+assign layer7_col19_net1 = layer6_col19_net0;
+assign layer7_col20_net0 = layer6_col20_net1;
+assign layer7_col20_net1 = layer6_col20_net0;
+assign layer7_col21_net0 = layer6_col21_net1;
+assign layer7_col21_net1 = layer6_col21_net0;
+assign layer7_col22_net0 = layer6_col22_net1;
+assign layer7_col22_net1 = layer6_col22_net0;
+assign layer7_col23_net1 = layer6_col23_net0;
+assign layer7_col33_net2 = layer6_col33_net0;
+assign layer7_col34_net2 = layer6_col34_net0;
+assign layer7_col35_net2 = layer6_col35_net0;
+assign layer7_col36_net2 = layer6_col36_net0;
+assign layer7_col37_net2 = layer6_col37_net0;
+assign layer7_col38_net1 = layer6_col38_net1;
+assign layer7_col38_net2 = layer6_col38_net0;
+assign layer7_col48_net1 = layer6_col48_net0;
+assign layer7_col49_net0 = layer6_col49_net1;
+assign layer7_col49_net1 = layer6_col49_net0;
+assign layer7_col50_net0 = layer6_col50_net1;
+assign layer7_col50_net1 = layer6_col50_net0;
+assign layer7_col51_net0 = layer6_col51_net1;
+assign layer7_col51_net1 = layer6_col51_net0;
+assign layer7_col52_net0 = layer6_col52_net1;
+assign layer7_col52_net1 = layer6_col52_net0;
+assign layer7_col53_net0 = layer6_col53_net1;
+assign layer7_col53_net1 = layer6_col53_net0;
+assign layer7_col54_net0 = layer6_col54_net1;
+assign layer7_col54_net1 = layer6_col54_net0;
+assign layer7_col55_net0 = layer6_col55_net1;
+assign layer7_col55_net1 = layer6_col55_net0;
+assign layer7_col56_net0 = layer6_col56_net1;
+assign layer7_col56_net1 = layer6_col56_net0;
+assign layer7_col57_net0 = layer6_col57_net1;
+assign layer7_col57_net1 = layer6_col57_net0;
+assign layer7_col58_net0 = layer6_col58_net1;
+assign layer7_col58_net1 = layer6_col58_net0;
+assign layer7_col59_net0 = layer6_col59_net1;
+assign layer7_col59_net1 = layer6_col59_net0;
+assign layer7_col60_net0 = layer6_col60_net1;
+assign layer7_col60_net1 = layer6_col60_net0;
+assign layer7_col61_net0 = layer6_col61_net1;
+assign layer7_col61_net1 = layer6_col61_net0;
+assign layer7_col62_net0 = layer6_col62_net1;
+assign layer7_col62_net1 = layer6_col62_net0;
+half_adder ha_add7_0 (layer6_col8_net2, layer6_col8_net1, layer7_col8_net0, layer7_col9_net0);
+full_adder fa_add7_0 (layer6_col23_net3, layer6_col23_net2, layer6_col23_net1, layer7_col23_net0, layer7_col24_net0);
+full_adder fa_add7_1 (layer6_col24_net2, layer6_col24_net1, layer6_col24_net0, layer7_col24_net1, layer7_col25_net0);
+full_adder fa_add7_2 (layer6_col25_net2, layer6_col25_net1, layer6_col25_net0, layer7_col25_net1, layer7_col26_net0);
+full_adder fa_add7_3 (layer6_col26_net2, layer6_col26_net1, layer6_col26_net0, layer7_col26_net1, layer7_col27_net0);
+full_adder fa_add7_4 (layer6_col27_net2, layer6_col27_net1, layer6_col27_net0, layer7_col27_net1, layer7_col28_net0);
+full_adder fa_add7_5 (layer6_col28_net2, layer6_col28_net1, layer6_col28_net0, layer7_col28_net1, layer7_col29_net0);
+full_adder fa_add7_6 (layer6_col29_net2, layer6_col29_net1, layer6_col29_net0, layer7_col29_net1, layer7_col30_net0);
+full_adder fa_add7_7 (layer6_col30_net2, layer6_col30_net1, layer6_col30_net0, layer7_col30_net1, layer7_col31_net0);
+full_adder fa_add7_8 (layer6_col31_net2, layer6_col31_net1, layer6_col31_net0, layer7_col31_net1, layer7_col32_net0);
+full_adder fa_add7_9 (layer6_col32_net2, layer6_col32_net1, layer6_col32_net0, layer7_col32_net1, layer7_col33_net0);
+full_adder fa_add7_10 (layer6_col33_net3, layer6_col33_net2, layer6_col33_net1, layer7_col33_net1, layer7_col34_net0);
+full_adder fa_add7_11 (layer6_col34_net3, layer6_col34_net2, layer6_col34_net1, layer7_col34_net1, layer7_col35_net0);
+full_adder fa_add7_12 (layer6_col35_net3, layer6_col35_net2, layer6_col35_net1, layer7_col35_net1, layer7_col36_net0);
+full_adder fa_add7_13 (layer6_col36_net3, layer6_col36_net2, layer6_col36_net1, layer7_col36_net1, layer7_col37_net0);
+full_adder fa_add7_14 (layer6_col37_net3, layer6_col37_net2, layer6_col37_net1, layer7_col37_net1, layer7_col38_net0);
+full_adder fa_add7_15 (layer6_col39_net2, layer6_col39_net1, layer6_col39_net0, layer7_col39_net0, layer7_col40_net0);
+full_adder fa_add7_16 (layer6_col40_net2, layer6_col40_net1, layer6_col40_net0, layer7_col40_net1, layer7_col41_net0);
+full_adder fa_add7_17 (layer6_col41_net2, layer6_col41_net1, layer6_col41_net0, layer7_col41_net1, layer7_col42_net0);
+full_adder fa_add7_18 (layer6_col42_net2, layer6_col42_net1, layer6_col42_net0, layer7_col42_net1, layer7_col43_net0);
+full_adder fa_add7_19 (layer6_col43_net2, layer6_col43_net1, layer6_col43_net0, layer7_col43_net1, layer7_col44_net0);
+full_adder fa_add7_20 (layer6_col44_net2, layer6_col44_net1, layer6_col44_net0, layer7_col44_net1, layer7_col45_net0);
+full_adder fa_add7_21 (layer6_col45_net2, layer6_col45_net1, layer6_col45_net0, layer7_col45_net1, layer7_col46_net0);
+full_adder fa_add7_22 (layer6_col46_net2, layer6_col46_net1, layer6_col46_net0, layer7_col46_net1, layer7_col47_net0);
+full_adder fa_add7_23 (layer6_col47_net2, layer6_col47_net1, layer6_col47_net0, layer7_col47_net1, layer7_col48_net0);
+
+//----------- Reduction Layer 8 Start --------------
+
+assign layer8_col0_net0 = layer7_col0_net0;
+assign layer8_col1_net0 = layer7_col1_net1;
+assign layer8_col1_net1 = layer7_col1_net0;
+assign layer8_col2_net0 = layer7_col2_net1;
+assign layer8_col2_net1 = layer7_col2_net0;
+assign layer8_col3_net0 = layer7_col3_net1;
+assign layer8_col3_net1 = layer7_col3_net0;
+assign layer8_col4_net0 = layer7_col4_net1;
+assign layer8_col4_net1 = layer7_col4_net0;
+assign layer8_col5_net0 = layer7_col5_net1;
+assign layer8_col5_net1 = layer7_col5_net0;
+assign layer8_col6_net0 = layer7_col6_net1;
+assign layer8_col6_net1 = layer7_col6_net0;
+assign layer8_col7_net0 = layer7_col7_net1;
+assign layer8_col7_net1 = layer7_col7_net0;
+assign layer8_col8_net0 = layer7_col8_net1;
+assign layer8_col8_net1 = layer7_col8_net0;
+assign layer8_col9_net1 = layer7_col9_net0;
+assign layer8_col39_net1 = layer7_col39_net0;
+assign layer8_col40_net0 = layer7_col40_net1;
+assign layer8_col40_net1 = layer7_col40_net0;
+assign layer8_col41_net0 = layer7_col41_net1;
+assign layer8_col41_net1 = layer7_col41_net0;
+assign layer8_col42_net0 = layer7_col42_net1;
+assign layer8_col42_net1 = layer7_col42_net0;
+assign layer8_col43_net0 = layer7_col43_net1;
+assign layer8_col43_net1 = layer7_col43_net0;
+assign layer8_col44_net0 = layer7_col44_net1;
+assign layer8_col44_net1 = layer7_col44_net0;
+assign layer8_col45_net0 = layer7_col45_net1;
+assign layer8_col45_net1 = layer7_col45_net0;
+assign layer8_col46_net0 = layer7_col46_net1;
+assign layer8_col46_net1 = layer7_col46_net0;
+assign layer8_col47_net0 = layer7_col47_net1;
+assign layer8_col47_net1 = layer7_col47_net0;
+assign layer8_col48_net0 = layer7_col48_net1;
+assign layer8_col48_net1 = layer7_col48_net0;
+assign layer8_col49_net0 = layer7_col49_net1;
+assign layer8_col49_net1 = layer7_col49_net0;
+assign layer8_col50_net0 = layer7_col50_net1;
+assign layer8_col50_net1 = layer7_col50_net0;
+assign layer8_col51_net0 = layer7_col51_net1;
+assign layer8_col51_net1 = layer7_col51_net0;
+assign layer8_col52_net0 = layer7_col52_net1;
+assign layer8_col52_net1 = layer7_col52_net0;
+assign layer8_col53_net0 = layer7_col53_net1;
+assign layer8_col53_net1 = layer7_col53_net0;
+assign layer8_col54_net0 = layer7_col54_net1;
+assign layer8_col54_net1 = layer7_col54_net0;
+assign layer8_col55_net0 = layer7_col55_net1;
+assign layer8_col55_net1 = layer7_col55_net0;
+assign layer8_col56_net0 = layer7_col56_net1;
+assign layer8_col56_net1 = layer7_col56_net0;
+assign layer8_col57_net0 = layer7_col57_net1;
+assign layer8_col57_net1 = layer7_col57_net0;
+assign layer8_col58_net0 = layer7_col58_net1;
+assign layer8_col58_net1 = layer7_col58_net0;
+assign layer8_col59_net0 = layer7_col59_net1;
+assign layer8_col59_net1 = layer7_col59_net0;
+assign layer8_col60_net0 = layer7_col60_net1;
+assign layer8_col60_net1 = layer7_col60_net0;
+assign layer8_col61_net0 = layer7_col61_net1;
+assign layer8_col61_net1 = layer7_col61_net0;
+assign layer8_col62_net0 = layer7_col62_net1;
+assign layer8_col62_net1 = layer7_col62_net0;
+half_adder ha_add8_0 (layer7_col9_net2, layer7_col9_net1, layer8_col9_net0, layer8_col10_net0);
+half_adder ha_add8_1 (layer7_col10_net1, layer7_col10_net0, layer8_col10_net1, layer8_col11_net0);
+half_adder ha_add8_2 (layer7_col11_net1, layer7_col11_net0, layer8_col11_net1, layer8_col12_net0);
+half_adder ha_add8_3 (layer7_col12_net1, layer7_col12_net0, layer8_col12_net1, layer8_col13_net0);
+half_adder ha_add8_4 (layer7_col13_net1, layer7_col13_net0, layer8_col13_net1, layer8_col14_net0);
+half_adder ha_add8_5 (layer7_col14_net1, layer7_col14_net0, layer8_col14_net1, layer8_col15_net0);
+half_adder ha_add8_6 (layer7_col15_net1, layer7_col15_net0, layer8_col15_net1, layer8_col16_net0);
+half_adder ha_add8_7 (layer7_col16_net1, layer7_col16_net0, layer8_col16_net1, layer8_col17_net0);
+half_adder ha_add8_8 (layer7_col17_net1, layer7_col17_net0, layer8_col17_net1, layer8_col18_net0);
+half_adder ha_add8_9 (layer7_col18_net1, layer7_col18_net0, layer8_col18_net1, layer8_col19_net0);
+half_adder ha_add8_10 (layer7_col19_net1, layer7_col19_net0, layer8_col19_net1, layer8_col20_net0);
+half_adder ha_add8_11 (layer7_col20_net1, layer7_col20_net0, layer8_col20_net1, layer8_col21_net0);
+half_adder ha_add8_12 (layer7_col21_net1, layer7_col21_net0, layer8_col21_net1, layer8_col22_net0);
+half_adder ha_add8_13 (layer7_col22_net1, layer7_col22_net0, layer8_col22_net1, layer8_col23_net0);
+half_adder ha_add8_14 (layer7_col23_net1, layer7_col23_net0, layer8_col23_net1, layer8_col24_net0);
+half_adder ha_add8_15 (layer7_col24_net1, layer7_col24_net0, layer8_col24_net1, layer8_col25_net0);
+half_adder ha_add8_16 (layer7_col25_net1, layer7_col25_net0, layer8_col25_net1, layer8_col26_net0);
+half_adder ha_add8_17 (layer7_col26_net1, layer7_col26_net0, layer8_col26_net1, layer8_col27_net0);
+half_adder ha_add8_18 (layer7_col27_net1, layer7_col27_net0, layer8_col27_net1, layer8_col28_net0);
+half_adder ha_add8_19 (layer7_col28_net1, layer7_col28_net0, layer8_col28_net1, layer8_col29_net0);
+half_adder ha_add8_20 (layer7_col29_net1, layer7_col29_net0, layer8_col29_net1, layer8_col30_net0);
+half_adder ha_add8_21 (layer7_col30_net1, layer7_col30_net0, layer8_col30_net1, layer8_col31_net0);
+half_adder ha_add8_22 (layer7_col31_net1, layer7_col31_net0, layer8_col31_net1, layer8_col32_net0);
+half_adder ha_add8_23 (layer7_col32_net1, layer7_col32_net0, layer8_col32_net1, layer8_col33_net0);
+full_adder fa_add8_0 (layer7_col33_net2, layer7_col33_net1, layer7_col33_net0, layer8_col33_net1, layer8_col34_net0);
+full_adder fa_add8_1 (layer7_col34_net2, layer7_col34_net1, layer7_col34_net0, layer8_col34_net1, layer8_col35_net0);
+full_adder fa_add8_2 (layer7_col35_net2, layer7_col35_net1, layer7_col35_net0, layer8_col35_net1, layer8_col36_net0);
+full_adder fa_add8_3 (layer7_col36_net2, layer7_col36_net1, layer7_col36_net0, layer8_col36_net1, layer8_col37_net0);
+full_adder fa_add8_4 (layer7_col37_net2, layer7_col37_net1, layer7_col37_net0, layer8_col37_net1, layer8_col38_net0);
+full_adder fa_add8_5 (layer7_col38_net2, layer7_col38_net1, layer7_col38_net0, layer8_col38_net1, layer8_col39_net0);
+
+//----------- Adding Layer Start --------------
+
+assign partial_sum = { layer8_col62_net0, layer8_col61_net0, layer8_col60_net0, layer8_col59_net0, layer8_col58_net0, layer8_col57_net0, layer8_col56_net0, layer8_col55_net0, layer8_col54_net0, layer8_col53_net0, layer8_col52_net0, layer8_col51_net0, layer8_col50_net0, layer8_col49_net0, layer8_col48_net0, layer8_col47_net0, layer8_col46_net0, layer8_col45_net0, layer8_col44_net0, layer8_col43_net0, layer8_col42_net0, layer8_col41_net0, layer8_col40_net0, layer8_col39_net0, layer8_col38_net0, layer8_col37_net0, layer8_col36_net0, layer8_col35_net0, layer8_col34_net0, layer8_col33_net0, layer8_col32_net0, layer8_col31_net0, layer8_col30_net0, layer8_col29_net0, layer8_col28_net0, layer8_col27_net0, layer8_col26_net0, layer8_col25_net0, layer8_col24_net0, layer8_col23_net0, layer8_col22_net0, layer8_col21_net0, layer8_col20_net0, layer8_col19_net0, layer8_col18_net0, layer8_col17_net0, layer8_col16_net0, layer8_col15_net0, layer8_col14_net0, layer8_col13_net0, layer8_col12_net0, layer8_col11_net0, layer8_col10_net0, layer8_col9_net0, layer8_col8_net0, layer8_col7_net0, layer8_col6_net0, layer8_col5_net0, layer8_col4_net0, layer8_col3_net0, layer8_col2_net0, layer8_col1_net0, layer8_col0_net0} + { layer8_col62_net1, layer8_col61_net1, layer8_col60_net1, layer8_col59_net1, layer8_col58_net1, layer8_col57_net1, layer8_col56_net1, layer8_col55_net1, layer8_col54_net1, layer8_col53_net1, layer8_col52_net1, layer8_col51_net1, layer8_col50_net1, layer8_col49_net1, layer8_col48_net1, layer8_col47_net1, layer8_col46_net1, layer8_col45_net1, layer8_col44_net1, layer8_col43_net1, layer8_col42_net1, layer8_col41_net1, layer8_col40_net1, layer8_col39_net1, layer8_col38_net1, layer8_col37_net1, layer8_col36_net1, layer8_col35_net1, layer8_col34_net1, layer8_col33_net1, layer8_col32_net1, layer8_col31_net1, layer8_col30_net1, layer8_col29_net1, layer8_col28_net1, layer8_col27_net1, layer8_col26_net1, layer8_col25_net1, layer8_col24_net1, layer8_col23_net1, layer8_col22_net1, layer8_col21_net1, layer8_col20_net1, layer8_col19_net1, layer8_col18_net1, layer8_col17_net1, layer8_col16_net1, layer8_col15_net1, layer8_col14_net1, layer8_col13_net1, layer8_col12_net1, layer8_col11_net1, layer8_col10_net1, layer8_col9_net1, layer8_col8_net1, layer8_col7_net1, layer8_col6_net1, layer8_col5_net1, layer8_col4_net1, layer8_col3_net1, layer8_col2_net1, layer8_col1_net1, 1'b0};
+
+endmodule