1 |
2 |
dmitryr |
// ========== 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
|