1 | // ========== Copyright Header Begin ========================================== |
---|
2 | // |
---|
3 | // OpenSPARC T1 Processor File: mul64.v |
---|
4 | // Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved. |
---|
5 | // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES. |
---|
6 | // |
---|
7 | // The above named program is free software; you can redistribute it and/or |
---|
8 | // modify it under the terms of the GNU General Public |
---|
9 | // License version 2 as published by the Free Software Foundation. |
---|
10 | // |
---|
11 | // The above named program is distributed in the hope that it will be |
---|
12 | // useful, but WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
---|
14 | // General Public License for more details. |
---|
15 | // |
---|
16 | // You should have received a copy of the GNU General Public |
---|
17 | // License along with this work; if not, write to the Free Software |
---|
18 | // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. |
---|
19 | // |
---|
20 | // ========== Copyright Header End ============================================ |
---|
21 | /*////////////////////////////////////////////////////////////////////// |
---|
22 | // |
---|
23 | // Module Name: mul64 |
---|
24 | // Description: *This block implements the multiplier used in the modular multiplier |
---|
25 | // unit (MUL) and be shared by sparc EXU and the streaming unit (SPU). |
---|
26 | // It is also used as the 54x54 multiplier in the FPU. |
---|
27 | // *It takes two 64-bit unsign data and accumulated operand and do the |
---|
28 | // 64x64 MAC operation at two cycle thruput and 5 cycle latency. |
---|
29 | // *The mul_valid signal indicate the beginning of a new operation. |
---|
30 | // It MUST be dis-asserted at the next cycle to have the proper 2-cycle |
---|
31 | // latency operation in the csa array. If there are two back-to-back |
---|
32 | // cycle operation, the first operation result will be incorrect. |
---|
33 | // *Results are avaliable on the 5th cycle of the mul_valid as shows |
---|
34 | // |
---|
35 | // *Following inputs should tie to "0" when used as a 64x64 multiplier |
---|
36 | // - areg |
---|
37 | // - accreg |
---|
38 | // - x2 |
---|
39 | // |
---|
40 | // Cycle-0 | Cycle-1 | Cycle-2 | Cycle-3 | Cycle-4 | Cycle-5 |
---|
41 | // 1st * | | | | |
---|
42 | // rs1, rs2 ^ | | | | 1st results |
---|
43 | // valid=1 | valid=0 | * | | avaliable |
---|
44 | // 1st | 2nd OP ^ | | |
---|
45 | // setup | valid=1 | | | |
---|
46 | // | 2nd | | |
---|
47 | // | setup | | |
---|
48 | // |
---|
49 | */ |
---|
50 | |
---|
51 | //FPGA_SYN enables all FPGA related modifications |
---|
52 | `ifdef FPGA_SYN |
---|
53 | `define FPGA_SYN_MUL |
---|
54 | `endif |
---|
55 | |
---|
56 | `ifdef FPGA_SYN_MUL |
---|
57 | module mul64(rs1_l, rs2, valid, areg, accreg, x2, out, rclk, si, so, se, |
---|
58 | mul_rst_l, mul_step); |
---|
59 | |
---|
60 | input [63:0] rs1_l; |
---|
61 | input [63:0] rs2; |
---|
62 | input valid; |
---|
63 | input [96:0] areg; |
---|
64 | input [135:129] accreg; |
---|
65 | input x2; |
---|
66 | input rclk; |
---|
67 | input si; |
---|
68 | input se; |
---|
69 | input mul_rst_l; |
---|
70 | input mul_step; |
---|
71 | output so; |
---|
72 | output [135:0] out; |
---|
73 | |
---|
74 | reg [135:0] myout, myout_a1, myout_a2, myout_a3; |
---|
75 | |
---|
76 | reg [63:0] rs1_ff; |
---|
77 | reg [64:0] rs2_ff; |
---|
78 | |
---|
79 | reg [63:0] par1, par2; |
---|
80 | reg [64:0] par3, par4; |
---|
81 | |
---|
82 | reg [5:0] state; |
---|
83 | |
---|
84 | always @(posedge rclk) |
---|
85 | state <= {valid,state[5:1]}; |
---|
86 | |
---|
87 | |
---|
88 | always @(posedge rclk) begin |
---|
89 | if(mul_step) begin |
---|
90 | if(valid) begin |
---|
91 | rs1_ff <= ~rs1_l; |
---|
92 | rs2_ff <= x2 ? {rs2,1'b0} : {1'b0,rs2}; |
---|
93 | end else begin |
---|
94 | rs1_ff <= {32'b0, rs1_ff[63:32]}; |
---|
95 | end |
---|
96 | par1 <= (rs1_ff[31:0] * rs2_ff[31:0]); |
---|
97 | par3 <= rs1_ff[31:0] * rs2_ff[64:32]; |
---|
98 | myout_a1 <= ({32'b0, myout_a1[135:32]} & {136{state[3]}}) + par1 + {par3, 32'b0} + areg; |
---|
99 | myout <= {(myout_a1[103:97]+accreg),myout_a1[96:0],myout[63:32]}; |
---|
100 | end |
---|
101 | end |
---|
102 | |
---|
103 | assign out = myout; |
---|
104 | assign so = 1'b0; |
---|
105 | |
---|
106 | endmodule |
---|
107 | |
---|
108 | `else |
---|
109 | |
---|
110 | |
---|
111 | module mul64 (rs1_l, rs2, valid, areg, accreg, x2, out, rclk, si, so, se, mul_rst_l, mul_step); |
---|
112 | |
---|
113 | input [63:0] rs1_l; // op1 |
---|
114 | input [63:0] rs2; // op2 |
---|
115 | input valid; // begin of the MUL operation |
---|
116 | input [96:0] areg; // accumulated input for ACCUM |
---|
117 | input [135:129] accreg; // direct input from ACCUM [135:129] |
---|
118 | input x2; // for op1*op2*2 |
---|
119 | input rclk, si, se, mul_rst_l, mul_step; |
---|
120 | output so; |
---|
121 | output [135:0] out; |
---|
122 | |
---|
123 | wire cyc1, cyc2, cyc3; // cycle stage of MUL |
---|
124 | wire [2:0] b0, b1, b2, b3, b4, b5, b6, b7; |
---|
125 | wire [2:0] b8, b9, b10, b11, b12, b13, b14, b15; |
---|
126 | wire b16; |
---|
127 | wire [63:0] op1_l, op1; |
---|
128 | wire [81:0] a0sum, a1sum, a0s, a1s; |
---|
129 | wire [81:4] a0cout, a1cout, a0c, a1c; |
---|
130 | wire pcoutx2, psumx2; |
---|
131 | wire x2_c1, x2_c2, x2_c3, x2_c2c3; |
---|
132 | |
---|
133 | wire [98:0] psum, pcout; |
---|
134 | wire [98:30] pcout_in, pc; |
---|
135 | wire [98:31] psum_in, ps; |
---|
136 | wire [96:0] ary2_cout, addin_cout; |
---|
137 | wire [97:0] ary2_sum, addin_sum ; |
---|
138 | wire add_cin, addin_cin, add_co31, add_co96; |
---|
139 | wire [103:0] addout; |
---|
140 | wire clk_enb0, clk_enb1; |
---|
141 | wire rst; |
---|
142 | wire clk; |
---|
143 | wire tm_l; |
---|
144 | |
---|
145 | assign clk = rclk; |
---|
146 | assign rst = ~mul_rst_l; |
---|
147 | assign tm_l = ~se; |
---|
148 | |
---|
149 | clken_buf ckbuf_0(.clk(clk_enb0), .rclk(clk), .enb_l(~mul_step), .tmb_l(tm_l)); |
---|
150 | |
---|
151 | ///////////////////////////////////////////////////////////////////// |
---|
152 | // States count |
---|
153 | ///////////////////////////////////////////////////////////////////// |
---|
154 | dffr_s cyc1_dff(.din(valid), .clk(clk_enb0), .q(cyc1), .rst(rst), .se(se), .si(), .so()); |
---|
155 | dffr_s cyc2_dff(.din(cyc1), .clk(clk_enb0), .q(cyc2), .rst(rst), .se(se), .si(), .so()); |
---|
156 | dffr_s cyc3_dff(.din(cyc2), .clk(clk_enb0), .q(cyc3), .rst(rst), .se(se), .si(), .so()); |
---|
157 | dffr_s x2c1_dff(.din(x2), .clk(clk_enb0), .q(x2_c1), .rst(rst), .se(se), .si(), .so()); |
---|
158 | dffr_s x2c2_dff(.din(x2_c1), .clk(clk_enb0), .q(x2_c2), .rst(rst), .se(se), .si(), .so()); |
---|
159 | dffr_s x2c3_dff(.din(x2_c2), .clk(clk_enb0), .q(x2_c3), .rst(rst), .se(se), .si(), .so()); |
---|
160 | |
---|
161 | assign x2_c2c3 = x2_c2 | x2_c3 ; |
---|
162 | |
---|
163 | ///////////////////////////////////////////////////////////////////// |
---|
164 | // Enable flops for op1 |
---|
165 | ///////////////////////////////////////////////////////////////////// |
---|
166 | clken_buf ckbuf_1(.clk(clk_enb1), .rclk(clk), .enb_l(~(valid & mul_step)), .tmb_l(tm_l)); |
---|
167 | dff_s #(64) ffrs1 (.din(rs1_l[63:0]), .clk(clk_enb1), .q(op1_l[63:0]), |
---|
168 | .se(se), .si(), .so()); |
---|
169 | |
---|
170 | |
---|
171 | |
---|
172 | |
---|
173 | assign op1[63:0] = ~op1_l[63:0]; |
---|
174 | |
---|
175 | mul_booth booth (.head (valid), |
---|
176 | .b_in (rs2), |
---|
177 | .b0 (b0), |
---|
178 | .b1 (b1), |
---|
179 | .b2 (b2), |
---|
180 | .b3 (b3), |
---|
181 | .b4 (b4), |
---|
182 | .b5 (b5), |
---|
183 | .b6 (b6), |
---|
184 | .b7 (b7), |
---|
185 | .b8 (b8), |
---|
186 | .b9 (b9), |
---|
187 | .b10 (b10), |
---|
188 | .b11 (b11), |
---|
189 | .b12 (b12), |
---|
190 | .b13 (b13), |
---|
191 | .b14 (b14), |
---|
192 | .b15 (b15), |
---|
193 | .b16 (b16), |
---|
194 | .clk (clk), .se(se), .si(), .so(), .mul_step(mul_step), .tm_l(tm_l)); |
---|
195 | |
---|
196 | ///////////////////////////////////////////////////////////////////// |
---|
197 | // Two Array1 inst ary1_a0 & ary1_a1 with the ouput flops |
---|
198 | ///////////////////////////////////////////////////////////////////// |
---|
199 | mul_array1 ary1_a0(.cout (a0cout[81:4]), |
---|
200 | .sum (a0sum[81:0]), |
---|
201 | .a (op1), |
---|
202 | .b0 (b0), |
---|
203 | .b1 (b1), |
---|
204 | .b2 (b2), |
---|
205 | .b3 (b3), |
---|
206 | .b4 (b4), |
---|
207 | .b5 (b5), |
---|
208 | .b6 (b6), |
---|
209 | .b7 (b7), |
---|
210 | .b8 (3'b000), |
---|
211 | .head (cyc1), |
---|
212 | .bot (1'b0)); //array a is never at the bottom of 33-pp rows |
---|
213 | |
---|
214 | dff_s #(78) a0cot_dff (.din(a0cout[81:4]), .clk(clk_enb0), .q(a0c[81:4]), |
---|
215 | .se(se), .si(), .so()); |
---|
216 | dff_s #(82) a0sum_dff (.din(a0sum[81:0]), .clk(clk_enb0), .q(a0s[81:0]), |
---|
217 | .se(se), .si(), .so()); |
---|
218 | |
---|
219 | mul_array1 ary1_a1(.cout (a1cout[81:4]), |
---|
220 | .sum (a1sum[81:0]), |
---|
221 | .a (op1), |
---|
222 | .b0 (b8), |
---|
223 | .b1 (b9), |
---|
224 | .b2 (b10), |
---|
225 | .b3 (b11), |
---|
226 | .b4 (b12), |
---|
227 | .b5 (b13), |
---|
228 | .b6 (b14), |
---|
229 | .b7 (b15), |
---|
230 | .b8 ({1'b0,b16,1'b0}), |
---|
231 | .head (1'b0), //array b is never at the head of 33-pp rows |
---|
232 | .bot (cyc2)); |
---|
233 | |
---|
234 | dff_s #(78) a1cot_dff (.din(a1cout[81:4]), .clk(clk_enb0), .q(a1c[81:4]), |
---|
235 | .se(se), .si(), .so()); |
---|
236 | dff_s #(82) a1sum_dff (.din(a1sum[81:0]), .clk(clk_enb0), .q(a1s[81:0]), |
---|
237 | .se(se), .si(), .so()); |
---|
238 | |
---|
239 | ///////////////////////////////////////////////////////////////////// |
---|
240 | // Array2 with the reorder output mux-flops |
---|
241 | ///////////////////////////////////////////////////////////////////// |
---|
242 | mul_array2 array2(.pcoutx2 (pcoutx2), |
---|
243 | .psumx2 (psumx2), |
---|
244 | .pcout (pcout[98:0]), |
---|
245 | .psum (psum[98:0]), |
---|
246 | .a0c (a0c[81:4]), |
---|
247 | .a0s (a0s[81:0]), |
---|
248 | .a1c (a1c[81:4]), |
---|
249 | .a1s (a1s[81:0]), |
---|
250 | .pc (pc[98:30]), |
---|
251 | .ps (ps[98:31]), |
---|
252 | .areg (areg[96:0]), |
---|
253 | .bot (cyc3), |
---|
254 | .x2 (x2_c2c3)); |
---|
255 | |
---|
256 | //// Outpput re-order muxes and flops //// |
---|
257 | dp_mux2es #(97) ary2_cmux (.dout(ary2_cout[96:0]), |
---|
258 | .in0(pcout[96:0]), |
---|
259 | .in1({pcout[95:0],pcoutx2}), |
---|
260 | .sel(x2_c2c3)); |
---|
261 | dff_s #(97) a2cot_dff (.din(ary2_cout[96:0]), .clk(clk_enb0), .q(addin_cout[96:0]), |
---|
262 | .se(se), .si(), .so()); |
---|
263 | |
---|
264 | dp_mux2es #(98) ary2_smux (.dout(ary2_sum[97:0]), |
---|
265 | .in0(psum[97:0]), |
---|
266 | .in1({psum[96:0],psumx2}), |
---|
267 | .sel(x2_c2c3)); |
---|
268 | dff_s #(98) a2sum_dff (.din(ary2_sum[97:0]), .clk(clk_enb0), .q(addin_sum[97:0]), |
---|
269 | .se(se), .si(), .so()); |
---|
270 | |
---|
271 | //// Pseudo sum & cout logic and flops //// |
---|
272 | assign psum_in[98:32] = psum[98:32] & {67{cyc2}} ; |
---|
273 | assign psum_in[31] = psum[31] & x2_c2 ; |
---|
274 | |
---|
275 | assign pcout_in[98:31] = pcout[98:31] & {68{cyc2}} ; |
---|
276 | assign pcout_in[30] = pcout[30] & x2_c2 ; |
---|
277 | |
---|
278 | dff_s #(68) psum_dff (.din(psum_in[98:31]), .clk(clk_enb0), .q(ps[98:31]), |
---|
279 | .se(se), .si(), .so()); |
---|
280 | dff_s #(69) pcout_dff (.din(pcout_in[98:30]), .clk(clk_enb0), .q(pc[98:30]), |
---|
281 | .se(se), .si(), .so()); |
---|
282 | |
---|
283 | ///////////////////////////////////////////////////////////////////// |
---|
284 | // Adder (104-bit) |
---|
285 | ///////////////////////////////////////////////////////////////////// |
---|
286 | |
---|
287 | assign add_cin = add_co31 & cyc3 ; |
---|
288 | |
---|
289 | assign {add_co31,addout[31:0]} = {{1'b0},addin_sum[31:0]} |
---|
290 | + {{1'b0},addin_cout[30:0],addin_cin} ; |
---|
291 | |
---|
292 | |
---|
293 | assign {add_co96,addout[96:32]} = addin_sum[97:32] |
---|
294 | + addin_cout[96:31] |
---|
295 | + {{65'b0},add_co31} ; |
---|
296 | |
---|
297 | assign addout[103:97] = accreg[135:129] + {{6'b0},add_co96} ; |
---|
298 | |
---|
299 | ///////////////////////////////////////////////////////////////////// |
---|
300 | // Pipe adder outputs |
---|
301 | ///////////////////////////////////////////////////////////////////// |
---|
302 | |
---|
303 | dff_s co31_dff (.din(add_cin), .clk(clk_enb0), .q(addin_cin), |
---|
304 | .se(se), .si(), .so()); |
---|
305 | |
---|
306 | dff_s #(104) out_dff (.din(addout[103:0]), .clk(clk_enb0), .q(out[135:32]), |
---|
307 | .se(se), .si(), .so()); |
---|
308 | |
---|
309 | dff_s #(32) pip_dff (.din(out[63:32]), .clk(clk_enb0), .q(out[31:0]), |
---|
310 | .se(se), .si(), .so()); |
---|
311 | |
---|
312 | endmodule // mul64 |
---|
313 | |
---|
314 | |
---|
315 | |
---|
316 | |
---|
317 | //////////////////////////////////////////////////////////////////////// |
---|
318 | // Sub-moudle for mul64 |
---|
319 | //////////////////////////////////////////////////////////////////////// |
---|
320 | |
---|
321 | module mul_array1 ( cout, sum, a, b0, b1, b2, b3, b4, b5, b6, b7, b8, |
---|
322 | bot, head ); |
---|
323 | |
---|
324 | input bot, head; |
---|
325 | output [81:4] cout; |
---|
326 | output [81:0] sum; |
---|
327 | input [2:0] b6; |
---|
328 | input [2:0] b3; |
---|
329 | input [2:0] b8; |
---|
330 | input [2:0] b2; |
---|
331 | input [2:0] b1; |
---|
332 | input [2:0] b7; |
---|
333 | input [63:0] a; |
---|
334 | input [2:0] b0; |
---|
335 | input [2:0] b4; |
---|
336 | input [2:0] b5; |
---|
337 | |
---|
338 | // Buses in the design |
---|
339 | |
---|
340 | wire [1:0] b5n; |
---|
341 | wire [1:0] b2n; |
---|
342 | wire [68:1] c0; |
---|
343 | wire [69:0] s1; |
---|
344 | wire [68:1] c1; |
---|
345 | wire [69:0] s2; |
---|
346 | wire [68:1] c2; |
---|
347 | wire [70:4] s_1; |
---|
348 | wire [69:2] s0; |
---|
349 | wire [76:10] s_2; |
---|
350 | wire [70:2] c_1; |
---|
351 | wire [76:10] c_2; |
---|
352 | wire [75:11] co; |
---|
353 | |
---|
354 | mul_negen p1n ( .b(b5[2:0]), .n1(b5n[1]), .n0(b5n[0])); |
---|
355 | mul_negen p0n ( .b(b2[2:0]), .n1(b2n[1]), .n0(b2n[0])); |
---|
356 | mul_csa42 sc3_71_ ( .c(s_2[71]), .cin(co[70]), .a(c_1[70]), |
---|
357 | .b(c_2[70]), .cout(co[71]), .sum(sum[71]), .d(s1[65]), |
---|
358 | .carry(cout[71])); |
---|
359 | mul_csa42 sc3_75_ ( .c(s_2[75]), .cin(co[74]), .a(1'b0), |
---|
360 | .b(c_2[74]), .cout(co[75]), .sum(sum[75]), .d(s1[69]), |
---|
361 | .carry(cout[75])); |
---|
362 | mul_csa42 sc3_74_ ( .c(s_2[74]), .cin(co[73]), .a(1'b0), |
---|
363 | .b(c_2[73]), .cout(co[74]), .sum(sum[74]), .d(s1[68]), |
---|
364 | .carry(cout[74])); |
---|
365 | mul_csa42 sc3_73_ ( .c(s_2[73]), .cin(co[72]), .a(1'b0), |
---|
366 | .b(c_2[72]), .cout(co[73]), .sum(sum[73]), .d(s1[67]), |
---|
367 | .carry(cout[73])); |
---|
368 | mul_csa42 sc3_72_ ( .c(s_2[72]), .cin(co[71]), .a(1'b0), |
---|
369 | .b(c_2[71]), .cout(co[72]), .sum(sum[72]), .d(s1[66]), |
---|
370 | .carry(cout[72])); |
---|
371 | mul_csa42 sc3_76_ ( .c(s_2[76]), .cin(co[75]), .a(1'b0), |
---|
372 | .b(c_2[75]), .cout(), .sum(sum[76]), .d(1'b0), |
---|
373 | .carry(cout[76])); |
---|
374 | mul_csa42 sc3_70_ ( .c(s_2[70]), .cin(co[69]), .a(c_1[69]), |
---|
375 | .b(c_2[69]), .cout(co[70]), .sum(sum[70]), .d(s_1[70]), |
---|
376 | .carry(cout[70])); |
---|
377 | mul_csa42 sc3_69_ ( .c(s_2[69]), .cin(co[68]), .a(c_1[68]), |
---|
378 | .b(c_2[68]), .cout(co[69]), .sum(sum[69]), .d(s_1[69]), |
---|
379 | .carry(cout[69])); |
---|
380 | mul_csa42 sc3_68_ ( .c(s_2[68]), .cin(co[67]), .a(c_1[67]), |
---|
381 | .b(c_2[67]), .cout(co[68]), .sum(sum[68]), .d(s_1[68]), |
---|
382 | .carry(cout[68])); |
---|
383 | mul_csa42 sc3_67_ ( .c(s_2[67]), .cin(co[66]), .a(c_1[66]), |
---|
384 | .b(c_2[66]), .cout(co[67]), .sum(sum[67]), .d(s_1[67]), |
---|
385 | .carry(cout[67])); |
---|
386 | mul_csa42 sc3_66_ ( .c(s_2[66]), .cin(co[65]), .a(c_1[65]), |
---|
387 | .b(c_2[65]), .cout(co[66]), .sum(sum[66]), .d(s_1[66]), |
---|
388 | .carry(cout[66])); |
---|
389 | mul_csa42 sc3_65_ ( .c(s_2[65]), .cin(co[64]), .a(c_1[64]), |
---|
390 | .b(c_2[64]), .cout(co[65]), .sum(sum[65]), .d(s_1[65]), |
---|
391 | .carry(cout[65])); |
---|
392 | mul_csa42 sc3_64_ ( .c(s_2[64]), .cin(co[63]), .a(c_1[63]), |
---|
393 | .b(c_2[63]), .cout(co[64]), .sum(sum[64]), .d(s_1[64]), |
---|
394 | .carry(cout[64])); |
---|
395 | mul_csa42 sc3_63_ ( .c(s_2[63]), .cin(co[62]), .a(c_1[62]), |
---|
396 | .b(c_2[62]), .cout(co[63]), .sum(sum[63]), .d(s_1[63]), |
---|
397 | .carry(cout[63])); |
---|
398 | mul_csa42 sc3_62_ ( .c(s_2[62]), .cin(co[61]), .a(c_1[61]), |
---|
399 | .b(c_2[61]), .cout(co[62]), .sum(sum[62]), .d(s_1[62]), |
---|
400 | .carry(cout[62])); |
---|
401 | mul_csa42 sc3_61_ ( .c(s_2[61]), .cin(co[60]), .a(c_1[60]), |
---|
402 | .b(c_2[60]), .cout(co[61]), .sum(sum[61]), .d(s_1[61]), |
---|
403 | .carry(cout[61])); |
---|
404 | mul_csa42 sc3_60_ ( .c(s_2[60]), .cin(co[59]), .a(c_1[59]), |
---|
405 | .b(c_2[59]), .cout(co[60]), .sum(sum[60]), .d(s_1[60]), |
---|
406 | .carry(cout[60])); |
---|
407 | mul_csa42 sc3_59_ ( .c(s_2[59]), .cin(co[58]), .a(c_1[58]), |
---|
408 | .b(c_2[58]), .cout(co[59]), .sum(sum[59]), .d(s_1[59]), |
---|
409 | .carry(cout[59])); |
---|
410 | mul_csa42 sc3_58_ ( .c(s_2[58]), .cin(co[57]), .a(c_1[57]), |
---|
411 | .b(c_2[57]), .cout(co[58]), .sum(sum[58]), .d(s_1[58]), |
---|
412 | .carry(cout[58])); |
---|
413 | mul_csa42 sc3_57_ ( .c(s_2[57]), .cin(co[56]), .a(c_1[56]), |
---|
414 | .b(c_2[56]), .cout(co[57]), .sum(sum[57]), .d(s_1[57]), |
---|
415 | .carry(cout[57])); |
---|
416 | mul_csa42 sc3_56_ ( .c(s_2[56]), .cin(co[55]), .a(c_1[55]), |
---|
417 | .b(c_2[55]), .cout(co[56]), .sum(sum[56]), .d(s_1[56]), |
---|
418 | .carry(cout[56])); |
---|
419 | mul_csa42 sc3_55_ ( .c(s_2[55]), .cin(co[54]), .a(c_1[54]), |
---|
420 | .b(c_2[54]), .cout(co[55]), .sum(sum[55]), .d(s_1[55]), |
---|
421 | .carry(cout[55])); |
---|
422 | mul_csa42 sc3_54_ ( .c(s_2[54]), .cin(co[53]), .a(c_1[53]), |
---|
423 | .b(c_2[53]), .cout(co[54]), .sum(sum[54]), .d(s_1[54]), |
---|
424 | .carry(cout[54])); |
---|
425 | mul_csa42 sc3_53_ ( .c(s_2[53]), .cin(co[52]), .a(c_1[52]), |
---|
426 | .b(c_2[52]), .cout(co[53]), .sum(sum[53]), .d(s_1[53]), |
---|
427 | .carry(cout[53])); |
---|
428 | mul_csa42 sc3_52_ ( .c(s_2[52]), .cin(co[51]), .a(c_1[51]), |
---|
429 | .b(c_2[51]), .cout(co[52]), .sum(sum[52]), .d(s_1[52]), |
---|
430 | .carry(cout[52])); |
---|
431 | mul_csa42 sc3_51_ ( .c(s_2[51]), .cin(co[50]), .a(c_1[50]), |
---|
432 | .b(c_2[50]), .cout(co[51]), .sum(sum[51]), .d(s_1[51]), |
---|
433 | .carry(cout[51])); |
---|
434 | mul_csa42 sc3_50_ ( .c(s_2[50]), .cin(co[49]), .a(c_1[49]), |
---|
435 | .b(c_2[49]), .cout(co[50]), .sum(sum[50]), .d(s_1[50]), |
---|
436 | .carry(cout[50])); |
---|
437 | mul_csa42 sc3_49_ ( .c(s_2[49]), .cin(co[48]), .a(c_1[48]), |
---|
438 | .b(c_2[48]), .cout(co[49]), .sum(sum[49]), .d(s_1[49]), |
---|
439 | .carry(cout[49])); |
---|
440 | mul_csa42 sc3_48_ ( .c(s_2[48]), .cin(co[47]), .a(c_1[47]), |
---|
441 | .b(c_2[47]), .cout(co[48]), .sum(sum[48]), .d(s_1[48]), |
---|
442 | .carry(cout[48])); |
---|
443 | mul_csa42 sc3_47_ ( .c(s_2[47]), .cin(co[46]), .a(c_1[46]), |
---|
444 | .b(c_2[46]), .cout(co[47]), .sum(sum[47]), .d(s_1[47]), |
---|
445 | .carry(cout[47])); |
---|
446 | mul_csa42 sc3_46_ ( .c(s_2[46]), .cin(co[45]), .a(c_1[45]), |
---|
447 | .b(c_2[45]), .cout(co[46]), .sum(sum[46]), .d(s_1[46]), |
---|
448 | .carry(cout[46])); |
---|
449 | mul_csa42 sc3_45_ ( .c(s_2[45]), .cin(co[44]), .a(c_1[44]), |
---|
450 | .b(c_2[44]), .cout(co[45]), .sum(sum[45]), .d(s_1[45]), |
---|
451 | .carry(cout[45])); |
---|
452 | mul_csa42 sc3_44_ ( .c(s_2[44]), .cin(co[43]), .a(c_1[43]), |
---|
453 | .b(c_2[43]), .cout(co[44]), .sum(sum[44]), .d(s_1[44]), |
---|
454 | .carry(cout[44])); |
---|
455 | mul_csa42 sc3_43_ ( .c(s_2[43]), .cin(co[42]), .a(c_1[42]), |
---|
456 | .b(c_2[42]), .cout(co[43]), .sum(sum[43]), .d(s_1[43]), |
---|
457 | .carry(cout[43])); |
---|
458 | mul_csa42 sc3_42_ ( .c(s_2[42]), .cin(co[41]), .a(c_1[41]), |
---|
459 | .b(c_2[41]), .cout(co[42]), .sum(sum[42]), .d(s_1[42]), |
---|
460 | .carry(cout[42])); |
---|
461 | mul_csa42 sc3_41_ ( .c(s_2[41]), .cin(co[40]), .a(c_1[40]), |
---|
462 | .b(c_2[40]), .cout(co[41]), .sum(sum[41]), .d(s_1[41]), |
---|
463 | .carry(cout[41])); |
---|
464 | mul_csa42 sc3_40_ ( .c(s_2[40]), .cin(co[39]), .a(c_1[39]), |
---|
465 | .b(c_2[39]), .cout(co[40]), .sum(sum[40]), .d(s_1[40]), |
---|
466 | .carry(cout[40])); |
---|
467 | mul_csa42 sc3_39_ ( .c(s_2[39]), .cin(co[38]), .a(c_1[38]), |
---|
468 | .b(c_2[38]), .cout(co[39]), .sum(sum[39]), .d(s_1[39]), |
---|
469 | .carry(cout[39])); |
---|
470 | mul_csa42 sc3_38_ ( .c(s_2[38]), .cin(co[37]), .a(c_1[37]), |
---|
471 | .b(c_2[37]), .cout(co[38]), .sum(sum[38]), .d(s_1[38]), |
---|
472 | .carry(cout[38])); |
---|
473 | mul_csa42 sc3_37_ ( .c(s_2[37]), .cin(co[36]), .a(c_1[36]), |
---|
474 | .b(c_2[36]), .cout(co[37]), .sum(sum[37]), .d(s_1[37]), |
---|
475 | .carry(cout[37])); |
---|
476 | mul_csa42 sc3_36_ ( .c(s_2[36]), .cin(co[35]), .a(c_1[35]), |
---|
477 | .b(c_2[35]), .cout(co[36]), .sum(sum[36]), .d(s_1[36]), |
---|
478 | .carry(cout[36])); |
---|
479 | mul_csa42 sc3_35_ ( .c(s_2[35]), .cin(co[34]), .a(c_1[34]), |
---|
480 | .b(c_2[34]), .cout(co[35]), .sum(sum[35]), .d(s_1[35]), |
---|
481 | .carry(cout[35])); |
---|
482 | mul_csa42 sc3_34_ ( .c(s_2[34]), .cin(co[33]), .a(c_1[33]), |
---|
483 | .b(c_2[33]), .cout(co[34]), .sum(sum[34]), .d(s_1[34]), |
---|
484 | .carry(cout[34])); |
---|
485 | mul_csa42 sc3_33_ ( .c(s_2[33]), .cin(co[32]), .a(c_1[32]), |
---|
486 | .b(c_2[32]), .cout(co[33]), .sum(sum[33]), .d(s_1[33]), |
---|
487 | .carry(cout[33])); |
---|
488 | mul_csa42 sc3_32_ ( .c(s_2[32]), .cin(co[31]), .a(c_1[31]), |
---|
489 | .b(c_2[31]), .cout(co[32]), .sum(sum[32]), .d(s_1[32]), |
---|
490 | .carry(cout[32])); |
---|
491 | mul_csa42 sc3_31_ ( .c(s_2[31]), .cin(co[30]), .a(c_1[30]), |
---|
492 | .b(c_2[30]), .cout(co[31]), .sum(sum[31]), .d(s_1[31]), |
---|
493 | .carry(cout[31])); |
---|
494 | mul_csa42 sc3_30_ ( .c(s_2[30]), .cin(co[29]), .a(c_1[29]), |
---|
495 | .b(c_2[29]), .cout(co[30]), .sum(sum[30]), .d(s_1[30]), |
---|
496 | .carry(cout[30])); |
---|
497 | mul_csa42 sc3_29_ ( .c(s_2[29]), .cin(co[28]), .a(c_1[28]), |
---|
498 | .b(c_2[28]), .cout(co[29]), .sum(sum[29]), .d(s_1[29]), |
---|
499 | .carry(cout[29])); |
---|
500 | mul_csa42 sc3_28_ ( .c(s_2[28]), .cin(co[27]), .a(c_1[27]), |
---|
501 | .b(c_2[27]), .cout(co[28]), .sum(sum[28]), .d(s_1[28]), |
---|
502 | .carry(cout[28])); |
---|
503 | mul_csa42 sc3_27_ ( .c(s_2[27]), .cin(co[26]), .a(c_1[26]), |
---|
504 | .b(c_2[26]), .cout(co[27]), .sum(sum[27]), .d(s_1[27]), |
---|
505 | .carry(cout[27])); |
---|
506 | mul_csa42 sc3_26_ ( .c(s_2[26]), .cin(co[25]), .a(c_1[25]), |
---|
507 | .b(c_2[25]), .cout(co[26]), .sum(sum[26]), .d(s_1[26]), |
---|
508 | .carry(cout[26])); |
---|
509 | mul_csa42 sc3_25_ ( .c(s_2[25]), .cin(co[24]), .a(c_1[24]), |
---|
510 | .b(c_2[24]), .cout(co[25]), .sum(sum[25]), .d(s_1[25]), |
---|
511 | .carry(cout[25])); |
---|
512 | mul_csa42 sc3_24_ ( .c(s_2[24]), .cin(co[23]), .a(c_1[23]), |
---|
513 | .b(c_2[23]), .cout(co[24]), .sum(sum[24]), .d(s_1[24]), |
---|
514 | .carry(cout[24])); |
---|
515 | mul_csa42 sc3_23_ ( .c(s_2[23]), .cin(co[22]), .a(c_1[22]), |
---|
516 | .b(c_2[22]), .cout(co[23]), .sum(sum[23]), .d(s_1[23]), |
---|
517 | .carry(cout[23])); |
---|
518 | mul_csa42 sc3_22_ ( .c(s_2[22]), .cin(co[21]), .a(c_1[21]), |
---|
519 | .b(c_2[21]), .cout(co[22]), .sum(sum[22]), .d(s_1[22]), |
---|
520 | .carry(cout[22])); |
---|
521 | mul_csa42 sc3_21_ ( .c(s_2[21]), .cin(co[20]), .a(c_1[20]), |
---|
522 | .b(c_2[20]), .cout(co[21]), .sum(sum[21]), .d(s_1[21]), |
---|
523 | .carry(cout[21])); |
---|
524 | mul_csa42 sc3_20_ ( .c(s_2[20]), .cin(co[19]), .a(c_1[19]), |
---|
525 | .b(c_2[19]), .cout(co[20]), .sum(sum[20]), .d(s_1[20]), |
---|
526 | .carry(cout[20])); |
---|
527 | mul_csa42 sc3_19_ ( .c(s_2[19]), .cin(co[18]), .a(c_1[18]), |
---|
528 | .b(c_2[18]), .cout(co[19]), .sum(sum[19]), .d(s_1[19]), |
---|
529 | .carry(cout[19])); |
---|
530 | mul_csa42 sc3_18_ ( .c(s_2[18]), .cin(co[17]), .a(c_1[17]), |
---|
531 | .b(c_2[17]), .cout(co[18]), .sum(sum[18]), .d(s_1[18]), |
---|
532 | .carry(cout[18])); |
---|
533 | mul_csa42 sc3_17_ ( .c(s_2[17]), .cin(co[16]), .a(c_1[16]), |
---|
534 | .b(c_2[16]), .cout(co[17]), .sum(sum[17]), .d(s_1[17]), |
---|
535 | .carry(cout[17])); |
---|
536 | mul_csa42 sc3_16_ ( .c(s_2[16]), .cin(co[15]), .a(c_1[15]), |
---|
537 | .b(c_2[15]), .cout(co[16]), .sum(sum[16]), .d(s_1[16]), |
---|
538 | .carry(cout[16])); |
---|
539 | mul_csa42 sc3_15_ ( .c(s_2[15]), .cin(co[14]), .a(c_1[14]), |
---|
540 | .b(c_2[14]), .cout(co[15]), .sum(sum[15]), .d(s_1[15]), |
---|
541 | .carry(cout[15])); |
---|
542 | mul_csa42 sc3_14_ ( .c(s_2[14]), .cin(co[13]), .a(c_1[13]), |
---|
543 | .b(c_2[13]), .cout(co[14]), .sum(sum[14]), .d(s_1[14]), |
---|
544 | .carry(cout[14])); |
---|
545 | mul_csa42 sc3_13_ ( .c(s_2[13]), .cin(co[12]), .a(c_1[12]), |
---|
546 | .b(c_2[12]), .cout(co[13]), .sum(sum[13]), .d(s_1[13]), |
---|
547 | .carry(cout[13])); |
---|
548 | mul_csa42 sc3_12_ ( .c(s_2[12]), .cin(co[11]), .a(c_1[11]), |
---|
549 | .b(c_2[11]), .cout(co[12]), .sum(sum[12]), .d(s_1[12]), |
---|
550 | .carry(cout[12])); |
---|
551 | mul_csa42 sc3_11_ ( .c(s_2[11]), .cin(1'b0), |
---|
552 | .a(c_1[10]), .b(c_2[10]), .cout(co[11]), .sum(sum[11]), |
---|
553 | .d(s_1[11]), .carry(cout[11])); |
---|
554 | mul_csa32 sc2_2_70_ ( .c(c1[63]), .b(c2[57]), .a(s2[58]), |
---|
555 | .cout(c_2[70]), .sum(s_2[70])); |
---|
556 | mul_csa32 sc2_2_69_ ( .c(c1[62]), .b(c2[56]), .a(s2[57]), |
---|
557 | .cout(c_2[69]), .sum(s_2[69])); |
---|
558 | mul_csa32 sc2_2_68_ ( .c(c1[61]), .b(c2[55]), .a(s2[56]), |
---|
559 | .cout(c_2[68]), .sum(s_2[68])); |
---|
560 | mul_csa32 sc2_2_67_ ( .c(c1[60]), .b(c2[54]), .a(s2[55]), |
---|
561 | .cout(c_2[67]), .sum(s_2[67])); |
---|
562 | mul_csa32 sc2_2_66_ ( .c(c1[59]), .b(c2[53]), .a(s2[54]), |
---|
563 | .cout(c_2[66]), .sum(s_2[66])); |
---|
564 | mul_csa32 sc2_2_65_ ( .c(c1[58]), .b(c2[52]), .a(s2[53]), |
---|
565 | .cout(c_2[65]), .sum(s_2[65])); |
---|
566 | mul_csa32 sc2_2_64_ ( .c(c1[57]), .b(c2[51]), .a(s2[52]), |
---|
567 | .cout(c_2[64]), .sum(s_2[64])); |
---|
568 | mul_csa32 sc2_2_63_ ( .c(c1[56]), .b(c2[50]), .a(s2[51]), |
---|
569 | .cout(c_2[63]), .sum(s_2[63])); |
---|
570 | mul_csa32 sc2_2_62_ ( .c(c1[55]), .b(c2[49]), .a(s2[50]), |
---|
571 | .cout(c_2[62]), .sum(s_2[62])); |
---|
572 | mul_csa32 sc2_2_61_ ( .c(c1[54]), .b(c2[48]), .a(s2[49]), |
---|
573 | .cout(c_2[61]), .sum(s_2[61])); |
---|
574 | mul_csa32 sc2_2_60_ ( .c(c1[53]), .b(c2[47]), .a(s2[48]), |
---|
575 | .cout(c_2[60]), .sum(s_2[60])); |
---|
576 | mul_csa32 sc2_2_59_ ( .c(c1[52]), .b(c2[46]), .a(s2[47]), |
---|
577 | .cout(c_2[59]), .sum(s_2[59])); |
---|
578 | mul_csa32 sc2_2_58_ ( .c(c1[51]), .b(c2[45]), .a(s2[46]), |
---|
579 | .cout(c_2[58]), .sum(s_2[58])); |
---|
580 | mul_csa32 sc2_2_57_ ( .c(c1[50]), .b(c2[44]), .a(s2[45]), |
---|
581 | .cout(c_2[57]), .sum(s_2[57])); |
---|
582 | mul_csa32 sc2_2_56_ ( .c(c1[49]), .b(c2[43]), .a(s2[44]), |
---|
583 | .cout(c_2[56]), .sum(s_2[56])); |
---|
584 | mul_csa32 sc2_2_55_ ( .c(c1[48]), .b(c2[42]), .a(s2[43]), |
---|
585 | .cout(c_2[55]), .sum(s_2[55])); |
---|
586 | mul_csa32 sc2_2_54_ ( .c(c1[47]), .b(c2[41]), .a(s2[42]), |
---|
587 | .cout(c_2[54]), .sum(s_2[54])); |
---|
588 | mul_csa32 sc2_2_53_ ( .c(c1[46]), .b(c2[40]), .a(s2[41]), |
---|
589 | .cout(c_2[53]), .sum(s_2[53])); |
---|
590 | mul_csa32 sc2_2_52_ ( .c(c1[45]), .b(c2[39]), .a(s2[40]), |
---|
591 | .cout(c_2[52]), .sum(s_2[52])); |
---|
592 | mul_csa32 sc2_2_51_ ( .c(c1[44]), .b(c2[38]), .a(s2[39]), |
---|
593 | .cout(c_2[51]), .sum(s_2[51])); |
---|
594 | mul_csa32 sc2_2_50_ ( .c(c1[43]), .b(c2[37]), .a(s2[38]), |
---|
595 | .cout(c_2[50]), .sum(s_2[50])); |
---|
596 | mul_csa32 sc2_2_49_ ( .c(c1[42]), .b(c2[36]), .a(s2[37]), |
---|
597 | .cout(c_2[49]), .sum(s_2[49])); |
---|
598 | mul_csa32 sc2_2_48_ ( .c(c1[41]), .b(c2[35]), .a(s2[36]), |
---|
599 | .cout(c_2[48]), .sum(s_2[48])); |
---|
600 | mul_csa32 sc2_2_47_ ( .c(c1[40]), .b(c2[34]), .a(s2[35]), |
---|
601 | .cout(c_2[47]), .sum(s_2[47])); |
---|
602 | mul_csa32 sc2_2_46_ ( .c(c1[39]), .b(c2[33]), .a(s2[34]), |
---|
603 | .cout(c_2[46]), .sum(s_2[46])); |
---|
604 | mul_csa32 sc2_2_45_ ( .c(c1[38]), .b(c2[32]), .a(s2[33]), |
---|
605 | .cout(c_2[45]), .sum(s_2[45])); |
---|
606 | mul_csa32 sc2_2_44_ ( .c(c1[37]), .b(c2[31]), .a(s2[32]), |
---|
607 | .cout(c_2[44]), .sum(s_2[44])); |
---|
608 | mul_csa32 sc2_2_43_ ( .c(c1[36]), .b(c2[30]), .a(s2[31]), |
---|
609 | .cout(c_2[43]), .sum(s_2[43])); |
---|
610 | mul_csa32 sc2_2_42_ ( .c(c1[35]), .b(c2[29]), .a(s2[30]), |
---|
611 | .cout(c_2[42]), .sum(s_2[42])); |
---|
612 | mul_csa32 sc2_2_41_ ( .c(c1[34]), .b(c2[28]), .a(s2[29]), |
---|
613 | .cout(c_2[41]), .sum(s_2[41])); |
---|
614 | mul_csa32 sc2_2_40_ ( .c(c1[33]), .b(c2[27]), .a(s2[28]), |
---|
615 | .cout(c_2[40]), .sum(s_2[40])); |
---|
616 | mul_csa32 sc2_2_39_ ( .c(c1[32]), .b(c2[26]), .a(s2[27]), |
---|
617 | .cout(c_2[39]), .sum(s_2[39])); |
---|
618 | mul_csa32 sc2_2_38_ ( .c(c1[31]), .b(c2[25]), .a(s2[26]), |
---|
619 | .cout(c_2[38]), .sum(s_2[38])); |
---|
620 | mul_csa32 sc2_2_37_ ( .c(c1[30]), .b(c2[24]), .a(s2[25]), |
---|
621 | .cout(c_2[37]), .sum(s_2[37])); |
---|
622 | mul_csa32 sc2_2_36_ ( .c(c1[29]), .b(c2[23]), .a(s2[24]), |
---|
623 | .cout(c_2[36]), .sum(s_2[36])); |
---|
624 | mul_csa32 sc2_2_35_ ( .c(c1[28]), .b(c2[22]), .a(s2[23]), |
---|
625 | .cout(c_2[35]), .sum(s_2[35])); |
---|
626 | mul_csa32 sc2_2_34_ ( .c(c1[27]), .b(c2[21]), .a(s2[22]), |
---|
627 | .cout(c_2[34]), .sum(s_2[34])); |
---|
628 | mul_csa32 sc2_2_33_ ( .c(c1[26]), .b(c2[20]), .a(s2[21]), |
---|
629 | .cout(c_2[33]), .sum(s_2[33])); |
---|
630 | mul_csa32 sc2_2_32_ ( .c(c1[25]), .b(c2[19]), .a(s2[20]), |
---|
631 | .cout(c_2[32]), .sum(s_2[32])); |
---|
632 | mul_csa32 sc2_2_31_ ( .c(c1[24]), .b(c2[18]), .a(s2[19]), |
---|
633 | .cout(c_2[31]), .sum(s_2[31])); |
---|
634 | mul_csa32 sc2_2_30_ ( .c(c1[23]), .b(c2[17]), .a(s2[18]), |
---|
635 | .cout(c_2[30]), .sum(s_2[30])); |
---|
636 | mul_csa32 sc2_2_29_ ( .c(c1[22]), .b(c2[16]), .a(s2[17]), |
---|
637 | .cout(c_2[29]), .sum(s_2[29])); |
---|
638 | mul_csa32 sc2_2_28_ ( .c(c1[21]), .b(c2[15]), .a(s2[16]), |
---|
639 | .cout(c_2[28]), .sum(s_2[28])); |
---|
640 | mul_csa32 sc2_2_27_ ( .c(c1[20]), .b(c2[14]), .a(s2[15]), |
---|
641 | .cout(c_2[27]), .sum(s_2[27])); |
---|
642 | mul_csa32 sc2_2_26_ ( .c(c1[19]), .b(c2[13]), .a(s2[14]), |
---|
643 | .cout(c_2[26]), .sum(s_2[26])); |
---|
644 | mul_csa32 sc2_2_25_ ( .c(c1[18]), .b(c2[12]), .a(s2[13]), |
---|
645 | .cout(c_2[25]), .sum(s_2[25])); |
---|
646 | mul_csa32 sc2_2_24_ ( .c(c1[17]), .b(c2[11]), .a(s2[12]), |
---|
647 | .cout(c_2[24]), .sum(s_2[24])); |
---|
648 | mul_csa32 sc2_2_23_ ( .c(c1[16]), .b(c2[10]), .a(s2[11]), |
---|
649 | .cout(c_2[23]), .sum(s_2[23])); |
---|
650 | mul_csa32 sc2_2_22_ ( .c(c1[15]), .b(c2[9]), .a(s2[10]), |
---|
651 | .cout(c_2[22]), .sum(s_2[22])); |
---|
652 | mul_csa32 sc2_2_21_ ( .c(c1[14]), .b(c2[8]), .a(s2[9]), |
---|
653 | .cout(c_2[21]), .sum(s_2[21])); |
---|
654 | mul_csa32 sc2_2_20_ ( .c(c1[13]), .b(c2[7]), .a(s2[8]), |
---|
655 | .cout(c_2[20]), .sum(s_2[20])); |
---|
656 | mul_csa32 sc2_2_19_ ( .c(c1[12]), .b(c2[6]), .a(s2[7]), |
---|
657 | .cout(c_2[19]), .sum(s_2[19])); |
---|
658 | mul_csa32 sc2_2_18_ ( .c(c1[11]), .b(c2[5]), .a(s2[6]), |
---|
659 | .cout(c_2[18]), .sum(s_2[18])); |
---|
660 | mul_csa32 sc2_2_17_ ( .c(c1[10]), .b(c2[4]), .a(s2[5]), |
---|
661 | .cout(c_2[17]), .sum(s_2[17])); |
---|
662 | mul_csa32 sc2_2_16_ ( .c(c1[9]), .b(c2[3]), .a(s2[4]), |
---|
663 | .cout(c_2[16]), .sum(s_2[16])); |
---|
664 | mul_csa32 sc2_2_15_ ( .c(c1[8]), .b(c2[2]), .a(s2[3]), |
---|
665 | .cout(c_2[15]), .sum(s_2[15])); |
---|
666 | mul_csa32 sc2_2_14_ ( .c(c1[7]), .b(c2[1]), .a(s2[2]), |
---|
667 | .cout(c_2[14]), .sum(s_2[14])); |
---|
668 | mul_csa32 sc2_2_13_ ( .c(c1[6]), .b(s1[7]), .a(s2[1]), |
---|
669 | .cout(c_2[13]), .sum(s_2[13])); |
---|
670 | mul_csa32 sc2_2_12_ ( .c(c1[5]), .b(s1[6]), .a(s2[0]), |
---|
671 | .cout(c_2[12]), .sum(s_2[12])); |
---|
672 | mul_csa32 sc2_2_11_ ( .c(c1[4]), .b(s1[5]), .a(b5n[1]), |
---|
673 | .cout(c_2[11]), .sum(s_2[11])); |
---|
674 | mul_csa32 sc2_2_10_ ( .c(c1[3]), .b(s1[4]), .a(b5n[0]), |
---|
675 | .cout(c_2[10]), .sum(s_2[10])); |
---|
676 | mul_csa32 sc2_2_76_ ( .c(1'b1), .b(c2[63]), .a(s2[64]), |
---|
677 | .cout(c_2[76]), .sum(s_2[76])); |
---|
678 | mul_csa32 sc2_2_77_ ( .c(c_2[76]), .b(c2[64]), .a(s2[65]), |
---|
679 | .cout(cout[77]), .sum(sum[77])); |
---|
680 | mul_csa32 sc2_1_9_ ( .c(s1[3]), .b(c0[8]), .a(s0[9]), .cout(c_1[9]), |
---|
681 | .sum(s_1[9])); |
---|
682 | mul_csa32 sc2_1_8_ ( .c(s1[2]), .b(c0[7]), .a(s0[8]), .cout(c_1[8]), |
---|
683 | .sum(s_1[8])); |
---|
684 | mul_csa32 sc2_1_3_ ( .c(c_1[2]), .b(c0[2]), .a(s0[3]), |
---|
685 | .cout(c_1[3]), .sum(sum[3])); |
---|
686 | mul_csa32 sc3_10_ ( .c(s_2[10]), .b(s_1[10]), .a(c_1[9]), |
---|
687 | .cout(cout[10]), .sum(sum[10])); |
---|
688 | mul_csa32 sc3_9_ ( .c(c1[2]), .sum(sum[9]), .cout(cout[9]), |
---|
689 | .a(c_1[8]), .b(s_1[9])); |
---|
690 | mul_csa32 sc3_8_ ( .c(c1[1]), .sum(sum[8]), .cout(cout[8]), |
---|
691 | .a(c_1[7]), .b(s_1[8])); |
---|
692 | mul_csa32 sc2_2_71_ ( .c(c1[64]), .b(c2[58]), .a(s2[59]), |
---|
693 | .cout(c_2[71]), .sum(s_2[71])); |
---|
694 | mul_csa32 sc2_2_75_ ( .c(c1[68]), .b(c2[62]), .a(s2[63]), |
---|
695 | .cout(c_2[75]), .sum(s_2[75])); |
---|
696 | mul_csa32 sc2_2_74_ ( .c(c1[67]), .b(c2[61]), .a(s2[62]), |
---|
697 | .cout(c_2[74]), .sum(s_2[74])); |
---|
698 | mul_csa32 sc2_2_73_ ( .c(c1[66]), .b(c2[60]), .a(s2[61]), |
---|
699 | .cout(c_2[73]), .sum(s_2[73])); |
---|
700 | mul_csa32 sc2_2_72_ ( .c(c1[65]), .b(c2[59]), .a(s2[60]), |
---|
701 | .cout(c_2[72]), .sum(s_2[72])); |
---|
702 | mul_csa32 sc2_1_69_ ( .c(s1[63]), .sum(s_1[69]), .cout(c_1[69]), |
---|
703 | .a(s0[69]), .b(c0[68])); |
---|
704 | mul_csa32 sc2_1_68_ ( .c(s1[62]), .sum(s_1[68]), .cout(c_1[68]), |
---|
705 | .a(s0[68]), .b(c0[67])); |
---|
706 | mul_csa32 sc2_1_67_ ( .c(s1[61]), .sum(s_1[67]), .cout(c_1[67]), |
---|
707 | .a(s0[67]), .b(c0[66])); |
---|
708 | mul_csa32 sc2_1_66_ ( .c(s1[60]), .sum(s_1[66]), .cout(c_1[66]), |
---|
709 | .a(s0[66]), .b(c0[65])); |
---|
710 | mul_csa32 sc2_1_65_ ( .c(s1[59]), .sum(s_1[65]), .cout(c_1[65]), |
---|
711 | .a(s0[65]), .b(c0[64])); |
---|
712 | mul_csa32 sc2_1_64_ ( .c(s1[58]), .sum(s_1[64]), .cout(c_1[64]), |
---|
713 | .a(s0[64]), .b(c0[63])); |
---|
714 | mul_csa32 sc2_1_63_ ( .c(s1[57]), .sum(s_1[63]), .cout(c_1[63]), |
---|
715 | .a(s0[63]), .b(c0[62])); |
---|
716 | mul_csa32 sc2_1_62_ ( .c(s1[56]), .sum(s_1[62]), .cout(c_1[62]), |
---|
717 | .a(s0[62]), .b(c0[61])); |
---|
718 | mul_csa32 sc2_1_61_ ( .c(s1[55]), .sum(s_1[61]), .cout(c_1[61]), |
---|
719 | .a(s0[61]), .b(c0[60])); |
---|
720 | mul_csa32 sc2_1_60_ ( .c(s1[54]), .sum(s_1[60]), .cout(c_1[60]), |
---|
721 | .a(s0[60]), .b(c0[59])); |
---|
722 | mul_csa32 sc2_1_59_ ( .c(s1[53]), .sum(s_1[59]), .cout(c_1[59]), |
---|
723 | .a(s0[59]), .b(c0[58])); |
---|
724 | mul_csa32 sc2_1_58_ ( .c(s1[52]), .sum(s_1[58]), .cout(c_1[58]), |
---|
725 | .a(s0[58]), .b(c0[57])); |
---|
726 | mul_csa32 sc2_1_57_ ( .c(s1[51]), .sum(s_1[57]), .cout(c_1[57]), |
---|
727 | .a(s0[57]), .b(c0[56])); |
---|
728 | mul_csa32 sc2_1_56_ ( .c(s1[50]), .sum(s_1[56]), .cout(c_1[56]), |
---|
729 | .a(s0[56]), .b(c0[55])); |
---|
730 | mul_csa32 sc2_1_55_ ( .c(s1[49]), .sum(s_1[55]), .cout(c_1[55]), |
---|
731 | .a(s0[55]), .b(c0[54])); |
---|
732 | mul_csa32 sc2_1_54_ ( .c(s1[48]), .sum(s_1[54]), .cout(c_1[54]), |
---|
733 | .a(s0[54]), .b(c0[53])); |
---|
734 | mul_csa32 sc2_1_53_ ( .c(s1[47]), .sum(s_1[53]), .cout(c_1[53]), |
---|
735 | .a(s0[53]), .b(c0[52])); |
---|
736 | mul_csa32 sc2_1_52_ ( .c(s1[46]), .sum(s_1[52]), .cout(c_1[52]), |
---|
737 | .a(s0[52]), .b(c0[51])); |
---|
738 | mul_csa32 sc2_1_51_ ( .c(s1[45]), .sum(s_1[51]), .cout(c_1[51]), |
---|
739 | .a(s0[51]), .b(c0[50])); |
---|
740 | mul_csa32 sc2_1_50_ ( .c(s1[44]), .sum(s_1[50]), .cout(c_1[50]), |
---|
741 | .a(s0[50]), .b(c0[49])); |
---|
742 | mul_csa32 sc2_1_49_ ( .c(s1[43]), .sum(s_1[49]), .cout(c_1[49]), |
---|
743 | .a(s0[49]), .b(c0[48])); |
---|
744 | mul_csa32 sc2_1_48_ ( .c(s1[42]), .sum(s_1[48]), .cout(c_1[48]), |
---|
745 | .a(s0[48]), .b(c0[47])); |
---|
746 | mul_csa32 sc2_1_47_ ( .c(s1[41]), .sum(s_1[47]), .cout(c_1[47]), |
---|
747 | .a(s0[47]), .b(c0[46])); |
---|
748 | mul_csa32 sc2_1_46_ ( .c(s1[40]), .sum(s_1[46]), .cout(c_1[46]), |
---|
749 | .a(s0[46]), .b(c0[45])); |
---|
750 | mul_csa32 sc2_1_45_ ( .c(s1[39]), .sum(s_1[45]), .cout(c_1[45]), |
---|
751 | .a(s0[45]), .b(c0[44])); |
---|
752 | mul_csa32 sc2_1_44_ ( .c(s1[38]), .sum(s_1[44]), .cout(c_1[44]), |
---|
753 | .a(s0[44]), .b(c0[43])); |
---|
754 | mul_csa32 sc2_1_43_ ( .c(s1[37]), .sum(s_1[43]), .cout(c_1[43]), |
---|
755 | .a(s0[43]), .b(c0[42])); |
---|
756 | mul_csa32 sc2_1_42_ ( .c(s1[36]), .sum(s_1[42]), .cout(c_1[42]), |
---|
757 | .a(s0[42]), .b(c0[41])); |
---|
758 | mul_csa32 sc2_1_41_ ( .c(s1[35]), .sum(s_1[41]), .cout(c_1[41]), |
---|
759 | .a(s0[41]), .b(c0[40])); |
---|
760 | mul_csa32 sc2_1_40_ ( .c(s1[34]), .sum(s_1[40]), .cout(c_1[40]), |
---|
761 | .a(s0[40]), .b(c0[39])); |
---|
762 | mul_csa32 sc2_1_39_ ( .c(s1[33]), .sum(s_1[39]), .cout(c_1[39]), |
---|
763 | .a(s0[39]), .b(c0[38])); |
---|
764 | mul_csa32 sc2_1_38_ ( .c(s1[32]), .sum(s_1[38]), .cout(c_1[38]), |
---|
765 | .a(s0[38]), .b(c0[37])); |
---|
766 | mul_csa32 sc2_1_37_ ( .c(s1[31]), .sum(s_1[37]), .cout(c_1[37]), |
---|
767 | .a(s0[37]), .b(c0[36])); |
---|
768 | mul_csa32 sc2_1_36_ ( .c(s1[30]), .sum(s_1[36]), .cout(c_1[36]), |
---|
769 | .a(s0[36]), .b(c0[35])); |
---|
770 | mul_csa32 sc2_1_35_ ( .c(s1[29]), .sum(s_1[35]), .cout(c_1[35]), |
---|
771 | .a(s0[35]), .b(c0[34])); |
---|
772 | mul_csa32 sc2_1_34_ ( .c(s1[28]), .sum(s_1[34]), .cout(c_1[34]), |
---|
773 | .a(s0[34]), .b(c0[33])); |
---|
774 | mul_csa32 sc2_1_33_ ( .c(s1[27]), .sum(s_1[33]), .cout(c_1[33]), |
---|
775 | .a(s0[33]), .b(c0[32])); |
---|
776 | mul_csa32 sc2_1_32_ ( .c(s1[26]), .sum(s_1[32]), .cout(c_1[32]), |
---|
777 | .a(s0[32]), .b(c0[31])); |
---|
778 | mul_csa32 sc2_1_31_ ( .c(s1[25]), .sum(s_1[31]), .cout(c_1[31]), |
---|
779 | .a(s0[31]), .b(c0[30])); |
---|
780 | mul_csa32 sc2_1_30_ ( .c(s1[24]), .sum(s_1[30]), .cout(c_1[30]), |
---|
781 | .a(s0[30]), .b(c0[29])); |
---|
782 | mul_csa32 sc2_1_29_ ( .c(s1[23]), .sum(s_1[29]), .cout(c_1[29]), |
---|
783 | .a(s0[29]), .b(c0[28])); |
---|
784 | mul_csa32 sc2_1_28_ ( .c(s1[22]), .sum(s_1[28]), .cout(c_1[28]), |
---|
785 | .a(s0[28]), .b(c0[27])); |
---|
786 | mul_csa32 sc2_1_27_ ( .c(s1[21]), .sum(s_1[27]), .cout(c_1[27]), |
---|
787 | .a(s0[27]), .b(c0[26])); |
---|
788 | mul_csa32 sc2_1_26_ ( .c(s1[20]), .sum(s_1[26]), .cout(c_1[26]), |
---|
789 | .a(s0[26]), .b(c0[25])); |
---|
790 | mul_csa32 sc2_1_25_ ( .c(s1[19]), .sum(s_1[25]), .cout(c_1[25]), |
---|
791 | .a(s0[25]), .b(c0[24])); |
---|
792 | mul_csa32 sc2_1_24_ ( .c(s1[18]), .sum(s_1[24]), .cout(c_1[24]), |
---|
793 | .a(s0[24]), .b(c0[23])); |
---|
794 | mul_csa32 sc2_1_23_ ( .c(s1[17]), .sum(s_1[23]), .cout(c_1[23]), |
---|
795 | .a(s0[23]), .b(c0[22])); |
---|
796 | mul_csa32 sc2_1_22_ ( .c(s1[16]), .sum(s_1[22]), .cout(c_1[22]), |
---|
797 | .a(s0[22]), .b(c0[21])); |
---|
798 | mul_csa32 sc2_1_21_ ( .c(s1[15]), .sum(s_1[21]), .cout(c_1[21]), |
---|
799 | .a(s0[21]), .b(c0[20])); |
---|
800 | mul_csa32 sc2_1_20_ ( .c(s1[14]), .sum(s_1[20]), .cout(c_1[20]), |
---|
801 | .a(s0[20]), .b(c0[19])); |
---|
802 | mul_csa32 sc2_1_19_ ( .c(s1[13]), .sum(s_1[19]), .cout(c_1[19]), |
---|
803 | .a(s0[19]), .b(c0[18])); |
---|
804 | mul_csa32 sc2_1_18_ ( .c(s1[12]), .sum(s_1[18]), .cout(c_1[18]), |
---|
805 | .a(s0[18]), .b(c0[17])); |
---|
806 | mul_csa32 sc2_1_17_ ( .c(s1[11]), .sum(s_1[17]), .cout(c_1[17]), |
---|
807 | .a(s0[17]), .b(c0[16])); |
---|
808 | mul_csa32 sc2_1_16_ ( .c(s1[10]), .sum(s_1[16]), .cout(c_1[16]), |
---|
809 | .a(s0[16]), .b(c0[15])); |
---|
810 | mul_csa32 sc2_1_15_ ( .c(s1[9]), .sum(s_1[15]), .cout(c_1[15]), |
---|
811 | .a(s0[15]), .b(c0[14])); |
---|
812 | mul_csa32 sc2_1_14_ ( .c(s1[8]), .sum(s_1[14]), .cout(c_1[14]), |
---|
813 | .a(s0[14]), .b(c0[13])); |
---|
814 | mul_csa32 sc2_1_7_ ( .c(s1[1]), .b(c0[6]), .a(s0[7]), .cout(c_1[7]), |
---|
815 | .sum(s_1[7])); |
---|
816 | mul_csa32 sc2_1_6_ ( .c(s1[0]), .b(c0[5]), .a(s0[6]), .cout(c_1[6]), |
---|
817 | .sum(s_1[6])); |
---|
818 | mul_csa32 sc2_1_5_ ( .c(b2n[1]), .b(c0[4]), .a(s0[5]), |
---|
819 | .cout(c_1[5]), .sum(s_1[5])); |
---|
820 | mul_csa32 sc2_1_4_ ( .c(b2n[0]), .b(c0[3]), .a(s0[4]), |
---|
821 | .cout(c_1[4]), .sum(s_1[4])); |
---|
822 | mul_ha sc2_1_10_ ( .sum(s_1[10]), .cout(c_1[10]), .a(s0[10]), |
---|
823 | .b(c0[9])); |
---|
824 | mul_ha sc3_7_ ( .sum(sum[7]), .cout(cout[7]), .a(c_1[6]), |
---|
825 | .b(s_1[7])); |
---|
826 | mul_ha sc3_6_ ( .sum(sum[6]), .cout(cout[6]), .a(c_1[5]), |
---|
827 | .b(s_1[6])); |
---|
828 | mul_ha sc3_5_ ( .sum(sum[5]), .cout(cout[5]), .a(c_1[4]), |
---|
829 | .b(s_1[5])); |
---|
830 | mul_ha sc3_4_ ( .sum(sum[4]), .cout(cout[4]), .a(c_1[3]), |
---|
831 | .b(s_1[4])); |
---|
832 | mul_ha sc2_2_81_ ( .sum(sum[81]), .cout(cout[81]), .a(s2[69]), |
---|
833 | .b(c2[68])); |
---|
834 | mul_ha sc2_2_80_ ( .sum(sum[80]), .cout(cout[80]), .a(s2[68]), |
---|
835 | .b(c2[67])); |
---|
836 | mul_ha sc2_2_79_ ( .sum(sum[79]), .cout(cout[79]), .a(s2[67]), |
---|
837 | .b(c2[66])); |
---|
838 | mul_ha sc2_2_78_ ( .sum(sum[78]), .cout(cout[78]), .a(s2[66]), |
---|
839 | .b(c2[65])); |
---|
840 | mul_ha sc2_1_70_ ( .sum(s_1[70]), .cout(c_1[70]), |
---|
841 | .a(1'b1), .b(s1[64])); |
---|
842 | mul_ha sc2_1_2_ ( .sum(sum[2]), .cout(c_1[2]), .a(s0[2]), .b(c0[1])); |
---|
843 | mul_ha sc2_1_13_ ( .sum(s_1[13]), .cout(c_1[13]), .a(s0[13]), |
---|
844 | .b(c0[12])); |
---|
845 | mul_ha sc2_1_12_ ( .sum(s_1[12]), .cout(c_1[12]), .a(s0[12]), |
---|
846 | .b(c0[11])); |
---|
847 | mul_ha sc2_1_11_ ( .sum(s_1[11]), .cout(c_1[11]), .a(s0[11]), |
---|
848 | .b(c0[10])); |
---|
849 | mul_ppgenrow3 I2 ( .head(1'b0), .bot(bot), .b2(b8[2:0]), |
---|
850 | .b1(b7[2:0]), .b0(b6[2:0]), .a(a[63:0]), .sum(s2[69:0]), |
---|
851 | .cout(c2[68:1])); |
---|
852 | mul_ppgenrow3 I1 ( .head(1'b0), .bot(1'b1), |
---|
853 | .b2(b5[2:0]), .b1(b4[2:0]), .b0(b3[2:0]), .a(a[63:0]), |
---|
854 | .sum(s1[69:0]), .cout(c1[68:1])); |
---|
855 | mul_ppgenrow3 I0 ( .head(head), .bot(1'b1), .b2(b2[2:0]), |
---|
856 | .b1(b1[2:0]), .b0(b0[2:0]), .a(a[63:0]), .sum({s0[69:2], |
---|
857 | sum[1:0]}), .cout(c0[68:1])); |
---|
858 | |
---|
859 | endmodule // mul_array1 |
---|
860 | |
---|
861 | module mul_array2 ( pcout, pcoutx2, psum, psumx2, a0c, a0s, a1c, a1s, |
---|
862 | areg, bot, pc, ps, x2 ); |
---|
863 | |
---|
864 | output pcoutx2, psumx2; |
---|
865 | input bot, x2; |
---|
866 | output [98:0] psum; |
---|
867 | output [98:0] pcout; |
---|
868 | input [81:4] a1c; |
---|
869 | input [98:30] pc; |
---|
870 | input [98:31] ps; |
---|
871 | input [81:0] a0s; |
---|
872 | input [96:0] areg; |
---|
873 | input [81:0] a1s; |
---|
874 | input [81:4] a0c; |
---|
875 | |
---|
876 | // Buses in the design |
---|
877 | wire [81:15] s3; |
---|
878 | wire [81:15] c3; |
---|
879 | wire [96:0] ain; |
---|
880 | wire [67:20] co; |
---|
881 | wire [82:0] s1; |
---|
882 | wire [96:0] c2; |
---|
883 | wire [82:0] c1; |
---|
884 | wire [96:0] s2; |
---|
885 | wire ainx2, s1x2, c1x2; |
---|
886 | |
---|
887 | mul_mux2 sh_82_ ( .d1(areg[83]), .z(ain[82]), .d0(areg[82]), .s(x2)); |
---|
888 | mul_mux2 sh_68_ ( .d1(areg[69]), .z(ain[68]), .d0(areg[68]), .s(x2)); |
---|
889 | mul_mux2 sh_67_ ( .d1(areg[68]), .z(ain[67]), .d0(areg[67]), .s(x2)); |
---|
890 | mul_mux2 sh_66_ ( .d1(areg[67]), .z(ain[66]), .d0(areg[66]), .s(x2)); |
---|
891 | mul_mux2 sh_65_ ( .d1(areg[66]), .z(ain[65]), .d0(areg[65]), .s(x2)); |
---|
892 | mul_mux2 sh_64_ ( .d1(areg[65]), .z(ain[64]), .d0(areg[64]), .s(x2)); |
---|
893 | mul_mux2 sh_63_ ( .d1(areg[64]), .z(ain[63]), .d0(areg[63]), .s(x2)); |
---|
894 | mul_mux2 sh_62_ ( .d1(areg[63]), .z(ain[62]), .d0(areg[62]), .s(x2)); |
---|
895 | mul_mux2 sh_61_ ( .d1(areg[62]), .z(ain[61]), .d0(areg[61]), .s(x2)); |
---|
896 | mul_mux2 sh_60_ ( .d1(areg[61]), .z(ain[60]), .d0(areg[60]), .s(x2)); |
---|
897 | mul_mux2 sh_59_ ( .d1(areg[60]), .z(ain[59]), .d0(areg[59]), .s(x2)); |
---|
898 | mul_mux2 sh_58_ ( .d1(areg[59]), .z(ain[58]), .d0(areg[58]), .s(x2)); |
---|
899 | mul_mux2 sh_57_ ( .d1(areg[58]), .z(ain[57]), .d0(areg[57]), .s(x2)); |
---|
900 | mul_mux2 sh_56_ ( .d1(areg[57]), .z(ain[56]), .d0(areg[56]), .s(x2)); |
---|
901 | mul_mux2 sh_55_ ( .d1(areg[56]), .z(ain[55]), .d0(areg[55]), .s(x2)); |
---|
902 | mul_mux2 sh_54_ ( .d1(areg[55]), .z(ain[54]), .d0(areg[54]), .s(x2)); |
---|
903 | mul_mux2 sh_53_ ( .d1(areg[54]), .z(ain[53]), .d0(areg[53]), .s(x2)); |
---|
904 | mul_mux2 sh_52_ ( .d1(areg[53]), .z(ain[52]), .d0(areg[52]), .s(x2)); |
---|
905 | mul_mux2 sh_51_ ( .d1(areg[52]), .z(ain[51]), .d0(areg[51]), .s(x2)); |
---|
906 | mul_mux2 sh_50_ ( .d1(areg[51]), .z(ain[50]), .d0(areg[50]), .s(x2)); |
---|
907 | mul_mux2 sh_49_ ( .d1(areg[50]), .z(ain[49]), .d0(areg[49]), .s(x2)); |
---|
908 | mul_mux2 sh_48_ ( .d1(areg[49]), .z(ain[48]), .d0(areg[48]), .s(x2)); |
---|
909 | mul_mux2 sh_47_ ( .d1(areg[48]), .z(ain[47]), .d0(areg[47]), .s(x2)); |
---|
910 | mul_mux2 sh_46_ ( .d1(areg[47]), .z(ain[46]), .d0(areg[46]), .s(x2)); |
---|
911 | mul_mux2 sh_45_ ( .d1(areg[46]), .z(ain[45]), .d0(areg[45]), .s(x2)); |
---|
912 | mul_mux2 sh_44_ ( .d1(areg[45]), .z(ain[44]), .d0(areg[44]), .s(x2)); |
---|
913 | mul_mux2 sh_43_ ( .d1(areg[44]), .z(ain[43]), .d0(areg[43]), .s(x2)); |
---|
914 | mul_mux2 sh_42_ ( .d1(areg[43]), .z(ain[42]), .d0(areg[42]), .s(x2)); |
---|
915 | mul_mux2 sh_41_ ( .d1(areg[42]), .z(ain[41]), .d0(areg[41]), .s(x2)); |
---|
916 | mul_mux2 sh_40_ ( .d1(areg[41]), .z(ain[40]), .d0(areg[40]), .s(x2)); |
---|
917 | mul_mux2 sh_39_ ( .d1(areg[40]), .z(ain[39]), .d0(areg[39]), .s(x2)); |
---|
918 | mul_mux2 sh_38_ ( .d1(areg[39]), .z(ain[38]), .d0(areg[38]), .s(x2)); |
---|
919 | mul_mux2 sh_37_ ( .d1(areg[38]), .z(ain[37]), .d0(areg[37]), .s(x2)); |
---|
920 | mul_mux2 sh_36_ ( .d1(areg[37]), .z(ain[36]), .d0(areg[36]), .s(x2)); |
---|
921 | mul_mux2 sh_35_ ( .d1(areg[36]), .z(ain[35]), .d0(areg[35]), .s(x2)); |
---|
922 | mul_mux2 sh_34_ ( .d1(areg[35]), .z(ain[34]), .d0(areg[34]), .s(x2)); |
---|
923 | mul_mux2 sh_33_ ( .d1(areg[34]), .z(ain[33]), .d0(areg[33]), .s(x2)); |
---|
924 | mul_mux2 sh_32_ ( .d1(areg[33]), .z(ain[32]), .d0(areg[32]), .s(x2)); |
---|
925 | mul_mux2 sh_31_ ( .d1(areg[32]), .z(ain[31]), .d0(areg[31]), .s(x2)); |
---|
926 | mul_mux2 sh_30_ ( .d1(areg[31]), .z(ain[30]), .d0(areg[30]), .s(x2)); |
---|
927 | mul_mux2 sh_29_ ( .d1(areg[30]), .z(ain[29]), .d0(areg[29]), .s(x2)); |
---|
928 | mul_mux2 sh_28_ ( .d1(areg[29]), .z(ain[28]), .d0(areg[28]), .s(x2)); |
---|
929 | mul_mux2 sh_27_ ( .d1(areg[28]), .z(ain[27]), .d0(areg[27]), .s(x2)); |
---|
930 | mul_mux2 sh_26_ ( .d1(areg[27]), .z(ain[26]), .d0(areg[26]), .s(x2)); |
---|
931 | mul_mux2 sh_25_ ( .d1(areg[26]), .z(ain[25]), .d0(areg[25]), .s(x2)); |
---|
932 | mul_mux2 sh_24_ ( .d1(areg[25]), .z(ain[24]), .d0(areg[24]), .s(x2)); |
---|
933 | mul_mux2 sh_23_ ( .d1(areg[24]), .z(ain[23]), .d0(areg[23]), .s(x2)); |
---|
934 | mul_mux2 sh_22_ ( .d1(areg[23]), .z(ain[22]), .d0(areg[22]), .s(x2)); |
---|
935 | mul_mux2 sh_21_ ( .d1(areg[22]), .z(ain[21]), .d0(areg[21]), .s(x2)); |
---|
936 | mul_mux2 sh_20_ ( .d1(areg[21]), .z(ain[20]), .d0(areg[20]), .s(x2)); |
---|
937 | mul_mux2 sh_96_ ( .d1(1'b0), .z(ain[96]), .d0(areg[96]), |
---|
938 | .s(x2)); |
---|
939 | mul_mux2 sh_95_ ( .d1(areg[96]), .z(ain[95]), .d0(areg[95]), .s(x2)); |
---|
940 | mul_mux2 sh_94_ ( .d1(areg[95]), .z(ain[94]), .d0(areg[94]), .s(x2)); |
---|
941 | mul_mux2 sh_93_ ( .d1(areg[94]), .z(ain[93]), .d0(areg[93]), .s(x2)); |
---|
942 | mul_mux2 sh_92_ ( .d1(areg[93]), .z(ain[92]), .d0(areg[92]), .s(x2)); |
---|
943 | mul_mux2 sh_91_ ( .d1(areg[92]), .z(ain[91]), .d0(areg[91]), .s(x2)); |
---|
944 | mul_mux2 sh_90_ ( .d1(areg[91]), .z(ain[90]), .d0(areg[90]), .s(x2)); |
---|
945 | mul_mux2 sh_89_ ( .d1(areg[90]), .z(ain[89]), .d0(areg[89]), .s(x2)); |
---|
946 | mul_mux2 sh_88_ ( .d1(areg[89]), .z(ain[88]), .d0(areg[88]), .s(x2)); |
---|
947 | mul_mux2 sh_87_ ( .d1(areg[88]), .z(ain[87]), .d0(areg[87]), .s(x2)); |
---|
948 | mul_mux2 sh_86_ ( .d1(areg[87]), .z(ain[86]), .d0(areg[86]), .s(x2)); |
---|
949 | mul_mux2 sh_85_ ( .d1(areg[86]), .z(ain[85]), .d0(areg[85]), .s(x2)); |
---|
950 | mul_mux2 sh_84_ ( .d1(areg[85]), .z(ain[84]), .d0(areg[84]), .s(x2)); |
---|
951 | mul_mux2 sh_0_ ( .d1(areg[1]), .z(ain[0]), .d0(areg[0]), .s(x2)); |
---|
952 | mul_mux2 sh_81_ ( .d1(areg[82]), .z(ain[81]), .d0(areg[81]), .s(x2)); |
---|
953 | mul_mux2 sh_80_ ( .d1(areg[81]), .z(ain[80]), .d0(areg[80]), .s(x2)); |
---|
954 | mul_mux2 sh_79_ ( .d1(areg[80]), .z(ain[79]), .d0(areg[79]), .s(x2)); |
---|
955 | mul_mux2 sh_78_ ( .d1(areg[79]), .z(ain[78]), .d0(areg[78]), .s(x2)); |
---|
956 | mul_mux2 sh_77_ ( .d1(areg[78]), .z(ain[77]), .d0(areg[77]), .s(x2)); |
---|
957 | mul_mux2 sh_76_ ( .d1(areg[77]), .z(ain[76]), .d0(areg[76]), .s(x2)); |
---|
958 | mul_mux2 sh_75_ ( .d1(areg[76]), .z(ain[75]), .d0(areg[75]), .s(x2)); |
---|
959 | mul_mux2 sh_74_ ( .d1(areg[75]), .z(ain[74]), .d0(areg[74]), .s(x2)); |
---|
960 | mul_mux2 sh_73_ ( .d1(areg[74]), .z(ain[73]), .d0(areg[73]), .s(x2)); |
---|
961 | mul_mux2 sh_72_ ( .d1(areg[73]), .z(ain[72]), .d0(areg[72]), .s(x2)); |
---|
962 | mul_mux2 sh_71_ ( .d1(areg[72]), .z(ain[71]), .d0(areg[71]), .s(x2)); |
---|
963 | mul_mux2 sh_70_ ( .d1(areg[71]), .z(ain[70]), .d0(areg[70]), .s(x2)); |
---|
964 | mul_mux2 sh_69_ ( .d1(areg[70]), .z(ain[69]), .d0(areg[69]), .s(x2)); |
---|
965 | mul_mux2 sh_19_ ( .d1(areg[20]), .z(ain[19]), .d0(areg[19]), .s(x2)); |
---|
966 | mul_mux2 sh_18_ ( .d1(areg[19]), .z(ain[18]), .d0(areg[18]), .s(x2)); |
---|
967 | mul_mux2 sh_17_ ( .d1(areg[18]), .z(ain[17]), .d0(areg[17]), .s(x2)); |
---|
968 | mul_mux2 sh_16_ ( .d1(areg[17]), .z(ain[16]), .d0(areg[16]), .s(x2)); |
---|
969 | mul_mux2 sh_15_ ( .d1(areg[16]), .z(ain[15]), .d0(areg[15]), .s(x2)); |
---|
970 | mul_mux2 sh_4_ ( .d1(areg[5]), .z(ain[4]), .d0(areg[4]), .s(x2)); |
---|
971 | mul_mux2 sh_3_ ( .d1(areg[4]), .z(ain[3]), .d0(areg[3]), .s(x2)); |
---|
972 | mul_mux2 sh_2_ ( .d1(areg[3]), .z(ain[2]), .d0(areg[2]), .s(x2)); |
---|
973 | mul_mux2 sh_1_ ( .d1(areg[2]), .z(ain[1]), .d0(areg[1]), .s(x2)); |
---|
974 | mul_mux2 shx2 ( .d1(areg[0]), .z(ainx2), .d0(1'b0), |
---|
975 | .s(x2)); |
---|
976 | mul_mux2 sh_83_ ( .d1(areg[84]), .z(ain[83]), .d0(areg[83]), .s(x2)); |
---|
977 | mul_mux2 sh_14_ ( .d1(areg[15]), .z(ain[14]), .d0(areg[14]), .s(x2)); |
---|
978 | mul_mux2 sh_13_ ( .d1(areg[14]), .z(ain[13]), .d0(areg[13]), .s(x2)); |
---|
979 | mul_mux2 sh_12_ ( .d1(areg[13]), .z(ain[12]), .d0(areg[12]), .s(x2)); |
---|
980 | mul_mux2 sh_11_ ( .d1(areg[12]), .z(ain[11]), .d0(areg[11]), .s(x2)); |
---|
981 | mul_mux2 sh_10_ ( .d1(areg[11]), .z(ain[10]), .d0(areg[10]), .s(x2)); |
---|
982 | mul_mux2 sh_9_ ( .d1(areg[10]), .z(ain[9]), .d0(areg[9]), .s(x2)); |
---|
983 | mul_mux2 sh_8_ ( .d1(areg[9]), .z(ain[8]), .d0(areg[8]), .s(x2)); |
---|
984 | mul_mux2 sh_7_ ( .d1(areg[8]), .z(ain[7]), .d0(areg[7]), .s(x2)); |
---|
985 | mul_mux2 sh_6_ ( .d1(areg[7]), .z(ain[6]), .d0(areg[6]), .s(x2)); |
---|
986 | mul_mux2 sh_5_ ( .d1(areg[6]), .z(ain[5]), .d0(areg[5]), .s(x2)); |
---|
987 | mul_csa42 sc3_68_ ( .cin(co[67]), .d(1'b0), |
---|
988 | .carry(c3[68]), .c(c2[67]), .b(s2[68]), .a(1'b0), |
---|
989 | .cout(), .sum(s3[68])); |
---|
990 | mul_csa42 sc3_67_ ( .cin(co[66]), .d(1'b0), |
---|
991 | .carry(c3[67]), .c(c2[66]), .b(s2[67]), .a(s1[67]), .cout(co[67]), |
---|
992 | .sum(s3[67])); |
---|
993 | mul_csa42 sc3_66_ ( .cin(co[65]), .d(c1[65]), .carry(c3[66]), |
---|
994 | .c(c2[65]), .b(s2[66]), .a(s1[66]), .cout(co[66]), .sum(s3[66])); |
---|
995 | mul_csa42 sc3_65_ ( .cin(co[64]), .d(c1[64]), .carry(c3[65]), |
---|
996 | .c(c2[64]), .b(s2[65]), .a(s1[65]), .cout(co[65]), .sum(s3[65])); |
---|
997 | mul_csa42 sc3_64_ ( .cin(co[63]), .d(c1[63]), .carry(c3[64]), |
---|
998 | .c(c2[63]), .b(s2[64]), .a(s1[64]), .cout(co[64]), .sum(s3[64])); |
---|
999 | mul_csa42 sc3_63_ ( .cin(co[62]), .d(c1[62]), .carry(c3[63]), |
---|
1000 | .c(c2[62]), .b(s2[63]), .a(s1[63]), .cout(co[63]), .sum(s3[63])); |
---|
1001 | mul_csa42 sc3_62_ ( .cin(co[61]), .d(c1[61]), .carry(c3[62]), |
---|
1002 | .c(c2[61]), .b(s2[62]), .a(s1[62]), .cout(co[62]), .sum(s3[62])); |
---|
1003 | mul_csa42 sc3_61_ ( .cin(co[60]), .d(c1[60]), .carry(c3[61]), |
---|
1004 | .c(c2[60]), .b(s2[61]), .a(s1[61]), .cout(co[61]), .sum(s3[61])); |
---|
1005 | mul_csa42 sc3_60_ ( .cin(co[59]), .d(c1[59]), .carry(c3[60]), |
---|
1006 | .c(c2[59]), .b(s2[60]), .a(s1[60]), .cout(co[60]), .sum(s3[60])); |
---|
1007 | mul_csa42 sc3_59_ ( .cin(co[58]), .d(c1[58]), .carry(c3[59]), |
---|
1008 | .c(c2[58]), .b(s2[59]), .a(s1[59]), .cout(co[59]), .sum(s3[59])); |
---|
1009 | mul_csa42 sc3_58_ ( .cin(co[57]), .d(c1[57]), .carry(c3[58]), |
---|
1010 | .c(c2[57]), .b(s2[58]), .a(s1[58]), .cout(co[58]), .sum(s3[58])); |
---|
1011 | mul_csa42 sc3_57_ ( .cin(co[56]), .d(c1[56]), .carry(c3[57]), |
---|
1012 | .c(c2[56]), .b(s2[57]), .a(s1[57]), .cout(co[57]), .sum(s3[57])); |
---|
1013 | mul_csa42 sc3_56_ ( .cin(co[55]), .d(c1[55]), .carry(c3[56]), |
---|
1014 | .c(c2[55]), .b(s2[56]), .a(s1[56]), .cout(co[56]), .sum(s3[56])); |
---|
1015 | mul_csa42 sc3_55_ ( .cin(co[54]), .d(c1[54]), .carry(c3[55]), |
---|
1016 | .c(c2[54]), .b(s2[55]), .a(s1[55]), .cout(co[55]), .sum(s3[55])); |
---|
1017 | mul_csa42 sc3_54_ ( .cin(co[53]), .d(c1[53]), .carry(c3[54]), |
---|
1018 | .c(c2[53]), .b(s2[54]), .a(s1[54]), .cout(co[54]), .sum(s3[54])); |
---|
1019 | mul_csa42 sc3_53_ ( .cin(co[52]), .d(c1[52]), .carry(c3[53]), |
---|
1020 | .c(c2[52]), .b(s2[53]), .a(s1[53]), .cout(co[53]), .sum(s3[53])); |
---|
1021 | mul_csa42 sc3_52_ ( .cin(co[51]), .d(c1[51]), .carry(c3[52]), |
---|
1022 | .c(c2[51]), .b(s2[52]), .a(s1[52]), .cout(co[52]), .sum(s3[52])); |
---|
1023 | mul_csa42 sc3_51_ ( .cin(co[50]), .d(c1[50]), .carry(c3[51]), |
---|
1024 | .c(c2[50]), .b(s2[51]), .a(s1[51]), .cout(co[51]), .sum(s3[51])); |
---|
1025 | mul_csa42 sc3_50_ ( .cin(co[49]), .d(c1[49]), .carry(c3[50]), |
---|
1026 | .c(c2[49]), .b(s2[50]), .a(s1[50]), .cout(co[50]), .sum(s3[50])); |
---|
1027 | mul_csa42 sc3_49_ ( .cin(co[48]), .d(c1[48]), .carry(c3[49]), |
---|
1028 | .c(c2[48]), .b(s2[49]), .a(s1[49]), .cout(co[49]), .sum(s3[49])); |
---|
1029 | mul_csa42 sc3_48_ ( .cin(co[47]), .d(c1[47]), .carry(c3[48]), |
---|
1030 | .c(c2[47]), .b(s2[48]), .a(s1[48]), .cout(co[48]), .sum(s3[48])); |
---|
1031 | mul_csa42 sc3_47_ ( .cin(co[46]), .d(c1[46]), .carry(c3[47]), |
---|
1032 | .c(c2[46]), .b(s2[47]), .a(s1[47]), .cout(co[47]), .sum(s3[47])); |
---|
1033 | mul_csa42 sc3_46_ ( .cin(co[45]), .d(c1[45]), .carry(c3[46]), |
---|
1034 | .c(c2[45]), .b(s2[46]), .a(s1[46]), .cout(co[46]), .sum(s3[46])); |
---|
1035 | mul_csa42 sc3_45_ ( .cin(co[44]), .d(c1[44]), .carry(c3[45]), |
---|
1036 | .c(c2[44]), .b(s2[45]), .a(s1[45]), .cout(co[45]), .sum(s3[45])); |
---|
1037 | mul_csa42 sc3_44_ ( .cin(co[43]), .d(c1[43]), .carry(c3[44]), |
---|
1038 | .c(c2[43]), .b(s2[44]), .a(s1[44]), .cout(co[44]), .sum(s3[44])); |
---|
1039 | mul_csa42 sc3_43_ ( .cin(co[42]), .d(c1[42]), .carry(c3[43]), |
---|
1040 | .c(c2[42]), .b(s2[43]), .a(s1[43]), .cout(co[43]), .sum(s3[43])); |
---|
1041 | mul_csa42 sc3_42_ ( .cin(co[41]), .d(c1[41]), .carry(c3[42]), |
---|
1042 | .c(c2[41]), .b(s2[42]), .a(s1[42]), .cout(co[42]), .sum(s3[42])); |
---|
1043 | mul_csa42 sc3_41_ ( .cin(co[40]), .d(c1[40]), .carry(c3[41]), |
---|
1044 | .c(c2[40]), .b(s2[41]), .a(s1[41]), .cout(co[41]), .sum(s3[41])); |
---|
1045 | mul_csa42 sc3_40_ ( .cin(co[39]), .d(c1[39]), .carry(c3[40]), |
---|
1046 | .c(c2[39]), .b(s2[40]), .a(s1[40]), .cout(co[40]), .sum(s3[40])); |
---|
1047 | mul_csa42 sc3_39_ ( .cin(co[38]), .d(c1[38]), .carry(c3[39]), |
---|
1048 | .c(c2[38]), .b(s2[39]), .a(s1[39]), .cout(co[39]), .sum(s3[39])); |
---|
1049 | mul_csa42 sc3_38_ ( .cin(co[37]), .d(c1[37]), .carry(c3[38]), |
---|
1050 | .c(c2[37]), .b(s2[38]), .a(s1[38]), .cout(co[38]), .sum(s3[38])); |
---|
1051 | mul_csa42 sc3_37_ ( .cin(co[36]), .d(c1[36]), .carry(c3[37]), |
---|
1052 | .c(c2[36]), .b(s2[37]), .a(s1[37]), .cout(co[37]), .sum(s3[37])); |
---|
1053 | mul_csa42 sc3_36_ ( .cin(co[35]), .d(c1[35]), .carry(c3[36]), |
---|
1054 | .c(c2[35]), .b(s2[36]), .a(s1[36]), .cout(co[36]), .sum(s3[36])); |
---|
1055 | mul_csa42 sc3_35_ ( .cin(co[34]), .d(c1[34]), .carry(c3[35]), |
---|
1056 | .c(c2[34]), .b(s2[35]), .a(s1[35]), .cout(co[35]), .sum(s3[35])); |
---|
1057 | mul_csa42 sc3_34_ ( .cin(co[33]), .d(c1[33]), .carry(c3[34]), |
---|
1058 | .c(c2[33]), .b(s2[34]), .a(s1[34]), .cout(co[34]), .sum(s3[34])); |
---|
1059 | mul_csa42 sc3_33_ ( .cin(co[32]), .d(c1[32]), .carry(c3[33]), |
---|
1060 | .c(c2[32]), .b(s2[33]), .a(s1[33]), .cout(co[33]), .sum(s3[33])); |
---|
1061 | mul_csa42 sc3_32_ ( .cin(co[31]), .d(c1[31]), .carry(c3[32]), |
---|
1062 | .c(c2[31]), .b(s2[32]), .a(s1[32]), .cout(co[32]), .sum(s3[32])); |
---|
1063 | mul_csa42 sc3_31_ ( .cin(co[30]), .d(c1[30]), .carry(c3[31]), |
---|
1064 | .c(c2[30]), .b(s2[31]), .a(s1[31]), .cout(co[31]), .sum(s3[31])); |
---|
1065 | mul_csa42 sc3_30_ ( .cin(co[29]), .d(c1[29]), .carry(c3[30]), |
---|
1066 | .c(c2[29]), .b(s2[30]), .a(s1[30]), .cout(co[30]), .sum(s3[30])); |
---|
1067 | mul_csa42 sc3_29_ ( .cin(co[28]), .d(c1[28]), .carry(c3[29]), |
---|
1068 | .c(c2[28]), .b(s2[29]), .a(s1[29]), .cout(co[29]), .sum(s3[29])); |
---|
1069 | mul_csa42 sc3_28_ ( .cin(co[27]), .d(c1[27]), .carry(c3[28]), |
---|
1070 | .c(c2[27]), .b(s2[28]), .a(s1[28]), .cout(co[28]), .sum(s3[28])); |
---|
1071 | mul_csa42 sc3_27_ ( .cin(co[26]), .d(c1[26]), .carry(c3[27]), |
---|
1072 | .c(c2[26]), .b(s2[27]), .a(s1[27]), .cout(co[27]), .sum(s3[27])); |
---|
1073 | mul_csa42 sc3_26_ ( .cin(co[25]), .d(c1[25]), .carry(c3[26]), |
---|
1074 | .c(c2[25]), .b(s2[26]), .a(s1[26]), .cout(co[26]), .sum(s3[26])); |
---|
1075 | mul_csa42 sc3_25_ ( .cin(co[24]), .d(c1[24]), .carry(c3[25]), |
---|
1076 | .c(c2[24]), .b(s2[25]), .a(s1[25]), .cout(co[25]), .sum(s3[25])); |
---|
1077 | mul_csa42 sc3_24_ ( .cin(co[23]), .d(c1[23]), .carry(c3[24]), |
---|
1078 | .c(c2[23]), .b(s2[24]), .a(s1[24]), .cout(co[24]), .sum(s3[24])); |
---|
1079 | mul_csa42 sc3_23_ ( .cin(co[22]), .d(c1[22]), .carry(c3[23]), |
---|
1080 | .c(c2[22]), .b(s2[23]), .a(s1[23]), .cout(co[23]), .sum(s3[23])); |
---|
1081 | mul_csa42 sc3_22_ ( .cin(co[21]), .d(c1[21]), .carry(c3[22]), |
---|
1082 | .c(c2[21]), .b(s2[22]), .a(s1[22]), .cout(co[22]), .sum(s3[22])); |
---|
1083 | mul_csa42 sc3_21_ ( .cin(co[20]), .d(c1[20]), .carry(c3[21]), |
---|
1084 | .c(c2[20]), .b(s2[21]), .a(s1[21]), .cout(co[21]), .sum(s3[21])); |
---|
1085 | mul_csa42 sc3_20_ ( .cin(1'b0), .d(c1[19]), |
---|
1086 | .carry(c3[20]), .c(c2[19]), .b(s2[20]), .a(s1[20]), .cout(co[20]), |
---|
1087 | .sum(s3[20])); |
---|
1088 | mul_csa32 sc4_82_ ( .c(c3[81]), .b(s2[82]), .a(ain[82]), |
---|
1089 | .cout(pcout[82]), .sum(psum[82])); |
---|
1090 | mul_csa32 sc4_68_ ( .c(c3[67]), .b(s3[68]), .a(ain[68]), |
---|
1091 | .cout(pcout[68]), .sum(psum[68])); |
---|
1092 | mul_csa32 sc4_67_ ( .c(c3[66]), .b(s3[67]), .a(ain[67]), |
---|
1093 | .cout(pcout[67]), .sum(psum[67])); |
---|
1094 | mul_csa32 sc4_66_ ( .c(c3[65]), .b(s3[66]), .a(ain[66]), |
---|
1095 | .cout(pcout[66]), .sum(psum[66])); |
---|
1096 | mul_csa32 sc4_65_ ( .c(c3[64]), .b(s3[65]), .a(ain[65]), |
---|
1097 | .cout(pcout[65]), .sum(psum[65])); |
---|
1098 | mul_csa32 sc4_64_ ( .c(c3[63]), .b(s3[64]), .a(ain[64]), |
---|
1099 | .cout(pcout[64]), .sum(psum[64])); |
---|
1100 | mul_csa32 sc4_63_ ( .c(c3[62]), .b(s3[63]), .a(ain[63]), |
---|
1101 | .cout(pcout[63]), .sum(psum[63])); |
---|
1102 | mul_csa32 sc4_62_ ( .c(c3[61]), .b(s3[62]), .a(ain[62]), |
---|
1103 | .cout(pcout[62]), .sum(psum[62])); |
---|
1104 | mul_csa32 sc4_61_ ( .c(c3[60]), .b(s3[61]), .a(ain[61]), |
---|
1105 | .cout(pcout[61]), .sum(psum[61])); |
---|
1106 | mul_csa32 sc4_60_ ( .c(c3[59]), .b(s3[60]), .a(ain[60]), |
---|
1107 | .cout(pcout[60]), .sum(psum[60])); |
---|
1108 | mul_csa32 sc4_59_ ( .c(c3[58]), .b(s3[59]), .a(ain[59]), |
---|
1109 | .cout(pcout[59]), .sum(psum[59])); |
---|
1110 | mul_csa32 sc4_58_ ( .c(c3[57]), .b(s3[58]), .a(ain[58]), |
---|
1111 | .cout(pcout[58]), .sum(psum[58])); |
---|
1112 | mul_csa32 sc4_57_ ( .c(c3[56]), .b(s3[57]), .a(ain[57]), |
---|
1113 | .cout(pcout[57]), .sum(psum[57])); |
---|
1114 | mul_csa32 sc4_56_ ( .c(c3[55]), .b(s3[56]), .a(ain[56]), |
---|
1115 | .cout(pcout[56]), .sum(psum[56])); |
---|
1116 | mul_csa32 sc4_55_ ( .c(c3[54]), .b(s3[55]), .a(ain[55]), |
---|
1117 | .cout(pcout[55]), .sum(psum[55])); |
---|
1118 | mul_csa32 sc4_54_ ( .c(c3[53]), .b(s3[54]), .a(ain[54]), |
---|
1119 | .cout(pcout[54]), .sum(psum[54])); |
---|
1120 | mul_csa32 sc4_53_ ( .c(c3[52]), .b(s3[53]), .a(ain[53]), |
---|
1121 | .cout(pcout[53]), .sum(psum[53])); |
---|
1122 | mul_csa32 sc4_52_ ( .c(c3[51]), .b(s3[52]), .a(ain[52]), |
---|
1123 | .cout(pcout[52]), .sum(psum[52])); |
---|
1124 | mul_csa32 sc4_51_ ( .c(c3[50]), .b(s3[51]), .a(ain[51]), |
---|
1125 | .cout(pcout[51]), .sum(psum[51])); |
---|
1126 | mul_csa32 sc4_50_ ( .c(c3[49]), .b(s3[50]), .a(ain[50]), |
---|
1127 | .cout(pcout[50]), .sum(psum[50])); |
---|
1128 | mul_csa32 sc4_49_ ( .c(c3[48]), .b(s3[49]), .a(ain[49]), |
---|
1129 | .cout(pcout[49]), .sum(psum[49])); |
---|
1130 | mul_csa32 sc4_48_ ( .c(c3[47]), .b(s3[48]), .a(ain[48]), |
---|
1131 | .cout(pcout[48]), .sum(psum[48])); |
---|
1132 | mul_csa32 sc4_47_ ( .c(c3[46]), .b(s3[47]), .a(ain[47]), |
---|
1133 | .cout(pcout[47]), .sum(psum[47])); |
---|
1134 | mul_csa32 sc4_46_ ( .c(c3[45]), .b(s3[46]), .a(ain[46]), |
---|
1135 | .cout(pcout[46]), .sum(psum[46])); |
---|
1136 | mul_csa32 sc4_45_ ( .c(c3[44]), .b(s3[45]), .a(ain[45]), |
---|
1137 | .cout(pcout[45]), .sum(psum[45])); |
---|
1138 | mul_csa32 sc4_44_ ( .c(c3[43]), .b(s3[44]), .a(ain[44]), |
---|
1139 | .cout(pcout[44]), .sum(psum[44])); |
---|
1140 | mul_csa32 sc4_43_ ( .c(c3[42]), .b(s3[43]), .a(ain[43]), |
---|
1141 | .cout(pcout[43]), .sum(psum[43])); |
---|
1142 | mul_csa32 sc4_42_ ( .c(c3[41]), .b(s3[42]), .a(ain[42]), |
---|
1143 | .cout(pcout[42]), .sum(psum[42])); |
---|
1144 | mul_csa32 sc4_41_ ( .c(c3[40]), .b(s3[41]), .a(ain[41]), |
---|
1145 | .cout(pcout[41]), .sum(psum[41])); |
---|
1146 | mul_csa32 sc4_40_ ( .c(c3[39]), .b(s3[40]), .a(ain[40]), |
---|
1147 | .cout(pcout[40]), .sum(psum[40])); |
---|
1148 | mul_csa32 sc4_39_ ( .c(c3[38]), .b(s3[39]), .a(ain[39]), |
---|
1149 | .cout(pcout[39]), .sum(psum[39])); |
---|
1150 | mul_csa32 sc4_38_ ( .c(c3[37]), .b(s3[38]), .a(ain[38]), |
---|
1151 | .cout(pcout[38]), .sum(psum[38])); |
---|
1152 | mul_csa32 sc4_37_ ( .c(c3[36]), .b(s3[37]), .a(ain[37]), |
---|
1153 | .cout(pcout[37]), .sum(psum[37])); |
---|
1154 | mul_csa32 sc4_36_ ( .c(c3[35]), .b(s3[36]), .a(ain[36]), |
---|
1155 | .cout(pcout[36]), .sum(psum[36])); |
---|
1156 | mul_csa32 sc4_35_ ( .c(c3[34]), .b(s3[35]), .a(ain[35]), |
---|
1157 | .cout(pcout[35]), .sum(psum[35])); |
---|
1158 | mul_csa32 sc4_34_ ( .c(c3[33]), .b(s3[34]), .a(ain[34]), |
---|
1159 | .cout(pcout[34]), .sum(psum[34])); |
---|
1160 | mul_csa32 sc4_33_ ( .c(c3[32]), .b(s3[33]), .a(ain[33]), |
---|
1161 | .cout(pcout[33]), .sum(psum[33])); |
---|
1162 | mul_csa32 sc4_32_ ( .c(c3[31]), .b(s3[32]), .a(ain[32]), |
---|
1163 | .cout(pcout[32]), .sum(psum[32])); |
---|
1164 | mul_csa32 sc4_31_ ( .c(c3[30]), .b(s3[31]), .a(ain[31]), |
---|
1165 | .cout(pcout[31]), .sum(psum[31])); |
---|
1166 | mul_csa32 sc4_30_ ( .c(c3[29]), .b(s3[30]), .a(ain[30]), |
---|
1167 | .cout(pcout[30]), .sum(psum[30])); |
---|
1168 | mul_csa32 sc4_29_ ( .c(c3[28]), .b(s3[29]), .a(ain[29]), |
---|
1169 | .cout(pcout[29]), .sum(psum[29])); |
---|
1170 | mul_csa32 sc4_28_ ( .c(c3[27]), .b(s3[28]), .a(ain[28]), |
---|
1171 | .cout(pcout[28]), .sum(psum[28])); |
---|
1172 | mul_csa32 sc4_27_ ( .c(c3[26]), .b(s3[27]), .a(ain[27]), |
---|
1173 | .cout(pcout[27]), .sum(psum[27])); |
---|
1174 | mul_csa32 sc4_26_ ( .c(c3[25]), .b(s3[26]), .a(ain[26]), |
---|
1175 | .cout(pcout[26]), .sum(psum[26])); |
---|
1176 | mul_csa32 sc4_25_ ( .c(c3[24]), .b(s3[25]), .a(ain[25]), |
---|
1177 | .cout(pcout[25]), .sum(psum[25])); |
---|
1178 | mul_csa32 sc4_24_ ( .c(c3[23]), .b(s3[24]), .a(ain[24]), |
---|
1179 | .cout(pcout[24]), .sum(psum[24])); |
---|
1180 | mul_csa32 sc4_23_ ( .c(c3[22]), .b(s3[23]), .a(ain[23]), |
---|
1181 | .cout(pcout[23]), .sum(psum[23])); |
---|
1182 | mul_csa32 sc4_22_ ( .c(c3[21]), .b(s3[22]), .a(ain[22]), |
---|
1183 | .cout(pcout[22]), .sum(psum[22])); |
---|
1184 | mul_csa32 sc4_21_ ( .c(c3[20]), .b(s3[21]), .a(ain[21]), |
---|
1185 | .cout(pcout[21]), .sum(psum[21])); |
---|
1186 | mul_csa32 sc4_20_ ( .c(c3[19]), .b(s3[20]), .a(ain[20]), |
---|
1187 | .cout(pcout[20]), .sum(psum[20])); |
---|
1188 | mul_csa32 sc4_96_ ( .c(c2[95]), .b(s2[96]), .a(ain[96]), |
---|
1189 | .cout(pcout[96]), .sum(psum[96])); |
---|
1190 | mul_csa32 sc4_95_ ( .c(c2[94]), .b(s2[95]), .a(ain[95]), |
---|
1191 | .cout(pcout[95]), .sum(psum[95])); |
---|
1192 | mul_csa32 sc4_94_ ( .c(c2[93]), .b(s2[94]), .a(ain[94]), |
---|
1193 | .cout(pcout[94]), .sum(psum[94])); |
---|
1194 | mul_csa32 sc4_93_ ( .c(c2[92]), .b(s2[93]), .a(ain[93]), |
---|
1195 | .cout(pcout[93]), .sum(psum[93])); |
---|
1196 | mul_csa32 sc4_92_ ( .c(c2[91]), .b(s2[92]), .a(ain[92]), |
---|
1197 | .cout(pcout[92]), .sum(psum[92])); |
---|
1198 | mul_csa32 sc4_91_ ( .c(c2[90]), .b(s2[91]), .a(ain[91]), |
---|
1199 | .cout(pcout[91]), .sum(psum[91])); |
---|
1200 | mul_csa32 sc4_90_ ( .c(c2[89]), .b(s2[90]), .a(ain[90]), |
---|
1201 | .cout(pcout[90]), .sum(psum[90])); |
---|
1202 | mul_csa32 sc4_89_ ( .c(c2[88]), .b(s2[89]), .a(ain[89]), |
---|
1203 | .cout(pcout[89]), .sum(psum[89])); |
---|
1204 | mul_csa32 sc4_88_ ( .c(c2[87]), .b(s2[88]), .a(ain[88]), |
---|
1205 | .cout(pcout[88]), .sum(psum[88])); |
---|
1206 | mul_csa32 sc4_87_ ( .c(c2[86]), .b(s2[87]), .a(ain[87]), |
---|
1207 | .cout(pcout[87]), .sum(psum[87])); |
---|
1208 | mul_csa32 sc4_86_ ( .c(c2[85]), .b(s2[86]), .a(ain[86]), |
---|
1209 | .cout(pcout[86]), .sum(psum[86])); |
---|
1210 | mul_csa32 sc4_85_ ( .c(c2[84]), .b(s2[85]), .a(ain[85]), |
---|
1211 | .cout(pcout[85]), .sum(psum[85])); |
---|
1212 | mul_csa32 sc4_84_ ( .c(c2[83]), .b(s2[84]), .a(ain[84]), |
---|
1213 | .cout(pcout[84]), .sum(psum[84])); |
---|
1214 | mul_csa32 sc4_81_ ( .c(c3[80]), .b(s3[81]), .a(ain[81]), |
---|
1215 | .cout(pcout[81]), .sum(psum[81])); |
---|
1216 | mul_csa32 sc4_80_ ( .c(c3[79]), .b(s3[80]), .a(ain[80]), |
---|
1217 | .cout(pcout[80]), .sum(psum[80])); |
---|
1218 | mul_csa32 sc4_79_ ( .c(c3[78]), .b(s3[79]), .a(ain[79]), |
---|
1219 | .cout(pcout[79]), .sum(psum[79])); |
---|
1220 | mul_csa32 sc4_78_ ( .c(c3[77]), .b(s3[78]), .a(ain[78]), |
---|
1221 | .cout(pcout[78]), .sum(psum[78])); |
---|
1222 | mul_csa32 sc4_77_ ( .c(c3[76]), .b(s3[77]), .a(ain[77]), |
---|
1223 | .cout(pcout[77]), .sum(psum[77])); |
---|
1224 | mul_csa32 sc4_76_ ( .c(c3[75]), .b(s3[76]), .a(ain[76]), |
---|
1225 | .cout(pcout[76]), .sum(psum[76])); |
---|
1226 | mul_csa32 sc4_75_ ( .c(c3[74]), .b(s3[75]), .a(ain[75]), |
---|
1227 | .cout(pcout[75]), .sum(psum[75])); |
---|
1228 | mul_csa32 sc4_74_ ( .c(c3[73]), .b(s3[74]), .a(ain[74]), |
---|
1229 | .cout(pcout[74]), .sum(psum[74])); |
---|
1230 | mul_csa32 sc4_73_ ( .c(c3[72]), .b(s3[73]), .a(ain[73]), |
---|
1231 | .cout(pcout[73]), .sum(psum[73])); |
---|
1232 | mul_csa32 sc4_72_ ( .c(c3[71]), .b(s3[72]), .a(ain[72]), |
---|
1233 | .cout(pcout[72]), .sum(psum[72])); |
---|
1234 | mul_csa32 sc4_71_ ( .c(c3[70]), .b(s3[71]), .a(ain[71]), |
---|
1235 | .cout(pcout[71]), .sum(psum[71])); |
---|
1236 | mul_csa32 sc4_70_ ( .c(c3[69]), .b(s3[70]), .a(ain[70]), |
---|
1237 | .cout(pcout[70]), .sum(psum[70])); |
---|
1238 | mul_csa32 sc4_69_ ( .c(c3[68]), .b(s3[69]), .a(ain[69]), |
---|
1239 | .cout(pcout[69]), .sum(psum[69])); |
---|
1240 | mul_csa32 acc_4_ ( .c(c2[3]), .sum(psum[4]), .cout(pcout[4]), |
---|
1241 | .a(ain[4]), .b(s2[4])); |
---|
1242 | mul_csa32 acc_3_ ( .c(c2[2]), .sum(psum[3]), .cout(pcout[3]), |
---|
1243 | .a(ain[3]), .b(s2[3])); |
---|
1244 | mul_csa32 acc_2_ ( .c(c2[1]), .sum(psum[2]), .cout(pcout[2]), |
---|
1245 | .a(ain[2]), .b(s2[2])); |
---|
1246 | mul_csa32 acc_1_ ( .c(c2[0]), .sum(psum[1]), .cout(pcout[1]), |
---|
1247 | .a(ain[1]), .b(s2[1])); |
---|
1248 | mul_csa32 sc3_97_ ( .c(c2[96]), .sum(psum[97]), .cout(pcout[97]), |
---|
1249 | .a(a1s[81]), .b(a1c[80])); |
---|
1250 | mul_csa32 sc1_19_ ( .c(a1s[3]), .b(pc[50]), .a(ps[51]), |
---|
1251 | .cout(c1[19]), .sum(s1[19])); |
---|
1252 | mul_csa32 sc1_18_ ( .c(a1s[2]), .b(pc[49]), .a(ps[50]), |
---|
1253 | .cout(c1[18]), .sum(s1[18])); |
---|
1254 | mul_csa32 sc1_17_ ( .c(a1s[1]), .b(pc[48]), .a(ps[49]), |
---|
1255 | .cout(c1[17]), .sum(s1[17])); |
---|
1256 | mul_csa32 sc1_16_ ( .c(a1s[0]), .b(pc[47]), .a(ps[48]), |
---|
1257 | .cout(c1[16]), .sum(s1[16])); |
---|
1258 | mul_csa32 sc1_15_ ( .c(1'b0), .b(pc[46]), .a(ps[47]), |
---|
1259 | .cout(c1[15]), .sum(s1[15])); |
---|
1260 | mul_csa32 sc4_83_ ( .c(c2[82]), .b(s2[83]), .a(ain[83]), |
---|
1261 | .cout(pcout[83]), .sum(psum[83])); |
---|
1262 | mul_csa32 sc2_83_ ( .c(c1[82]), .b(a1c[66]), .a(a1s[67]), |
---|
1263 | .cout(c2[83]), .sum(s2[83])); |
---|
1264 | mul_csa32 sc2_19_ ( .c(a0c[18]), .b(a0s[19]), .a(s1[19]), |
---|
1265 | .cout(c2[19]), .sum(s2[19])); |
---|
1266 | mul_csa32 sc2_18_ ( .c(a0c[17]), .b(a0s[18]), .a(s1[18]), |
---|
1267 | .cout(c2[18]), .sum(s2[18])); |
---|
1268 | mul_csa32 sc2_17_ ( .c(a0c[16]), .b(a0s[17]), .a(s1[17]), |
---|
1269 | .cout(c2[17]), .sum(s2[17])); |
---|
1270 | mul_csa32 sc2_16_ ( .c(a0c[15]), .b(a0s[16]), .a(s1[16]), |
---|
1271 | .cout(c2[16]), .sum(s2[16])); |
---|
1272 | mul_csa32 sc2_15_ ( .c(a0c[14]), .b(a0s[15]), .a(s1[15]), |
---|
1273 | .cout(c2[15]), .sum(s2[15])); |
---|
1274 | mul_csa32 sc1_81_ ( .c(a0s[81]), .b(a1c[64]), .a(a1s[65]), |
---|
1275 | .cout(c1[81]), .sum(s1[81])); |
---|
1276 | mul_csa32 sc1_80_ ( .c(a0s[80]), .b(a1c[63]), .a(a1s[64]), |
---|
1277 | .cout(c1[80]), .sum(s1[80])); |
---|
1278 | mul_csa32 sc1_79_ ( .c(a0s[79]), .b(a1c[62]), .a(a1s[63]), |
---|
1279 | .cout(c1[79]), .sum(s1[79])); |
---|
1280 | mul_csa32 sc1_78_ ( .c(a0s[78]), .b(a1c[61]), .a(a1s[62]), |
---|
1281 | .cout(c1[78]), .sum(s1[78])); |
---|
1282 | mul_csa32 sc1_77_ ( .c(a0s[77]), .b(a1c[60]), .a(a1s[61]), |
---|
1283 | .cout(c1[77]), .sum(s1[77])); |
---|
1284 | mul_csa32 sc1_76_ ( .c(a0s[76]), .b(a1c[59]), .a(a1s[60]), |
---|
1285 | .cout(c1[76]), .sum(s1[76])); |
---|
1286 | mul_csa32 sc1_75_ ( .c(a0s[75]), .b(a1c[58]), .a(a1s[59]), |
---|
1287 | .cout(c1[75]), .sum(s1[75])); |
---|
1288 | mul_csa32 sc1_74_ ( .c(a0s[74]), .b(a1c[57]), .a(a1s[58]), |
---|
1289 | .cout(c1[74]), .sum(s1[74])); |
---|
1290 | mul_csa32 sc1_73_ ( .c(a0s[73]), .b(a1c[56]), .a(a1s[57]), |
---|
1291 | .cout(c1[73]), .sum(s1[73])); |
---|
1292 | mul_csa32 sc1_72_ ( .c(a0s[72]), .b(a1c[55]), .a(a1s[56]), |
---|
1293 | .cout(c1[72]), .sum(s1[72])); |
---|
1294 | mul_csa32 sc1_71_ ( .c(a0s[71]), .b(a1c[54]), .a(a1s[55]), |
---|
1295 | .cout(c1[71]), .sum(s1[71])); |
---|
1296 | mul_csa32 sc1_70_ ( .c(a0s[70]), .b(a1c[53]), .a(a1s[54]), |
---|
1297 | .cout(c1[70]), .sum(s1[70])); |
---|
1298 | mul_csa32 sc1_69_ ( .c(a0s[69]), .b(a1c[52]), .a(a1s[53]), |
---|
1299 | .cout(c1[69]), .sum(s1[69])); |
---|
1300 | mul_csa32 sc1_68_ ( .c(a0s[68]), .b(a1c[51]), .a(a1s[52]), |
---|
1301 | .cout(c1[68]), .sum(s1[68])); |
---|
1302 | mul_csa32 sc3_19_ ( .c(c2[18]), .b(c1[18]), .a(s2[19]), |
---|
1303 | .cout(c3[19]), .sum(s3[19])); |
---|
1304 | mul_csa32 sc3_18_ ( .c(c2[17]), .b(c1[17]), .a(s2[18]), |
---|
1305 | .cout(c3[18]), .sum(s3[18])); |
---|
1306 | mul_csa32 sc3_17_ ( .c(c2[16]), .b(c1[16]), .a(s2[17]), |
---|
1307 | .cout(c3[17]), .sum(s3[17])); |
---|
1308 | mul_csa32 sc3_16_ ( .c(c2[15]), .b(c1[15]), .a(s2[16]), |
---|
1309 | .cout(c3[16]), .sum(s3[16])); |
---|
1310 | mul_csa32 sc3_15_ ( .c(c2[14]), .b(c1[14]), .a(s2[15]), |
---|
1311 | .cout(c3[15]), .sum(s3[15])); |
---|
1312 | mul_csa32 sc1_82_ ( .c(a0c[81]), .b(a1c[65]), .a(a1s[66]), |
---|
1313 | .cout(c1[82]), .sum(s1[82])); |
---|
1314 | mul_csa32 acc_14_ ( .c(c2[13]), .sum(psum[14]), .cout(pcout[14]), |
---|
1315 | .a(ain[14]), .b(s2[14])); |
---|
1316 | mul_csa32 acc_13_ ( .c(c2[12]), .sum(psum[13]), .cout(pcout[13]), |
---|
1317 | .a(ain[13]), .b(s2[13])); |
---|
1318 | mul_csa32 acc_12_ ( .c(c2[11]), .sum(psum[12]), .cout(pcout[12]), |
---|
1319 | .a(ain[12]), .b(s2[12])); |
---|
1320 | mul_csa32 acc_11_ ( .c(c2[10]), .sum(psum[11]), .cout(pcout[11]), |
---|
1321 | .a(ain[11]), .b(s2[11])); |
---|
1322 | mul_csa32 acc_10_ ( .c(c2[9]), .sum(psum[10]), .cout(pcout[10]), |
---|
1323 | .a(ain[10]), .b(s2[10])); |
---|
1324 | mul_csa32 acc_9_ ( .c(c2[8]), .sum(psum[9]), .cout(pcout[9]), |
---|
1325 | .a(ain[9]), .b(s2[9])); |
---|
1326 | mul_csa32 acc_8_ ( .c(c2[7]), .sum(psum[8]), .cout(pcout[8]), |
---|
1327 | .a(ain[8]), .b(s2[8])); |
---|
1328 | mul_csa32 acc_7_ ( .c(c2[6]), .sum(psum[7]), .cout(pcout[7]), |
---|
1329 | .a(ain[7]), .b(s2[7])); |
---|
1330 | mul_csa32 acc_6_ ( .c(c2[5]), .sum(psum[6]), .cout(pcout[6]), |
---|
1331 | .a(ain[6]), .b(s2[6])); |
---|
1332 | mul_csa32 acc_5_ ( .c(c2[4]), .sum(psum[5]), .cout(pcout[5]), |
---|
1333 | .a(ain[5]), .b(s2[5])); |
---|
1334 | mul_csa32 sc2_67_ ( .c(a0c[66]), .b(c1[66]), .a(a0s[67]), |
---|
1335 | .cout(c2[67]), .sum(s2[67])); |
---|
1336 | mul_csa32 sc1_14_ ( .c(a0s[14]), .b(pc[45]), .a(ps[46]), |
---|
1337 | .cout(c1[14]), .sum(s1[14])); |
---|
1338 | mul_csa32 sc1_13_ ( .c(a0s[13]), .b(pc[44]), .a(ps[45]), |
---|
1339 | .cout(c1[13]), .sum(s1[13])); |
---|
1340 | mul_csa32 sc1_12_ ( .c(a0s[12]), .b(pc[43]), .a(ps[44]), |
---|
1341 | .cout(c1[12]), .sum(s1[12])); |
---|
1342 | mul_csa32 sc1_11_ ( .c(a0s[11]), .b(pc[42]), .a(ps[43]), |
---|
1343 | .cout(c1[11]), .sum(s1[11])); |
---|
1344 | mul_csa32 sc1_10_ ( .c(a0s[10]), .b(pc[41]), .a(ps[42]), |
---|
1345 | .cout(c1[10]), .sum(s1[10])); |
---|
1346 | mul_csa32 sc1_9_ ( .c(a0s[9]), .b(pc[40]), .a(ps[41]), .cout(c1[9]), |
---|
1347 | .sum(s1[9])); |
---|
1348 | mul_csa32 sc1_8_ ( .c(a0s[8]), .b(pc[39]), .a(ps[40]), .cout(c1[8]), |
---|
1349 | .sum(s1[8])); |
---|
1350 | mul_csa32 sc1_7_ ( .c(a0s[7]), .b(pc[38]), .a(ps[39]), .cout(c1[7]), |
---|
1351 | .sum(s1[7])); |
---|
1352 | mul_csa32 sc1_6_ ( .c(a0s[6]), .b(pc[37]), .a(ps[38]), .cout(c1[6]), |
---|
1353 | .sum(s1[6])); |
---|
1354 | mul_csa32 sc1_5_ ( .c(a0s[5]), .b(pc[36]), .a(ps[37]), .cout(c1[5]), |
---|
1355 | .sum(s1[5])); |
---|
1356 | mul_csa32 sc2_14_ ( .c(a0c[13]), .b(c1[13]), .a(s1[14]), |
---|
1357 | .cout(c2[14]), .sum(s2[14])); |
---|
1358 | mul_csa32 sc2_13_ ( .c(a0c[12]), .b(c1[12]), .a(s1[13]), |
---|
1359 | .cout(c2[13]), .sum(s2[13])); |
---|
1360 | mul_csa32 sc2_12_ ( .c(a0c[11]), .b(c1[11]), .a(s1[12]), |
---|
1361 | .cout(c2[12]), .sum(s2[12])); |
---|
1362 | mul_csa32 sc2_11_ ( .c(a0c[10]), .b(c1[10]), .a(s1[11]), |
---|
1363 | .cout(c2[11]), .sum(s2[11])); |
---|
1364 | mul_csa32 sc2_10_ ( .c(a0c[9]), .b(c1[9]), .a(s1[10]), |
---|
1365 | .cout(c2[10]), .sum(s2[10])); |
---|
1366 | mul_csa32 sc2_9_ ( .c(a0c[8]), .b(c1[8]), .a(s1[9]), .cout(c2[9]), |
---|
1367 | .sum(s2[9])); |
---|
1368 | mul_csa32 sc2_8_ ( .c(a0c[7]), .b(c1[7]), .a(s1[8]), .cout(c2[8]), |
---|
1369 | .sum(s2[8])); |
---|
1370 | mul_csa32 sc2_7_ ( .c(a0c[6]), .b(c1[6]), .a(s1[7]), .cout(c2[7]), |
---|
1371 | .sum(s2[7])); |
---|
1372 | mul_csa32 sc2_6_ ( .c(a0c[5]), .b(c1[5]), .a(s1[6]), .cout(c2[6]), |
---|
1373 | .sum(s2[6])); |
---|
1374 | mul_csa32 sc2_5_ ( .c(a0c[4]), .b(c1[4]), .a(s1[5]), .cout(c2[5]), |
---|
1375 | .sum(s2[5])); |
---|
1376 | mul_csa32 sc2_82_ ( .c(c2[81]), .b(c1[81]), .a(s1[82]), |
---|
1377 | .cout(c2[82]), .sum(s2[82])); |
---|
1378 | mul_csa32 sc1_4_ ( .c(a0s[4]), .b(pc[35]), .a(ps[36]), .cout(c1[4]), |
---|
1379 | .sum(s1[4])); |
---|
1380 | mul_csa32 sc1_3_ ( .c(a0s[3]), .b(pc[34]), .a(ps[35]), .cout(c1[3]), |
---|
1381 | .sum(s1[3])); |
---|
1382 | mul_csa32 sc1_2_ ( .c(a0s[2]), .b(pc[33]), .a(ps[34]), .cout(c1[2]), |
---|
1383 | .sum(s1[2])); |
---|
1384 | mul_csa32 sc1_1_ ( .c(a0s[1]), .b(pc[32]), .a(ps[33]), .cout(c1[1]), |
---|
1385 | .sum(s1[1])); |
---|
1386 | mul_csa32 sc2_66_ ( .c(a0c[65]), .b(a0s[66]), .a(a1c[49]), |
---|
1387 | .cout(c2[66]), .sum(s2[66])); |
---|
1388 | mul_csa32 sc2_65_ ( .c(a0c[64]), .b(a0s[65]), .a(a1c[48]), |
---|
1389 | .cout(c2[65]), .sum(s2[65])); |
---|
1390 | mul_csa32 sc2_64_ ( .c(a0c[63]), .b(a0s[64]), .a(a1c[47]), |
---|
1391 | .cout(c2[64]), .sum(s2[64])); |
---|
1392 | mul_csa32 sc2_63_ ( .c(a0c[62]), .b(a0s[63]), .a(a1c[46]), |
---|
1393 | .cout(c2[63]), .sum(s2[63])); |
---|
1394 | mul_csa32 sc2_62_ ( .c(a0c[61]), .b(a0s[62]), .a(a1c[45]), |
---|
1395 | .cout(c2[62]), .sum(s2[62])); |
---|
1396 | mul_csa32 sc2_61_ ( .c(a0c[60]), .b(a0s[61]), .a(a1c[44]), |
---|
1397 | .cout(c2[61]), .sum(s2[61])); |
---|
1398 | mul_csa32 sc2_60_ ( .c(a0c[59]), .b(a0s[60]), .a(a1c[43]), |
---|
1399 | .cout(c2[60]), .sum(s2[60])); |
---|
1400 | mul_csa32 sc2_59_ ( .c(a0c[58]), .b(a0s[59]), .a(a1c[42]), |
---|
1401 | .cout(c2[59]), .sum(s2[59])); |
---|
1402 | mul_csa32 sc2_58_ ( .c(a0c[57]), .b(a0s[58]), .a(a1c[41]), |
---|
1403 | .cout(c2[58]), .sum(s2[58])); |
---|
1404 | mul_csa32 sc2_57_ ( .c(a0c[56]), .b(a0s[57]), .a(a1c[40]), |
---|
1405 | .cout(c2[57]), .sum(s2[57])); |
---|
1406 | mul_csa32 sc2_56_ ( .c(a0c[55]), .b(a0s[56]), .a(a1c[39]), |
---|
1407 | .cout(c2[56]), .sum(s2[56])); |
---|
1408 | mul_csa32 sc2_55_ ( .c(a0c[54]), .b(a0s[55]), .a(a1c[38]), |
---|
1409 | .cout(c2[55]), .sum(s2[55])); |
---|
1410 | mul_csa32 sc2_54_ ( .c(a0c[53]), .b(a0s[54]), .a(a1c[37]), |
---|
1411 | .cout(c2[54]), .sum(s2[54])); |
---|
1412 | mul_csa32 sc2_53_ ( .c(a0c[52]), .b(a0s[53]), .a(a1c[36]), |
---|
1413 | .cout(c2[53]), .sum(s2[53])); |
---|
1414 | mul_csa32 sc2_52_ ( .c(a0c[51]), .b(a0s[52]), .a(a1c[35]), |
---|
1415 | .cout(c2[52]), .sum(s2[52])); |
---|
1416 | mul_csa32 sc2_51_ ( .c(a0c[50]), .b(a0s[51]), .a(a1c[34]), |
---|
1417 | .cout(c2[51]), .sum(s2[51])); |
---|
1418 | mul_csa32 sc2_50_ ( .c(a0c[49]), .b(a0s[50]), .a(a1c[33]), |
---|
1419 | .cout(c2[50]), .sum(s2[50])); |
---|
1420 | mul_csa32 sc2_49_ ( .c(a0c[48]), .b(a0s[49]), .a(a1c[32]), |
---|
1421 | .cout(c2[49]), .sum(s2[49])); |
---|
1422 | mul_csa32 sc2_48_ ( .c(a0c[47]), .b(a0s[48]), .a(a1c[31]), |
---|
1423 | .cout(c2[48]), .sum(s2[48])); |
---|
1424 | mul_csa32 sc2_47_ ( .c(a0c[46]), .b(a0s[47]), .a(a1c[30]), |
---|
1425 | .cout(c2[47]), .sum(s2[47])); |
---|
1426 | mul_csa32 sc2_46_ ( .c(a0c[45]), .b(a0s[46]), .a(a1c[29]), |
---|
1427 | .cout(c2[46]), .sum(s2[46])); |
---|
1428 | mul_csa32 sc2_45_ ( .c(a0c[44]), .b(a0s[45]), .a(a1c[28]), |
---|
1429 | .cout(c2[45]), .sum(s2[45])); |
---|
1430 | mul_csa32 sc2_44_ ( .c(a0c[43]), .b(a0s[44]), .a(a1c[27]), |
---|
1431 | .cout(c2[44]), .sum(s2[44])); |
---|
1432 | mul_csa32 sc2_43_ ( .c(a0c[42]), .b(a0s[43]), .a(a1c[26]), |
---|
1433 | .cout(c2[43]), .sum(s2[43])); |
---|
1434 | mul_csa32 sc2_42_ ( .c(a0c[41]), .b(a0s[42]), .a(a1c[25]), |
---|
1435 | .cout(c2[42]), .sum(s2[42])); |
---|
1436 | mul_csa32 sc2_41_ ( .c(a0c[40]), .b(a0s[41]), .a(a1c[24]), |
---|
1437 | .cout(c2[41]), .sum(s2[41])); |
---|
1438 | mul_csa32 sc2_40_ ( .c(a0c[39]), .b(a0s[40]), .a(a1c[23]), |
---|
1439 | .cout(c2[40]), .sum(s2[40])); |
---|
1440 | mul_csa32 sc2_39_ ( .c(a0c[38]), .b(a0s[39]), .a(a1c[22]), |
---|
1441 | .cout(c2[39]), .sum(s2[39])); |
---|
1442 | mul_csa32 sc2_38_ ( .c(a0c[37]), .b(a0s[38]), .a(a1c[21]), |
---|
1443 | .cout(c2[38]), .sum(s2[38])); |
---|
1444 | mul_csa32 sc2_37_ ( .c(a0c[36]), .b(a0s[37]), .a(a1c[20]), |
---|
1445 | .cout(c2[37]), .sum(s2[37])); |
---|
1446 | mul_csa32 sc2_36_ ( .c(a0c[35]), .b(a0s[36]), .a(a1c[19]), |
---|
1447 | .cout(c2[36]), .sum(s2[36])); |
---|
1448 | mul_csa32 sc2_35_ ( .c(a0c[34]), .b(a0s[35]), .a(a1c[18]), |
---|
1449 | .cout(c2[35]), .sum(s2[35])); |
---|
1450 | mul_csa32 sc2_34_ ( .c(a0c[33]), .b(a0s[34]), .a(a1c[17]), |
---|
1451 | .cout(c2[34]), .sum(s2[34])); |
---|
1452 | mul_csa32 sc2_33_ ( .c(a0c[32]), .b(a0s[33]), .a(a1c[16]), |
---|
1453 | .cout(c2[33]), .sum(s2[33])); |
---|
1454 | mul_csa32 sc2_32_ ( .c(a0c[31]), .b(a0s[32]), .a(a1c[15]), |
---|
1455 | .cout(c2[32]), .sum(s2[32])); |
---|
1456 | mul_csa32 sc2_31_ ( .c(a0c[30]), .b(a0s[31]), .a(a1c[14]), |
---|
1457 | .cout(c2[31]), .sum(s2[31])); |
---|
1458 | mul_csa32 sc2_30_ ( .c(a0c[29]), .b(a0s[30]), .a(a1c[13]), |
---|
1459 | .cout(c2[30]), .sum(s2[30])); |
---|
1460 | mul_csa32 sc2_29_ ( .c(a0c[28]), .b(a0s[29]), .a(a1c[12]), |
---|
1461 | .cout(c2[29]), .sum(s2[29])); |
---|
1462 | mul_csa32 sc2_28_ ( .c(a0c[27]), .b(a0s[28]), .a(a1c[11]), |
---|
1463 | .cout(c2[28]), .sum(s2[28])); |
---|
1464 | mul_csa32 sc2_27_ ( .c(a0c[26]), .b(a0s[27]), .a(a1c[10]), |
---|
1465 | .cout(c2[27]), .sum(s2[27])); |
---|
1466 | mul_csa32 sc2_26_ ( .c(a0c[25]), .b(a0s[26]), .a(a1c[9]), |
---|
1467 | .cout(c2[26]), .sum(s2[26])); |
---|
1468 | mul_csa32 sc2_25_ ( .c(a0c[24]), .b(a0s[25]), .a(a1c[8]), |
---|
1469 | .cout(c2[25]), .sum(s2[25])); |
---|
1470 | mul_csa32 sc2_24_ ( .c(a0c[23]), .b(a0s[24]), .a(a1c[7]), |
---|
1471 | .cout(c2[24]), .sum(s2[24])); |
---|
1472 | mul_csa32 sc2_23_ ( .c(a0c[22]), .b(a0s[23]), .a(a1c[6]), |
---|
1473 | .cout(c2[23]), .sum(s2[23])); |
---|
1474 | mul_csa32 sc2_22_ ( .c(a0c[21]), .b(a0s[22]), .a(a1c[5]), |
---|
1475 | .cout(c2[22]), .sum(s2[22])); |
---|
1476 | mul_csa32 sc2_21_ ( .c(a0c[20]), .b(a0s[21]), .a(a1c[4]), |
---|
1477 | .cout(c2[21]), .sum(s2[21])); |
---|
1478 | mul_csa32 sc2_20_ ( .c(a0c[19]), .b(a0s[20]), .a(1'b0), |
---|
1479 | .cout(c2[20]), .sum(s2[20])); |
---|
1480 | mul_csa32 sc1_66_ ( .c(a1s[50]), .b(pc[97]), .a(ps[98]), |
---|
1481 | .cout(c1[66]), .sum(s1[66])); |
---|
1482 | mul_csa32 sc1_65_ ( .c(a1s[49]), .b(pc[96]), .a(ps[97]), |
---|
1483 | .cout(c1[65]), .sum(s1[65])); |
---|
1484 | mul_csa32 sc1_64_ ( .c(a1s[48]), .b(pc[95]), .a(ps[96]), |
---|
1485 | .cout(c1[64]), .sum(s1[64])); |
---|
1486 | mul_csa32 sc1_63_ ( .c(a1s[47]), .b(pc[94]), .a(ps[95]), |
---|
1487 | .cout(c1[63]), .sum(s1[63])); |
---|
1488 | mul_csa32 sc1_62_ ( .c(a1s[46]), .b(pc[93]), .a(ps[94]), |
---|
1489 | .cout(c1[62]), .sum(s1[62])); |
---|
1490 | mul_csa32 sc1_61_ ( .c(a1s[45]), .b(pc[92]), .a(ps[93]), |
---|
1491 | .cout(c1[61]), .sum(s1[61])); |
---|
1492 | mul_csa32 sc1_60_ ( .c(a1s[44]), .b(pc[91]), .a(ps[92]), |
---|
1493 | .cout(c1[60]), .sum(s1[60])); |
---|
1494 | mul_csa32 sc1_59_ ( .c(a1s[43]), .b(pc[90]), .a(ps[91]), |
---|
1495 | .cout(c1[59]), .sum(s1[59])); |
---|
1496 | mul_csa32 sc1_58_ ( .c(a1s[42]), .b(pc[89]), .a(ps[90]), |
---|
1497 | .cout(c1[58]), .sum(s1[58])); |
---|
1498 | mul_csa32 sc1_57_ ( .c(a1s[41]), .b(pc[88]), .a(ps[89]), |
---|
1499 | .cout(c1[57]), .sum(s1[57])); |
---|
1500 | mul_csa32 sc1_56_ ( .c(a1s[40]), .b(pc[87]), .a(ps[88]), |
---|
1501 | .cout(c1[56]), .sum(s1[56])); |
---|
1502 | mul_csa32 sc1_55_ ( .c(a1s[39]), .b(pc[86]), .a(ps[87]), |
---|
1503 | .cout(c1[55]), .sum(s1[55])); |
---|
1504 | mul_csa32 sc1_54_ ( .c(a1s[38]), .b(pc[85]), .a(ps[86]), |
---|
1505 | .cout(c1[54]), .sum(s1[54])); |
---|
1506 | mul_csa32 sc1_53_ ( .c(a1s[37]), .b(pc[84]), .a(ps[85]), |
---|
1507 | .cout(c1[53]), .sum(s1[53])); |
---|
1508 | mul_csa32 sc1_52_ ( .c(a1s[36]), .b(pc[83]), .a(ps[84]), |
---|
1509 | .cout(c1[52]), .sum(s1[52])); |
---|
1510 | mul_csa32 sc1_51_ ( .c(a1s[35]), .b(pc[82]), .a(ps[83]), |
---|
1511 | .cout(c1[51]), .sum(s1[51])); |
---|
1512 | mul_csa32 sc1_50_ ( .c(a1s[34]), .b(pc[81]), .a(ps[82]), |
---|
1513 | .cout(c1[50]), .sum(s1[50])); |
---|
1514 | mul_csa32 sc1_49_ ( .c(a1s[33]), .b(pc[80]), .a(ps[81]), |
---|
1515 | .cout(c1[49]), .sum(s1[49])); |
---|
1516 | mul_csa32 sc1_48_ ( .c(a1s[32]), .b(pc[79]), .a(ps[80]), |
---|
1517 | .cout(c1[48]), .sum(s1[48])); |
---|
1518 | mul_csa32 sc1_47_ ( .c(a1s[31]), .b(pc[78]), .a(ps[79]), |
---|
1519 | .cout(c1[47]), .sum(s1[47])); |
---|
1520 | mul_csa32 sc1_46_ ( .c(a1s[30]), .b(pc[77]), .a(ps[78]), |
---|
1521 | .cout(c1[46]), .sum(s1[46])); |
---|
1522 | mul_csa32 sc1_45_ ( .c(a1s[29]), .b(pc[76]), .a(ps[77]), |
---|
1523 | .cout(c1[45]), .sum(s1[45])); |
---|
1524 | mul_csa32 sc1_44_ ( .c(a1s[28]), .b(pc[75]), .a(ps[76]), |
---|
1525 | .cout(c1[44]), .sum(s1[44])); |
---|
1526 | mul_csa32 sc1_43_ ( .c(a1s[27]), .b(pc[74]), .a(ps[75]), |
---|
1527 | .cout(c1[43]), .sum(s1[43])); |
---|
1528 | mul_csa32 sc1_42_ ( .c(a1s[26]), .b(pc[73]), .a(ps[74]), |
---|
1529 | .cout(c1[42]), .sum(s1[42])); |
---|
1530 | mul_csa32 sc1_41_ ( .c(a1s[25]), .b(pc[72]), .a(ps[73]), |
---|
1531 | .cout(c1[41]), .sum(s1[41])); |
---|
1532 | mul_csa32 sc1_40_ ( .c(a1s[24]), .b(pc[71]), .a(ps[72]), |
---|
1533 | .cout(c1[40]), .sum(s1[40])); |
---|
1534 | mul_csa32 sc1_39_ ( .c(a1s[23]), .b(pc[70]), .a(ps[71]), |
---|
1535 | .cout(c1[39]), .sum(s1[39])); |
---|
1536 | mul_csa32 sc1_38_ ( .c(a1s[22]), .b(pc[69]), .a(ps[70]), |
---|
1537 | .cout(c1[38]), .sum(s1[38])); |
---|
1538 | mul_csa32 sc1_37_ ( .c(a1s[21]), .b(pc[68]), .a(ps[69]), |
---|
1539 | .cout(c1[37]), .sum(s1[37])); |
---|
1540 | mul_csa32 sc1_36_ ( .c(a1s[20]), .b(pc[67]), .a(ps[68]), |
---|
1541 | .cout(c1[36]), .sum(s1[36])); |
---|
1542 | mul_csa32 sc1_35_ ( .c(a1s[19]), .b(pc[66]), .a(ps[67]), |
---|
1543 | .cout(c1[35]), .sum(s1[35])); |
---|
1544 | mul_csa32 sc1_34_ ( .c(a1s[18]), .b(pc[65]), .a(ps[66]), |
---|
1545 | .cout(c1[34]), .sum(s1[34])); |
---|
1546 | mul_csa32 sc1_33_ ( .c(a1s[17]), .b(pc[64]), .a(ps[65]), |
---|
1547 | .cout(c1[33]), .sum(s1[33])); |
---|
1548 | mul_csa32 sc1_32_ ( .c(a1s[16]), .b(pc[63]), .a(ps[64]), |
---|
1549 | .cout(c1[32]), .sum(s1[32])); |
---|
1550 | mul_csa32 sc1_31_ ( .c(a1s[15]), .b(pc[62]), .a(ps[63]), |
---|
1551 | .cout(c1[31]), .sum(s1[31])); |
---|
1552 | mul_csa32 sc1_30_ ( .c(a1s[14]), .b(pc[61]), .a(ps[62]), |
---|
1553 | .cout(c1[30]), .sum(s1[30])); |
---|
1554 | mul_csa32 sc1_29_ ( .c(a1s[13]), .b(pc[60]), .a(ps[61]), |
---|
1555 | .cout(c1[29]), .sum(s1[29])); |
---|
1556 | mul_csa32 sc1_28_ ( .c(a1s[12]), .b(pc[59]), .a(ps[60]), |
---|
1557 | .cout(c1[28]), .sum(s1[28])); |
---|
1558 | mul_csa32 sc1_27_ ( .c(a1s[11]), .b(pc[58]), .a(ps[59]), |
---|
1559 | .cout(c1[27]), .sum(s1[27])); |
---|
1560 | mul_csa32 sc1_26_ ( .c(a1s[10]), .b(pc[57]), .a(ps[58]), |
---|
1561 | .cout(c1[26]), .sum(s1[26])); |
---|
1562 | mul_csa32 sc1_25_ ( .c(a1s[9]), .b(pc[56]), .a(ps[57]), |
---|
1563 | .cout(c1[25]), .sum(s1[25])); |
---|
1564 | mul_csa32 sc1_24_ ( .c(a1s[8]), .b(pc[55]), .a(ps[56]), |
---|
1565 | .cout(c1[24]), .sum(s1[24])); |
---|
1566 | mul_csa32 sc1_23_ ( .c(a1s[7]), .b(pc[54]), .a(ps[55]), |
---|
1567 | .cout(c1[23]), .sum(s1[23])); |
---|
1568 | mul_csa32 sc1_22_ ( .c(a1s[6]), .b(pc[53]), .a(ps[54]), |
---|
1569 | .cout(c1[22]), .sum(s1[22])); |
---|
1570 | mul_csa32 sc1_21_ ( .c(a1s[5]), .b(pc[52]), .a(ps[53]), |
---|
1571 | .cout(c1[21]), .sum(s1[21])); |
---|
1572 | mul_csa32 sc1_20_ ( .c(a1s[4]), .b(pc[51]), .a(ps[52]), |
---|
1573 | .cout(c1[20]), .sum(s1[20])); |
---|
1574 | mul_csa32 sc2_81_ ( .c(a0c[80]), .b(c1[80]), .a(s1[81]), |
---|
1575 | .cout(c2[81]), .sum(s2[81])); |
---|
1576 | mul_csa32 sc2_80_ ( .c(a0c[79]), .b(c1[79]), .a(s1[80]), |
---|
1577 | .cout(c2[80]), .sum(s2[80])); |
---|
1578 | mul_csa32 sc2_79_ ( .c(a0c[78]), .b(c1[78]), .a(s1[79]), |
---|
1579 | .cout(c2[79]), .sum(s2[79])); |
---|
1580 | mul_csa32 sc2_78_ ( .c(a0c[77]), .b(c1[77]), .a(s1[78]), |
---|
1581 | .cout(c2[78]), .sum(s2[78])); |
---|
1582 | mul_csa32 sc2_77_ ( .c(a0c[76]), .b(c1[76]), .a(s1[77]), |
---|
1583 | .cout(c2[77]), .sum(s2[77])); |
---|
1584 | mul_csa32 sc2_76_ ( .c(a0c[75]), .b(c1[75]), .a(s1[76]), |
---|
1585 | .cout(c2[76]), .sum(s2[76])); |
---|
1586 | mul_csa32 sc2_75_ ( .c(a0c[74]), .b(c1[74]), .a(s1[75]), |
---|
1587 | .cout(c2[75]), .sum(s2[75])); |
---|
1588 | mul_csa32 sc2_74_ ( .c(a0c[73]), .b(c1[73]), .a(s1[74]), |
---|
1589 | .cout(c2[74]), .sum(s2[74])); |
---|
1590 | mul_csa32 sc2_73_ ( .c(a0c[72]), .b(c1[72]), .a(s1[73]), |
---|
1591 | .cout(c2[73]), .sum(s2[73])); |
---|
1592 | mul_csa32 sc2_72_ ( .c(a0c[71]), .b(c1[71]), .a(s1[72]), |
---|
1593 | .cout(c2[72]), .sum(s2[72])); |
---|
1594 | mul_csa32 sc2_71_ ( .c(a0c[70]), .b(c1[70]), .a(s1[71]), |
---|
1595 | .cout(c2[71]), .sum(s2[71])); |
---|
1596 | mul_csa32 sc2_70_ ( .c(a0c[69]), .b(c1[69]), .a(s1[70]), |
---|
1597 | .cout(c2[70]), .sum(s2[70])); |
---|
1598 | mul_csa32 sc2_69_ ( .c(a0c[68]), .b(c1[68]), .a(s1[69]), |
---|
1599 | .cout(c2[69]), .sum(s2[69])); |
---|
1600 | mul_csa32 sc2_68_ ( .c(a0c[67]), .b(c1[67]), .a(s1[68]), |
---|
1601 | .cout(c2[68]), .sum(s2[68])); |
---|
1602 | mul_csa32 acc_19_ ( .c(c3[18]), .b(s3[19]), .a(ain[19]), |
---|
1603 | .cout(pcout[19]), .sum(psum[19])); |
---|
1604 | mul_csa32 acc_18_ ( .c(c3[17]), .b(s3[18]), .a(ain[18]), |
---|
1605 | .cout(pcout[18]), .sum(psum[18])); |
---|
1606 | mul_csa32 acc_17_ ( .c(c3[16]), .b(s3[17]), .a(ain[17]), |
---|
1607 | .cout(pcout[17]), .sum(psum[17])); |
---|
1608 | mul_csa32 acc_16_ ( .c(c3[15]), .b(s3[16]), .a(ain[16]), |
---|
1609 | .cout(pcout[16]), .sum(psum[16])); |
---|
1610 | mul_csa32 acc_15_ ( .c(1'b0), .b(s3[15]), .a(ain[15]), |
---|
1611 | .cout(pcout[15]), .sum(psum[15])); |
---|
1612 | mul_csa32 sc1_0_ ( .c(a0s[0]), .sum(s1[0]), .cout(c1[0]), |
---|
1613 | .a(ps[32]), .b(pc[31])); |
---|
1614 | mul_csa32 sc1_67_ ( .c(a1c[50]), .b(pc[98]), .a(a1s[51]), |
---|
1615 | .cout(c1[67]), .sum(s1[67])); |
---|
1616 | mul_ha acc_0_ ( .sum(psum[0]), .cout(pcout[0]), .a(ain[0]), |
---|
1617 | .b(s2[0])); |
---|
1618 | mul_ha sc3_98_ ( .sum(psum[98]), .cout(pcout[98]), .a(bot), |
---|
1619 | .b(a1c[81])); |
---|
1620 | mul_ha sc2_96_ ( .b(a1c[79]), .a(a1s[80]), .cout(c2[96]), |
---|
1621 | .sum(s2[96])); |
---|
1622 | mul_ha sc2_95_ ( .b(a1c[78]), .a(a1s[79]), .cout(c2[95]), |
---|
1623 | .sum(s2[95])); |
---|
1624 | mul_ha sc2_94_ ( .b(a1c[77]), .a(a1s[78]), .cout(c2[94]), |
---|
1625 | .sum(s2[94])); |
---|
1626 | mul_ha sc2_93_ ( .b(a1c[76]), .a(a1s[77]), .cout(c2[93]), |
---|
1627 | .sum(s2[93])); |
---|
1628 | mul_ha sc2_92_ ( .b(a1c[75]), .a(a1s[76]), .cout(c2[92]), |
---|
1629 | .sum(s2[92])); |
---|
1630 | mul_ha sc2_91_ ( .b(a1c[74]), .a(a1s[75]), .cout(c2[91]), |
---|
1631 | .sum(s2[91])); |
---|
1632 | mul_ha sc2_90_ ( .b(a1c[73]), .a(a1s[74]), .cout(c2[90]), |
---|
1633 | .sum(s2[90])); |
---|
1634 | mul_ha sc2_89_ ( .b(a1c[72]), .a(a1s[73]), .cout(c2[89]), |
---|
1635 | .sum(s2[89])); |
---|
1636 | mul_ha sc2_88_ ( .b(a1c[71]), .a(a1s[72]), .cout(c2[88]), |
---|
1637 | .sum(s2[88])); |
---|
1638 | mul_ha sc2_87_ ( .b(a1c[70]), .a(a1s[71]), .cout(c2[87]), |
---|
1639 | .sum(s2[87])); |
---|
1640 | mul_ha sc2_86_ ( .b(a1c[69]), .a(a1s[70]), .cout(c2[86]), |
---|
1641 | .sum(s2[86])); |
---|
1642 | mul_ha sc2_85_ ( .b(a1c[68]), .a(a1s[69]), .cout(c2[85]), |
---|
1643 | .sum(s2[85])); |
---|
1644 | mul_ha sc2_84_ ( .b(a1c[67]), .a(a1s[68]), .cout(c2[84]), |
---|
1645 | .sum(s2[84])); |
---|
1646 | mul_ha sc3_81_ ( .b(c2[80]), .a(s2[81]), .cout(c3[81]), |
---|
1647 | .sum(s3[81])); |
---|
1648 | mul_ha sc3_80_ ( .b(c2[79]), .a(s2[80]), .cout(c3[80]), |
---|
1649 | .sum(s3[80])); |
---|
1650 | mul_ha sc3_79_ ( .b(c2[78]), .a(s2[79]), .cout(c3[79]), |
---|
1651 | .sum(s3[79])); |
---|
1652 | mul_ha sc3_78_ ( .b(c2[77]), .a(s2[78]), .cout(c3[78]), |
---|
1653 | .sum(s3[78])); |
---|
1654 | mul_ha sc3_77_ ( .b(c2[76]), .a(s2[77]), .cout(c3[77]), |
---|
1655 | .sum(s3[77])); |
---|
1656 | mul_ha sc3_76_ ( .b(c2[75]), .a(s2[76]), .cout(c3[76]), |
---|
1657 | .sum(s3[76])); |
---|
1658 | mul_ha sc3_75_ ( .b(c2[74]), .a(s2[75]), .cout(c3[75]), |
---|
1659 | .sum(s3[75])); |
---|
1660 | mul_ha sc3_74_ ( .b(c2[73]), .a(s2[74]), .cout(c3[74]), |
---|
1661 | .sum(s3[74])); |
---|
1662 | mul_ha sc3_73_ ( .b(c2[72]), .a(s2[73]), .cout(c3[73]), |
---|
1663 | .sum(s3[73])); |
---|
1664 | mul_ha sc3_72_ ( .b(c2[71]), .a(s2[72]), .cout(c3[72]), |
---|
1665 | .sum(s3[72])); |
---|
1666 | mul_ha sc3_71_ ( .b(c2[70]), .a(s2[71]), .cout(c3[71]), |
---|
1667 | .sum(s3[71])); |
---|
1668 | mul_ha sc3_70_ ( .b(c2[69]), .a(s2[70]), .cout(c3[70]), |
---|
1669 | .sum(s3[70])); |
---|
1670 | mul_ha sc3_69_ ( .b(c2[68]), .a(s2[69]), .cout(c3[69]), |
---|
1671 | .sum(s3[69])); |
---|
1672 | mul_ha accx2 ( .sum(psumx2), .cout(pcoutx2), .a(ainx2), .b(s1x2)); |
---|
1673 | mul_ha sc2_4_ ( .sum(s2[4]), .cout(c2[4]), .a(s1[4]), .b(c1[3])); |
---|
1674 | mul_ha sc2_3_ ( .sum(s2[3]), .cout(c2[3]), .a(s1[3]), .b(c1[2])); |
---|
1675 | mul_ha sc2_2_ ( .sum(s2[2]), .cout(c2[2]), .a(s1[2]), .b(c1[1])); |
---|
1676 | mul_ha sc2_1_ ( .sum(s2[1]), .cout(c2[1]), .a(s1[1]), .b(c1[0])); |
---|
1677 | mul_ha sc2_0_ ( .sum(s2[0]), .cout(c2[0]), .a(s1[0]), .b(c1x2)); |
---|
1678 | mul_ha sc1x2 ( .sum(s1x2), .cout(c1x2), .a(ps[31]), .b(pc[30])); |
---|
1679 | |
---|
1680 | endmodule //mul_array2 |
---|
1681 | |
---|
1682 | module mul_csa32 (sum, cout, a, b, c); |
---|
1683 | |
---|
1684 | output sum, cout; |
---|
1685 | input a, b, c; |
---|
1686 | |
---|
1687 | wire x, y0, y1, y2; |
---|
1688 | |
---|
1689 | assign x = a ^ b; |
---|
1690 | assign sum = c ^ x; |
---|
1691 | |
---|
1692 | assign y0 = a & b ; |
---|
1693 | assign y1 = a & c ; |
---|
1694 | assign y2 = b & c ; |
---|
1695 | |
---|
1696 | assign cout = y0 | y1 | y2 ; |
---|
1697 | |
---|
1698 | endmodule //mul_csa32 |
---|
1699 | |
---|
1700 | module mul_csa42 (sum, carry, cout, a, b, c, d, cin); |
---|
1701 | |
---|
1702 | output sum, carry, cout; |
---|
1703 | input a, b, c, d, cin; |
---|
1704 | |
---|
1705 | wire x, y, z; |
---|
1706 | |
---|
1707 | assign x = a ^ b; |
---|
1708 | assign y = c ^ d; |
---|
1709 | assign z = x ^ y; |
---|
1710 | |
---|
1711 | assign sum = z ^ cin ; |
---|
1712 | |
---|
1713 | assign carry = (b & ~z) | (cin & z); |
---|
1714 | |
---|
1715 | assign cout = (d & ~y) | (a & y); |
---|
1716 | |
---|
1717 | endmodule // mul_csa42 |
---|
1718 | |
---|
1719 | module mul_ha ( cout, sum, a, b ); |
---|
1720 | output cout, sum; |
---|
1721 | input a, b; |
---|
1722 | |
---|
1723 | assign sum = a ^ b; |
---|
1724 | assign cout = a & b ; |
---|
1725 | |
---|
1726 | endmodule //mul_ha |
---|
1727 | |
---|
1728 | module mul_negen ( n0, n1, b ); |
---|
1729 | output n0, n1; |
---|
1730 | input [2:0] b; |
---|
1731 | |
---|
1732 | assign n0 = b[2] & b[1] & ~b[0] ; |
---|
1733 | assign n1 = b[2] & b[1] & b[0] ; |
---|
1734 | |
---|
1735 | endmodule //mul_negen |
---|
1736 | |
---|
1737 | module mul_ppgen3lsb4 (cout, p0_l, p1_l, sum, a, b0, b1 ); |
---|
1738 | |
---|
1739 | output p0_l, p1_l; |
---|
1740 | output [3:0] sum; |
---|
1741 | output [3:1] cout; |
---|
1742 | input [3:0] a; |
---|
1743 | input [2:0] b0; |
---|
1744 | input [2:0] b1; |
---|
1745 | |
---|
1746 | wire b0n, b0n_0, b0n_1, b1n_0, b1n_1; |
---|
1747 | wire p0_0, p0_1, p0_2, p0_3, p1_2, p1_3; |
---|
1748 | wire p0_l_0, p0_l_1, p0_l_2, p1_l_2; |
---|
1749 | |
---|
1750 | assign b0n = b0n_1 | (b0n_0 & p0_0) ; |
---|
1751 | assign sum[0] = b0n_0 ^ p0_0 ; |
---|
1752 | |
---|
1753 | mul_negen p0n ( .b(b0[2:0]), .n1(b0n_1), .n0(b0n_0)); |
---|
1754 | mul_negen p1n ( .b(b1[2:0]), .n1(b1n_1), .n0(b1n_0)); |
---|
1755 | mul_csa32 sc1_2_ ( .c(b1n_0), .sum(sum[2]), .cout(cout[2]), |
---|
1756 | .a(p0_2), .b(p1_2)); |
---|
1757 | mul_csa32 sc1_3_ ( .c(b1n_1), .sum(sum[3]), .cout(cout[3]), |
---|
1758 | .a(p0_3), .b(p1_3)); |
---|
1759 | mul_ha sc1_1_ ( .sum(sum[1]), .cout(cout[1]), .a(p0_1), |
---|
1760 | .b(b0n)); |
---|
1761 | mul_ppgen p0_3_ ( .pm1_l(p0_l_2), .p_l(p0_l), .b(b0[2:0]), .a(a[3]), |
---|
1762 | .z(p0_3)); |
---|
1763 | mul_ppgen p1_3_ ( .pm1_l(p1_l_2), .p_l(p1_l), .b(b1[2:0]), .a(a[1]), |
---|
1764 | .z(p1_3)); |
---|
1765 | mul_ppgen p0_2_ ( .pm1_l(p0_l_1), .p_l(p0_l_2), .b(b0[2:0]), |
---|
1766 | .a(a[2]), .z(p0_2)); |
---|
1767 | mul_ppgen p0_1_ ( .pm1_l(p0_l_0), .p_l(p0_l_1), .b(b0[2:0]), |
---|
1768 | .a(a[1]), .z(p0_1)); |
---|
1769 | mul_ppgen p0_0_ ( .pm1_l(1'b1), .p_l(p0_l_0), |
---|
1770 | .b(b0[2:0]), .a(a[0]), .z(p0_0)); |
---|
1771 | mul_ppgen p1_2_ ( .pm1_l(1'b1), .p_l(p1_l_2), |
---|
1772 | .b(b1[2:0]), .a(a[0]), .z(p1_2)); |
---|
1773 | |
---|
1774 | endmodule // mul_ppgen3lsb4 |
---|
1775 | |
---|
1776 | module mul_ppgen3sign ( cout, sum, am1, am2, am3, am4, b0, b1, b2, |
---|
1777 | bot, head, p0m1_l, p1m1_l, p2m1_l ); |
---|
1778 | input am1, am2, am3, am4; |
---|
1779 | input bot, head, p0m1_l, p1m1_l, p2m1_l; |
---|
1780 | output [5:0] sum; |
---|
1781 | output [4:0] cout; |
---|
1782 | input [2:0] b0; |
---|
1783 | input [2:0] b2; |
---|
1784 | input [2:0] b1; |
---|
1785 | |
---|
1786 | wire net37, net42, net075, net088, net0117; |
---|
1787 | wire net47, net073, net38, net0118, net078, net8, net15, net43, net48, net35; |
---|
1788 | wire p2_l_67, p2_l_66, p2_l_65, p2_l_64; |
---|
1789 | wire p1_l_65, p1_l_64; |
---|
1790 | |
---|
1791 | assign sum[5] = bot & net075 ; |
---|
1792 | assign net0117 = head & net088 ; |
---|
1793 | assign net37 = ~net0117 ; |
---|
1794 | assign net42 = head ^ net088 ; |
---|
1795 | |
---|
1796 | mul_ppgensign p0_64_ ( .b(b0[2:0]), .z(net47), .p_l(net088), |
---|
1797 | .pm1_l(p0m1_l)); |
---|
1798 | mul_ppgensign p2_68_ ( .pm1_l(p2_l_67), .b(b2[2:0]), .z(net073), |
---|
1799 | .p_l(net075)); |
---|
1800 | mul_ppgensign p1_66_ ( .pm1_l(p1_l_65), .b(b1[2:0]), .z(net38), |
---|
1801 | .p_l(net0118)); |
---|
1802 | mul_ha sc1_68_ ( .b(net073), .a(1'b1), .cout(cout[4]), |
---|
1803 | .sum(sum[4])); |
---|
1804 | mul_ppgen p2_67_ ( .pm1_l(p2_l_66), .b(b2[2:0]), .a(am1), .z(net078), |
---|
1805 | .p_l(p2_l_67)); |
---|
1806 | mul_ppgen p2_66_ ( .pm1_l(p2_l_65), .b(b2[2:0]), .a(am2), .z(net8), |
---|
1807 | .p_l(p2_l_66)); |
---|
1808 | mul_ppgen p2_65_ ( .pm1_l(p2_l_64), .p_l(p2_l_65), .b(b2[2:0]), |
---|
1809 | .a(am3), .z(net15)); |
---|
1810 | mul_ppgen p1_65_ ( .pm1_l(p1_l_64), .p_l(p1_l_65), .b(b1[2:0]), |
---|
1811 | .a(am1), .z(net43)); |
---|
1812 | mul_ppgen p1_64_ ( .pm1_l(p1m1_l), .p_l(p1_l_64), .b(b1[2:0]), |
---|
1813 | .a(am2), .z(net48)); |
---|
1814 | mul_ppgen p2_64_ ( .pm1_l(p2m1_l), .p_l(p2_l_64), .b(b2[2:0]), |
---|
1815 | .a(am4), .z(net35)); |
---|
1816 | mul_csa32 sc1_67_ ( .c(net078), .b(net0117), .a(net0118), |
---|
1817 | .cout(cout[3]), .sum(sum[3])); |
---|
1818 | mul_csa32 sc1_66_ ( .c(net8), .b(net37), .a(net38), .cout(cout[2]), |
---|
1819 | .sum(sum[2])); |
---|
1820 | mul_csa32 sc1_65_ ( .c(net15), .b(net42), .a(net43), .cout(cout[1]), |
---|
1821 | .sum(sum[1])); |
---|
1822 | mul_csa32 sc1_64_ ( .c(net35), .b(net47), .a(net48), .cout(cout[0]), |
---|
1823 | .sum(sum[0])); |
---|
1824 | |
---|
1825 | endmodule //mul_ppgen3sign |
---|
1826 | |
---|
1827 | module mul_ppgen3 ( cout, p0_l, p1_l, p2_l, sum, am2, am4, |
---|
1828 | a, b0, b1, b2, p0m1_l, p1m1_l, p2m1_l ); |
---|
1829 | output cout, p0_l, p1_l, p2_l, sum; |
---|
1830 | input am2, am4; |
---|
1831 | input a, p0m1_l, p1m1_l, p2m1_l; |
---|
1832 | input [2:0] b0; |
---|
1833 | input [2:0] b2; |
---|
1834 | input [2:0] b1; |
---|
1835 | |
---|
1836 | wire net046, net32, net043; |
---|
1837 | |
---|
1838 | mul_csa32 sc1 ( .a(net046), .b(net32), .cout(cout), .sum(sum), |
---|
1839 | .c(net043)); |
---|
1840 | mul_ppgen p2 ( .pm1_l(p2m1_l), .p_l(p2_l), .b(b2[2:0]), .a(am4), |
---|
1841 | .z(net043)); |
---|
1842 | mul_ppgen p1 ( .pm1_l(p1m1_l), .p_l(p1_l), .b(b1[2:0]), .a(am2), |
---|
1843 | .z(net046)); |
---|
1844 | mul_ppgen p0 ( .pm1_l(p0m1_l), .p_l(p0_l), .b(b0[2:0]), .a(a), |
---|
1845 | .z(net32)); |
---|
1846 | |
---|
1847 | endmodule // mul_ppgen3 |
---|
1848 | |
---|
1849 | module mul_ppgenrow3 ( cout, sum, a, b0, b1, b2, bot, head ); |
---|
1850 | |
---|
1851 | output [68:1] cout; |
---|
1852 | output [69:0] sum; |
---|
1853 | input [63:0] a; |
---|
1854 | input [2:0] b2; |
---|
1855 | input [2:0] b0; |
---|
1856 | input [2:0] b1; |
---|
1857 | input bot, head; |
---|
1858 | |
---|
1859 | // Buses in the design |
---|
1860 | wire [63:4] p2_l; |
---|
1861 | wire [63:3] p1_l; |
---|
1862 | wire [63:3] p0_l; |
---|
1863 | |
---|
1864 | mul_ppgen3sign I2 ( .am4(a[60]), .am3(a[61]), .am2(a[62]), |
---|
1865 | .am1(a[63]), .p2m1_l(p2_l[63]), .p1m1_l(p1_l[63]), |
---|
1866 | .p0m1_l(p0_l[63]), .b2(b2[2:0]), .head(head), .bot(bot), |
---|
1867 | .sum(sum[69:64]), .cout(cout[68:64]), .b1(b1[2:0]), .b0(b0[2:0])); |
---|
1868 | mul_ppgen3 I1_63_ ( .p2_l(p2_l[63]), .b2(b2[2:0]), |
---|
1869 | .am2(a[61]), .a(a[63]), .p2m1_l(p2_l[62]), |
---|
1870 | .p1m1_l(p1_l[62]), .p0m1_l(p0_l[62]), .am4(a[59]), .sum(sum[63]), |
---|
1871 | .cout(cout[63]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[63]), |
---|
1872 | .p0_l(p0_l[63])); |
---|
1873 | mul_ppgen3 I1_62_ ( .p2_l(p2_l[62]), .b2(b2[2:0]), |
---|
1874 | .am2(a[60]), .a(a[62]), .p2m1_l(p2_l[61]), |
---|
1875 | .p1m1_l(p1_l[61]), .p0m1_l(p0_l[61]), .am4(a[58]), .sum(sum[62]), |
---|
1876 | .cout(cout[62]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[62]), |
---|
1877 | .p0_l(p0_l[62])); |
---|
1878 | mul_ppgen3 I1_61_ ( .p2_l(p2_l[61]), .b2(b2[2:0]), |
---|
1879 | .am2(a[59]), .a(a[61]), .p2m1_l(p2_l[60]), |
---|
1880 | .p1m1_l(p1_l[60]), .p0m1_l(p0_l[60]), .am4(a[57]), .sum(sum[61]), |
---|
1881 | .cout(cout[61]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[61]), |
---|
1882 | .p0_l(p0_l[61])); |
---|
1883 | mul_ppgen3 I1_60_ ( .p2_l(p2_l[60]), .b2(b2[2:0]), |
---|
1884 | .am2(a[58]), .a(a[60]), .p2m1_l(p2_l[59]), |
---|
1885 | .p1m1_l(p1_l[59]), .p0m1_l(p0_l[59]), .am4(a[56]), .sum(sum[60]), |
---|
1886 | .cout(cout[60]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[60]), |
---|
1887 | .p0_l(p0_l[60])); |
---|
1888 | mul_ppgen3 I1_59_ ( .p2_l(p2_l[59]), .b2(b2[2:0]), |
---|
1889 | .am2(a[57]), .a(a[59]), .p2m1_l(p2_l[58]), |
---|
1890 | .p1m1_l(p1_l[58]), .p0m1_l(p0_l[58]), .am4(a[55]), .sum(sum[59]), |
---|
1891 | .cout(cout[59]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[59]), |
---|
1892 | .p0_l(p0_l[59])); |
---|
1893 | mul_ppgen3 I1_58_ ( .p2_l(p2_l[58]), .b2(b2[2:0]), |
---|
1894 | .am2(a[56]), .a(a[58]), .p2m1_l(p2_l[57]), |
---|
1895 | .p1m1_l(p1_l[57]), .p0m1_l(p0_l[57]), .am4(a[54]), .sum(sum[58]), |
---|
1896 | .cout(cout[58]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[58]), |
---|
1897 | .p0_l(p0_l[58])); |
---|
1898 | mul_ppgen3 I1_57_ ( .p2_l(p2_l[57]), .b2(b2[2:0]), |
---|
1899 | .am2(a[55]), .a(a[57]), .p2m1_l(p2_l[56]), |
---|
1900 | .p1m1_l(p1_l[56]), .p0m1_l(p0_l[56]), .am4(a[53]), .sum(sum[57]), |
---|
1901 | .cout(cout[57]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[57]), |
---|
1902 | .p0_l(p0_l[57])); |
---|
1903 | mul_ppgen3 I1_56_ ( .p2_l(p2_l[56]), .b2(b2[2:0]), |
---|
1904 | .am2(a[54]), .a(a[56]), .p2m1_l(p2_l[55]), |
---|
1905 | .p1m1_l(p1_l[55]), .p0m1_l(p0_l[55]), .am4(a[52]), .sum(sum[56]), |
---|
1906 | .cout(cout[56]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[56]), |
---|
1907 | .p0_l(p0_l[56])); |
---|
1908 | mul_ppgen3 I1_55_ ( .p2_l(p2_l[55]), .b2(b2[2:0]), |
---|
1909 | .am2(a[53]), .a(a[55]), .p2m1_l(p2_l[54]), |
---|
1910 | .p1m1_l(p1_l[54]), .p0m1_l(p0_l[54]), .am4(a[51]), .sum(sum[55]), |
---|
1911 | .cout(cout[55]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[55]), |
---|
1912 | .p0_l(p0_l[55])); |
---|
1913 | mul_ppgen3 I1_54_ ( .p2_l(p2_l[54]), .b2(b2[2:0]), |
---|
1914 | .am2(a[52]), .a(a[54]), .p2m1_l(p2_l[53]), |
---|
1915 | .p1m1_l(p1_l[53]), .p0m1_l(p0_l[53]), .am4(a[50]), .sum(sum[54]), |
---|
1916 | .cout(cout[54]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[54]), |
---|
1917 | .p0_l(p0_l[54])); |
---|
1918 | mul_ppgen3 I1_53_ ( .p2_l(p2_l[53]), .b2(b2[2:0]), |
---|
1919 | .am2(a[51]), .a(a[53]), .p2m1_l(p2_l[52]), |
---|
1920 | .p1m1_l(p1_l[52]), .p0m1_l(p0_l[52]), .am4(a[49]), .sum(sum[53]), |
---|
1921 | .cout(cout[53]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[53]), |
---|
1922 | .p0_l(p0_l[53])); |
---|
1923 | mul_ppgen3 I1_52_ ( .p2_l(p2_l[52]), .b2(b2[2:0]), |
---|
1924 | .am2(a[50]), .a(a[52]), .p2m1_l(p2_l[51]), |
---|
1925 | .p1m1_l(p1_l[51]), .p0m1_l(p0_l[51]), .am4(a[48]), .sum(sum[52]), |
---|
1926 | .cout(cout[52]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[52]), |
---|
1927 | .p0_l(p0_l[52])); |
---|
1928 | mul_ppgen3 I1_51_ ( .p2_l(p2_l[51]), .b2(b2[2:0]), |
---|
1929 | .am2(a[49]), .a(a[51]), .p2m1_l(p2_l[50]), |
---|
1930 | .p1m1_l(p1_l[50]), .p0m1_l(p0_l[50]), .am4(a[47]), .sum(sum[51]), |
---|
1931 | .cout(cout[51]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[51]), |
---|
1932 | .p0_l(p0_l[51])); |
---|
1933 | mul_ppgen3 I1_50_ ( .p2_l(p2_l[50]), .b2(b2[2:0]), |
---|
1934 | .am2(a[48]), .a(a[50]), .p2m1_l(p2_l[49]), |
---|
1935 | .p1m1_l(p1_l[49]), .p0m1_l(p0_l[49]), .am4(a[46]), .sum(sum[50]), |
---|
1936 | .cout(cout[50]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[50]), |
---|
1937 | .p0_l(p0_l[50])); |
---|
1938 | mul_ppgen3 I1_49_ ( .p2_l(p2_l[49]), .b2(b2[2:0]), |
---|
1939 | .am2(a[47]), .a(a[49]), .p2m1_l(p2_l[48]), |
---|
1940 | .p1m1_l(p1_l[48]), .p0m1_l(p0_l[48]), .am4(a[45]), .sum(sum[49]), |
---|
1941 | .cout(cout[49]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[49]), |
---|
1942 | .p0_l(p0_l[49])); |
---|
1943 | mul_ppgen3 I1_48_ ( .p2_l(p2_l[48]), .b2(b2[2:0]), |
---|
1944 | .am2(a[46]), .a(a[48]), .p2m1_l(p2_l[47]), |
---|
1945 | .p1m1_l(p1_l[47]), .p0m1_l(p0_l[47]), .am4(a[44]), .sum(sum[48]), |
---|
1946 | .cout(cout[48]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[48]), |
---|
1947 | .p0_l(p0_l[48])); |
---|
1948 | mul_ppgen3 I1_47_ ( .p2_l(p2_l[47]), .b2(b2[2:0]), |
---|
1949 | .am2(a[45]), .a(a[47]), .p2m1_l(p2_l[46]), |
---|
1950 | .p1m1_l(p1_l[46]), .p0m1_l(p0_l[46]), .am4(a[43]), .sum(sum[47]), |
---|
1951 | .cout(cout[47]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[47]), |
---|
1952 | .p0_l(p0_l[47])); |
---|
1953 | mul_ppgen3 I1_46_ ( .p2_l(p2_l[46]), .b2(b2[2:0]), |
---|
1954 | .am2(a[44]), .a(a[46]), .p2m1_l(p2_l[45]), |
---|
1955 | .p1m1_l(p1_l[45]), .p0m1_l(p0_l[45]), .am4(a[42]), .sum(sum[46]), |
---|
1956 | .cout(cout[46]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[46]), |
---|
1957 | .p0_l(p0_l[46])); |
---|
1958 | mul_ppgen3 I1_45_ ( .p2_l(p2_l[45]), .b2(b2[2:0]), |
---|
1959 | .am2(a[43]), .a(a[45]), .p2m1_l(p2_l[44]), |
---|
1960 | .p1m1_l(p1_l[44]), .p0m1_l(p0_l[44]), .am4(a[41]), .sum(sum[45]), |
---|
1961 | .cout(cout[45]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[45]), |
---|
1962 | .p0_l(p0_l[45])); |
---|
1963 | mul_ppgen3 I1_44_ ( .p2_l(p2_l[44]), .b2(b2[2:0]), |
---|
1964 | .am2(a[42]), .a(a[44]), .p2m1_l(p2_l[43]), |
---|
1965 | .p1m1_l(p1_l[43]), .p0m1_l(p0_l[43]), .am4(a[40]), .sum(sum[44]), |
---|
1966 | .cout(cout[44]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[44]), |
---|
1967 | .p0_l(p0_l[44])); |
---|
1968 | mul_ppgen3 I1_43_ ( .p2_l(p2_l[43]), .b2(b2[2:0]), |
---|
1969 | .am2(a[41]), .a(a[43]), .p2m1_l(p2_l[42]), |
---|
1970 | .p1m1_l(p1_l[42]), .p0m1_l(p0_l[42]), .am4(a[39]), .sum(sum[43]), |
---|
1971 | .cout(cout[43]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[43]), |
---|
1972 | .p0_l(p0_l[43])); |
---|
1973 | mul_ppgen3 I1_42_ ( .p2_l(p2_l[42]), .b2(b2[2:0]), |
---|
1974 | .am2(a[40]), .a(a[42]), .p2m1_l(p2_l[41]), |
---|
1975 | .p1m1_l(p1_l[41]), .p0m1_l(p0_l[41]), .am4(a[38]), .sum(sum[42]), |
---|
1976 | .cout(cout[42]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[42]), |
---|
1977 | .p0_l(p0_l[42])); |
---|
1978 | mul_ppgen3 I1_41_ ( .p2_l(p2_l[41]), .b2(b2[2:0]), |
---|
1979 | .am2(a[39]), .a(a[41]), .p2m1_l(p2_l[40]), |
---|
1980 | .p1m1_l(p1_l[40]), .p0m1_l(p0_l[40]), .am4(a[37]), .sum(sum[41]), |
---|
1981 | .cout(cout[41]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[41]), |
---|
1982 | .p0_l(p0_l[41])); |
---|
1983 | mul_ppgen3 I1_40_ ( .p2_l(p2_l[40]), .b2(b2[2:0]), |
---|
1984 | .am2(a[38]), .a(a[40]), .p2m1_l(p2_l[39]), |
---|
1985 | .p1m1_l(p1_l[39]), .p0m1_l(p0_l[39]), .am4(a[36]), .sum(sum[40]), |
---|
1986 | .cout(cout[40]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[40]), |
---|
1987 | .p0_l(p0_l[40])); |
---|
1988 | mul_ppgen3 I1_39_ ( .p2_l(p2_l[39]), .b2(b2[2:0]), |
---|
1989 | .am2(a[37]), .a(a[39]), .p2m1_l(p2_l[38]), |
---|
1990 | .p1m1_l(p1_l[38]), .p0m1_l(p0_l[38]), .am4(a[35]), .sum(sum[39]), |
---|
1991 | .cout(cout[39]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[39]), |
---|
1992 | .p0_l(p0_l[39])); |
---|
1993 | mul_ppgen3 I1_38_ ( .p2_l(p2_l[38]), .b2(b2[2:0]), |
---|
1994 | .am2(a[36]), .a(a[38]), .p2m1_l(p2_l[37]), |
---|
1995 | .p1m1_l(p1_l[37]), .p0m1_l(p0_l[37]), .am4(a[34]), .sum(sum[38]), |
---|
1996 | .cout(cout[38]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[38]), |
---|
1997 | .p0_l(p0_l[38])); |
---|
1998 | mul_ppgen3 I1_37_ ( .p2_l(p2_l[37]), .b2(b2[2:0]), |
---|
1999 | .am2(a[35]), .a(a[37]), .p2m1_l(p2_l[36]), |
---|
2000 | .p1m1_l(p1_l[36]), .p0m1_l(p0_l[36]), .am4(a[33]), .sum(sum[37]), |
---|
2001 | .cout(cout[37]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[37]), |
---|
2002 | .p0_l(p0_l[37])); |
---|
2003 | mul_ppgen3 I1_36_ ( .p2_l(p2_l[36]), .b2(b2[2:0]), |
---|
2004 | .am2(a[34]), .a(a[36]), .p2m1_l(p2_l[35]), |
---|
2005 | .p1m1_l(p1_l[35]), .p0m1_l(p0_l[35]), .am4(a[32]), .sum(sum[36]), |
---|
2006 | .cout(cout[36]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[36]), |
---|
2007 | .p0_l(p0_l[36])); |
---|
2008 | mul_ppgen3 I1_35_ ( .p2_l(p2_l[35]), .b2(b2[2:0]), |
---|
2009 | .am2(a[33]), .a(a[35]), .p2m1_l(p2_l[34]), |
---|
2010 | .p1m1_l(p1_l[34]), .p0m1_l(p0_l[34]), .am4(a[31]), .sum(sum[35]), |
---|
2011 | .cout(cout[35]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[35]), |
---|
2012 | .p0_l(p0_l[35])); |
---|
2013 | mul_ppgen3 I1_34_ ( .p2_l(p2_l[34]), .b2(b2[2:0]), |
---|
2014 | .am2(a[32]), .a(a[34]), .p2m1_l(p2_l[33]), |
---|
2015 | .p1m1_l(p1_l[33]), .p0m1_l(p0_l[33]), .am4(a[30]), .sum(sum[34]), |
---|
2016 | .cout(cout[34]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[34]), |
---|
2017 | .p0_l(p0_l[34])); |
---|
2018 | mul_ppgen3 I1_33_ ( .p2_l(p2_l[33]), .b2(b2[2:0]), |
---|
2019 | .am2(a[31]), .a(a[33]), .p2m1_l(p2_l[32]), |
---|
2020 | .p1m1_l(p1_l[32]), .p0m1_l(p0_l[32]), .am4(a[29]), .sum(sum[33]), |
---|
2021 | .cout(cout[33]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[33]), |
---|
2022 | .p0_l(p0_l[33])); |
---|
2023 | mul_ppgen3 I1_32_ ( .p2_l(p2_l[32]), .b2(b2[2:0]), |
---|
2024 | .am2(a[30]), .a(a[32]), .p2m1_l(p2_l[31]), |
---|
2025 | .p1m1_l(p1_l[31]), .p0m1_l(p0_l[31]), .am4(a[28]), .sum(sum[32]), |
---|
2026 | .cout(cout[32]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[32]), |
---|
2027 | .p0_l(p0_l[32])); |
---|
2028 | mul_ppgen3 I1_31_ ( .p2_l(p2_l[31]), .b2(b2[2:0]), |
---|
2029 | .am2(a[29]), .a(a[31]), .p2m1_l(p2_l[30]), |
---|
2030 | .p1m1_l(p1_l[30]), .p0m1_l(p0_l[30]), .am4(a[27]), .sum(sum[31]), |
---|
2031 | .cout(cout[31]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[31]), |
---|
2032 | .p0_l(p0_l[31])); |
---|
2033 | mul_ppgen3 I1_30_ ( .p2_l(p2_l[30]), .b2(b2[2:0]), |
---|
2034 | .am2(a[28]), .a(a[30]), .p2m1_l(p2_l[29]), |
---|
2035 | .p1m1_l(p1_l[29]), .p0m1_l(p0_l[29]), .am4(a[26]), .sum(sum[30]), |
---|
2036 | .cout(cout[30]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[30]), |
---|
2037 | .p0_l(p0_l[30])); |
---|
2038 | mul_ppgen3 I1_29_ ( .p2_l(p2_l[29]), .b2(b2[2:0]), |
---|
2039 | .am2(a[27]), .a(a[29]), .p2m1_l(p2_l[28]), |
---|
2040 | .p1m1_l(p1_l[28]), .p0m1_l(p0_l[28]), .am4(a[25]), .sum(sum[29]), |
---|
2041 | .cout(cout[29]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[29]), |
---|
2042 | .p0_l(p0_l[29])); |
---|
2043 | mul_ppgen3 I1_28_ ( .p2_l(p2_l[28]), .b2(b2[2:0]), |
---|
2044 | .am2(a[26]), .a(a[28]), .p2m1_l(p2_l[27]), |
---|
2045 | .p1m1_l(p1_l[27]), .p0m1_l(p0_l[27]), .am4(a[24]), .sum(sum[28]), |
---|
2046 | .cout(cout[28]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[28]), |
---|
2047 | .p0_l(p0_l[28])); |
---|
2048 | mul_ppgen3 I1_27_ ( .p2_l(p2_l[27]), .b2(b2[2:0]), |
---|
2049 | .am2(a[25]), .a(a[27]), .p2m1_l(p2_l[26]), |
---|
2050 | .p1m1_l(p1_l[26]), .p0m1_l(p0_l[26]), .am4(a[23]), .sum(sum[27]), |
---|
2051 | .cout(cout[27]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[27]), |
---|
2052 | .p0_l(p0_l[27])); |
---|
2053 | mul_ppgen3 I1_26_ ( .p2_l(p2_l[26]), .b2(b2[2:0]), |
---|
2054 | .am2(a[24]), .a(a[26]), .p2m1_l(p2_l[25]), |
---|
2055 | .p1m1_l(p1_l[25]), .p0m1_l(p0_l[25]), .am4(a[22]), .sum(sum[26]), |
---|
2056 | .cout(cout[26]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[26]), |
---|
2057 | .p0_l(p0_l[26])); |
---|
2058 | mul_ppgen3 I1_25_ ( .p2_l(p2_l[25]), .b2(b2[2:0]), |
---|
2059 | .am2(a[23]), .a(a[25]), .p2m1_l(p2_l[24]), |
---|
2060 | .p1m1_l(p1_l[24]), .p0m1_l(p0_l[24]), .am4(a[21]), .sum(sum[25]), |
---|
2061 | .cout(cout[25]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[25]), |
---|
2062 | .p0_l(p0_l[25])); |
---|
2063 | mul_ppgen3 I1_24_ ( .p2_l(p2_l[24]), .b2(b2[2:0]), |
---|
2064 | .am2(a[22]), .a(a[24]), .p2m1_l(p2_l[23]), |
---|
2065 | .p1m1_l(p1_l[23]), .p0m1_l(p0_l[23]), .am4(a[20]), .sum(sum[24]), |
---|
2066 | .cout(cout[24]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[24]), |
---|
2067 | .p0_l(p0_l[24])); |
---|
2068 | mul_ppgen3 I1_23_ ( .p2_l(p2_l[23]), .b2(b2[2:0]), |
---|
2069 | .am2(a[21]), .a(a[23]), .p2m1_l(p2_l[22]), |
---|
2070 | .p1m1_l(p1_l[22]), .p0m1_l(p0_l[22]), .am4(a[19]), .sum(sum[23]), |
---|
2071 | .cout(cout[23]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[23]), |
---|
2072 | .p0_l(p0_l[23])); |
---|
2073 | mul_ppgen3 I1_22_ ( .p2_l(p2_l[22]), .b2(b2[2:0]), |
---|
2074 | .am2(a[20]), .a(a[22]), .p2m1_l(p2_l[21]), |
---|
2075 | .p1m1_l(p1_l[21]), .p0m1_l(p0_l[21]), .am4(a[18]), .sum(sum[22]), |
---|
2076 | .cout(cout[22]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[22]), |
---|
2077 | .p0_l(p0_l[22])); |
---|
2078 | mul_ppgen3 I1_21_ ( .p2_l(p2_l[21]), .b2(b2[2:0]), |
---|
2079 | .am2(a[19]), .a(a[21]), .p2m1_l(p2_l[20]), |
---|
2080 | .p1m1_l(p1_l[20]), .p0m1_l(p0_l[20]), .am4(a[17]), .sum(sum[21]), |
---|
2081 | .cout(cout[21]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[21]), |
---|
2082 | .p0_l(p0_l[21])); |
---|
2083 | mul_ppgen3 I1_20_ ( .p2_l(p2_l[20]), .b2(b2[2:0]), |
---|
2084 | .am2(a[18]), .a(a[20]), .p2m1_l(p2_l[19]), |
---|
2085 | .p1m1_l(p1_l[19]), .p0m1_l(p0_l[19]), .am4(a[16]), .sum(sum[20]), |
---|
2086 | .cout(cout[20]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[20]), |
---|
2087 | .p0_l(p0_l[20])); |
---|
2088 | mul_ppgen3 I1_19_ ( .p2_l(p2_l[19]), .b2(b2[2:0]), |
---|
2089 | .am2(a[17]), .a(a[19]), .p2m1_l(p2_l[18]), |
---|
2090 | .p1m1_l(p1_l[18]), .p0m1_l(p0_l[18]), .am4(a[15]), .sum(sum[19]), |
---|
2091 | .cout(cout[19]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[19]), |
---|
2092 | .p0_l(p0_l[19])); |
---|
2093 | mul_ppgen3 I1_18_ ( .p2_l(p2_l[18]), .b2(b2[2:0]), |
---|
2094 | .am2(a[16]), .a(a[18]), .p2m1_l(p2_l[17]), |
---|
2095 | .p1m1_l(p1_l[17]), .p0m1_l(p0_l[17]), .am4(a[14]), .sum(sum[18]), |
---|
2096 | .cout(cout[18]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[18]), |
---|
2097 | .p0_l(p0_l[18])); |
---|
2098 | mul_ppgen3 I1_17_ ( .p2_l(p2_l[17]), .b2(b2[2:0]), |
---|
2099 | .am2(a[15]), .a(a[17]), .p2m1_l(p2_l[16]), |
---|
2100 | .p1m1_l(p1_l[16]), .p0m1_l(p0_l[16]), .am4(a[13]), .sum(sum[17]), |
---|
2101 | .cout(cout[17]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[17]), |
---|
2102 | .p0_l(p0_l[17])); |
---|
2103 | mul_ppgen3 I1_16_ ( .p2_l(p2_l[16]), .b2(b2[2:0]), |
---|
2104 | .am2(a[14]), .a(a[16]), .p2m1_l(p2_l[15]), |
---|
2105 | .p1m1_l(p1_l[15]), .p0m1_l(p0_l[15]), .am4(a[12]), .sum(sum[16]), |
---|
2106 | .cout(cout[16]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[16]), |
---|
2107 | .p0_l(p0_l[16])); |
---|
2108 | mul_ppgen3 I1_15_ ( .p2_l(p2_l[15]), .b2(b2[2:0]), |
---|
2109 | .am2(a[13]), .a(a[15]), .p2m1_l(p2_l[14]), |
---|
2110 | .p1m1_l(p1_l[14]), .p0m1_l(p0_l[14]), .am4(a[11]), .sum(sum[15]), |
---|
2111 | .cout(cout[15]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[15]), |
---|
2112 | .p0_l(p0_l[15])); |
---|
2113 | mul_ppgen3 I1_14_ ( .p2_l(p2_l[14]), .b2(b2[2:0]), |
---|
2114 | .am2(a[12]), .a(a[14]), .p2m1_l(p2_l[13]), |
---|
2115 | .p1m1_l(p1_l[13]), .p0m1_l(p0_l[13]), .am4(a[10]), .sum(sum[14]), |
---|
2116 | .cout(cout[14]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[14]), |
---|
2117 | .p0_l(p0_l[14])); |
---|
2118 | mul_ppgen3 I1_13_ ( .p2_l(p2_l[13]), .b2(b2[2:0]), |
---|
2119 | .am2(a[11]), .a(a[13]), .p2m1_l(p2_l[12]), |
---|
2120 | .p1m1_l(p1_l[12]), .p0m1_l(p0_l[12]), .am4(a[9]), .sum(sum[13]), |
---|
2121 | .cout(cout[13]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[13]), |
---|
2122 | .p0_l(p0_l[13])); |
---|
2123 | mul_ppgen3 I1_12_ ( .p2_l(p2_l[12]), .b2(b2[2:0]), |
---|
2124 | .am2(a[10]), .a(a[12]), .p2m1_l(p2_l[11]), |
---|
2125 | .p1m1_l(p1_l[11]), .p0m1_l(p0_l[11]), .am4(a[8]), .sum(sum[12]), |
---|
2126 | .cout(cout[12]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[12]), |
---|
2127 | .p0_l(p0_l[12])); |
---|
2128 | mul_ppgen3 I1_11_ ( .p2_l(p2_l[11]), .b2(b2[2:0]), |
---|
2129 | .am2(a[9]), .a(a[11]), .p2m1_l(p2_l[10]), |
---|
2130 | .p1m1_l(p1_l[10]), .p0m1_l(p0_l[10]), .am4(a[7]), .sum(sum[11]), |
---|
2131 | .cout(cout[11]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[11]), |
---|
2132 | .p0_l(p0_l[11])); |
---|
2133 | mul_ppgen3 I1_10_ ( .p2_l(p2_l[10]), .b2(b2[2:0]), |
---|
2134 | .am2(a[8]), .a(a[10]), .p2m1_l(p2_l[9]), |
---|
2135 | .p1m1_l(p1_l[9]), .p0m1_l(p0_l[9]), .am4(a[6]), .sum(sum[10]), |
---|
2136 | .cout(cout[10]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[10]), |
---|
2137 | .p0_l(p0_l[10])); |
---|
2138 | mul_ppgen3 I1_9_ ( .p2_l(p2_l[9]), .b2(b2[2:0]), |
---|
2139 | .am2(a[7]), .a(a[9]), .p2m1_l(p2_l[8]), |
---|
2140 | .p1m1_l(p1_l[8]), .p0m1_l(p0_l[8]), .am4(a[5]), .sum(sum[9]), |
---|
2141 | .cout(cout[9]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[9]), |
---|
2142 | .p0_l(p0_l[9])); |
---|
2143 | mul_ppgen3 I1_8_ ( .p2_l(p2_l[8]), .b2(b2[2:0]), |
---|
2144 | .am2(a[6]), .a(a[8]), .p2m1_l(p2_l[7]), |
---|
2145 | .p1m1_l(p1_l[7]), .p0m1_l(p0_l[7]), .am4(a[4]), .sum(sum[8]), |
---|
2146 | .cout(cout[8]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[8]), |
---|
2147 | .p0_l(p0_l[8])); |
---|
2148 | mul_ppgen3 I1_7_ ( .p2_l(p2_l[7]), .b2(b2[2:0]), |
---|
2149 | .am2(a[5]), .a(a[7]), .p2m1_l(p2_l[6]), |
---|
2150 | .p1m1_l(p1_l[6]), .p0m1_l(p0_l[6]), .am4(a[3]), .sum(sum[7]), |
---|
2151 | .cout(cout[7]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[7]), |
---|
2152 | .p0_l(p0_l[7])); |
---|
2153 | mul_ppgen3 I1_6_ ( .p2_l(p2_l[6]), .b2(b2[2:0]), |
---|
2154 | .am2(a[4]), .a(a[6]), .p2m1_l(p2_l[5]), |
---|
2155 | .p1m1_l(p1_l[5]), .p0m1_l(p0_l[5]), .am4(a[2]), .sum(sum[6]), |
---|
2156 | .cout(cout[6]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[6]), |
---|
2157 | .p0_l(p0_l[6])); |
---|
2158 | mul_ppgen3 I1_5_ ( .p2_l(p2_l[5]), .b2(b2[2:0]), |
---|
2159 | .am2(a[3]), .a(a[5]), .p2m1_l(p2_l[4]), |
---|
2160 | .p1m1_l(p1_l[4]), .p0m1_l(p0_l[4]), .am4(a[1]), .sum(sum[5]), |
---|
2161 | .cout(cout[5]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[5]), |
---|
2162 | .p0_l(p0_l[5])); |
---|
2163 | mul_ppgen3 I1_4_ ( .p2_l(p2_l[4]), .b2(b2[2:0]), |
---|
2164 | .am2(a[2]), .a(a[4]), .p2m1_l(1'b1), |
---|
2165 | .p1m1_l(p1_l[3]), .p0m1_l(p0_l[3]), .am4(a[0]), .sum(sum[4]), |
---|
2166 | .cout(cout[4]), .b1(b1[2:0]), .b0(b0[2:0]), .p1_l(p1_l[4]), |
---|
2167 | .p0_l(p0_l[4])); |
---|
2168 | mul_ppgen3lsb4 I0 ( .cout(cout[3:1]), .a(a[3:0]), .sum(sum[3:0]), |
---|
2169 | .p1_l(p1_l[3]), .p0_l(p0_l[3]), .b1(b1[2:0]), .b0(b0[2:0])); |
---|
2170 | |
---|
2171 | endmodule //mul_ppgenrow3 |
---|
2172 | |
---|
2173 | module mul_ppgensign ( p_l, z, b, pm1_l ); |
---|
2174 | output p_l, z; |
---|
2175 | input pm1_l; |
---|
2176 | input [2:0] b; |
---|
2177 | |
---|
2178 | assign p_l = ~(b[1] & b[2]); |
---|
2179 | assign z = b[0] ? ~pm1_l : ~p_l ; |
---|
2180 | |
---|
2181 | endmodule //mul_ppgensign |
---|
2182 | |
---|
2183 | module mul_ppgen ( p_l, z, a, b, pm1_l ); |
---|
2184 | output p_l, z; |
---|
2185 | input a, pm1_l; |
---|
2186 | input [2:0] b; |
---|
2187 | |
---|
2188 | assign p_l = ~((a ^ b[2]) & b[1]) ; |
---|
2189 | assign z = b[0] ? ~pm1_l : ~p_l ; |
---|
2190 | |
---|
2191 | endmodule //mul_ppgen |
---|
2192 | |
---|
2193 | module mul_mux2 ( z, d0, d1, s ); |
---|
2194 | output z; |
---|
2195 | input d0, d1, s; |
---|
2196 | |
---|
2197 | assign z = s ? d1 : d0 ; |
---|
2198 | |
---|
2199 | endmodule // mul_mux2 |
---|
2200 | |
---|
2201 | module mul_booth( |
---|
2202 | head, |
---|
2203 | b_in, |
---|
2204 | b0, b1, b2, b3, b4, b5, b6, b7, |
---|
2205 | b8, b9, b10, b11, b12, b13, b14, b15, b16, |
---|
2206 | clk, se, si, so, mul_step, tm_l |
---|
2207 | ); |
---|
2208 | input head; // begin of the MUL operation |
---|
2209 | input [63:0] b_in; |
---|
2210 | input clk, se, si, mul_step, tm_l; |
---|
2211 | output [2:0] b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15; |
---|
2212 | output b16; |
---|
2213 | output so; |
---|
2214 | |
---|
2215 | wire [63:31] b; |
---|
2216 | wire [2:0] b0_in0, b1_in0, b2_in0, b3_in0, b4_in0, b5_in0, b6_in0, b7_in0 ; |
---|
2217 | wire [2:0] b8_in0, b9_in0, b10_in0, b11_in0, b12_in0, b13_in0, b14_in0, b15_in0 ; |
---|
2218 | wire [2:0] b0_in1, b1_in1, b2_in1, b3_in1, b4_in1, b5_in1, b6_in1, b7_in1 ; |
---|
2219 | wire [2:0] b8_in1, b9_in1, b10_in1, b11_in1, b12_in1, b13_in1, b14_in1, b15_in1 ; |
---|
2220 | wire b16_in1; |
---|
2221 | |
---|
2222 | wire [2:0] b0_outmx, b1_outmx, b2_outmx, b3_outmx, b4_outmx, b5_outmx, b6_outmx; |
---|
2223 | wire [2:0] b7_outmx, b8_outmx, b9_outmx, b10_outmx, b11_outmx, b12_outmx, b13_outmx; |
---|
2224 | wire [2:0] b14_outmx, b15_outmx; |
---|
2225 | wire b16_outmx; |
---|
2226 | wire clk_enb0, clk_enb1; |
---|
2227 | |
---|
2228 | |
---|
2229 | mul_bodec encode0_a( |
---|
2230 | .x (1'b0), |
---|
2231 | .b (b_in[15:0]), |
---|
2232 | .b0 (b0_in0), |
---|
2233 | .b1 (b1_in0), |
---|
2234 | .b2 (b2_in0), |
---|
2235 | .b3 (b3_in0), |
---|
2236 | .b4 (b4_in0), |
---|
2237 | .b5 (b5_in0), |
---|
2238 | .b6 (b6_in0), |
---|
2239 | .b7 (b7_in0) |
---|
2240 | ); |
---|
2241 | //remove 16th row since it's never the last row |
---|
2242 | //b8_in0 = 3'b010; |
---|
2243 | mul_bodec encode0_b( |
---|
2244 | .x (b_in[15]), |
---|
2245 | .b (b_in[31:16]), |
---|
2246 | .b0 (b8_in0), |
---|
2247 | .b1 (b9_in0), |
---|
2248 | .b2 (b10_in0), |
---|
2249 | .b3 (b11_in0), |
---|
2250 | .b4 (b12_in0), |
---|
2251 | .b5 (b13_in0), |
---|
2252 | .b6 (b14_in0), |
---|
2253 | .b7 (b15_in0) |
---|
2254 | ); |
---|
2255 | // remove 32th row since it's never the last row |
---|
2256 | // b16_in0 = 3'b010 ; |
---|
2257 | |
---|
2258 | // Pipe picked address [63:31] and hold flop |
---|
2259 | |
---|
2260 | clken_buf ckbuf_0(.clk(clk_enb0), .rclk(clk), .enb_l(~mul_step), .tmb_l(tm_l)); |
---|
2261 | clken_buf ckbuf_1(.clk(clk_enb1), .rclk(clk), .enb_l(~(head & mul_step)), .tmb_l(tm_l)); |
---|
2262 | |
---|
2263 | dff_s hld_dff0(.din(b_in[31]), .clk(clk_enb1), .q(b[31]), |
---|
2264 | .se(se), .si(), .so()); |
---|
2265 | dff_s #(32) hld_dff(.din(b_in[63:32]), .clk(clk_enb1), .q(b[63:32]), |
---|
2266 | .se(se), .si(), .so()); |
---|
2267 | |
---|
2268 | mul_bodec encode1_a( |
---|
2269 | .x (b[31]), |
---|
2270 | .b (b[47:32]), |
---|
2271 | .b0 (b0_in1), |
---|
2272 | .b1 (b1_in1), |
---|
2273 | .b2 (b2_in1), |
---|
2274 | .b3 (b3_in1), |
---|
2275 | .b4 (b4_in1), |
---|
2276 | .b5 (b5_in1), |
---|
2277 | .b6 (b6_in1), |
---|
2278 | .b7 (b7_in1) |
---|
2279 | ); |
---|
2280 | //remove 16th row since it's never the last row |
---|
2281 | //b8_in1 = 3'b010; |
---|
2282 | mul_bodec encode1_b( |
---|
2283 | .x (b[47]), |
---|
2284 | .b (b[63:48]), |
---|
2285 | .b0 (b8_in1), |
---|
2286 | .b1 (b9_in1), |
---|
2287 | .b2 (b10_in1), |
---|
2288 | .b3 (b11_in1), |
---|
2289 | .b4 (b12_in1), |
---|
2290 | .b5 (b13_in1), |
---|
2291 | .b6 (b14_in1), |
---|
2292 | .b7 (b15_in1) |
---|
2293 | ); |
---|
2294 | assign b16_in1 = b[63] ; |
---|
2295 | |
---|
2296 | // Select booth encoded b outputs and flop based on the cycle0 and cycle1 |
---|
2297 | |
---|
2298 | dp_mux2es #(3) out_mux0(.dout(b0_outmx[2:0]), |
---|
2299 | .in0(b0_in0[2:0]), |
---|
2300 | .in1(b0_in1[2:0]), |
---|
2301 | .sel(~head)); |
---|
2302 | dp_mux2es #(3) out_mux1(.dout(b1_outmx[2:0]), |
---|
2303 | .in0(b1_in0[2:0]), |
---|
2304 | .in1(b1_in1[2:0]), |
---|
2305 | .sel(~head)); |
---|
2306 | dp_mux2es #(3) out_mux2(.dout(b2_outmx[2:0]), |
---|
2307 | .in0(b2_in0[2:0]), |
---|
2308 | .in1(b2_in1[2:0]), |
---|
2309 | .sel(~head)); |
---|
2310 | dp_mux2es #(3) out_mux3(.dout(b3_outmx[2:0]), |
---|
2311 | .in0(b3_in0[2:0]), |
---|
2312 | .in1(b3_in1[2:0]), |
---|
2313 | .sel(~head)); |
---|
2314 | dp_mux2es #(3) out_mux4(.dout(b4_outmx[2:0]), |
---|
2315 | .in0(b4_in0[2:0]), |
---|
2316 | .in1(b4_in1[2:0]), |
---|
2317 | .sel(~head)); |
---|
2318 | dp_mux2es #(3) out_mux5(.dout(b5_outmx[2:0]), |
---|
2319 | .in0(b5_in0[2:0]), |
---|
2320 | .in1(b5_in1[2:0]), |
---|
2321 | .sel(~head)); |
---|
2322 | dp_mux2es #(3) out_mux6(.dout(b6_outmx[2:0]), |
---|
2323 | .in0(b6_in0[2:0]), |
---|
2324 | .in1(b6_in1[2:0]), |
---|
2325 | .sel(~head)); |
---|
2326 | dp_mux2es #(3) out_mux7(.dout(b7_outmx[2:0]), |
---|
2327 | .in0(b7_in0[2:0]), |
---|
2328 | .in1(b7_in1[2:0]), |
---|
2329 | .sel(~head)); |
---|
2330 | dp_mux2es #(3) out_mux8(.dout(b8_outmx[2:0]), |
---|
2331 | .in0(b8_in0[2:0]), |
---|
2332 | .in1(b8_in1[2:0]), |
---|
2333 | .sel(~head)); |
---|
2334 | dp_mux2es #(3) out_mux9(.dout(b9_outmx[2:0]), |
---|
2335 | .in0(b9_in0[2:0]), |
---|
2336 | .in1(b9_in1[2:0]), |
---|
2337 | .sel(~head)); |
---|
2338 | dp_mux2es #(3) out_mux10(.dout(b10_outmx[2:0]), |
---|
2339 | .in0(b10_in0[2:0]), |
---|
2340 | .in1(b10_in1[2:0]), |
---|
2341 | .sel(~head)); |
---|
2342 | dp_mux2es #(3) out_mux11(.dout(b11_outmx[2:0]), |
---|
2343 | .in0(b11_in0[2:0]), |
---|
2344 | .in1(b11_in1[2:0]), |
---|
2345 | .sel(~head)); |
---|
2346 | dp_mux2es #(3) out_mux12(.dout(b12_outmx[2:0]), |
---|
2347 | .in0(b12_in0[2:0]), |
---|
2348 | .in1(b12_in1[2:0]), |
---|
2349 | .sel(~head)); |
---|
2350 | dp_mux2es #(3) out_mux13(.dout(b13_outmx[2:0]), |
---|
2351 | .in0(b13_in0[2:0]), |
---|
2352 | .in1(b13_in1[2:0]), |
---|
2353 | .sel(~head)); |
---|
2354 | dp_mux2es #(3) out_mux14(.dout(b14_outmx[2:0]), |
---|
2355 | .in0(b14_in0[2:0]), |
---|
2356 | .in1(b14_in1[2:0]), |
---|
2357 | .sel(~head)); |
---|
2358 | dp_mux2es #(3) out_mux15(.dout(b15_outmx[2:0]), |
---|
2359 | .in0(b15_in0[2:0]), |
---|
2360 | .in1(b15_in1[2:0]), |
---|
2361 | .sel(~head)); |
---|
2362 | dp_mux2es out_mux16(.dout(b16_outmx), |
---|
2363 | .in0(1'b0), |
---|
2364 | .in1(b16_in1), |
---|
2365 | .sel(~head)); |
---|
2366 | |
---|
2367 | dff_s #(3) out_dff0 (.din(b0_outmx[2:0]), .clk(clk_enb0), .q(b0[2:0]), |
---|
2368 | .se(se), .si(), .so()); |
---|
2369 | dff_s #(3) out_dff1 (.din(b1_outmx[2:0]), .clk(clk_enb0), .q(b1[2:0]), |
---|
2370 | .se(se), .si(), .so()); |
---|
2371 | dff_s #(3) out_dff2 (.din(b2_outmx[2:0]), .clk(clk_enb0), .q(b2[2:0]), |
---|
2372 | .se(se), .si(), .so()); |
---|
2373 | dff_s #(3) out_dff3 (.din(b3_outmx[2:0]), .clk(clk_enb0), .q(b3[2:0]), |
---|
2374 | .se(se), .si(), .so()); |
---|
2375 | dff_s #(3) out_dff4 (.din(b4_outmx[2:0]), .clk(clk_enb0), .q(b4[2:0]), |
---|
2376 | .se(se), .si(), .so()); |
---|
2377 | dff_s #(3) out_dff5 (.din(b5_outmx[2:0]), .clk(clk_enb0), .q(b5[2:0]), |
---|
2378 | .se(se), .si(), .so()); |
---|
2379 | dff_s #(3) out_dff6 (.din(b6_outmx[2:0]), .clk(clk_enb0), .q(b6[2:0]), |
---|
2380 | .se(se), .si(), .so()); |
---|
2381 | dff_s #(3) out_dff7 (.din(b7_outmx[2:0]), .clk(clk_enb0), .q(b7[2:0]), |
---|
2382 | .se(se), .si(), .so()); |
---|
2383 | dff_s #(3) out_dff8 (.din(b8_outmx[2:0]), .clk(clk_enb0), .q(b8[2:0]), |
---|
2384 | .se(se), .si(), .so()); |
---|
2385 | dff_s #(3) out_dff9 (.din(b9_outmx[2:0]), .clk(clk_enb0), .q(b9[2:0]), |
---|
2386 | .se(se), .si(), .so()); |
---|
2387 | dff_s #(3) out_dff10 (.din(b10_outmx[2:0]), .clk(clk_enb0), .q(b10[2:0]), |
---|
2388 | .se(se), .si(), .so()); |
---|
2389 | dff_s #(3) out_dff11 (.din(b11_outmx[2:0]), .clk(clk_enb0), .q(b11[2:0]), |
---|
2390 | .se(se), .si(), .so()); |
---|
2391 | dff_s #(3) out_dff12 (.din(b12_outmx[2:0]), .clk(clk_enb0), .q(b12[2:0]), |
---|
2392 | .se(se), .si(), .so()); |
---|
2393 | dff_s #(3) out_dff13 (.din(b13_outmx[2:0]), .clk(clk_enb0), .q(b13[2:0]), |
---|
2394 | .se(se), .si(), .so()); |
---|
2395 | dff_s #(3) out_dff14 (.din(b14_outmx[2:0]), .clk(clk_enb0), .q(b14[2:0]), |
---|
2396 | .se(se), .si(), .so()); |
---|
2397 | dff_s #(3) out_dff15 (.din(b15_outmx[2:0]), .clk(clk_enb0), .q(b15[2:0]), |
---|
2398 | .se(se), .si(), .so()); |
---|
2399 | dff_s out_dff16 (.din(b16_outmx), .clk(clk_enb0), .q(b16), |
---|
2400 | .se(se), .si(), .so()); |
---|
2401 | endmodule //mul_booth |
---|
2402 | |
---|
2403 | module mul_bodec (x, b, |
---|
2404 | b0, b1, b2, b3, b4, b5, b6, b7); |
---|
2405 | |
---|
2406 | input x; |
---|
2407 | input [15:0] b; |
---|
2408 | output [2:0] b0, b1, b2, b3, b4, b5, b6, b7; |
---|
2409 | |
---|
2410 | assign b0[2] = b[1]; |
---|
2411 | assign b0[1] = ~((b[1] & b[0] & x) | (~b[1] & ~b[0] & ~x)) ; |
---|
2412 | assign b0[0] = (~b[1] & b[0] & x) | (b[1] & ~b[0] & ~x) ; |
---|
2413 | |
---|
2414 | assign b1[2] = b[3]; |
---|
2415 | assign b1[1] = ~((b[3] & b[2] & b[1]) | (~b[3] & ~b[2] & ~b[1])) ; |
---|
2416 | assign b1[0] = (~b[3] & b[2] & b[1]) | (b[3] & ~b[2] & ~b[1]) ; |
---|
2417 | |
---|
2418 | assign b2[2] = b[5]; |
---|
2419 | assign b2[1] = ~((b[5] & b[4] & b[3]) | (~b[5] & ~b[4] & ~b[3])) ; |
---|
2420 | assign b2[0] = (~b[5] & b[4] & b[3]) | (b[5] & ~b[4] & ~b[3]) ; |
---|
2421 | |
---|
2422 | assign b3[2] = b[7] ; |
---|
2423 | assign b3[1] = ~((b[7] & b[6] & b[5]) | (~b[7] & ~b[6] & ~b[5])) ; |
---|
2424 | assign b3[0] = (~b[7] & b[6] & b[5]) | (b[7] & ~b[6] & ~b[5]) ; |
---|
2425 | |
---|
2426 | assign b4[2] = b[9] ; |
---|
2427 | assign b4[1] = ~((b[9] & b[8] & b[7]) | (~b[9] & ~b[8] & ~b[7])) ; |
---|
2428 | assign b4[0] = (~b[9] & b[8] & b[7]) | (b[9] & ~b[8] & ~b[7]) ; |
---|
2429 | |
---|
2430 | assign b5[2] = b[11] ; |
---|
2431 | assign b5[1] = ~((b[11] & b[10] & b[9]) | (~b[11] & ~b[10] & ~b[9])) ; |
---|
2432 | assign b5[0] = (~b[11] & b[10] & b[9]) | (b[11] & ~b[10] & ~b[9]) ; |
---|
2433 | |
---|
2434 | assign b6[2] = b[13] ; |
---|
2435 | assign b6[1] = ~((b[13] & b[12] & b[11]) | (~b[13] & ~b[12] & ~b[11])) ; |
---|
2436 | assign b6[0] = (~b[13] & b[12] & b[11]) | (b[13] & ~b[12] & ~b[11]) ; |
---|
2437 | |
---|
2438 | assign b7[2] = b[15] ; |
---|
2439 | assign b7[1] = ~((b[15] & b[14] & b[13]) | (~b[15] & ~b[14] & ~b[13])) ; |
---|
2440 | assign b7[0] = (~b[15] & b[14] & b[13]) | (b[15] & ~b[14] & ~b[13]) ; |
---|
2441 | |
---|
2442 | endmodule // mul_bodec |
---|
2443 | `endif |
---|