Sie sind auf Seite 1von 24

module wallace24(output reg [47:0] product, input [23:0] x, y, input clock);

reg p [23:0][23:0]; // array which stores the partial products

wire [551:0] s ,c ; //iintermediate sum and carry

integer i,j;

always@(y, x) //x is multiplicand AND y is multiplier

begin

// creating the partial products.

for ( i = 0; i <= 23; i = i + 1)

for ( j = 0; j <= 23; j = j + 1)

p[j][i] <= x[j] & y[i];

//all the partial products have been obtained and stored in a array of 8 X 8 matrix.

end

HA ha_11 ( .sum(s[0]), .carry(c[0]), .a(p[1][0]), .b( p[0][1])); //P1

FA fa_21 ( .sum(s[1]), .carry(c[1]), .a(p[2][0]), .b( p[1][1]), .cin( (c[0]) ) );

HA ha_21 ( .sum(s[2]), .carry(c[2]), .a(p[0][2]), .b( s[1])); //P2

FA fa_31 ( .sum(s[3]), .carry(c[3]), .a(p[3][0]), .b( p[2][1]), .cin( c[1]) );

FA fa_32 ( .sum(s[4]), .carry(c[4]), .a(p[1][2]), .b( s[3]), .cin( c[2]) );

HA ha_31 ( .sum(s[5]), .carry(c[5]), .a(p[0][3]), .b( s[4])); //P3

FA fa_41 ( .sum(s[6]), .carry(c[6]), .a(p[4][0]), .b( p[3][1]), .cin( c[3]) );

FA fa_42 ( .sum(s[7]), .carry(c[7]), .a(p[2][2]), .b(s[6]), .cin( c[4]) );

FA fa_43 ( .sum(s[8]), .carry(c[8]), .a(p[1][3]), .b(s[7]), .cin( c[5]) );

HA ha_41 ( .sum(s[9]), .carry(c[9]), .a(p[0][4]), .b( s[8])); //P4

FA fa_51 ( .sum(s[10]), .carry(c[10]), .a(p[5][0]), .b( p[4][1]), .cin( c[6]) );

FA fa_52 ( .sum(s[11]), .carry(c[11]), .a(p[3][2]), .b( s[10]), .cin( c[7]) );


FA fa_53 ( .sum(s[12]), .carry(c[12]), .a(p[2][3]), .b( s[11]), .cin( c[8]) );

FA fa_54 ( .sum(s[13]), .carry(c[13]), .a(p[1][4]), .b( s[12]), .cin( c[9]) );

HA ha_55 ( .sum(s[14]), .carry(c[14]), .a(p[0][5]), .b( s[13])); //P5

FA fa_61 ( .sum(s[15]), .carry(c[15]), .a(p[6][0]), .b( p[5][1]), .cin( c[10]) );

FA fa_62 ( .sum(s[16]), .carry(c[16]), .a(p[4][2]), .b( s[15]), .cin( c[11]) );

FA fa_63 ( .sum(s[17]), .carry(c[17]), .a(p[3][3]), .b( s[16]), .cin( c[12]) );

FA fa_64 ( .sum(s[18]), .carry(c[18]), .a(p[2][4]), .b( s[17]), .cin( c[13]) );

FA fa_65 ( .sum(s[19]), .carry(c[19]), .a(p[1][5]), .b( s[18]), .cin( c[14]) );

HA ha_42 ( .sum(s[20]), .carry(c[20]), .a(p[0][6]), .b( s[19])); //P6

FA fa_71 ( .sum(s[21]), .carry(c[21]), .a(p[7][0]), .b( p[6][1]), .cin( c[15]) );

FA fa_72 ( .sum(s[22]), .carry(c[22]), .a(p[5][2]), .b( s[21]), .cin( c[16]) );

FA fa_73 ( .sum(s[23]), .carry(c[23]), .a(p[4][3]), .b( s[22]), .cin( c[17]) );

FA fa_74 ( .sum(s[24]), .carry(c[24]), .a(p[3][4]), .b( s[23]), .cin( c[18]) );

FA fa_75 ( .sum(s[25]), .carry(c[25]), .a(p[2][5]), .b( s[24]), .cin( c[19]) );

FA fa_76 ( .sum(s[26]), .carry(c[26]), .a(p[1][6]), .b( s[25]), .cin( c[20]) );

HA ha_71 ( .sum(s[27]), .carry(c[27]), .a(p[0][7]), .b( s[26])); //P7

FA fa_81 ( .sum(s[28]), .carry(c[28]), .a(p[8][0]), .b( p[7][1]), .cin( c[21]) );

FA fa_82 ( .sum(s[29]), .carry(c[29]), .a(p[6][2]), .b( s[28]), .cin( c[22]) );

FA fa_83 ( .sum(s[30]), .carry(c[30]), .a(p[5][3]), .b( s[29]), .cin( c[23]) );

FA fa_84 ( .sum(s[31]), .carry(c[31]), .a(p[4][4]), .b( s[30]), .cin( c[24]) );

FA fa_85 ( .sum(s[32]), .carry(c[32]), .a(p[3][5]), .b( s[31]), .cin( c[25]) );

FA fa_86 ( .sum(s[33]), .carry(c[33]), .a(p[2][6]), .b( s[32]), .cin( c[26]) );

FA fa_87 ( .sum(s[34]), .carry(c[34]), .a(p[1][7]), .b( s[33]), .cin( c[27]) );

HA ha_81 ( .sum(s[35]), .carry(c[35]), .a(p[0][8]), .b( s[34])); //P8

FA fa_91 ( .sum(s[36]), .carry(c[36]), .a(p[9][0]), .b( p[8][1]), .cin( c[28]) );


FA fa_92 ( .sum(s[37]), .carry(c[37]), .a(p[7][2]), .b( s[36]), .cin( c[29]) );

FA fa_93 ( .sum(s[38]), .carry(c[38]), .a(p[6][3]), .b( s[37]), .cin( c[30]) );

FA fa_94 ( .sum(s[39]), .carry(c[39]), .a(p[5][4]), .b( s[38]), .cin( c[31]) );

FA fa_95 ( .sum(s[40]), .carry(c[40]), .a(p[4][5]), .b( s[39]), .cin( c[32]) );

FA fa_96 ( .sum(s[41]), .carry(c[41]), .a(p[3][6]), .b( s[40]), .cin( c[33]) );

FA fa_97 ( .sum(s[42]), .carry(c[42]), .a(p[2][7]), .b( s[41]), .cin( c[34]) );

FA fa_98 ( .sum(s[43]), .carry(c[43]), .a(p[1][8]), .b( s[42]), .cin( c[35]) );

HA ha_91 ( .sum(s[44]), .carry(c[44]), .a(p[0][9]), .b( s[43])); //P9

FA fa_101 ( .sum(s[45]), .carry(c[45]), .a(p[10][0]), .b( p[9][1]), .cin( c[36]) );

FA fa_102 ( .sum(s[46]), .carry(c[46]), .a(p[8][2]), .b( s[45]), .cin( c[37]) );

FA fa_103 ( .sum(s[47]), .carry(c[47]), .a(p[7][3]), .b( s[46]), .cin( c[38]) );

FA fa_104 ( .sum(s[48]), .carry(c[48]), .a(p[6][4]), .b( s[47]), .cin( c[39]) );

FA fa_105 ( .sum(s[49]), .carry(c[49]), .a(p[5][5]), .b( s[48]), .cin( c[40]) );

FA fa_106 ( .sum(s[50]), .carry(c[50]), .a(p[4][6]), .b( s[49]), .cin( c[41]) );

FA fa_107 ( .sum(s[51]), .carry(c[51]), .a(p[3][7]), .b( s[50]), .cin( c[42]) );

FA fa_108 ( .sum(s[52]), .carry(c[52]), .a(p[2][8]), .b( s[51]), .cin( c[43]) );

FA fa_109 ( .sum(s[53]), .carry(c[53]), .a(p[1][9]), .b( s[52]), .cin( c[44]) );

HA ha_101 ( .sum(s[54]), .carry(c[54]), .a(p[0][10]), .b( s[53])); //P10

FA fa_111 ( .sum(s[55]), .carry(c[55]), .a(p[11][0]), .b( p[10][1]), .cin( c[45]) );

FA fa_112 ( .sum(s[56]), .carry(c[56]), .a(p[9][2]), .b( s[55]), .cin( c[46]) );

FA fa_113 ( .sum(s[57]), .carry(c[57]), .a(p[8][3]), .b( s[56]), .cin( c[47]) );

FA fa_114 ( .sum(s[58]), .carry(c[58]), .a(p[7][4]), .b( s[57]), .cin( c[48]) );

FA fa_115 ( .sum(s[59]), .carry(c[59]), .a(p[6][5]), .b( s[58]), .cin( c[49]) );

FA fa_116 ( .sum(s[60]), .carry(c[60]), .a(p[5][6]), .b( s[59]), .cin( c[50]) );

FA fa_117 ( .sum(s[61]), .carry(c[61]), .a(p[4][7]), .b( s[60]), .cin( c[51]) );

FA fa_118( .sum(s[62]), .carry(c[62]), .a(p[3][8]), .b( s[61]), .cin( c[52]) );

FA fa_119 ( .sum(s[63]), .carry(c[63]), .a(p[2][9]), .b( s[62]), .cin( c[53]) );


FA fa_120 ( .sum(s[64]), .carry(c[64]), .a(p[1][10]), .b( s[63]), .cin( c[54]) );

HA ha_111 ( .sum(s[65]), .carry(c[65]), .a(p[0][11]), .b( s[64])); //P11

FA fa_121 ( .sum(s[66]), .carry(c[66]), .a(p[12][0]), .b( p[11][1]), .cin( c[55]) );

FA fa_122 ( .sum(s[67]), .carry(c[67]), .a(p[10][2]), .b( s[66]), .cin( c[56]) );

FA fa_123 ( .sum(s[68]), .carry(c[68]), .a(p[9][3]), .b( s[67]), .cin( c[57]) );

FA fa_124 ( .sum(s[69]), .carry(c[69]), .a(p[8][4]), .b( s[68]), .cin( c[58]) );

FA fa_125 ( .sum(s[70]), .carry(c[70]), .a(p[7][5]), .b( s[69]), .cin( c[59]) );

FA fa_126 ( .sum(s[71]), .carry(c[71]), .a(p[6][6]), .b( s[70]), .cin( c[60]) );

FA fa_127 ( .sum(s[72]), .carry(c[72]), .a(p[5][7]), .b( s[71]), .cin( c[61]) );

FA fa_128 ( .sum(s[73]), .carry(c[73]), .a(p[4][8]), .b( s[72]), .cin( c[62]) );

FA fa_129 ( .sum(s[74]), .carry(c[74]), .a(p[3][9]), .b( s[73]), .cin( c[63]) );

FA fa_130 ( .sum(s[75]), .carry(c[75]), .a(p[2][10]), .b( s[74]), .cin( c[64]) );

FA fa_131 ( .sum(s[76]), .carry(c[76]), .a(p[1][11]), .b( s[75]), .cin( c[65]) );

HA ha_121 ( .sum(s[77]), .carry(c[77]), .a(p[0][12]), .b( s[76])); //P12

FA fa_141 ( .sum(s[78]), .carry(c[78]), .a(p[13][0]), .b( p[12][1]), .cin( c[66]) );

FA fa_142 ( .sum(s[79]), .carry(c[79]), .a(p[11][2]), .b( s[78]), .cin( c[67]) );

FA fa_143 ( .sum(s[80]), .carry(c[80]), .a(p[10][3]), .b( s[79]), .cin( c[68]) );

FA fa_144 ( .sum(s[81]), .carry(c[81]), .a(p[9][4]), .b( s[80]), .cin( c[69]) );

FA fa_145 ( .sum(s[82]), .carry(c[82]), .a(p[8][5]), .b( s[81]), .cin( c[70]) );

FA fa_146 ( .sum(s[83]), .carry(c[83]), .a(p[7][6]), .b( s[82]), .cin( c[71]) );

FA fa_147 ( .sum(s[84]), .carry(c[84]), .a(p[6][7]), .b( s[83]), .cin( c[72]) );

FA fa_148 ( .sum(s[85]), .carry(c[85]), .a(p[5][8]), .b( s[84]), .cin( c[73]) );

FA fa_149 ( .sum(s[86]), .carry(c[86]), .a(p[4][9]), .b( s[85]), .cin( c[74]) );

FA fa_150 ( .sum(s[87]), .carry(c[87]), .a(p[3][10]), .b( s[86]), .cin( c[75]) );

FA fa_151 ( .sum(s[88]), .carry(c[88]), .a(p[2][11]), .b( s[87]), .cin( c[76]) );

FA fa_152 ( .sum(s[89]), .carry(c[89]), .a(p[1][12]), .b( s[88]), .cin( c[77]) );

HA ha_140 ( .sum(s[90]), .carry(c[90]), .a(p[0][13]), .b( s[89])); //P13


FA fa_161 ( .sum(s[91]), .carry(c[91]), .a(p[14][0]), .b( p[13][1]), .cin( c[78]) );

FA fa_162 ( .sum(s[92]), .carry(c[92]), .a(p[12][2]), .b( s[91]), .cin( c[79]) );

FA fa_163 ( .sum(s[93]), .carry(c[93]), .a(p[11][3]), .b( s[92]), .cin( c[80]) );

FA fa_164 ( .sum(s[94]), .carry(c[94]), .a(p[10][4]), .b( s[93]), .cin( c[81]) );

FA fa_165 ( .sum(s[95]), .carry(c[95]), .a(p[9][5]), .b( s[94]), .cin( c[82]) );

FA fa_166 ( .sum(s[96]), .carry(c[96]), .a(p[8][6]), .b( s[95]), .cin( c[83]) );

FA fa_167 ( .sum(s[97]), .carry(c[97]), .a(p[7][7]), .b( s[96]), .cin( c[84]) );

FA fa_168 ( .sum(s[98]), .carry(c[98]), .a(p[6][8]), .b( s[97]), .cin( c[85]) );

FA fa_169 ( .sum(s[99]), .carry(c[99]), .a(p[5][9]), .b( s[98]), .cin( c[86]) );

FA fa_170 ( .sum(s[100]), .carry(c[100]), .a(p[4][10]), .b( s[99]), .cin( c[87]) );

FA fa_171 ( .sum(s[101]), .carry(c[101]), .a(p[3][11]), .b( s[100]), .cin( c[88]) );

FA fa_172 ( .sum(s[102]), .carry(c[102]), .a(p[2][12]), .b( s[101]), .cin( c[89]) );

FA fa_173 ( .sum(s[103]), .carry(c[103]), .a(p[1][13]), .b( s[102]), .cin( c[90]) );

HA ha_160 ( .sum(s[104]), .carry(c[104]), .a(p[0][14]), .b( s[103])); //P14

FA fa_181 ( .sum(s[105]), .carry(c[105]), .a(p[15][0]), .b( p[12][1]), .cin( c[91]) );

FA fa_182 ( .sum(s[106]), .carry(c[106]), .a(p[13][2]), .b( s[105]), .cin( c[92]) );

FA fa_183 ( .sum(s[107]), .carry(c[107]), .a(p[12][3]), .b( s[106]), .cin( c[93]) );

FA fa_184 ( .sum(s[108]), .carry(c[108]), .a(p[11][4]), .b( s[107]), .cin( c[94]) );

FA fa_185 ( .sum(s[109]), .carry(c[109]), .a(p[10][5]), .b( s[108]), .cin( c[95]) );

FA fa_186 ( .sum(s[110]), .carry(c[110]), .a(p[9][6]), .b( s[109]), .cin( c[96]) );

FA fa_187 ( .sum(s[111]), .carry(c[111]), .a(p[8][7]), .b( s[110]), .cin( c[97]) );

FA fa_188 ( .sum(s[112]), .carry(c[112]), .a(p[7][8]), .b( s[111]), .cin( c[98]) );

FA fa_189 ( .sum(s[113]), .carry(c[113]), .a(p[6][9]), .b( s[112]), .cin( c[99]) );

FA fa_190 ( .sum(s[114]), .carry(c[114]), .a(p[5][10]), .b( s[113]), .cin( c[100]) );

FA fa_191 ( .sum(s[115]), .carry(c[115]), .a(p[4][11]), .b( s[114]), .cin( c[101]) );

FA fa_192 ( .sum(s[116]), .carry(c[116]), .a(p[3][12]), .b( s[115]), .cin( c[102]) );

FA fa_193 ( .sum(s[117]), .carry(c[117]), .a(p[2][13]), .b( s[116]), .cin( c[103]) );


FA fa_194 ( .sum(s[118]), .carry(c[118]), .a(p[1][14]), .b( s[117]), .cin( c[104]) );

HA ha_170 ( .sum(s[119]), .carry(c[119]), .a(p[0][15]), .b( s[118])); //P15

FA fa_201 ( .sum(s[120]), .carry(c[120]), .a(p[16][0]), .b( p[15][1]), .cin( c[105]) );

FA fa_202 ( .sum(s[121]), .carry(c[121]), .a(p[14][2]), .b( s[120]), .cin( c[106]) );

FA fa_203 ( .sum(s[122]), .carry(c[122]), .a(p[13][3]), .b( s[121]), .cin( c[107]) );

FA fa_204 ( .sum(s[123]), .carry(c[123]), .a(p[12][4]), .b( s[122]), .cin( c[108]) );

FA fa_205 ( .sum(s[124]), .carry(c[124]), .a(p[11][5]), .b( s[123]), .cin( c[109]) );

FA fa_206 ( .sum(s[125]), .carry(c[125]), .a(p[10][6]), .b( s[124]), .cin( c[110]) );

FA fa_207 ( .sum(s[126]), .carry(c[126]), .a(p[9][7]), .b( s[125]), .cin( c[111]) );

FA fa_208 ( .sum(s[127]), .carry(c[127]), .a(p[8][8]), .b( s[126]), .cin( c[112]) );

FA fa_209 ( .sum(s[128]), .carry(c[128]), .a(p[7][9]), .b( s[127]), .cin( c[113]) );

FA fa_210 ( .sum(s[129]), .carry(c[129]), .a(p[6][10]), .b( s[128]), .cin( c[114]) );

FA fa_211 ( .sum(s[130]), .carry(c[130]), .a(p[5][11]), .b( s[129]), .cin( c[115]) );

FA fa_212 ( .sum(s[131]), .carry(c[131]), .a(p[4][12]), .b( s[130]), .cin( c[116]) );

FA fa_213 ( .sum(s[132]), .carry(c[132]), .a(p[3][13]), .b( s[131]), .cin( c[117]) );

FA fa_214 ( .sum(s[133]), .carry(c[133]), .a(p[2][14]), .b( s[132]), .cin( c[118]) );

FA fa_215 ( .sum(s[134]), .carry(c[134]), .a(p[1][15]), .b( s[133]), .cin( c[119]) );

HA ha_201 ( .sum(s[135]), .carry(c[135]), .a(p[0][16]), .b( s[134])); //P16

FA fa_301 ( .sum(s[136]), .carry(c[136]), .a(p[17][0]), .b( p[16][1]), .cin( c[120]) );

FA fa_302 ( .sum(s[137]), .carry(c[137]), .a(p[15][2]), .b( s[136]), .cin( c[121]) );

FA fa_303 ( .sum(s[138]), .carry(c[138]), .a(p[14][3]), .b( s[137]), .cin( c[122]) );

FA fa_304 ( .sum(s[139]), .carry(c[139]), .a(p[13][4]), .b( s[138]), .cin( c[123]) );

FA fa_305 ( .sum(s[140]), .carry(c[140]), .a(p[12][5]), .b( s[139]), .cin( c[124]) );

FA fa_306 ( .sum(s[141]), .carry(c[141]), .a(p[11][6]), .b( s[140]), .cin( c[125]) );

FA fa_307 ( .sum(s[142]), .carry(c[142]), .a(p[10][7]), .b( s[141]), .cin( c[126]) );

FA fa_308 ( .sum(s[143]), .carry(c[143]), .a(p[9][8]), .b( s[142]), .cin( c[127]) );

FA fa_309 ( .sum(s[144]), .carry(c[144]), .a(p[8][9]), .b( s[143]), .cin( c[128]) );


FA fa_310 ( .sum(s[145]), .carry(c[145]), .a(p[7][10]), .b( s[144]), .cin( c[129]) );

FA fa_311 ( .sum(s[146]), .carry(c[146]), .a(p[6][11]), .b( s[145]), .cin( c[130]) );

FA fa_312 ( .sum(s[147]), .carry(c[147]), .a(p[5][12]), .b( s[146]), .cin( c[131]) );

FA fa_313 ( .sum(s[148]), .carry(c[148]), .a(p[4][13]), .b( s[147]), .cin( c[132]) );

FA fa_314 ( .sum(s[149]), .carry(c[149]), .a(p[3][14]), .b( s[148]), .cin( c[133]) );

FA fa_315 ( .sum(s[150]), .carry(c[150]), .a(p[2][15]), .b( s[149]), .cin( c[134]) );

FA fa_316 ( .sum(s[151]), .carry(c[151]), .a(p[1][16]), .b( s[150]), .cin( c[135]) );

HA ha_301 ( .sum(s[152]), .carry(c[152]), .a(p[0][17]), .b( s[151])); //P17

FA fa_321 ( .sum(s[153]), .carry(c[153]), .a(p[18][0]), .b( p[17][1]), .cin( c[136]) );

FA fa_322 ( .sum(s[154]), .carry(c[154]), .a(p[16][2]), .b( s[153]), .cin( c[137]) );

FA fa_323 ( .sum(s[155]), .carry(c[155]), .a(p[15][3]), .b( s[154]), .cin( c[138]) );

FA fa_324 ( .sum(s[156]), .carry(c[156]), .a(p[14][4]), .b( s[155]), .cin( c[139]) );

FA fa_325 ( .sum(s[157]), .carry(c[157]), .a(p[13][5]), .b( s[156]), .cin( c[140]) );

FA fa_326 ( .sum(s[158]), .carry(c[158]), .a(p[12][6]), .b( s[157]), .cin( c[141]) );

FA fa_327 ( .sum(s[159]), .carry(c[159]), .a(p[11][7]), .b( s[158]), .cin( c[142]) );

FA fa_328 ( .sum(s[160]), .carry(c[160]), .a(p[10][8]), .b( s[159]), .cin( c[143]) );

FA fa_329 ( .sum(s[161]), .carry(c[161]), .a(p[9][9]), .b( s[160]), .cin( c[144]) );

FA fa_330 ( .sum(s[162]), .carry(c[162]), .a(p[8][10]), .b( s[161]), .cin( c[145]) );

FA fa_331 ( .sum(s[163]), .carry(c[163]), .a(p[7][11]), .b( s[162]), .cin( c[146]) );

FA fa_332 ( .sum(s[164]), .carry(c[164]), .a(p[6][12]), .b( s[163]), .cin( c[147]) );

FA fa_333 ( .sum(s[165]), .carry(c[165]), .a(p[5][13]), .b( s[164]), .cin( c[148]) );

FA fa_334 ( .sum(s[166]), .carry(c[166]), .a(p[4][14]), .b( s[165]), .cin( c[149]) );

FA fa_335 ( .sum(s[167]), .carry(c[167]), .a(p[3][15]), .b( s[166]), .cin( c[150]) );

FA fa_336 ( .sum(s[168]), .carry(c[168]), .a(p[2][16]), .b( s[167]), .cin( c[151]) );

FA fa_337 ( .sum(s[169]), .carry(c[169]), .a(p[1][17]), .b( s[168]), .cin( c[152]) );

HA ha_320 ( .sum(s[170]), .carry(c[170]), .a(p[0][18]), .b( s[169])); //P18

FA fa_341 ( .sum(s[171]), .carry(c[171]), .a(p[19][0]), .b( p[18][1]), .cin( c[153]) );


FA fa_342 ( .sum(s[172]), .carry(c[172]), .a(p[17][2]), .b( s[171]), .cin( c[154]) );

FA fa_343 ( .sum(s[173]), .carry(c[173]), .a(p[16][3]), .b( s[172]), .cin( c[155]) );

FA fa_344 ( .sum(s[174]), .carry(c[174]), .a(p[15][4]), .b( s[173]), .cin( c[156]) );

FA fa_345 ( .sum(s[175]), .carry(c[175]), .a(p[14][5]), .b( s[174]), .cin( c[157]) );

FA fa_346 ( .sum(s[176]), .carry(c[176]), .a(p[13][6]), .b( s[175]), .cin( c[158]) );

FA fa_347 ( .sum(s[177]), .carry(c[177]), .a(p[12][7]), .b( s[176]), .cin( c[159]) );

FA fa_348 ( .sum(s[178]), .carry(c[178]), .a(p[11][8]), .b( s[177]), .cin( c[160]) );

FA fa_349 ( .sum(s[179]), .carry(c[179]), .a(p[10][9]), .b( s[178]), .cin( c[161]) );

FA fa_350 ( .sum(s[180]), .carry(c[180]), .a(p[9][10]), .b( s[179]), .cin( c[162]) );

FA fa_351 ( .sum(s[181]), .carry(c[181]), .a(p[8][11]), .b( s[180]), .cin( c[163]) );

FA fa_352 ( .sum(s[182]), .carry(c[182]), .a(p[7][12]), .b( s[181]), .cin( c[164]) );

FA fa_353 ( .sum(s[183]), .carry(c[183]), .a(p[6][13]), .b( s[182]), .cin( c[165]) );

FA fa_354 ( .sum(s[184]), .carry(c[184]), .a(p[5][14]), .b( s[183]), .cin( c[166]) );

FA fa_355 ( .sum(s[185]), .carry(c[185]), .a(p[4][15]), .b( s[184]), .cin( c[167]) );

FA fa_356 ( .sum(s[186]), .carry(c[186]), .a(p[3][16]), .b( s[185]), .cin( c[168]) );

FA fa_357 ( .sum(s[187]), .carry(c[187]), .a(p[2][17]), .b( s[186]), .cin( c[169]) );

FA fa_358 ( .sum(s[188]), .carry(c[188]), .a(p[1][18]), .b( s[187]), .cin( c[170]) );

HA ha_330 ( .sum(s[189]), .carry(c[189]), .a(p[0][19]), .b( s[188])); //P19

FA fa_361 ( .sum(s[190]), .carry(c[190]), .a(p[20][0]), .b( p[19][1]), .cin( c[171]) );

FA fa_362 ( .sum(s[191]), .carry(c[191]), .a(p[18][2]), .b( s[190]), .cin( c[172]) );

FA fa_363 ( .sum(s[192]), .carry(c[192]), .a(p[17][3]), .b( s[191]), .cin( c[173]) );

FA fa_364 ( .sum(s[193]), .carry(c[193]), .a(p[16][4]), .b( s[192]), .cin( c[174]) );

FA fa_365 ( .sum(s[194]), .carry(c[194]), .a(p[15][5]), .b( s[193]), .cin( c[175]) );

FA fa_366 ( .sum(s[195]), .carry(c[195]), .a(p[14][6]), .b( s[194]), .cin( c[176]) );

FA fa_367 ( .sum(s[196]), .carry(c[196]), .a(p[13][7]), .b( s[195]), .cin( c[177]) );

FA fa_368 ( .sum(s[197]), .carry(c[197]), .a(p[12][8]), .b( s[196]), .cin( c[178]) );

FA fa_369 ( .sum(s[198]), .carry(c[198]), .a(p[11][9]), .b( s[197]), .cin( c[179]) );

FA fa_370 ( .sum(s[199]), .carry(c[199]), .a(p[10][10]), .b( s[198]), .cin( c[180]) );


FA fa_371 ( .sum(s[200]), .carry(c[200]), .a(p[9][11]), .b( s[199]), .cin( c[181]) );

FA fa_372 ( .sum(s[201]), .carry(c[201]), .a(p[8][12]), .b( s[200]), .cin( c[182]) );

FA fa_373 ( .sum(s[202]), .carry(c[202]), .a(p[7][13]), .b( s[201]), .cin( c[183]) );

FA fa_374 ( .sum(s[203]), .carry(c[203]), .a(p[6][14]), .b( s[202]), .cin( c[184]) );

FA fa_375 ( .sum(s[204]), .carry(c[204]), .a(p[5][15]), .b( s[203]), .cin( c[185]) );

FA fa_376 ( .sum(s[205]), .carry(c[205]), .a(p[4][16]), .b( s[204]), .cin( c[186]) );

FA fa_377 ( .sum(s[206]), .carry(c[206]), .a(p[3][17]), .b( s[205]), .cin( c[187]) );

FA fa_378 ( .sum(s[207]), .carry(c[207]), .a(p[2][18]), .b( s[206]), .cin( c[188]) );

FA fa_379 ( .sum(s[208]), .carry(c[208]), .a(p[1][19]), .b( s[207]), .cin( c[189]) );

HA ha_340 ( .sum(s[209]), .carry(c[209]), .a(p[0][20]), .b( s[208])); //P20

FA fa_381 ( .sum(s[210]), .carry(c[210]), .a(p[21][0]), .b( p[20][1]), .cin( c[190]) );

FA fa_382 ( .sum(s[211]), .carry(c[211]), .a(p[19][2]), .b( s[210]), .cin( c[191]) );

FA fa_383 ( .sum(s[212]), .carry(c[212]), .a(p[18][3]), .b( s[211]), .cin( c[192]) );

FA fa_384 ( .sum(s[213]), .carry(c[213]), .a(p[17][4]), .b( s[212]), .cin( c[193]) );

FA fa_385 ( .sum(s[214]), .carry(c[214]), .a(p[16][5]), .b( s[213]), .cin( c[194]) );

FA fa_386 ( .sum(s[215]), .carry(c[215]), .a(p[15][6]), .b( s[214]), .cin( c[195]) );

FA fa_387 ( .sum(s[216]), .carry(c[216]), .a(p[14][7]), .b( s[215]), .cin( c[196]) );

FA fa_388 ( .sum(s[217]), .carry(c[217]), .a(p[13][8]), .b( s[216]), .cin( c[197]) );

FA fa_389 ( .sum(s[218]), .carry(c[218]), .a(p[12][9]), .b( s[217]), .cin( c[198]) );

FA fa_390 ( .sum(s[219]), .carry(c[219]), .a(p[11][10]), .b( s[218]), .cin( c[199]) );

FA fa_391 ( .sum(s[220]), .carry(c[220]), .a(p[10][11]), .b( s[219]), .cin( c[200]) );

FA fa_392 ( .sum(s[221]), .carry(c[221]), .a(p[9][12]), .b( s[220]), .cin( c[201]) );

FA fa_393 ( .sum(s[222]), .carry(c[222]), .a(p[8][13]), .b( s[221]), .cin( c[202]) );

FA fa_394 ( .sum(s[223]), .carry(c[223]), .a(p[7][14]), .b( s[222]), .cin( c[203]) );

FA fa_395 ( .sum(s[224]), .carry(c[224]), .a(p[6][15]), .b( s[223]), .cin( c[204]) );

FA fa_396 ( .sum(s[225]), .carry(c[225]), .a(p[5][16]), .b( s[224]), .cin( c[205]) );

FA fa_397 ( .sum(s[226]), .carry(c[226]), .a(p[4][17]), .b( s[225]), .cin( c[206]) );

FA fa_398 ( .sum(s[227]), .carry(c[227]), .a(p[3][18]), .b( s[226]), .cin( c[207]) );


FA fa_399 ( .sum(s[228]), .carry(c[228]), .a(p[2][19]), .b( s[227]), .cin( c[208]) );

FA fa_400 ( .sum(s[229]), .carry(c[229]), .a(p[1][20]), .b( s[228]), .cin( c[209]) );

HA ha_350 ( .sum(s[230]), .carry(c[230]), .a(p[0][21]), .b( s[229])); //P21

FA fa_401 ( .sum(s[231]), .carry(c[231]), .a(p[22][0]), .b( p[21][1]), .cin( c[210]) );

FA fa_402 ( .sum(s[232]), .carry(c[232]), .a(p[20][2]), .b( s[231]), .cin( c[211]) );

FA fa_403 ( .sum(s[233]), .carry(c[233]), .a(p[19][3]), .b( s[232]), .cin( c[212]) );

FA fa_404 ( .sum(s[234]), .carry(c[234]), .a(p[18][4]), .b( s[233]), .cin( c[213]) );

FA fa_405 ( .sum(s[235]), .carry(c[235]), .a(p[17][5]), .b( s[234]), .cin( c[214]) );

FA fa_406 ( .sum(s[236]), .carry(c[236]), .a(p[16][6]), .b( s[235]), .cin( c[215]) );

FA fa_407 ( .sum(s[237]), .carry(c[237]), .a(p[15][7]), .b( s[236]), .cin( c[216]) );

FA fa_408 ( .sum(s[238]), .carry(c[238]), .a(p[14][8]), .b( s[237]), .cin( c[217]) );

FA fa_409 ( .sum(s[239]), .carry(c[239]), .a(p[13][9]), .b( s[238]), .cin( c[218]) );

FA fa_410 ( .sum(s[240]), .carry(c[240]), .a(p[12][10]), .b( s[239]), .cin( c[219]) );

FA fa_411 ( .sum(s[241]), .carry(c[241]), .a(p[11][11]), .b( s[240]), .cin( c[220]) );

FA fa_412 ( .sum(s[242]), .carry(c[242]), .a(p[10][12]), .b( s[241]), .cin( c[221]) );

FA fa_413 ( .sum(s[243]), .carry(c[243]), .a(p[9][13]), .b( s[242]), .cin( c[222]) );

FA fa_414 ( .sum(s[244]), .carry(c[244]), .a(p[8][14]), .b( s[243]), .cin( c[223]) );

FA fa_415 ( .sum(s[245]), .carry(c[245]), .a(p[7][15]), .b( s[244]), .cin( c[224]) );

FA fa_416 ( .sum(s[246]), .carry(c[246]), .a(p[6][16]), .b( s[245]), .cin( c[225]) );

FA fa_417 ( .sum(s[247]), .carry(c[247]), .a(p[5][17]), .b( s[246]), .cin( c[226]) );

FA fa_418 ( .sum(s[248]), .carry(c[248]), .a(p[4][18]), .b( s[247]), .cin( c[227]) );

FA fa_419 ( .sum(s[249]), .carry(c[249]), .a(p[3][19]), .b( s[248]), .cin( c[228]) );

FA fa_420 ( .sum(s[250]), .carry(c[250]), .a(p[2][20]), .b( s[249]), .cin( c[229]) );

FA fa_421 ( .sum(s[251]), .carry(c[251]), .a(p[1][21]), .b( s[250]), .cin( c[230]) );

HA ha_422 ( .sum(s[252]), .carry(c[252]), .a(p[0][22]), .b( s[251])); //P22

FA fa_431 ( .sum(s[253]), .carry(c[253]), .a(p[23][0]), .b( p[22][1]), .cin( c[231]) );

FA fa_432 ( .sum(s[254]), .carry(c[254]), .a(p[21][2]), .b( s[253]), .cin( c[232]) );


FA fa_433 ( .sum(s[255]), .carry(c[255]), .a(p[20][3]), .b( s[254]), .cin( c[233]) );

FA fa_434 ( .sum(s[256]), .carry(c[256]), .a(p[19][4]), .b( s[255]), .cin( c[234]) );

FA fa_435 ( .sum(s[257]), .carry(c[257]), .a(p[18][5]), .b( s[256]), .cin( c[235]) );

FA fa_436 ( .sum(s[258]), .carry(c[258]), .a(p[17][6]), .b( s[257]), .cin( c[236]) );

FA fa_437 ( .sum(s[259]), .carry(c[259]), .a(p[16][7]), .b( s[258]), .cin( c[237]) );

FA fa_438 ( .sum(s[260]), .carry(c[260]), .a(p[15][8]), .b( s[259]), .cin( c[238]) );

FA fa_439 ( .sum(s[261]), .carry(c[261]), .a(p[14][9]), .b( s[260]), .cin( c[239]) );

FA fa_440 ( .sum(s[262]), .carry(c[262]), .a(p[13][10]), .b( s[261]), .cin( c[240]) );

FA fa_441 ( .sum(s[263]), .carry(c[263]), .a(p[12][11]), .b( s[262]), .cin( c[241]) );

FA fa_442 ( .sum(s[264]), .carry(c[264]), .a(p[11][12]), .b( s[263]), .cin( c[242]) );

FA fa_443 ( .sum(s[265]), .carry(c[265]), .a(p[10][13]), .b( s[264]), .cin( c[243]) );

FA fa_444 ( .sum(s[266]), .carry(c[266]), .a(p[9][14]), .b( s[265]), .cin( c[244]) );

FA fa_445 ( .sum(s[267]), .carry(c[267]), .a(p[8][15]), .b( s[266]), .cin( c[245]) );

FA fa_446 ( .sum(s[268]), .carry(c[268]), .a(p[7][16]), .b( s[267]), .cin( c[246]) );

FA fa_447 ( .sum(s[269]), .carry(c[269]), .a(p[6][17]), .b( s[268]), .cin( c[247]) );

FA fa_448 ( .sum(s[270]), .carry(c[270]), .a(p[5][18]), .b( s[269]), .cin( c[248]) );

FA fa_449 ( .sum(s[271]), .carry(c[271]), .a(p[4][19]), .b( s[270]), .cin( c[249]) );

FA fa_450 ( .sum(s[272]), .carry(c[272]), .a(p[3][20]), .b( s[271]), .cin( c[250]) );

FA fa_451 ( .sum(s[273]), .carry(c[273]), .a(p[2][21]), .b( s[272]), .cin( c[251]) );

FA fa_452 ( .sum(s[274]), .carry(c[274]), .a(p[1][22]), .b( s[273]), .cin( c[252]) );

HA ha_423 ( .sum(s[275]), .carry(c[275]), .a(p[0][23]), .b( s[274])); //P23

FA fa_461 ( .sum(s[276]), .carry(c[276]), .a(p[23][1]), .b( p[22][2]), .cin( c[253]) );

FA fa_462 ( .sum(s[277]), .carry(c[277]), .a(p[21][3]), .b( s[276]), .cin( c[254]) );

FA fa_463 ( .sum(s[278]), .carry(c[278]), .a(p[20][4]), .b( s[277]), .cin( c[255]) );

FA fa_464 ( .sum(s[279]), .carry(c[279]), .a(p[19][5]), .b( s[278]), .cin( c[256]) );

FA fa_465 ( .sum(s[280]), .carry(c[280]), .a(p[18][6]), .b( s[279]), .cin( c[257]) );

FA fa_466 ( .sum(s[281]), .carry(c[281]), .a(p[17][7]), .b( s[280]), .cin( c[258]) );


FA fa_467 ( .sum(s[282]), .carry(c[282]), .a(p[16][8]), .b( s[281]), .cin( c[259]) );

FA fa_468 ( .sum(s[283]), .carry(c[283]), .a(p[15][9]), .b( s[282]), .cin( c[260]) );

FA fa_469 ( .sum(s[284]), .carry(c[284]), .a(p[14][10]), .b( s[283]), .cin( c[261]) );

FA fa_470 ( .sum(s[285]), .carry(c[285]), .a(p[13][11]), .b( s[284]), .cin( c[262]) );

FA fa_471 ( .sum(s[286]), .carry(c[286]), .a(p[12][12]), .b( s[285]), .cin( c[263]) );

FA fa_472 ( .sum(s[287]), .carry(c[287]), .a(p[11][13]), .b( s[286]), .cin( c[264]) );

FA fa_473 ( .sum(s[288]), .carry(c[288]), .a(p[10][14]), .b( s[287]), .cin( c[265]) );

FA fa_474 ( .sum(s[289]), .carry(c[289]), .a(p[9][15]), .b( s[288]), .cin( c[266]) );

FA fa_475 ( .sum(s[290]), .carry(c[290]), .a(p[8][16]), .b( s[289]), .cin( c[267]) );

FA fa_476 ( .sum(s[291]), .carry(c[291]), .a(p[7][17]), .b( s[290]), .cin( c[268]) );

FA fa_477 ( .sum(s[292]), .carry(c[292]), .a(p[6][18]), .b( s[291]), .cin( c[269]) );

FA fa_478 ( .sum(s[293]), .carry(c[293]), .a(p[5][19]), .b( s[292]), .cin( c[270]) );

FA fa_479 ( .sum(s[294]), .carry(c[294]), .a(p[4][20]), .b( s[293]), .cin( c[271]) );

FA fa_480 ( .sum(s[295]), .carry(c[295]), .a(p[3][21]), .b( s[294]), .cin( c[272]) );

FA fa_481 ( .sum(s[296]), .carry(c[296]), .a(p[2][22]), .b( s[295]), .cin( c[273]) );

FA fa_482 ( .sum(s[297]), .carry(c[297]), .a(p[1][23]), .b( s[296]), .cin( c[274]) );

HA ha_424 ( .sum(s[298]), .carry(c[298]), .a(s[297]), .b( c[275])); //P24

FA fa_483 ( .sum(s[299]), .carry(c[299]), .a(p[23][2]), .b( p[22][3]), .cin( c[276]) );

FA fa_484 ( .sum(s[300]), .carry(c[300]), .a(p[21][4]), .b( s[299]), .cin( c[277]) );

FA fa_485 ( .sum(s[301]), .carry(c[301]), .a(p[20][5]), .b( s[300]), .cin( c[278]) );

FA fa_486 ( .sum(s[302]), .carry(c[302]), .a(p[19][6]), .b( s[301]), .cin( c[279]) );

FA fa_487 ( .sum(s[303]), .carry(c[303]), .a(p[18][7]), .b( s[302]), .cin( c[280]) );

FA fa_488 ( .sum(s[304]), .carry(c[304]), .a(p[17][8]), .b( s[303]), .cin( c[281]) );

FA fa_489 ( .sum(s[305]), .carry(c[305]), .a(p[16][9]), .b( s[304]), .cin( c[282]) );

FA fa_490 ( .sum(s[306]), .carry(c[306]), .a(p[15][10]), .b( s[305]), .cin( c[283]) );

FA fa_491 ( .sum(s[307]), .carry(c[307]), .a(p[14][11]), .b( s[306]), .cin( c[284]) );

FA fa_492 ( .sum(s[308]), .carry(c[308]), .a(p[13][12]), .b( s[307]), .cin( c[285]) );

FA fa_493 ( .sum(s[309]), .carry(c[309]), .a(p[12][13]), .b( s[308]), .cin( c[286]) );


FA fa_494 ( .sum(s[310]), .carry(c[310]), .a(p[11][14]), .b( s[309]), .cin( c[287]) );

FA fa_495 ( .sum(s[311]), .carry(c[311]), .a(p[10][15]), .b( s[310]), .cin( c[288]) );

FA fa_496 ( .sum(s[312]), .carry(c[312]), .a(p[9][16]), .b( s[311]), .cin( c[289]) );

FA fa_497 ( .sum(s[313]), .carry(c[313]), .a(p[8][17]), .b( s[312]), .cin( c[290]) );

FA fa_498 ( .sum(s[314]), .carry(c[314]), .a(p[7][18]), .b( s[313]), .cin( c[291]) );

FA fa_499 ( .sum(s[315]), .carry(c[315]), .a(p[6][19]), .b( s[314]), .cin( c[292]) );

FA fa_500 ( .sum(s[316]), .carry(c[316]), .a(p[5][20]), .b( s[315]), .cin( c[293]) );

FA fa_501 ( .sum(s[317]), .carry(c[317]), .a(p[4][21]), .b( s[316]), .cin( c[294]) );

FA fa_502 ( .sum(s[318]), .carry(c[318]), .a(p[3][22]), .b( s[317]), .cin( c[295]) );

FA fa_503 ( .sum(s[319]), .carry(c[319]), .a(p[2][23]), .b( s[318]), .cin( c[296]) );

FA fa_504 ( .sum(s[320]), .carry(c[320]), .a(s[319]), .b( c[297]), .cin( c[298]) ); //P25

FA fa_505 ( .sum(s[321]), .carry(c[321]), .a(p[23][3]), .b( p[22][4]), .cin( c[299]) );

FA fa_506 ( .sum(s[322]), .carry(c[322]), .a(p[21][5]), .b( s[321]), .cin( c[300]) );

FA fa_507 ( .sum(s[323]), .carry(c[323]), .a(p[20][6]), .b( s[322]), .cin( c[301]) );

FA fa_508 ( .sum(s[324]), .carry(c[324]), .a(p[19][7]), .b( s[323]), .cin( c[302]) );

FA fa_509 ( .sum(s[325]), .carry(c[325]), .a(p[18][8]), .b( s[324]), .cin( c[303]) );

FA fa_510 ( .sum(s[326]), .carry(c[326]), .a(p[17][9]), .b( s[325]), .cin( c[304]) );

FA fa_511 ( .sum(s[327]), .carry(c[327]), .a(p[16][10]), .b( s[326]), .cin( c[305]) );

FA fa_512 ( .sum(s[328]), .carry(c[328]), .a(p[15][11]), .b( s[327]), .cin( c[306]) );

FA fa_513 ( .sum(s[329]), .carry(c[329]), .a(p[14][12]), .b( s[328]), .cin( c[307]) );

FA fa_514 ( .sum(s[330]), .carry(c[330]), .a(p[13][13]), .b( s[329]), .cin( c[308]) );

FA fa_515 ( .sum(s[331]), .carry(c[331]), .a(p[12][14]), .b( s[330]), .cin( c[309]) );

FA fa_516 ( .sum(s[332]), .carry(c[332]), .a(p[11][15]), .b( s[331]), .cin( c[310]) );

FA fa_517 ( .sum(s[333]), .carry(c[333]), .a(p[10][16]), .b( s[332]), .cin( c[311]) );

FA fa_518 ( .sum(s[334]), .carry(c[334]), .a(p[9][17]), .b( s[333]), .cin( c[312]) );

FA fa_519 ( .sum(s[335]), .carry(c[335]), .a(p[8][18]), .b( s[334]), .cin( c[313]) );

FA fa_520 ( .sum(s[336]), .carry(c[336]), .a(p[7][19]), .b( s[335]), .cin( c[314]) );

FA fa_521 ( .sum(s[337]), .carry(c[337]), .a(p[6][20]), .b( s[336]), .cin( c[315]) );


FA fa_522 ( .sum(s[338]), .carry(c[338]), .a(p[5][21]), .b( s[337]), .cin( c[316]) );

FA fa_523 ( .sum(s[339]), .carry(c[339]), .a(p[4][22]), .b( s[338]), .cin( c[317]) );

FA fa_524 ( .sum(s[340]), .carry(c[340]), .a(p[3][23]), .b( s[339]), .cin( c[318]) );

FA fa_525 ( .sum(s[341]), .carry(c[341]), .a(s[340]), .b( c[319]), .cin( c[320]) ); //P26

FA fa_526 ( .sum(s[342]), .carry(c[342]), .a(p[23][4]), .b( p[22][5]), .cin( c[321]) );

FA fa_527 ( .sum(s[343]), .carry(c[343]), .a(p[21][6]), .b( s[342]), .cin( c[322]) );

FA fa_528 ( .sum(s[344]), .carry(c[344]), .a(p[20][7]), .b( s[343]), .cin( c[323]) );

FA fa_529 ( .sum(s[345]), .carry(c[345]), .a(p[19][8]), .b( s[344]), .cin( c[324]) );

FA fa_530 ( .sum(s[346]), .carry(c[346]), .a(p[18][9]), .b( s[345]), .cin( c[325]) );

FA fa_531 ( .sum(s[347]), .carry(c[347]), .a(p[17][10]), .b( s[346]), .cin( c[326]) );

FA fa_532 ( .sum(s[348]), .carry(c[348]), .a(p[16][11]), .b( s[347]), .cin( c[327]) );

FA fa_533 ( .sum(s[349]), .carry(c[349]), .a(p[15][12]), .b( s[348]), .cin( c[328]) );

FA fa_534 ( .sum(s[350]), .carry(c[350]), .a(p[14][13]), .b( s[349]), .cin( c[329]) );

FA fa_535 ( .sum(s[351]), .carry(c[351]), .a(p[13][14]), .b( s[350]), .cin( c[330]) );

FA fa_536 ( .sum(s[352]), .carry(c[352]), .a(p[12][15]), .b( s[351]), .cin( c[331]) );

FA fa_537 ( .sum(s[353]), .carry(c[353]), .a(p[11][16]), .b( s[352]), .cin( c[332]) );

FA fa_538 ( .sum(s[354]), .carry(c[354]), .a(p[10][17]), .b( s[353]), .cin( c[333]) );

FA fa_539 ( .sum(s[355]), .carry(c[355]), .a(p[9][18]), .b( s[354]), .cin( c[334]) );

FA fa_540 ( .sum(s[356]), .carry(c[356]), .a(p[8][19]), .b( s[355]), .cin( c[335]) );

FA fa_541 ( .sum(s[357]), .carry(c[357]), .a(p[7][20]), .b( s[356]), .cin( c[336]) );

FA fa_542 ( .sum(s[358]), .carry(c[358]), .a(p[6][21]), .b( s[357]), .cin( c[337]) );

FA fa_543 ( .sum(s[359]), .carry(c[359]), .a(p[5][22]), .b( s[358]), .cin( c[338]) );

FA fa_544 ( .sum(s[360]), .carry(c[360]), .a(p[4][23]), .b( s[359]), .cin( c[339]) );

FA fa_545 ( .sum(s[361]), .carry(c[361]), .a(s[360]), .b( c[340]), .cin( c[341]) ); //P27

FA fa_546 ( .sum(s[362]), .carry(c[362]), .a(p[23][5]), .b( p[22][6]), .cin( c[342]) );

FA fa_547 ( .sum(s[363]), .carry(c[363]), .a(p[21][7]), .b( s[342]), .cin( c[343]) );

FA fa_548 ( .sum(s[364]), .carry(c[364]), .a(p[20][8]), .b( s[343]), .cin( c[344]) );


FA fa_549 ( .sum(s[365]), .carry(c[365]), .a(p[19][9]), .b( s[344]), .cin( c[345]) );

FA fa_550 ( .sum(s[366]), .carry(c[366]), .a(p[18][10]), .b( s[345]), .cin( c[346]) );

FA fa_551 ( .sum(s[367]), .carry(c[367]), .a(p[17][11]), .b( s[346]), .cin( c[347]) );

FA fa_552 ( .sum(s[368]), .carry(c[368]), .a(p[16][12]), .b( s[347]), .cin( c[348]) );

FA fa_553 ( .sum(s[369]), .carry(c[369]), .a(p[15][13]), .b( s[348]), .cin( c[349]) );

FA fa_554 ( .sum(s[370]), .carry(c[370]), .a(p[14][14]), .b( s[349]), .cin( c[350]) );

FA fa_555 ( .sum(s[371]), .carry(c[371]), .a(p[13][15]), .b( s[350]), .cin( c[351]) );

FA fa_556 ( .sum(s[372]), .carry(c[372]), .a(p[12][16]), .b( s[351]), .cin( c[352]) );

FA fa_557 ( .sum(s[373]), .carry(c[373]), .a(p[11][17]), .b( s[352]), .cin( c[353]) );

FA fa_558 ( .sum(s[374]), .carry(c[374]), .a(p[10][18]), .b( s[353]), .cin( c[354]) );

FA fa_559 ( .sum(s[375]), .carry(c[375]), .a(p[9][19]), .b( s[354]), .cin( c[355]) );

FA fa_560 ( .sum(s[376]), .carry(c[376]), .a(p[8][20]), .b( s[355]), .cin( c[356]) );

FA fa_561 ( .sum(s[377]), .carry(c[377]), .a(p[7][21]), .b( s[356]), .cin( c[357]) );

FA fa_562 ( .sum(s[378]), .carry(c[378]), .a(p[6][22]), .b( s[357]), .cin( c[358]) );

FA fa_563 ( .sum(s[379]), .carry(c[379]), .a(p[5][23]), .b( s[358]), .cin( c[359]) );

FA fa_564 ( .sum(s[380]), .carry(c[380]), .a(s[379]), .b( c[360]), .cin( c[361]) ); //P28

FA fa_565 ( .sum(s[381]), .carry(c[381]), .a(p[23][6]), .b( p[22][7]), .cin( c[362]) );

FA fa_566 ( .sum(s[382]), .carry(c[382]), .a(p[21][8]), .b( s[381]), .cin( c[363]) );

FA fa_567 ( .sum(s[383]), .carry(c[383]), .a(p[20][9]), .b( s[382]), .cin( c[364]) );

FA fa_568 ( .sum(s[384]), .carry(c[384]), .a(p[19][10]), .b( s[383]), .cin( c[365]) );

FA fa_569 ( .sum(s[385]), .carry(c[385]), .a(p[18][11]), .b( s[384]), .cin( c[366]) );

FA fa_570 ( .sum(s[386]), .carry(c[386]), .a(p[17][12]), .b( s[385]), .cin( c[367]) );

FA fa_571 ( .sum(s[387]), .carry(c[387]), .a(p[16][13]), .b( s[386]), .cin( c[368]) );

FA fa_572 ( .sum(s[388]), .carry(c[388]), .a(p[15][14]), .b( s[387]), .cin( c[369]) );

FA fa_573 ( .sum(s[389]), .carry(c[389]), .a(p[14][15]), .b( s[388]), .cin( c[370]) );

FA fa_574 ( .sum(s[390]), .carry(c[390]), .a(p[13][16]), .b( s[389]), .cin( c[371]) );

FA fa_575 ( .sum(s[391]), .carry(c[391]), .a(p[12][17]), .b( s[390]), .cin( c[372]) );

FA fa_576 ( .sum(s[392]), .carry(c[392]), .a(p[11][18]), .b( s[391]), .cin( c[373]) );


FA fa_577 ( .sum(s[393]), .carry(c[393]), .a(p[10][19]), .b( s[392]), .cin( c[374]) );

FA fa_578 ( .sum(s[394]), .carry(c[394]), .a(p[9][20]), .b( s[393]), .cin( c[375]) );

FA fa_579 ( .sum(s[395]), .carry(c[395]), .a(p[8][21]), .b( s[394]), .cin( c[376]) );

FA fa_580 ( .sum(s[396]), .carry(c[396]), .a(p[7][22]), .b( s[395]), .cin( c[377]) );

FA fa_581 ( .sum(s[397]), .carry(c[397]), .a(p[6][23]), .b( s[396]), .cin( c[378]) );

FA fa_582 ( .sum(s[398]), .carry(c[398]), .a(s[397]), .b( c[379]), .cin( c[380]) ); //P29

FA fa_583 ( .sum(s[399]), .carry(c[399]), .a(p[23][7]), .b( p[22][8]), .cin( c[381]) );

FA fa_584 ( .sum(s[400]), .carry(c[400]), .a(p[21][9]), .b( s[399]), .cin( c[382]) );

FA fa_585 ( .sum(s[401]), .carry(c[401]), .a(p[20][10]), .b( s[400]), .cin( c[383]) );

FA fa_586 ( .sum(s[402]), .carry(c[402]), .a(p[19][11]), .b( s[401]), .cin( c[384]) );

FA fa_587 ( .sum(s[403]), .carry(c[403]), .a(p[18][12]), .b( s[402]), .cin( c[385]) );

FA fa_588 ( .sum(s[404]), .carry(c[404]), .a(p[17][13]), .b( s[403]), .cin( c[386]) );

FA fa_589 ( .sum(s[405]), .carry(c[405]), .a(p[16][14]), .b( s[404]), .cin( c[387]) );

FA fa_590 ( .sum(s[406]), .carry(c[406]), .a(p[15][15]), .b( s[405]), .cin( c[388]) );

FA fa_591 ( .sum(s[407]), .carry(c[407]), .a(p[14][16]), .b( s[406]), .cin( c[389]) );

FA fa_592 ( .sum(s[408]), .carry(c[408]), .a(p[13][17]), .b( s[407]), .cin( c[390]) );

FA fa_593 ( .sum(s[409]), .carry(c[409]), .a(p[12][18]), .b( s[408]), .cin( c[391]) );

FA fa_594 ( .sum(s[410]), .carry(c[410]), .a(p[11][19]), .b( s[409]), .cin( c[392]) );

FA fa_595 ( .sum(s[411]), .carry(c[411]), .a(p[10][20]), .b( s[410]), .cin( c[393]) );

FA fa_596 ( .sum(s[412]), .carry(c[412]), .a(p[9][21]), .b( s[411]), .cin( c[394]) );

FA fa_597 ( .sum(s[413]), .carry(c[413]), .a(p[8][22]), .b( s[412]), .cin( c[395]) );

FA fa_598 ( .sum(s[414]), .carry(c[414]), .a(p[7][23]), .b( s[413]), .cin( c[396]) );

FA fa_599 ( .sum(s[415]), .carry(c[415]), .a(s[414]), .b( c[397]), .cin( c[398]) ); //P30

FA fa_600 ( .sum(s[416]), .carry(c[416]), .a(p[23][8]), .b( p[22][9]), .cin( c[399]) );

FA fa_601 ( .sum(s[417]), .carry(c[417]), .a(p[21][10]), .b( s[416]), .cin( c[400]) );

FA fa_602 ( .sum(s[418]), .carry(c[418]), .a(p[20][11]), .b( s[417]), .cin( c[401]) );

FA fa_603 ( .sum(s[419]), .carry(c[419]), .a(p[19][12]), .b( s[418]), .cin( c[402]) );


FA fa_604 ( .sum(s[420]), .carry(c[420]), .a(p[18][13]), .b( s[419]), .cin( c[403]) );

FA fa_605 ( .sum(s[421]), .carry(c[421]), .a(p[17][14]), .b( s[420]), .cin( c[404]) );

FA fa_606 ( .sum(s[422]), .carry(c[422]), .a(p[16][15]), .b( s[421]), .cin( c[405]) );

FA fa_607 ( .sum(s[423]), .carry(c[423]), .a(p[15][16]), .b( s[422]), .cin( c[406]) );

FA fa_608 ( .sum(s[424]), .carry(c[424]), .a(p[14][17]), .b( s[423]), .cin( c[407]) );

FA fa_609 ( .sum(s[425]), .carry(c[425]), .a(p[13][18]), .b( s[424]), .cin( c[408]) );

FA fa_610 ( .sum(s[426]), .carry(c[426]), .a(p[12][19]), .b( s[425]), .cin( c[409]) );

FA fa_611 ( .sum(s[427]), .carry(c[427]), .a(p[11][20]), .b( s[426]), .cin( c[410]) );

FA fa_612 ( .sum(s[428]), .carry(c[428]), .a(p[10][21]), .b( s[427]), .cin( c[411]) );

FA fa_613 ( .sum(s[429]), .carry(c[429]), .a(p[9][22]), .b( s[428]), .cin( c[412]) );

FA fa_614 ( .sum(s[430]), .carry(c[430]), .a(p[8][23]), .b( s[429]), .cin( c[413]) );

FA fa_615 ( .sum(s[431]), .carry(c[431]), .a(s[430]), .b( c[414]), .cin( c[415]) ); //P31

FA fa_616 ( .sum(s[432]), .carry(c[432]), .a(p[23][9]), .b( p[22][10]), .cin( c[416]) );

FA fa_617 ( .sum(s[433]), .carry(c[433]), .a(p[21][11]), .b( s[432]), .cin( c[417]) );

FA fa_618 ( .sum(s[434]), .carry(c[434]), .a(p[20][12]), .b( s[433]), .cin( c[418]) );

FA fa_619 ( .sum(s[435]), .carry(c[435]), .a(p[19][13]), .b( s[434]), .cin( c[419]) );

FA fa_620 ( .sum(s[436]), .carry(c[436]), .a(p[18][14]), .b( s[435]), .cin( c[420]) );

FA fa_621 ( .sum(s[437]), .carry(c[437]), .a(p[17][15]), .b( s[436]), .cin( c[421]) );

FA fa_622 ( .sum(s[438]), .carry(c[438]), .a(p[16][16]), .b( s[437]), .cin( c[422]) );

FA fa_623 ( .sum(s[439]), .carry(c[439]), .a(p[15][17]), .b( s[438]), .cin( c[423]) );

FA fa_624 ( .sum(s[440]), .carry(c[440]), .a(p[14][18]), .b( s[439]), .cin( c[424]) );

FA fa_625 ( .sum(s[441]), .carry(c[441]), .a(p[13][19]), .b( s[440]), .cin( c[425]) );

FA fa_626 ( .sum(s[442]), .carry(c[442]), .a(p[12][20]), .b( s[441]), .cin( c[426]) );

FA fa_627 ( .sum(s[443]), .carry(c[443]), .a(p[11][21]), .b( s[442]), .cin( c[427]) );

FA fa_628 ( .sum(s[444]), .carry(c[444]), .a(p[10][22]), .b( s[443]), .cin( c[428]) );

FA fa_629 ( .sum(s[445]), .carry(c[445]), .a(p[9][23]), .b( s[444]), .cin( c[429]) );

FA fa_630 ( .sum(s[446]), .carry(c[446]), .a(s[445]), .b( c[430]), .cin( c[431]) ); //P32


FA fa_631 ( .sum(s[447]), .carry(c[447]), .a(p[23][10]), .b( p[22][11]), .cin( c[432]) );

FA fa_632 ( .sum(s[448]), .carry(c[448]), .a(p[21][12]), .b( s[447]), .cin( c[433]) );

FA fa_633 ( .sum(s[449]), .carry(c[449]), .a(p[20][13]), .b( s[448]), .cin( c[434]) );

FA fa_634 ( .sum(s[450]), .carry(c[450]), .a(p[19][14]), .b( s[449]), .cin( c[435]) );

FA fa_635 ( .sum(s[451]), .carry(c[451]), .a(p[18][15]), .b( s[450]), .cin( c[436]) );

FA fa_636 ( .sum(s[452]), .carry(c[452]), .a(p[17][16]), .b( s[451]), .cin( c[437]) );

FA fa_637 ( .sum(s[453]), .carry(c[453]), .a(p[16][17]), .b( s[452]), .cin( c[438]) );

FA fa_638 ( .sum(s[454]), .carry(c[454]), .a(p[15][18]), .b( s[453]), .cin( c[439]) );

FA fa_639 ( .sum(s[455]), .carry(c[455]), .a(p[14][19]), .b( s[454]), .cin( c[440]) );

FA fa_640 ( .sum(s[456]), .carry(c[456]), .a(p[13][20]), .b( s[455]), .cin( c[441]) );

FA fa_641 ( .sum(s[457]), .carry(c[457]), .a(p[12][21]), .b( s[456]), .cin( c[442]) );

FA fa_642 ( .sum(s[458]), .carry(c[458]), .a(p[11][22]), .b( s[457]), .cin( c[443]) );

FA fa_643 ( .sum(s[459]), .carry(c[459]), .a(p[10][23]), .b( s[458]), .cin( c[444]) );

FA fa_644 ( .sum(s[460]), .carry(c[460]), .a(s[459]), .b( c[445]), .cin( c[446]) ); //P33

FA fa_645 ( .sum(s[461]), .carry(c[461]), .a(p[23][11]), .b( p[22][12]), .cin( c[447]) );

FA fa_646 ( .sum(s[462]), .carry(c[462]), .a(p[21][13]), .b( s[461]), .cin( c[448]) );

FA fa_647 ( .sum(s[463]), .carry(c[463]), .a(p[20][14]), .b( s[462]), .cin( c[449]) );

FA fa_648 ( .sum(s[464]), .carry(c[464]), .a(p[19][15]), .b( s[463]), .cin( c[450]) );

FA fa_649 ( .sum(s[465]), .carry(c[465]), .a(p[18][16]), .b( s[464]), .cin( c[451]) );

FA fa_650 ( .sum(s[466]), .carry(c[466]), .a(p[17][17]), .b( s[465]), .cin( c[452]) );

FA fa_651 ( .sum(s[467]), .carry(c[467]), .a(p[16][18]), .b( s[466]), .cin( c[453]) );

FA fa_652 ( .sum(s[468]), .carry(c[468]), .a(p[15][19]), .b( s[467]), .cin( c[454]) );

FA fa_653 ( .sum(s[469]), .carry(c[469]), .a(p[14][20]), .b( s[468]), .cin( c[455]) );

FA fa_654 ( .sum(s[470]), .carry(c[470]), .a(p[13][21]), .b( s[469]), .cin( c[456]) );

FA fa_655 ( .sum(s[471]), .carry(c[471]), .a(p[12][22]), .b( s[470]), .cin( c[457]) );

FA fa_656 ( .sum(s[472]), .carry(c[472]), .a(p[11][23]), .b( s[471]), .cin( c[458]) );

FA fa_657 ( .sum(s[473]), .carry(c[473]), .a(s[472]), .b( c[459]), .cin( c[460]) ); //P34


FA fa_658 ( .sum(s[474]), .carry(c[474]), .a(p[23][12]), .b( p[22][13]), .cin( c[461]) );

FA fa_659 ( .sum(s[475]), .carry(c[475]), .a(p[21][14]), .b( s[474]), .cin( c[462]) );

FA fa_660 ( .sum(s[476]), .carry(c[476]), .a(p[20][15]), .b( s[475]), .cin( c[463]) );

FA fa_661 ( .sum(s[477]), .carry(c[477]), .a(p[19][16]), .b( s[476]), .cin( c[464]) );

FA fa_662 ( .sum(s[478]), .carry(c[478]), .a(p[18][17]), .b( s[477]), .cin( c[465]) );

FA fa_663 ( .sum(s[479]), .carry(c[479]), .a(p[17][18]), .b( s[478]), .cin( c[466]) );

FA fa_664 ( .sum(s[480]), .carry(c[480]), .a(p[16][19]), .b( s[479]), .cin( c[467]) );

FA fa_665 ( .sum(s[481]), .carry(c[481]), .a(p[15][20]), .b( s[480]), .cin( c[468]) );

FA fa_666 ( .sum(s[482]), .carry(c[482]), .a(p[14][21]), .b( s[481]), .cin( c[469]) );

FA fa_667 ( .sum(s[483]), .carry(c[483]), .a(p[13][22]), .b( s[482]), .cin( c[470]) );

FA fa_668 ( .sum(s[484]), .carry(c[484]), .a(p[12][23]), .b( s[483]), .cin( c[471]) );

FA fa_669 ( .sum(s[485]), .carry(c[485]), .a(s[484]), .b( c[472]), .cin( c[473]) ); //P35

FA fa_670 ( .sum(s[486]), .carry(c[486]), .a(p[23][13]), .b( p[22][14]), .cin( c[474]) );

FA fa_671 ( .sum(s[487]), .carry(c[487]), .a(p[21][15]), .b( s[486]), .cin( c[475]) );

FA fa_672 ( .sum(s[488]), .carry(c[488]), .a(p[20][16]), .b( s[487]), .cin( c[476]) );

FA fa_673 ( .sum(s[489]), .carry(c[489]), .a(p[19][17]), .b( s[488]), .cin( c[477]) );

FA fa_674 ( .sum(s[490]), .carry(c[490]), .a(p[18][18]), .b( s[489]), .cin( c[478]) );

FA fa_675 ( .sum(s[491]), .carry(c[491]), .a(p[17][19]), .b( s[490]), .cin( c[479]) );

FA fa_676 ( .sum(s[492]), .carry(c[492]), .a(p[16][20]), .b( s[491]), .cin( c[480]) );

FA fa_677 ( .sum(s[493]), .carry(c[493]), .a(p[15][22]), .b( s[492]), .cin( c[481]) );

FA fa_678 ( .sum(s[494]), .carry(c[494]), .a(p[14][22]), .b( s[493]), .cin( c[482]) );

FA fa_679 ( .sum(s[495]), .carry(c[495]), .a(p[13][23]), .b( s[494]), .cin( c[483]) );

FA fa_680 ( .sum(s[496]), .carry(c[496]), .a(s[495]), .b( c[484]), .cin( c[485]) ); //P36

FA fa_681 ( .sum(s[497]), .carry(c[497]), .a(p[23][14]), .b( p[22][15]), .cin( c[486]) );

FA fa_682 ( .sum(s[498]), .carry(c[498]), .a(p[21][16]), .b( s[497]), .cin( c[487]) );

FA fa_683 ( .sum(s[499]), .carry(c[499]), .a(p[20][17]), .b( s[498]), .cin( c[488]) );

FA fa_684 ( .sum(s[500]), .carry(c[500]), .a(p[19][18]), .b( s[499]), .cin( c[489]) );


FA fa_685 ( .sum(s[501]), .carry(c[501]), .a(p[18][19]), .b( s[500]), .cin( c[490]) );

FA fa_686 ( .sum(s[502]), .carry(c[502]), .a(p[17][20]), .b( s[501]), .cin( c[491]) );

FA fa_687 ( .sum(s[503]), .carry(c[503]), .a(p[16][21]), .b( s[502]), .cin( c[492]) );

FA fa_688 ( .sum(s[504]), .carry(c[504]), .a(p[15][22]), .b( s[503]), .cin( c[493]) );

FA fa_689 ( .sum(s[505]), .carry(c[505]), .a(p[14][23]), .b( s[504]), .cin( c[494]) );

FA fa_690 ( .sum(s[506]), .carry(c[506]), .a(s[505]), .b( c[495]), .cin( c[496]) ); //P37

FA fa_691 ( .sum(s[507]), .carry(c[507]), .a(p[23][15]), .b( p[22][16]), .cin( c[497]) );

FA fa_692 ( .sum(s[508]), .carry(c[508]), .a(p[21][17]), .b( s[507]), .cin( c[498]) );

FA fa_693 ( .sum(s[509]), .carry(c[509]), .a(p[20][18]), .b( s[508]), .cin( c[499]) );

FA fa_694 ( .sum(s[510]), .carry(c[510]), .a(p[19][19]), .b( s[509]), .cin( c[500]) );

FA fa_695 ( .sum(s[511]), .carry(c[511]), .a(p[18][20]), .b( s[510]), .cin( c[501]) );

FA fa_696 ( .sum(s[512]), .carry(c[512]), .a(p[17][21]), .b( s[511]), .cin( c[502]) );

FA fa_697 ( .sum(s[513]), .carry(c[513]), .a(p[16][22]), .b( s[512]), .cin( c[503]) );

FA fa_698 ( .sum(s[514]), .carry(c[514]), .a(p[15][23]), .b( s[513]), .cin( c[504]) );

FA fa_699 ( .sum(s[515]), .carry(c[515]), .a(s[514]), .b( c[505]), .cin( c[506]) ); //P38

FA fa_700 ( .sum(s[516]), .carry(c[516]), .a(p[23][16]), .b( p[22][17]), .cin( c[507]) );

FA fa_701 ( .sum(s[517]), .carry(c[517]), .a(p[21][18]), .b( s[516]), .cin( c[508]) );

FA fa_702 ( .sum(s[518]), .carry(c[518]), .a(p[20][19]), .b( s[517]), .cin( c[509]) );

FA fa_703 ( .sum(s[519]), .carry(c[519]), .a(p[19][20]), .b( s[518]), .cin( c[510]) );

FA fa_704 ( .sum(s[520]), .carry(c[520]), .a(p[18][21]), .b( s[519]), .cin( c[511]) );

FA fa_705 ( .sum(s[521]), .carry(c[521]), .a(p[17][22]), .b( s[520]), .cin( c[512]) );

FA fa_706 ( .sum(s[522]), .carry(c[522]), .a(p[16][23]), .b( s[521]), .cin( c[513]) );

FA fa_707 ( .sum(s[523]), .carry(c[523]), .a(s[522]), .b( c[514]), .cin( c[515]) ); //P39

FA fa_708 ( .sum(s[524]), .carry(c[524]), .a(p[23][17]), .b( p[22][18]), .cin( c[516]) );

FA fa_709 ( .sum(s[525]), .carry(c[525]), .a(p[21][19]), .b( s[524]), .cin( c[517]) );

FA fa_710 ( .sum(s[526]), .carry(c[526]), .a(p[20][20]), .b( s[525]), .cin( c[518]) );


FA fa_711 ( .sum(s[527]), .carry(c[527]), .a(p[19][21]), .b( s[526]), .cin( c[519]) );

FA fa_712 ( .sum(s[528]), .carry(c[528]), .a(p[18][22]), .b( s[527]), .cin( c[520]) );

FA fa_713 ( .sum(s[529]), .carry(c[529]), .a(p[17][23]), .b( s[528]), .cin( c[521]) );

FA fa_714 ( .sum(s[530]), .carry(c[530]), .a(s[529]), .b( c[522]), .cin( c[523]) ); //P40

FA fa_715 ( .sum(s[531]), .carry(c[531]), .a(p[23][18]), .b( p[22][19]), .cin( c[524]) );

FA fa_716 ( .sum(s[532]), .carry(c[532]), .a(p[21][20]), .b( s[531]), .cin( c[525]) );

FA fa_717 ( .sum(s[533]), .carry(c[533]), .a(p[20][21]), .b( s[532]), .cin( c[526]) );

FA fa_718 ( .sum(s[534]), .carry(c[534]), .a(p[19][22]), .b( s[533]), .cin( c[527]) );

FA fa_719 ( .sum(s[535]), .carry(c[535]), .a(p[18][23]), .b( s[534]), .cin( c[528]) );

FA fa_720 ( .sum(s[536]), .carry(c[536]), .a(s[535]), .b( c[529]), .cin( c[530]) ); //P41

FA fa_721 ( .sum(s[537]), .carry(c[537]), .a(p[23][19]), .b( p[22][20]), .cin( c[531]) );

FA fa_722 ( .sum(s[538]), .carry(c[538]), .a(p[21][21]), .b( s[537]), .cin( c[532]) );

FA fa_723 ( .sum(s[539]), .carry(c[539]), .a(p[20][22]), .b( s[538]), .cin( c[533]) );

FA fa_724 ( .sum(s[540]), .carry(c[540]), .a(p[19][23]), .b( s[539]), .cin( c[534]) );

FA fa_725 ( .sum(s[541]), .carry(c[541]), .a(s[540]), .b( c[535]), .cin( c[536]) ); //P42

FA fa_726 ( .sum(s[542]), .carry(c[542]), .a(p[23][20]), .b( p[22][21]), .cin( c[537]) );

FA fa_727 ( .sum(s[543]), .carry(c[543]), .a(p[21][22]), .b( s[542]), .cin( c[538]) );

FA fa_728 ( .sum(s[544]), .carry(c[544]), .a(p[20][23]), .b( s[543]), .cin( c[539]) );

FA fa_729 ( .sum(s[545]), .carry(c[545]), .a(s[544]), .b( c[540]), .cin( c[541]) ); //P43

FA fa_730 ( .sum(s[546]), .carry(c[546]), .a(p[23][21]), .b( p[22][22]), .cin( c[542]) );

FA fa_731 ( .sum(s[547]), .carry(c[547]), .a(p[21][23]), .b( s[546]), .cin( c[543]) );

FA fa_732 ( .sum(s[548]), .carry(c[548]), .a(s[547]), .b( c[544]), .cin( c[545]) ); //P44

FA fa_733 ( .sum(s[549]), .carry(c[549]), .a(p[23][22]), .b( p[22][23]), .cin( c[546]) );

FA fa_734 ( .sum(s[550]), .carry(c[550]), .a(s[549]), .b( c[547]), .cin( c[548]) ); //P45


FA fa_735 ( .sum(s[551]), .carry(c[551]), .a(p[23][23]), .b( c[549]), .cin( c[550]) ); //P45

/*FA fa_81 ( .sum(s[28]), .carry(c[28]), .a(p[7][1]), .b( p[6][2]), .cin( c[21]) );

FA fa_82 ( .sum(s[29]), .carry(c[29]), .a(p[5][3]), .b( s[28]), .cin( c[22]) );

FA fa_83 ( .sum(s[30]), .carry(c[30]), .a(p[4][4]), .b( s[29]), .cin( c[23]) );

FA fa_84 ( .sum(s[31]), .carry(c[31]), .a(p[3][5]), .b( s[30]), .cin( c[24]) );

FA fa_85 ( .sum(s[32]), .carry(c[32]), .a(p[2][6]), .b( s[31]), .cin( c[25]) );

FA fa_86 ( .sum(s[33]), .carry(c[33]), .a(p[1][7]), .b( s[32]), .cin( c[26]) );

HA ha_81 ( .sum(s[34]), .carry(c[34]), .a(s[33]), .b( c[27])); //P8

FA fa_91 ( .sum(s[35]), .carry(c[35]), .a(p[7][2]), .b( p[6][3]), .cin( c[28]) );

FA fa_92 ( .sum(s[36]), .carry(c[36]), .a(p[5][4]), .b( s[35]), .cin( c[29]) );

FA fa_93 ( .sum(s[37]), .carry(c[37]), .a(p[4][5]), .b( s[36]), .cin( c[30]) );

FA fa_94 ( .sum(s[38]), .carry(c[38]), .a(p[3][6]), .b( s[37]), .cin( c[31]) );

FA fa_95 ( .sum(s[39]), .carry(c[39]), .a(p[2][7]), .b( s[38]), .cin( c[32]) );

FA fa_96 ( .sum(s[40]), .carry(c[40]), .a(s[39]), .b( c[33]), .cin( c[34]) ); //P9

FA fa_101 ( .sum(s[41]), .carry(c[41]), .a(p[7][3]), .b( p[6][4]), .cin( c[35]) );

FA fa_102 ( .sum(s[42]), .carry(c[42]), .a(p[5][5]), .b( s[41]), .cin( c[36]) );

FA fa_103 ( .sum(s[43]), .carry(c[43]), .a(p[4][6]), .b( s[42]), .cin( c[37]) );

FA fa_104 ( .sum(s[44]), .carry(c[44]), .a(p[3][7]), .b( s[43]), .cin( c[38]) );

FA fa_105 ( .sum(s[45]), .carry(c[45]), .a(s[44]), .b( c[39]), .cin( c[40]) ); //P10

FA fa_111 ( .sum(s[46]), .carry(c[46]), .a(p[7][4]), .b( p[6][5]), .cin( c[41]) );

FA fa_112 ( .sum(s[47]), .carry(c[47]), .a(p[5][6]), .b( s[46]), .cin( c[42]) );

FA fa_113 ( .sum(s[48]), .carry(c[48]), .a(p[4][7]), .b( s[47]), .cin( c[43]) );

FA fa_114 ( .sum(s[49]), .carry(c[49]), .a(s[48]), .b( c[44]), .cin( c[45]) ); //P11


FA fa_121 ( .sum(s[50]), .carry(c[50]), .a(p[7][5]), .b( p[6][6]), .cin( c[46]) );

FA fa_122 ( .sum(s[51]), .carry(c[51]), .a(p[5][7]), .b(s[50]), .cin( c[47]) );

FA fa_123 ( .sum(s[52]), .carry(c[52]), .a(s[51]), .b(c[48]), .cin( c[49]) ); //P12

FA fa_131 ( .sum(s[53]), .carry(c[53]), .a(p[7][6]), .b( p[6][7]), .cin( c[50]) );

FA fa_132 ( .sum(s[54]), .carry(c[54]), .a(s[53]), .b(c[51]), .cin( c[52]) ); //P13

FA fa_141 ( .sum(s[55]), .carry(c[55]), .a(p[7][7]), .b(c[53]), .cin( c[54]) ); //P14*/

// Multiplier product is obtained

/*always@(posedge clock)

product <= {c[55],s[55],s[54],s[52],s[49],s[45],s[40],s[34],s[27],s[20],s[14],s[9],s[5],s[2],s[0],p[0][0]};


//p[0][0]=P0

endmodule*/

always@(posedge clock)

product <= {c[551], s[551],


s[550],s[548],s[545],s[541],s[536],s[530],s[523],s[515],s[506],s[496],s[485],s[473],s[460],s[446],

s[431], s[415], s[398], s[380], s[361], s[341], s[320], s[298], s[275], s[252], s[230], s[209], s[189], s[170],
s[152],

s[135], s[119], s[104], s[90], s[77], s[65], s[54], s[44], s[35], s[27], s[20], s[14], s[9], s[5], s[2], s[0],
p[0][0]}; //p[0][0]=P0

endmodule

module FA(a,b,cin,sum,carry);

input a,b,cin;

output sum,carry;

reg T1,T2,T3,carry;

assign sum=a^b^cin;

always @(a or b or cin)

begin

T1=a&b;
T2=a&cin;

T3=b&cin;

carry=T1|T2|T3;

end

endmodule

module HA(a,b,sum,carry);

input a,b;

output sum,carry;

assign sum=a^b;

assign carry=a&b;

endmodule

Das könnte Ihnen auch gefallen