Commit | Line | Data |
---|---|---|
86530b38 AT |
1 | // ========== Copyright Header Begin ========================================== |
2 | // | |
3 | // OpenSPARC T2 Processor File: fgu_fpy_dp.v | |
4 | // Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved | |
5 | // 4150 Network Circle, Santa Clara, California 95054, U.S.A. | |
6 | // | |
7 | // * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | |
8 | // | |
9 | // This program is free software; you can redistribute it and/or modify | |
10 | // it under the terms of the GNU General Public License as published by | |
11 | // the Free Software Foundation; version 2 of the License. | |
12 | // | |
13 | // This program is distributed in the hope that it will be useful, | |
14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | // GNU General Public License for more details. | |
17 | // | |
18 | // You should have received a copy of the GNU General Public License | |
19 | // along with this program; if not, write to the Free Software | |
20 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
21 | // | |
22 | // For the avoidance of doubt, and except that if any non-GPL license | |
23 | // choice is available it will apply instead, Sun elects to use only | |
24 | // the General Public License version 2 (GPLv2) at this time for any | |
25 | // software where a choice of GPL license versions is made | |
26 | // available with the language indicating that GPLv2 or any later version | |
27 | // may be used, or where a choice of which version of the GPL is applied is | |
28 | // otherwise unspecified. | |
29 | // | |
30 | // Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, | |
31 | // CA 95054 USA or visit www.sun.com if you need additional information or | |
32 | // have any questions. | |
33 | // | |
34 | // ========== Copyright Header End ============================================ | |
35 | module fgu_fpy_dp ( | |
36 | l2clk, | |
37 | scan_in, | |
38 | tcu_pce_ov, | |
39 | spc_aclk, | |
40 | spc_bclk, | |
41 | tcu_scan_en, | |
42 | tcu_dectest, | |
43 | tcu_muxtest, | |
44 | scan_out, | |
45 | mul_clken_rep0, | |
46 | mul_clken_rep01, | |
47 | spu_fgu_rs1_e, | |
48 | spu_fgu_rs2_e, | |
49 | fad_rs1_fmt_fx1_rep0, | |
50 | fad_rs2_fmt_fx1_rep0, | |
51 | fad_rs2_fmt_fx1_rep1, | |
52 | fac_xr_mode_fx1, | |
53 | fac_rs1_sel_fx1, | |
54 | fac_rs2_sel_fx1, | |
55 | fac_8x16_rnd_fx3, | |
56 | fac_scff_sel_fx3, | |
57 | fac_accum_sel_fx3, | |
58 | fac_result_sel_fx4, | |
59 | fac_ma_result_en_fx4, | |
60 | fgu_mul_result_fx5, | |
61 | fpy_sticky_dp_fx5, | |
62 | fpy_sticky_sp_fx5, | |
63 | fpy_fp_result_fx4_b63, | |
64 | fpy_xicc_z_fx5, | |
65 | fgu_accum_b0_fx5); | |
66 | wire stop; | |
67 | wire test; | |
68 | wire se; | |
69 | wire pce_ov; | |
70 | wire siclk; | |
71 | wire soclk; | |
72 | wire i_spu_rs1_ff_scanin; | |
73 | wire i_spu_rs1_ff_scanout; | |
74 | wire [63:0] spu_fgu_rs1_fx1; | |
75 | wire i_spu_rs2_ff_scanin; | |
76 | wire i_spu_rs2_ff_scanout; | |
77 | wire [63:0] spu_fgu_rs2_fx1; | |
78 | wire [63:15] rs2_fx1_ebf; | |
79 | wire xr_mode_fx1_; | |
80 | wire [1:0] xr_mode_fx1_bf; | |
81 | wire tcu_muxtest_a_rep0; | |
82 | wire [63:0] ma_result_ff; | |
83 | wire [12:0] rs1_fmt_a0; | |
84 | wire [18:0] rs1_fmt_a1; | |
85 | wire [18:0] rs1_fmt_a2; | |
86 | wire [18:0] rs1_fmt_a3; | |
87 | wire [4:0] be00; | |
88 | wire [31:0] be_pout; | |
89 | wire [31:0] be_hout; | |
90 | wire [4:0] be01; | |
91 | wire [4:0] be02; | |
92 | wire [4:0] be03; | |
93 | wire [4:0] be04; | |
94 | wire [4:0] be05; | |
95 | wire [4:0] be06; | |
96 | wire [4:0] be07; | |
97 | wire [4:0] be08; | |
98 | wire [4:0] be09; | |
99 | wire [4:0] be10; | |
100 | wire [4:0] be11; | |
101 | wire [4:0] be12; | |
102 | wire [4:0] be13; | |
103 | wire [4:0] be14; | |
104 | wire [4:0] be15; | |
105 | wire [4:0] be16; | |
106 | wire [4:0] be17; | |
107 | wire [4:0] be18; | |
108 | wire [4:0] be19; | |
109 | wire [4:0] be20; | |
110 | wire [4:0] be21; | |
111 | wire [4:0] be22; | |
112 | wire [4:0] be23; | |
113 | wire [4:0] be24; | |
114 | wire [4:0] be25; | |
115 | wire [4:0] be26; | |
116 | wire [4:0] be27; | |
117 | wire [4:0] be28; | |
118 | wire [4:0] be29; | |
119 | wire [4:0] be30; | |
120 | wire [4:0] be31; | |
121 | wire [5:0] i_be32_unused; | |
122 | wire be32_b0; | |
123 | wire [64:0] rs2_3x_fx1; | |
124 | wire i_3x_ff_scanin; | |
125 | wire i_3x_ff_scanout; | |
126 | wire [64:0] rs2_3x_ff; | |
127 | wire [64:0] rs2_3x; | |
128 | wire i_a3_be_ff_scanin; | |
129 | wire i_a3_be_ff_scanout; | |
130 | wire a3_xr_mode_fx2_; | |
131 | wire [31:0] be_pout_ff; | |
132 | wire [4:0] be_ff08; | |
133 | wire [4:0] be_ff07; | |
134 | wire [4:0] be_ff06; | |
135 | wire [4:0] be_ff05; | |
136 | wire [4:0] be_ff04; | |
137 | wire [4:0] be_ff03; | |
138 | wire [4:0] be_ff02; | |
139 | wire [4:0] be_ff01; | |
140 | wire [4:0] be_ff00; | |
141 | wire [31:0] be_hout_ff; | |
142 | wire [63:15] rs2_fx1_ebf3; | |
143 | wire i_a3_rs2_ff_scanin; | |
144 | wire i_a3_rs2_ff_scanout; | |
145 | wire [63:0] a3_rs2_ff; | |
146 | wire [63:0] a3_rs2; | |
147 | wire [63:0] a3_rs2_; | |
148 | wire [67:0] bm00; | |
149 | wire [68:0] bm01; | |
150 | wire [70:2] bm02; | |
151 | wire [72:4] bm03; | |
152 | wire [74:6] bm04; | |
153 | wire [76:8] bm05; | |
154 | wire [78:10] bm06; | |
155 | wire [80:12] bm07; | |
156 | wire [82:14] bm08; | |
157 | wire [69:1] a3_csa1_1_c; | |
158 | wire [70:0] a3_csa1_1_s; | |
159 | wire [75:7] a3_csa1_2_c; | |
160 | wire [76:4] a3_csa1_2_s; | |
161 | wire [81:13] a3_csa1_3_c; | |
162 | wire [82:10] a3_csa1_3_s; | |
163 | wire [77:5] a3_csa2_1_c; | |
164 | wire [82:0] a3_csa2_1_s; | |
165 | wire [76:8] a3_csa2_2_c; | |
166 | wire [81:1] a3_csa2_2_s; | |
167 | wire a3_csa3_1_unused; | |
168 | wire [82:2] a3_csa3_1_c; | |
169 | wire [82:0] a3_csa3_1_s; | |
170 | wire i_a3_s_ff_a_scanin; | |
171 | wire i_a3_s_ff_a_scanout; | |
172 | wire [82:0] a3_csa3_1_s_ff; | |
173 | wire i_a3_s_ff_b_scanin; | |
174 | wire i_a3_s_ff_b_scanout; | |
175 | wire i_a3_c_ff_a_scanin; | |
176 | wire i_a3_c_ff_a_scanout; | |
177 | wire [82:2] a3_csa3_1_c_ff; | |
178 | wire i_a3_c_ff_b_scanin; | |
179 | wire i_a3_c_ff_b_scanout; | |
180 | wire [100:16] a2_csa2_3_s; | |
181 | wire [98:0] a32_xr4_1; | |
182 | wire i_a32_x_ff_a_scanin; | |
183 | wire i_a32_x_ff_a_scanout; | |
184 | wire [98:0] a32_xr_ff; | |
185 | wire i_a32_x_ff_b_scanin; | |
186 | wire i_a32_x_ff_b_scanout; | |
187 | wire i_a2_be_ff_a_scanin; | |
188 | wire i_a2_be_ff_a_scanout; | |
189 | wire a2_xr_mode_fx2_; | |
190 | wire [4:0] be_ff17; | |
191 | wire [4:0] be_ff16; | |
192 | wire i_a2_be_ff_b_scanin; | |
193 | wire i_a2_be_ff_b_scanout; | |
194 | wire [4:0] be_ff15; | |
195 | wire [4:0] be_ff14; | |
196 | wire [4:0] be_ff13; | |
197 | wire [4:0] be_ff12; | |
198 | wire [4:0] be_ff11; | |
199 | wire [4:0] be_ff10; | |
200 | wire [4:0] be_ff09; | |
201 | wire [63:31] rs2_fx1_ebf2; | |
202 | wire i_a2_rs2_ff_scanin; | |
203 | wire i_a2_rs2_ff_scanout; | |
204 | wire [63:0] a2_rs2_ff; | |
205 | wire [63:0] a2_rs2; | |
206 | wire [63:0] a2_rs2_; | |
207 | wire [84:16] bm09; | |
208 | wire [86:18] bm10; | |
209 | wire [88:20] bm11; | |
210 | wire [90:22] bm12; | |
211 | wire [92:24] bm13; | |
212 | wire [94:26] bm14; | |
213 | wire [96:28] bm15; | |
214 | wire [98:30] bm16; | |
215 | wire [100:32] bm17; | |
216 | wire [87:19] a2_csa1_4_c; | |
217 | wire [88:16] a2_csa1_4_s; | |
218 | wire [93:25] a2_csa1_5_c; | |
219 | wire [94:22] a2_csa1_5_s; | |
220 | wire [99:31] a2_csa1_6_c; | |
221 | wire [100:28] a2_csa1_6_s; | |
222 | wire [95:23] a2_csa2_3_c; | |
223 | wire [94:26] a2_csa2_4_c; | |
224 | wire [99:19] a2_csa2_4_s; | |
225 | wire a2_csa3_2_unused; | |
226 | wire [100:20] a2_csa3_2_c; | |
227 | wire [100:16] a2_csa3_2_s; | |
228 | wire i_a2_s_ff_a_scanin; | |
229 | wire i_a2_s_ff_a_scanout; | |
230 | wire [100:16] a2_csa3_2_s_ff; | |
231 | wire i_a2_s_ff_b_scanin; | |
232 | wire i_a2_s_ff_b_scanout; | |
233 | wire i_a2_c_ff_a_scanin; | |
234 | wire i_a2_c_ff_a_scanout; | |
235 | wire [100:20] a2_csa3_2_c_ff; | |
236 | wire i_a2_c_ff_b_scanin; | |
237 | wire i_a2_c_ff_b_scanout; | |
238 | wire i_a1_be_ff_scanin; | |
239 | wire i_a1_be_ff_scanout; | |
240 | wire a1_xr_mode_fx2_; | |
241 | wire [4:0] be_ff26; | |
242 | wire [4:0] be_ff25; | |
243 | wire [4:0] be_ff24; | |
244 | wire [4:0] be_ff23; | |
245 | wire [4:0] be_ff22; | |
246 | wire [4:0] be_ff21; | |
247 | wire [4:0] be_ff20; | |
248 | wire [4:0] be_ff19; | |
249 | wire [4:0] be_ff18; | |
250 | wire [63:47] rs2_fx1_ebf1; | |
251 | wire i_a1_rs2_ff_scanin; | |
252 | wire i_a1_rs2_ff_scanout; | |
253 | wire [63:0] a1_rs2_ff; | |
254 | wire [63:0] a1_rs2; | |
255 | wire [63:0] a1_rs2_; | |
256 | wire [102:34] bm18; | |
257 | wire [104:36] bm19; | |
258 | wire [106:38] bm20; | |
259 | wire [108:40] bm21; | |
260 | wire [110:42] bm22; | |
261 | wire [112:44] bm23; | |
262 | wire [114:46] bm24; | |
263 | wire [116:48] bm25; | |
264 | wire [118:50] bm26; | |
265 | wire [105:37] a1_csa1_7_c; | |
266 | wire [106:34] a1_csa1_7_s; | |
267 | wire [111:43] a1_csa1_8_c; | |
268 | wire [112:40] a1_csa1_8_s; | |
269 | wire [117:49] a1_csa1_9_c; | |
270 | wire [118:46] a1_csa1_9_s; | |
271 | wire [113:41] a1_csa2_5_c; | |
272 | wire [118:34] a1_csa2_5_s; | |
273 | wire [112:44] a1_csa2_6_c; | |
274 | wire [117:37] a1_csa2_6_s; | |
275 | wire a1_csa3_3_unused; | |
276 | wire [118:38] a1_csa3_3_c; | |
277 | wire [118:34] a1_csa3_3_s; | |
278 | wire i_a1_s_ff_a_scanin; | |
279 | wire i_a1_s_ff_a_scanout; | |
280 | wire [118:34] a1_csa3_3_s_ff; | |
281 | wire i_a1_s_ff_b_scanin; | |
282 | wire i_a1_s_ff_b_scanout; | |
283 | wire i_a1_c_ff_a_scanin; | |
284 | wire i_a1_c_ff_a_scanout; | |
285 | wire [118:38] a1_csa3_3_c_ff; | |
286 | wire i_a1_c_ff_b_scanin; | |
287 | wire i_a1_c_ff_b_scanout; | |
288 | wire [126:54] a0_xr_in; | |
289 | wire [126:36] a10_xr4_2; | |
290 | wire i_a10_x_ff_a_scanin; | |
291 | wire i_a10_x_ff_a_scanout; | |
292 | wire [126:36] a10_xr_ff; | |
293 | wire i_a10_x_ff_b_scanin; | |
294 | wire i_a10_x_ff_b_scanout; | |
295 | wire i_a0_be_ff_scanin; | |
296 | wire i_a0_be_ff_scanout; | |
297 | wire a0_xr_mode_fx2_; | |
298 | wire be_ff32_b0; | |
299 | wire [4:0] be_ff31; | |
300 | wire [4:0] be_ff30; | |
301 | wire [4:0] be_ff29; | |
302 | wire [4:0] be_ff28; | |
303 | wire [4:0] be_ff27; | |
304 | wire [63:47] rs2_fx1_ebf0; | |
305 | wire i_a0_rs2_ff_scanin; | |
306 | wire i_a0_rs2_ff_scanout; | |
307 | wire [63:0] a0_rs2_ff; | |
308 | wire [63:0] a0_rs2; | |
309 | wire [63:0] a0_rs2_; | |
310 | wire [120:52] bm27; | |
311 | wire [122:54] bm28; | |
312 | wire [124:56] bm29; | |
313 | wire [126:58] bm30; | |
314 | wire [127:60] bm31; | |
315 | wire [135:62] bm32; | |
316 | wire [123:55] a0_csa2_7_c; | |
317 | wire [124:52] a0_csa2_7_s; | |
318 | wire [128:61] a0_csa2_8_c; | |
319 | wire [135:58] a0_csa2_8_s; | |
320 | wire a0_csa3_4_unused; | |
321 | wire [129:56] a0_csa3_4_c; | |
322 | wire [135:52] a0_csa3_4_s; | |
323 | wire i_a0_s_ff_a_scanin; | |
324 | wire i_a0_s_ff_a_scanout; | |
325 | wire [135:52] a0_csa3_4_s_ff; | |
326 | wire i_a0_s_ff_b_scanin; | |
327 | wire i_a0_s_ff_b_scanout; | |
328 | wire i_a0_c_ff_a_scanin; | |
329 | wire i_a0_c_ff_a_scanout; | |
330 | wire [129:56] a0_csa3_4_c_ff; | |
331 | wire i_a0_c_ff_b_scanin; | |
332 | wire i_a0_c_ff_b_scanout; | |
333 | wire [6:2] accum_sel_fx4; | |
334 | wire accum_sel_fx4_b0; | |
335 | wire a4_8x16csa4_1_unused; | |
336 | wire [31:2] a4_8x16csa4_1_c; | |
337 | wire [31:0] a4_8x16csa4_1_s; | |
338 | wire a4_8x16csa4_2_unused; | |
339 | wire [49:20] a4_8x16csa4_2_c; | |
340 | wire [49:18] a4_8x16csa4_2_s; | |
341 | wire a4_8x16csa4_3_unused; | |
342 | wire [67:38] a4_8x16csa4_3_c; | |
343 | wire [67:36] a4_8x16csa4_3_s; | |
344 | wire a4_8x16csa4_4_unused; | |
345 | wire [85:56] a4_8x16csa4_4_c; | |
346 | wire [85:54] a4_8x16csa4_4_s; | |
347 | wire [126:0] a4_xr5_1; | |
348 | wire a4_csa4_1b_cout; | |
349 | wire a4_csa4_1a_unused; | |
350 | wire [101:3] a4_csa4_1_c; | |
351 | wire [100:0] a4_csa4_1_s; | |
352 | wire a4_csa4_2_unused; | |
353 | wire [130:39] a4_csa4_2_c; | |
354 | wire [135:34] a4_csa4_2_s; | |
355 | wire a4_csa5_1b_cout; | |
356 | wire a4_csa5_1a_unused; | |
357 | wire [131:4] a4_csa5_1_c; | |
358 | wire [135:0] a4_csa5_1_s; | |
359 | wire i_a4_s_lo_ff_scanin; | |
360 | wire i_a4_s_lo_ff_scanout; | |
361 | wire [135:0] a4_csa5_1_s_ff; | |
362 | wire i_a4_s_hi_ff_scanin; | |
363 | wire i_a4_s_hi_ff_scanout; | |
364 | wire i_a4_c_lo_ff_scanin; | |
365 | wire i_a4_c_lo_ff_scanout; | |
366 | wire [132:0] a4_csa5_1_c_ff; | |
367 | wire i_a4_c_hi_ff_scanin; | |
368 | wire i_a4_c_hi_ff_scanout; | |
369 | wire [135:0] accum_ff; | |
370 | wire [126:0] xr_fx4; | |
371 | wire i_accum_ff0_scanin; | |
372 | wire i_accum_ff0_scanout; | |
373 | wire [135:0] fya_add_result; | |
374 | wire i_accum_ff1_scanin; | |
375 | wire i_accum_ff1_scanout; | |
376 | wire i_accum_sel_b1_ff_scanin; | |
377 | wire i_accum_sel_b1_ff_scanout; | |
378 | wire [3:0] accum_sel_fx4_b1; | |
379 | wire fya_sticky_dp; | |
380 | wire fya_sticky_sp; | |
381 | wire [1:0] fya_xicc_z; | |
382 | wire i_fx5_ff_scanin; | |
383 | wire i_fx5_ff_scanout; | |
384 | wire i_ma_result_ff_scanin; | |
385 | wire i_ma_result_ff_scanout; | |
386 | ||
387 | ||
388 | input l2clk; | |
389 | input scan_in; | |
390 | input tcu_pce_ov; // scan signals | |
391 | input spc_aclk; | |
392 | input spc_bclk; | |
393 | input tcu_scan_en; | |
394 | input tcu_dectest; | |
395 | input tcu_muxtest; | |
396 | output scan_out; | |
397 | ||
398 | input mul_clken_rep0; // multiply clken | |
399 | input mul_clken_rep01; // multiply clken | |
400 | ||
401 | input [63:0] spu_fgu_rs1_e; // rs1 source from SPU | |
402 | input [63:0] spu_fgu_rs2_e; // rs2 source from SPU | |
403 | ||
404 | input [63:0] fad_rs1_fmt_fx1_rep0; | |
405 | input [63:0] fad_rs2_fmt_fx1_rep0; | |
406 | input [63:0] fad_rs2_fmt_fx1_rep1; | |
407 | ||
408 | input fac_xr_mode_fx1; // 0 : Int or Float | |
409 | // 1 : XOR mult | |
410 | ||
411 | input [4:0] fac_rs1_sel_fx1; // [0] : FMUL8SUx16 or FMULD8SUx16 | |
412 | // [1] : FMUL8x16 or FMUL8x16AU or FMUL8x16AL | |
413 | // [2] : FMUL8ULx16 or FMULD8ULx16 | |
414 | // [3] : MA Int / XOR forward of last MA result | |
415 | // [4] : MA Int / XOR unforwarded | |
416 | // Def : 64 * 64 Multiply | |
417 | ||
418 | input [3:0] fac_rs2_sel_fx1; // [0] : FMUL8x16AU | |
419 | // [1] : FMUL8x16AL | |
420 | // [2] : all 8x16 | |
421 | // [3] : MA Int / XOR | |
422 | // Def : 64 * 64 Multiply | |
423 | ||
424 | input [1:0] fac_8x16_rnd_fx3; // [0] : FMUL8x16 or FMUL8x16AU or FMUL8x16AL or FMUL8SUx16 | |
425 | // [1] : FMUL8ULx16 | |
426 | ||
427 | input [3:0] fac_scff_sel_fx3; // [0] : Int, Float, MA Int | |
428 | // [1] : all 8x16 | |
429 | // [2] : MA Int * 2 | |
430 | // [3] : XOR mult | |
431 | // Def : XOR mult * 2 | |
432 | ||
433 | input [6:0] fac_accum_sel_fx3; // [0] : Write ACCUM with result | |
434 | // [1] : Add ACCUM to Mult product | |
435 | // [2] : XOR Mult w/ ACCUM | |
436 | // [3] : XOR Mult w/ ACCUM >> 64 | |
437 | // [4] : XOR Mult w/o ACCUM | |
438 | // [5] : XOR Mult w/o ACCUM >> 64 | |
439 | // [6] : Int Mult w/ or w/o ACCUM | |
440 | // Def : Int Mult w/ or w/o ACCUM >> 64 | |
441 | ||
442 | input [5:0] fac_result_sel_fx4; // [0] : FMUL8x16 or FMUL8x16AU or FMUL8x16AL or FMUL8SUx16 | |
443 | // [1] : FMUL8ULx16 | |
444 | // [2] : FMULD8SUx16 | |
445 | // [3] : FMULD8ULx16 | |
446 | // [4] : XOR multiply w/ ACCUMUMATE | |
447 | // [5] : Float | |
448 | // Def : Integer, MA Integer w/ and w/o ACCUMULATE, XOR w/o ACCUMULATE | |
449 | ||
450 | input fac_ma_result_en_fx4; // 1 : Save last MA result in shadow flop | |
451 | ||
452 | output [63:0] fgu_mul_result_fx5; | |
453 | output fpy_sticky_dp_fx5; | |
454 | output fpy_sticky_sp_fx5; | |
455 | output fpy_fp_result_fx4_b63; | |
456 | output [1:0] fpy_xicc_z_fx5; | |
457 | ||
458 | output fgu_accum_b0_fx5; // To SPU MA | |
459 | ||
460 | ||
461 | ||
462 | // scan renames | |
463 | assign stop = 1'b0; | |
464 | assign test = tcu_dectest; | |
465 | // end scan | |
466 | ||
467 | fgu_fpy_dp_buff_macro__dbuff_32x__rep_1__stack_88c__width_4 test_rep0 ( | |
468 | .din ({tcu_scan_en, tcu_pce_ov, spc_aclk, spc_bclk}), | |
469 | .dout({se, pce_ov, siclk, soclk }) | |
470 | ); | |
471 | ||
472 | ||
473 | fgu_fpy_dp_msff_macro__minbuff_1__stack_88c__width_64 i_spu_rs1_ff ( | |
474 | .scan_in(i_spu_rs1_ff_scanin), | |
475 | .scan_out(i_spu_rs1_ff_scanout), | |
476 | .clk ( l2clk ), | |
477 | .en ( mul_clken_rep0 ), | |
478 | .din ( spu_fgu_rs1_e[63:0] ), | |
479 | .dout( spu_fgu_rs1_fx1[63:0] ), | |
480 | .se(se), | |
481 | .siclk(siclk), | |
482 | .soclk(soclk), | |
483 | .pce_ov(pce_ov), | |
484 | .stop(stop)); | |
485 | ||
486 | ||
487 | fgu_fpy_dp_msff_macro__stack_88c__width_64 i_spu_rs2_ff ( | |
488 | .scan_in(i_spu_rs2_ff_scanin), | |
489 | .scan_out(i_spu_rs2_ff_scanout), | |
490 | .clk ( l2clk ), | |
491 | .en ( mul_clken_rep0 ), | |
492 | .din ( spu_fgu_rs2_e[63:0] ), | |
493 | .dout( spu_fgu_rs2_fx1[63:0] ), | |
494 | .se(se), | |
495 | .siclk(siclk), | |
496 | .soclk(soclk), | |
497 | .pce_ov(pce_ov), | |
498 | .stop(stop)); | |
499 | ||
500 | ||
501 | ||
502 | ||
503 | ||
504 | fgu_fpy_dp_buff_macro__stack_88c__width_4 i_rs2_fx1_ebuf ( | |
505 | .din ({fad_rs2_fmt_fx1_rep0[63],fad_rs2_fmt_fx1_rep0[47],fad_rs2_fmt_fx1_rep0[31],fad_rs2_fmt_fx1_rep0[15]}), | |
506 | .dout({ rs2_fx1_ebf[63] , rs2_fx1_ebf[47] , rs2_fx1_ebf[31] , rs2_fx1_ebf[15]} )); | |
507 | ||
508 | ||
509 | ||
510 | ||
511 | // *** *** *** *** *** *** *** *** Start : RS1 Format *** *** *** *** *** *** *** *** | |
512 | ||
513 | ||
514 | fgu_fpy_dp_inv_macro__stack_88c__width_1 i_xr_mode_fx1_inv ( | |
515 | .din ( fac_xr_mode_fx1 ), | |
516 | .dout( xr_mode_fx1_ )); | |
517 | ||
518 | fgu_fpy_dp_buff_macro__stack_88c__width_2 i_xr_mode_fx1_buf ( | |
519 | .din ({2{fac_xr_mode_fx1}} ), | |
520 | .dout( xr_mode_fx1_bf[1:0] )); | |
521 | ||
522 | fgu_fpy_dp_buff_macro__dbuff_48x__stack_88c__width_1 muxtest_a_rep0 ( | |
523 | .din (tcu_muxtest ), | |
524 | .dout(tcu_muxtest_a_rep0) | |
525 | ); | |
526 | ||
527 | fgu_fpy_dp_mux_macro__mux_pgpe__ports_6__stack_88c__width_69 i_rs1_fmt_mux ( | |
528 | .muxtst(tcu_muxtest_a_rep0), | |
529 | .din0({{ 4{fad_rs1_fmt_fx1_rep0[63]}},fad_rs1_fmt_fx1_rep0[63:56],1'b0, // a0 12:0 | |
530 | {10{fad_rs1_fmt_fx1_rep0[47]}},fad_rs1_fmt_fx1_rep0[47:40],1'b0, // a1 18:0 | |
531 | {10{fad_rs1_fmt_fx1_rep0[31]}},fad_rs1_fmt_fx1_rep0[31:24],1'b0, // a2 18:0 | |
532 | {10{fad_rs1_fmt_fx1_rep0[15]}},fad_rs1_fmt_fx1_rep0[15:8] }), // a3 18:1 | |
533 | ||
534 | .din1({{ 4{ 1'b0 }},fad_rs1_fmt_fx1_rep0[63:56],1'b0, // a0 12:0 | |
535 | {10{ 1'b0 }},fad_rs1_fmt_fx1_rep0[55:48],1'b0, // a1 18:0 | |
536 | {10{ 1'b0 }},fad_rs1_fmt_fx1_rep0[47:40],1'b0, // a2 18:0 | |
537 | {10{ 1'b0 }},fad_rs1_fmt_fx1_rep0[39:32] }), // a3 18:1 | |
538 | ||
539 | .din2({{ 4{ 1'b0 }},fad_rs1_fmt_fx1_rep0[55:48],1'b0, // a0 12:0 | |
540 | {10{ 1'b0 }},fad_rs1_fmt_fx1_rep0[39:32],1'b0, // a1 18:0 | |
541 | {10{ 1'b0 }},fad_rs1_fmt_fx1_rep0[23:16],1'b0, // a2 18:0 | |
542 | {10{ 1'b0 }},fad_rs1_fmt_fx1_rep0[7:0] }), // a3 18:1 | |
543 | ||
544 | .din3({2'b00,ma_result_ff[63:53], // a0 12:0 | |
545 | ma_result_ff[53:35] , // a1 18:0 | |
546 | ma_result_ff[35:17] , // a2 18:0 | |
547 | ma_result_ff[17:0] } ), // a3 18:1 | |
548 | ||
549 | .din4({2'b00,spu_fgu_rs1_fx1[63:53], // a0 12:0 | |
550 | spu_fgu_rs1_fx1[53:35], // a1 18:0 | |
551 | spu_fgu_rs1_fx1[35:17], // a2 18:0 | |
552 | spu_fgu_rs1_fx1[17:0]} ), // a3 18:1 | |
553 | ||
554 | .din5({2'b00,fad_rs1_fmt_fx1_rep0[63:53], // a0 12:0 | |
555 | fad_rs1_fmt_fx1_rep0[53:35], // a1 18:0 | |
556 | fad_rs1_fmt_fx1_rep0[35:17], // a2 18:0 | |
557 | fad_rs1_fmt_fx1_rep0[17:0]} ), // a3 18:1 | |
558 | ||
559 | .sel0( fac_rs1_sel_fx1[0] ), | |
560 | .sel1( fac_rs1_sel_fx1[1] ), | |
561 | .sel2( fac_rs1_sel_fx1[2] ), | |
562 | .sel3( fac_rs1_sel_fx1[3] ), | |
563 | .sel4( fac_rs1_sel_fx1[4] ), | |
564 | .dout({rs1_fmt_a0[12:0] , | |
565 | rs1_fmt_a1[18:0] , | |
566 | rs1_fmt_a2[18:0] , | |
567 | rs1_fmt_a3[18:1] } ), | |
568 | .test(test)); | |
569 | ||
570 | ||
571 | assign rs1_fmt_a3[0] = 1'b0; // 1st back bit is always '0' | |
572 | ||
573 | ||
574 | fgu_fpy_dp_booth_encode_macro i_be00 ( | |
575 | .xr_mode ( xr_mode_fx1_bf[0] ), | |
576 | .din ( rs1_fmt_a3[2:0] ), | |
577 | .dout ( be00[4:0] ), // +3,-1,-2,+2,+1 | |
578 | .pout ( be_pout[0] ), // P,H | |
579 | .hout ( be_hout[0] )); | |
580 | ||
581 | ||
582 | fgu_fpy_dp_booth_encode_macro i_be01 ( | |
583 | .xr_mode ( xr_mode_fx1_bf[0] ), | |
584 | .din ( rs1_fmt_a3[4:2] ), | |
585 | .dout ( be01[4:0] ), // +3,-1,-2,+2,+1 | |
586 | .pout ( be_pout[1] ), // P,H | |
587 | .hout ( be_hout[1] )); | |
588 | ||
589 | ||
590 | fgu_fpy_dp_booth_encode_macro i_be02 ( | |
591 | .xr_mode ( xr_mode_fx1_bf[0] ), | |
592 | .din ( rs1_fmt_a3[6:4] ), | |
593 | .dout ( be02[4:0] ), // +3,-1,-2,+2,+1 | |
594 | .pout ( be_pout[2] ), // P,H | |
595 | .hout ( be_hout[2] )); | |
596 | ||
597 | ||
598 | fgu_fpy_dp_booth_encode_macro i_be03 ( | |
599 | .xr_mode ( xr_mode_fx1_bf[0] ), | |
600 | .din ( rs1_fmt_a3[8:6] ), | |
601 | .dout ( be03[4:0] ), // +3,-1,-2,+2,+1 | |
602 | .pout ( be_pout[3] ), // P,H | |
603 | .hout ( be_hout[3] )); | |
604 | ||
605 | ||
606 | fgu_fpy_dp_booth_encode_macro i_be04 ( | |
607 | .xr_mode ( xr_mode_fx1_bf[0] ), | |
608 | .din ( rs1_fmt_a3[10:8] ), | |
609 | .dout ( be04[4:0] ), // +3,-1,-2,+2,+1 | |
610 | .pout ( be_pout[4] ), // P,H | |
611 | .hout ( be_hout[4] )); | |
612 | ||
613 | ||
614 | fgu_fpy_dp_booth_encode_macro i_be05 ( | |
615 | .xr_mode ( xr_mode_fx1_bf[0] ), | |
616 | .din ( rs1_fmt_a3[12:10] ), | |
617 | .dout ( be05[4:0] ), // +3,-1,-2,+2,+1 | |
618 | .pout ( be_pout[5] ), // P,H | |
619 | .hout ( be_hout[5] )); | |
620 | ||
621 | ||
622 | fgu_fpy_dp_booth_encode_macro i_be06 ( | |
623 | .xr_mode ( xr_mode_fx1_bf[0] ), | |
624 | .din ( rs1_fmt_a3[14:12] ), | |
625 | .dout ( be06[4:0] ), // +3,-1,-2,+2,+1 | |
626 | .pout ( be_pout[6] ), // P,H | |
627 | .hout ( be_hout[6] )); | |
628 | ||
629 | ||
630 | fgu_fpy_dp_booth_encode_macro i_be07 ( | |
631 | .xr_mode ( xr_mode_fx1_bf[0] ), | |
632 | .din ( rs1_fmt_a3[16:14] ), | |
633 | .dout ( be07[4:0] ), // +3,-1,-2,+2,+1 | |
634 | .pout ( be_pout[7] ), // P,H | |
635 | .hout ( be_hout[7] )); | |
636 | ||
637 | ||
638 | fgu_fpy_dp_booth_encode_macro i_be08 ( | |
639 | .xr_mode ( xr_mode_fx1_bf[0] ), | |
640 | .din ( rs1_fmt_a3[18:16] ), | |
641 | .dout ( be08[4:0] ), // +3,-1,-2,+2,+1 | |
642 | .pout ( be_pout[8] ), // P,H | |
643 | .hout ( be_hout[8] )); | |
644 | ||
645 | ||
646 | ||
647 | ||
648 | fgu_fpy_dp_booth_encode_macro i_be09 ( | |
649 | .xr_mode ( xr_mode_fx1_bf[0] ), | |
650 | .din ( rs1_fmt_a2[2:0] ), | |
651 | .dout ( be09[4:0] ), // +3,-1,-2,+2,+1 | |
652 | .pout ( be_pout[9] ), // P,H | |
653 | .hout ( be_hout[9] )); | |
654 | ||
655 | ||
656 | fgu_fpy_dp_booth_encode_macro i_be10 ( | |
657 | .xr_mode ( xr_mode_fx1_bf[0] ), | |
658 | .din ( rs1_fmt_a2[4:2] ), | |
659 | .dout ( be10[4:0] ), // +3,-1,-2,+2,+1 | |
660 | .pout ( be_pout[10] ), // P,H | |
661 | .hout ( be_hout[10] )); | |
662 | ||
663 | ||
664 | fgu_fpy_dp_booth_encode_macro i_be11 ( | |
665 | .xr_mode ( xr_mode_fx1_bf[0] ), | |
666 | .din ( rs1_fmt_a2[6:4] ), | |
667 | .dout ( be11[4:0] ), // +3,-1,-2,+2,+1 | |
668 | .pout ( be_pout[11] ), // P,H | |
669 | .hout ( be_hout[11] )); | |
670 | ||
671 | ||
672 | fgu_fpy_dp_booth_encode_macro i_be12 ( | |
673 | .xr_mode ( xr_mode_fx1_bf[0] ), | |
674 | .din ( rs1_fmt_a2[8:6] ), | |
675 | .dout ( be12[4:0] ), // +3,-1,-2,+2,+1 | |
676 | .pout ( be_pout[12] ), // P,H | |
677 | .hout ( be_hout[12] )); | |
678 | ||
679 | ||
680 | fgu_fpy_dp_booth_encode_macro i_be13 ( | |
681 | .xr_mode ( xr_mode_fx1_bf[0] ), | |
682 | .din ( rs1_fmt_a2[10:8] ), | |
683 | .dout ( be13[4:0] ), // +3,-1,-2,+2,+1 | |
684 | .pout ( be_pout[13] ), // P,H | |
685 | .hout ( be_hout[13] )); | |
686 | ||
687 | ||
688 | fgu_fpy_dp_booth_encode_macro i_be14 ( | |
689 | .xr_mode ( xr_mode_fx1_bf[0] ), | |
690 | .din ( rs1_fmt_a2[12:10] ), | |
691 | .dout ( be14[4:0] ), // +3,-1,-2,+2,+1 | |
692 | .pout ( be_pout[14] ), // P,H | |
693 | .hout ( be_hout[14] )); | |
694 | ||
695 | ||
696 | fgu_fpy_dp_booth_encode_macro i_be15 ( | |
697 | .xr_mode ( xr_mode_fx1_bf[0] ), | |
698 | .din ( rs1_fmt_a2[14:12] ), | |
699 | .dout ( be15[4:0] ), // +3,-1,-2,+2,+1 | |
700 | .pout ( be_pout[15] ), // P,H | |
701 | .hout ( be_hout[15] )); | |
702 | ||
703 | ||
704 | fgu_fpy_dp_booth_encode_macro i_be16 ( | |
705 | .xr_mode ( xr_mode_fx1_bf[0] ), | |
706 | .din ( rs1_fmt_a2[16:14] ), | |
707 | .dout ( be16[4:0] ), // +3,-1,-2,+2,+1 | |
708 | .pout ( be_pout[16] ), // P,H | |
709 | .hout ( be_hout[16] )); | |
710 | ||
711 | ||
712 | fgu_fpy_dp_booth_encode_macro i_be17 ( | |
713 | .xr_mode ( xr_mode_fx1_bf[0] ), | |
714 | .din ( rs1_fmt_a2[18:16] ), | |
715 | .dout ( be17[4:0] ), // +3,-1,-2,+2,+1 | |
716 | .pout ( be_pout[17] ), // P,H | |
717 | .hout ( be_hout[17] )); | |
718 | ||
719 | ||
720 | ||
721 | ||
722 | ||
723 | fgu_fpy_dp_booth_encode_macro i_be18 ( | |
724 | .xr_mode ( xr_mode_fx1_bf[0] ), | |
725 | .din ( rs1_fmt_a1[2:0] ), | |
726 | .dout ( be18[4:0] ), // +3,-1,-2,+2,+1 | |
727 | .pout ( be_pout[18] ), // P,H | |
728 | .hout ( be_hout[18] )); | |
729 | ||
730 | ||
731 | fgu_fpy_dp_booth_encode_macro i_be19 ( | |
732 | .xr_mode ( xr_mode_fx1_bf[0] ), | |
733 | .din ( rs1_fmt_a1[4:2] ), | |
734 | .dout ( be19[4:0] ), // +3,-1,-2,+2,+1 | |
735 | .pout ( be_pout[19] ), // P,H | |
736 | .hout ( be_hout[19] )); | |
737 | ||
738 | ||
739 | fgu_fpy_dp_booth_encode_macro i_be20 ( | |
740 | .xr_mode ( xr_mode_fx1_bf[0] ), | |
741 | .din ( rs1_fmt_a1[6:4] ), | |
742 | .dout ( be20[4:0] ), // +3,-1,-2,+2,+1 | |
743 | .pout ( be_pout[20] ), // P,H | |
744 | .hout ( be_hout[20] )); | |
745 | ||
746 | ||
747 | fgu_fpy_dp_booth_encode_macro i_be21 ( | |
748 | .xr_mode ( xr_mode_fx1_bf[0] ), | |
749 | .din ( rs1_fmt_a1[8:6] ), | |
750 | .dout ( be21[4:0] ), // +3,-1,-2,+2,+1 | |
751 | .pout ( be_pout[21] ), // P,H | |
752 | .hout ( be_hout[21] )); | |
753 | ||
754 | ||
755 | fgu_fpy_dp_booth_encode_macro i_be22 ( | |
756 | .xr_mode ( xr_mode_fx1_bf[1] ), | |
757 | .din ( rs1_fmt_a1[10:8] ), | |
758 | .dout ( be22[4:0] ), // +3,-1,-2,+2,+1 | |
759 | .pout ( be_pout[22] ), // P,H | |
760 | .hout ( be_hout[22] )); | |
761 | ||
762 | ||
763 | fgu_fpy_dp_booth_encode_macro i_be23 ( | |
764 | .xr_mode ( xr_mode_fx1_bf[1] ), | |
765 | .din ( rs1_fmt_a1[12:10] ), | |
766 | .dout ( be23[4:0] ), // +3,-1,-2,+2,+1 | |
767 | .pout ( be_pout[23] ), // P,H | |
768 | .hout ( be_hout[23] )); | |
769 | ||
770 | ||
771 | fgu_fpy_dp_booth_encode_macro i_be24 ( | |
772 | .xr_mode ( xr_mode_fx1_bf[1] ), | |
773 | .din ( rs1_fmt_a1[14:12] ), | |
774 | .dout ( be24[4:0] ), // +3,-1,-2,+2,+1 | |
775 | .pout ( be_pout[24] ), // P,H | |
776 | .hout ( be_hout[24] )); | |
777 | ||
778 | ||
779 | fgu_fpy_dp_booth_encode_macro i_be25 ( | |
780 | .xr_mode ( xr_mode_fx1_bf[1] ), | |
781 | .din ( rs1_fmt_a1[16:14] ), | |
782 | .dout ( be25[4:0] ), // +3,-1,-2,+2,+1 | |
783 | .pout ( be_pout[25] ), // P,H | |
784 | .hout ( be_hout[25] )); | |
785 | ||
786 | ||
787 | fgu_fpy_dp_booth_encode_macro i_be26 ( | |
788 | .xr_mode ( xr_mode_fx1_bf[1] ), | |
789 | .din ( rs1_fmt_a1[18:16] ), | |
790 | .dout ( be26[4:0] ), // +3,-1,-2,+2,+1 | |
791 | .pout ( be_pout[26] ), // P,H | |
792 | .hout ( be_hout[26] )); | |
793 | ||
794 | ||
795 | ||
796 | ||
797 | ||
798 | fgu_fpy_dp_booth_encode_macro i_be27 ( | |
799 | .xr_mode ( xr_mode_fx1_bf[1] ), | |
800 | .din ( rs1_fmt_a0[2:0] ), | |
801 | .dout ( be27[4:0] ), // +3,-1,-2,+2,+1 | |
802 | .pout ( be_pout[27] ), // P,H | |
803 | .hout ( be_hout[27] )); | |
804 | ||
805 | ||
806 | fgu_fpy_dp_booth_encode_macro i_be28 ( | |
807 | .xr_mode ( xr_mode_fx1_bf[1] ), | |
808 | .din ( rs1_fmt_a0[4:2] ), | |
809 | .dout ( be28[4:0] ), // +3,-1,-2,+2,+1 | |
810 | .pout ( be_pout[28] ), // P,H | |
811 | .hout ( be_hout[28] )); | |
812 | ||
813 | ||
814 | fgu_fpy_dp_booth_encode_macro i_be29 ( | |
815 | .xr_mode ( xr_mode_fx1_bf[1] ), | |
816 | .din ( rs1_fmt_a0[6:4] ), | |
817 | .dout ( be29[4:0] ), // +3,-1,-2,+2,+1 | |
818 | .pout ( be_pout[29] ), // P,H | |
819 | .hout ( be_hout[29] )); | |
820 | ||
821 | ||
822 | fgu_fpy_dp_booth_encode_macro i_be30 ( | |
823 | .xr_mode ( xr_mode_fx1_bf[1] ), | |
824 | .din ( rs1_fmt_a0[8:6] ), | |
825 | .dout ( be30[4:0] ), // +3,-1,-2,+2,+1 | |
826 | .pout ( be_pout[30] ), // P,H | |
827 | .hout ( be_hout[30] )); | |
828 | ||
829 | ||
830 | fgu_fpy_dp_booth_encode_macro i_be31 ( | |
831 | .xr_mode ( xr_mode_fx1_bf[1] ), | |
832 | .din ( rs1_fmt_a0[10:8] ), | |
833 | .dout ( be31[4:0] ), // +3,-1,-2,+2,+1 | |
834 | .pout ( be_pout[31] ), // P,H | |
835 | .hout ( be_hout[31] )); | |
836 | ||
837 | ||
838 | fgu_fpy_dp_booth_encode_macro i_be32 ( | |
839 | .xr_mode ( xr_mode_fx1_bf[1] ), | |
840 | .din ( rs1_fmt_a0[12:10] ), | |
841 | .dout ({i_be32_unused[3:0], | |
842 | be32_b0} ), // +3,-1,-2,+2,+1 | |
843 | .pout ( i_be32_unused[4] ), // P,H | |
844 | .hout ( i_be32_unused[5] )); | |
845 | ||
846 | ||
847 | ||
848 | // *** *** *** *** *** *** *** *** End : RS1 Format *** *** *** *** *** *** *** *** | |
849 | ||
850 | ||
851 | ||
852 | // *** *** *** *** *** *** *** *** Start : XOR multiply specific *** *** *** *** *** | |
853 | ||
854 | ||
855 | ||
856 | fgu_fpy_dp_xor_macro__ports_2__stack_88c__width_63 i_3x_xor ( | |
857 | .din0( spu_fgu_rs2_fx1[63:1] ), // XOR 1x | |
858 | .din1( spu_fgu_rs2_fx1[62:0] ), // XOR 2x | |
859 | .dout( rs2_3x_fx1[63:1] )); | |
860 | ||
861 | assign rs2_3x_fx1[0] = spu_fgu_rs2_fx1[0]; | |
862 | assign rs2_3x_fx1[64] = spu_fgu_rs2_fx1[63]; | |
863 | ||
864 | ||
865 | fgu_fpy_dp_msff_macro__stack_88c__width_65 i_3x_ff ( | |
866 | .scan_in(i_3x_ff_scanin), | |
867 | .scan_out(i_3x_ff_scanout), | |
868 | .clk ( l2clk ), | |
869 | .en ( mul_clken_rep0 ), | |
870 | .din ( rs2_3x_fx1[64:0] ), | |
871 | .dout( rs2_3x_ff[64:0] ), | |
872 | .se(se), | |
873 | .siclk(siclk), | |
874 | .soclk(soclk), | |
875 | .pce_ov(pce_ov), | |
876 | .stop(stop)); | |
877 | ||
878 | ||
879 | fgu_fpy_dp_buff_macro__stack_88c__width_65 i_3x_buf ( | |
880 | .din ( rs2_3x_ff[64:0] ), | |
881 | .dout( rs2_3x[64:0] )); | |
882 | ||
883 | ||
884 | // *** *** *** *** *** *** *** *** End : XOR multiply specific *** *** *** *** *** | |
885 | ||
886 | ||
887 | ||
888 | // *** *** *** *** *** *** *** *** Start : "A3" 9:2 CSA Tree *** *** *** *** *** *** | |
889 | ||
890 | fgu_fpy_dp_msff_macro__stack_88c__width_63 i_a3_be_ff ( | |
891 | .scan_in(i_a3_be_ff_scanin), | |
892 | .scan_out(i_a3_be_ff_scanout), | |
893 | .clk ( l2clk ), | |
894 | .en ( mul_clken_rep0 ), | |
895 | .din ({xr_mode_fx1_ , | |
896 | be_pout[8:0] , | |
897 | be08[4:0] , | |
898 | be07[4:0] , | |
899 | be06[4:0] , | |
900 | be05[4:0] , | |
901 | be04[4:0] , | |
902 | be03[4:0] , | |
903 | be02[4:0] , | |
904 | be01[4:0] , | |
905 | be00[4:0] , | |
906 | be_hout[7:0]} ), | |
907 | .dout({a3_xr_mode_fx2_ , | |
908 | be_pout_ff[8:0] , | |
909 | be_ff08[4:0] , | |
910 | be_ff07[4:0] , | |
911 | be_ff06[4:0] , | |
912 | be_ff05[4:0] , | |
913 | be_ff04[4:0] , | |
914 | be_ff03[4:0] , | |
915 | be_ff02[4:0] , | |
916 | be_ff01[4:0] , | |
917 | be_ff00[4:0] , | |
918 | be_hout_ff[7:0]} ), | |
919 | .se(se), | |
920 | .siclk(siclk), | |
921 | .soclk(soclk), | |
922 | .pce_ov(pce_ov), | |
923 | .stop(stop)); | |
924 | ||
925 | ||
926 | fgu_fpy_dp_buff_macro__stack_88c__width_3 i_a3_rs2_fx1_ebuf ( | |
927 | .din ({rs2_fx1_ebf[63] ,rs2_fx1_ebf[47] ,rs2_fx1_ebf[15]} ), | |
928 | .dout({rs2_fx1_ebf3[63] ,rs2_fx1_ebf3[47] ,rs2_fx1_ebf3[15]} )); | |
929 | ||
930 | ||
931 | fgu_fpy_dp_msff_macro__mux_aope__ports_5__stack_88c__width_64 i_a3_rs2_ff ( | |
932 | .scan_in(i_a3_rs2_ff_scanin), | |
933 | .scan_out(i_a3_rs2_ff_scanout), | |
934 | .clk ( l2clk ), | |
935 | .en ( mul_clken_rep0 ), | |
936 | .din0({{32{1'b0}},{17{rs2_fx1_ebf3[63]}},fad_rs2_fmt_fx1_rep1[62:48]} ), | |
937 | .din1({{32{1'b0}},{17{rs2_fx1_ebf3[47]}},fad_rs2_fmt_fx1_rep1[46:32]} ), | |
938 | .din2({{32{1'b0}},{17{rs2_fx1_ebf3[15]}},fad_rs2_fmt_fx1_rep1[14:0]} ), | |
939 | .din3( spu_fgu_rs2_fx1[63:0] ), | |
940 | .din4( fad_rs2_fmt_fx1_rep1[63:0] ), | |
941 | .sel0( fac_rs2_sel_fx1[0] ), | |
942 | .sel1( fac_rs2_sel_fx1[1] ), | |
943 | .sel2( fac_rs2_sel_fx1[2] ), | |
944 | .sel3( fac_rs2_sel_fx1[3] ), | |
945 | .dout( a3_rs2_ff[63:0] ), | |
946 | .se(se), | |
947 | .siclk(siclk), | |
948 | .soclk(soclk), | |
949 | .pce_ov(pce_ov), | |
950 | .stop(stop)); | |
951 | ||
952 | ||
953 | fgu_fpy_dp_buff_macro__stack_88c__width_64 i_a3_rs2_buf ( | |
954 | .din ( a3_rs2_ff[63:0] ), | |
955 | .dout( a3_rs2[63:0] )); | |
956 | ||
957 | fgu_fpy_dp_inv_macro__stack_88c__width_64 i_a3_rs2_inv ( | |
958 | .din ( a3_rs2_ff[63:0] ), | |
959 | .dout( a3_rs2_[63:0] )); | |
960 | ||
961 | ||
962 | ||
963 | ||
964 | fgu_fpy_dp_mux_macro__mux_aonpe__ports_5__stack_88c__width_65 i_a3_bm_00 ( | |
965 | .din0({1'b0 , a3_rs2[63:0] }), // +1 * rs2 | |
966 | .din1({ a3_rs2[63:0] , 1'b0 }), // +2 * rs2 | |
967 | .din2({ a3_rs2_[63:0] , 1'b1 }), // -2 * rs2 | |
968 | .din3({1'b1 , a3_rs2_[63:0] }), // -1 * rs2 | |
969 | .din4( rs2_3x[64:0] ), // +3 * rs2 | |
970 | .sel0( be_ff00[0] ), | |
971 | .sel1( be_ff00[1] ), | |
972 | .sel2( be_ff00[2] ), | |
973 | .sel3( be_ff00[3] ), | |
974 | .sel4( be_ff00[4] ), | |
975 | .dout( bm00[64:0] )); | |
976 | ||
977 | assign bm00[67:65] = { be_pout_ff[0] , be_hout_ff[0] , be_hout_ff[0]}; // PNN | |
978 | ||
979 | ||
980 | ||
981 | fgu_fpy_dp_mux_macro__mux_aonpe__ports_5__stack_88c__width_65 i_a3_bm_01 ( | |
982 | .din0({1'b0 , a3_rs2[63:0] }), // +1 * rs2 | |
983 | .din1({ a3_rs2[63:0] , 1'b0 }), // +2 * rs2 | |
984 | .din2({ a3_rs2_[63:0] , 1'b1 }), // -2 * rs2 | |
985 | .din3({1'b1 , a3_rs2_[63:0] }), // -1 * rs2 | |
986 | .din4( rs2_3x[64:0] ), // +3 * rs2 | |
987 | .sel0( be_ff01[0] ), | |
988 | .sel1( be_ff01[1] ), | |
989 | .sel2( be_ff01[2] ), | |
990 | .sel3( be_ff01[3] ), | |
991 | .sel4( be_ff01[4] ), | |
992 | .dout( bm01[66:2] )); | |
993 | ||
994 | assign bm01[68:67] = { a3_xr_mode_fx2_ , be_pout_ff[1] }; // 1P | |
995 | assign bm01[1:0] = { 1'b0 , be_hout_ff[0] }; | |
996 | ||
997 | ||
998 | ||
999 | fgu_fpy_dp_mux_macro__mux_aonpe__ports_5__stack_88c__width_65 i_a3_bm_02 ( | |
1000 | .din0({1'b0 , a3_rs2[63:0] }), // +1 * rs2 | |
1001 | .din1({ a3_rs2[63:0] , 1'b0 }), // +2 * rs2 | |
1002 | .din2({ a3_rs2_[63:0] , 1'b1 }), // -2 * rs2 | |
1003 | .din3({1'b1 , a3_rs2_[63:0] }), // -1 * rs2 | |
1004 | .din4( rs2_3x[64:0] ), // +3 * rs2 | |
1005 | .sel0( be_ff02[0] ), | |
1006 | .sel1( be_ff02[1] ), | |
1007 | .sel2( be_ff02[2] ), | |
1008 | .sel3( be_ff02[3] ), | |
1009 | .sel4( be_ff02[4] ), | |
1010 | .dout( bm02[68:4] )); | |
1011 | ||
1012 | assign bm02[70:69] = { a3_xr_mode_fx2_ , be_pout_ff[2] }; // 1P | |
1013 | assign bm02[3:2] = { 1'b0 , be_hout_ff[1] }; | |
1014 | ||
1015 | ||
1016 | ||
1017 | fgu_fpy_dp_mux_macro__mux_aonpe__ports_5__stack_88c__width_65 i_a3_bm_03 ( | |
1018 | .din0({1'b0 , a3_rs2[63:0] }), // +1 * rs2 | |
1019 | .din1({ a3_rs2[63:0] , 1'b0 }), // +2 * rs2 | |
1020 | .din2({ a3_rs2_[63:0] , 1'b1 }), // -2 * rs2 | |
1021 | .din3({1'b1 , a3_rs2_[63:0] }), // -1 * rs2 | |
1022 | .din4( rs2_3x[64:0] ), // +3 * rs2 | |
1023 | .sel0( be_ff03[0] ), | |
1024 | .sel1( be_ff03[1] ), | |
1025 | .sel2( be_ff03[2] ), | |
1026 | .sel3( be_ff03[3] ), | |
1027 | .sel4( be_ff03[4] ), | |
1028 | .dout( bm03[70:6] )); | |
1029 | ||
1030 | assign bm03[72:71] = { a3_xr_mode_fx2_ , be_pout_ff[3] }; // 1P | |
1031 | assign bm03[5:4] = { 1'b0 , be_hout_ff[2] }; | |
1032 | ||
1033 | ||
1034 | ||
1035 | fgu_fpy_dp_mux_macro__mux_aonpe__ports_5__stack_88c__width_65 i_a3_bm_04 ( | |
1036 | .din0({1'b0 , a3_rs2[63:0] }), // +1 * rs2 | |
1037 | .din1({ a3_rs2[63:0] , 1'b0 }), // +2 * rs2 | |
1038 | .din2({ a3_rs2_[63:0] , 1'b1 }), // -2 * rs2 | |
1039 | .din3({1'b1 , a3_rs2_[63:0] }), // -1 * rs2 | |
1040 | .din4( rs2_3x[64:0] ), // +3 * rs2 | |
1041 | .sel0( be_ff04[0] ), | |
1042 | .sel1( be_ff04[1] ), | |
1043 | .sel2( be_ff04[2] ), | |
1044 | .sel3( be_ff04[3] ), | |
1045 | .sel4( be_ff04[4] ), | |
1046 | .dout( bm04[72:8] )); | |
1047 | ||
1048 | assign bm04[74:73] = { a3_xr_mode_fx2_ , be_pout_ff[4] }; // 1P | |
1049 | assign bm04[7:6] = { 1'b0 , be_hout_ff[3] }; | |
1050 | ||
1051 | ||
1052 | ||
1053 | fgu_fpy_dp_mux_macro__mux_aonpe__ports_5__stack_88c__width_65 i_a3_bm_05 ( | |
1054 | .din0({1'b0 , a3_rs2[63:0] }), // +1 * rs2 | |
1055 | .din1({ a3_rs2[63:0] , 1'b0 }), // +2 * rs2 | |
1056 | .din2({ a3_rs2_[63:0] , 1'b1 }), // -2 * rs2 | |
1057 | .din3({1'b1 , a3_rs2_[63:0] }), // -1 * rs2 | |
1058 | .din4( rs2_3x[64:0] ), // +3 * rs2 | |
1059 | .sel0( be_ff05[0] ), | |
1060 | .sel1( be_ff05[1] ), | |
1061 | .sel2( be_ff05[2] ), | |
1062 | .sel3( be_ff05[3] ), | |
1063 | .sel4( be_ff05[4] ), | |
1064 | .dout( bm05[74:10] )); | |
1065 | ||
1066 | assign bm05[76:75] = { a3_xr_mode_fx2_ , be_pout_ff[5] }; // 1P | |
1067 | assign bm05[9:8] = { 1'b0 , be_hout_ff[4] }; | |
1068 | ||
1069 | ||
1070 | ||
1071 | fgu_fpy_dp_mux_macro__mux_aonpe__ports_5__stack_88c__width_65 i_a3_bm_06 ( | |
1072 | .din0({1'b0 , a3_rs2[63:0] }), // +1 * rs2 | |
1073 | .din1({ a3_rs2[63:0] , 1'b0 }), // +2 * rs2 | |
1074 | .din2({ a3_rs2_[63:0] , 1'b1 }), // -2 * rs2 | |
1075 | .din3({1'b1 , a3_rs2_[63:0] }), // -1 * rs2 | |
1076 | .din4( rs2_3x[64:0] ), // +3 * rs2 | |
1077 | .sel0( be_ff06[0] ), | |
1078 | .sel1( be_ff06[1] ), | |
1079 | .sel2( be_ff06[2] ), | |
1080 | .sel3( be_ff06[3] ), | |
1081 | .sel4( be_ff06[4] ), | |
1082 | .dout( bm06[76:12] )); | |
1083 | ||
1084 | assign bm06[78:77] = { a3_xr_mode_fx2_ , be_pout_ff[6] }; // 1P | |
1085 | assign bm06[11:10] = { 1'b0 , be_hout_ff[5] }; | |
1086 | ||
1087 | ||
1088 | ||
1089 | fgu_fpy_dp_mux_macro__mux_aonpe__ports_5__stack_88c__width_65 i_a3_bm_07 ( | |
1090 | .din0({1'b0 , a3_rs2[63:0] }), // +1 * rs2 | |
1091 | .din1({ a3_rs2[63:0] , 1'b0 }), // +2 * rs2 | |
1092 | .din2({ a3_rs2_[63:0] , 1'b1 }), // -2 * rs2 | |
1093 | .din3({1'b1 , a3_rs2_[63:0] }), // -1 * rs2 | |
1094 | .din4( rs2_3x[64:0] ), // +3 * rs2 | |
1095 | .sel0( be_ff07[0] ), | |
1096 | .sel1( be_ff07[1] ), | |
1097 | .sel2( be_ff07[2] ), | |
1098 | .sel3( be_ff07[3] ), | |
1099 | .sel4( be_ff07[4] ), | |
1100 | .dout( bm07[78:14] )); | |
1101 | ||
1102 | assign bm07[80:79] = { a3_xr_mode_fx2_ , be_pout_ff[7] }; // 1P | |
1103 | assign bm07[13:12] = { 1'b0 , be_hout_ff[6] }; | |
1104 | ||
1105 | ||
1106 | ||
1107 | fgu_fpy_dp_mux_macro__mux_aonpe__ports_5__stack_88c__width_65 i_a3_bm_08 ( | |
1108 | .din0({1'b0 , a3_rs2[63:0] }), // +1 * rs2 | |
1109 | .din1({ a3_rs2[63:0] , 1'b0 }), // +2 * rs2 | |
1110 | .din2({ a3_rs2_[63:0] , 1'b1 }), // -2 * rs2 | |
1111 | .din3({1'b1 , a3_rs2_[63:0] }), // -1 * rs2 | |
1112 | .din4( rs2_3x[64:0] ), // +3 * rs2 | |
1113 | .sel0( be_ff08[0] ), | |
1114 | .sel1( be_ff08[1] ), | |
1115 | .sel2( be_ff08[2] ), | |
1116 | .sel3( be_ff08[3] ), | |
1117 | .sel4( be_ff08[4] ), | |
1118 | .dout( bm08[80:16] )); | |
1119 | ||
1120 | assign bm08[82:81] = { a3_xr_mode_fx2_ , be_pout_ff[8] }; // 1P | |
1121 | assign bm08[15:14] = { 1'b0 , be_hout_ff[7] }; | |
1122 | ||
1123 | ||
1124 | ||
1125 | ||
1126 | fgu_fpy_dp_csa32_macro__stack_88c__width_69 a3_csa1_1 ( | |
1127 | .i0 ({ { 1{1'b0}}, bm00[67:0] }), | |
1128 | .i1 ({ bm01[68:0] }), | |
1129 | .i2 ({ bm02[68:2] , { 2{1'b0}} }), | |
1130 | .carry( a3_csa1_1_c[69:1] ), | |
1131 | .sum ( a3_csa1_1_s[68:0] )); | |
1132 | ||
1133 | assign a3_csa1_1_s[70:69] = bm02[70:69]; | |
1134 | ||
1135 | ||
1136 | ||
1137 | fgu_fpy_dp_csa32_macro__stack_88c__width_69 a3_csa1_2 ( | |
1138 | .i0 ({ { 2{1'b0}}, bm03[72:6] }), | |
1139 | .i1 ({ bm04[74:6] }), | |
1140 | .i2 ({ bm05[74:8] , { 2{1'b0}} }), | |
1141 | .carry( a3_csa1_2_c[75:7] ), | |
1142 | .sum ( a3_csa1_2_s[74:6] )); | |
1143 | ||
1144 | assign a3_csa1_2_s[5:4] = bm03[5:4]; | |
1145 | assign a3_csa1_2_s[76:75] = bm05[76:75]; | |
1146 | ||
1147 | ||
1148 | ||
1149 | fgu_fpy_dp_csa32_macro__stack_88c__width_69 a3_csa1_3 ( | |
1150 | .i0 ({ { 2{1'b0}}, bm06[78:12] }), | |
1151 | .i1 ({ bm07[80:12] }), | |
1152 | .i2 ({ bm08[80:14] , { 2{1'b0}} }), | |
1153 | .carry( a3_csa1_3_c[81:13] ), | |
1154 | .sum ( a3_csa1_3_s[80:12] )); | |
1155 | ||
1156 | assign a3_csa1_3_s[11:10] = bm06[11:10]; | |
1157 | assign a3_csa1_3_s[82:81] = bm08[82:81]; | |
1158 | ||
1159 | ||
1160 | ||
1161 | // *** 1st level to 2nd level *** | |
1162 | // | |
1163 | // csa1_1_s[70:00] csa1_1_c[69:01] | |
1164 | // csa1_2_s[76:04] csa1_2_c[75:07] | |
1165 | // csa1_3_s[82:10] csa1_3_c[81:13] | |
1166 | ||
1167 | ||
1168 | fgu_fpy_dp_csa32_macro__stack_88c__width_73 a3_csa2_1 ( | |
1169 | .i0 ({ { 6{1'b0}}, a3_csa1_1_s[70:4] }), | |
1170 | .i1 ({ a3_csa1_2_s[76:4] }), | |
1171 | .i2 ({ a3_csa1_3_s[76:10], { 6{1'b0}} }), | |
1172 | .carry( a3_csa2_1_c[77:5] ), | |
1173 | .sum ( a3_csa2_1_s[76:4] )); | |
1174 | ||
1175 | assign a3_csa2_1_s[3:0] = a3_csa1_1_s[3:0]; | |
1176 | assign a3_csa2_1_s[82:77] = a3_csa1_3_s[82:77]; | |
1177 | ||
1178 | ||
1179 | ||
1180 | fgu_fpy_dp_csa32_macro__stack_88c__width_69 a3_csa2_2 ( | |
1181 | .i0 ({ { 6{1'b0}}, a3_csa1_1_c[69:7] }), | |
1182 | .i1 ({ a3_csa1_2_c[75:7] }), | |
1183 | .i2 ({ a3_csa1_3_c[75:13], { 6{1'b0}} }), | |
1184 | .carry( a3_csa2_2_c[76:8] ), | |
1185 | .sum ( a3_csa2_2_s[75:7] )); | |
1186 | ||
1187 | assign a3_csa2_2_s[6:1] = a3_csa1_1_c[6:1]; | |
1188 | assign a3_csa2_2_s[81:76] = a3_csa1_3_c[81:76]; | |
1189 | ||
1190 | ||
1191 | ||
1192 | ||
1193 | // *** 2nd level to 3rd level *** | |
1194 | // | |
1195 | // csa2_1_s[82:00] csa2_1_c[77:05] | |
1196 | // csa2_2_s[81:01] csa2_2_c[76:08] | |
1197 | ||
1198 | ||
1199 | fgu_fpy_dp_csa42_macro__stack_88c__width_81 a3_csa3_1 ( | |
1200 | .i0 ({ a3_csa2_1_s[81:1] }), | |
1201 | .i1 ({ { 4{1'b0}}, a3_csa2_1_c[77:5] , { 4{1'b0}} }), | |
1202 | .i2 ({ { 5{1'b0}}, a3_csa2_2_c[76:8] , { 7{1'b0}} }), | |
1203 | .i3 ({ a3_csa2_2_s[81:1] }), | |
1204 | .cin ( 1'b0 ), // 1 bit | |
1205 | .cout ( a3_csa3_1_unused ), // 1 bit | |
1206 | .carry( a3_csa3_1_c[82:2] ), | |
1207 | .sum ( a3_csa3_1_s[81:1] )); | |
1208 | ||
1209 | assign a3_csa3_1_s[0] = a3_csa2_1_s[0]; | |
1210 | assign a3_csa3_1_s[82] = a3_csa2_1_s[82]; | |
1211 | ||
1212 | ||
1213 | ||
1214 | fgu_fpy_dp_msff_macro__stack_88c__width_39 i_a3_s_ff_a ( | |
1215 | .scan_in(i_a3_s_ff_a_scanin), | |
1216 | .scan_out(i_a3_s_ff_a_scanout), | |
1217 | .clk ( l2clk ), | |
1218 | .en ( mul_clken_rep01 ), | |
1219 | .din ( a3_csa3_1_s[82:44] ), // [82] and [00] are early | |
1220 | .dout( a3_csa3_1_s_ff[82:44] ), | |
1221 | .se(se), | |
1222 | .siclk(siclk), | |
1223 | .soclk(soclk), | |
1224 | .pce_ov(pce_ov), | |
1225 | .stop(stop)); | |
1226 | ||
1227 | fgu_fpy_dp_msff_macro__stack_88c__width_44 i_a3_s_ff_b ( | |
1228 | .scan_in(i_a3_s_ff_b_scanin), | |
1229 | .scan_out(i_a3_s_ff_b_scanout), | |
1230 | .clk ( l2clk ), | |
1231 | .en ( mul_clken_rep0 ), | |
1232 | .din ( a3_csa3_1_s[43:0] ), // [82] and [00] are early | |
1233 | .dout( a3_csa3_1_s_ff[43:0] ), | |
1234 | .se(se), | |
1235 | .siclk(siclk), | |
1236 | .soclk(soclk), | |
1237 | .pce_ov(pce_ov), | |
1238 | .stop(stop)); | |
1239 | ||
1240 | ||
1241 | fgu_fpy_dp_msff_macro__stack_88c__width_37 i_a3_c_ff_a ( | |
1242 | .scan_in(i_a3_c_ff_a_scanin), | |
1243 | .scan_out(i_a3_c_ff_a_scanout), | |
1244 | .clk ( l2clk ), | |
1245 | .en ( mul_clken_rep01 ), | |
1246 | .din ( a3_csa3_1_c[82:46] ), | |
1247 | .dout( a3_csa3_1_c_ff[82:46] ), | |
1248 | .se(se), | |
1249 | .siclk(siclk), | |
1250 | .soclk(soclk), | |
1251 | .pce_ov(pce_ov), | |
1252 | .stop(stop)); | |
1253 | ||
1254 | fgu_fpy_dp_msff_macro__stack_88c__width_44 i_a3_c_ff_b ( | |
1255 | .scan_in(i_a3_c_ff_b_scanin), | |
1256 | .scan_out(i_a3_c_ff_b_scanout), | |
1257 | .clk ( l2clk ), | |
1258 | .en ( mul_clken_rep0 ), | |
1259 | .din ( a3_csa3_1_c[45:2] ), | |
1260 | .dout( a3_csa3_1_c_ff[45:2] ), | |
1261 | .se(se), | |
1262 | .siclk(siclk), | |
1263 | .soclk(soclk), | |
1264 | .pce_ov(pce_ov), | |
1265 | .stop(stop)); | |
1266 | ||
1267 | ||
1268 | // *** *** *** *** *** *** *** *** End : "A3" 9:2 CSA Tree *** *** *** *** *** *** | |
1269 | ||
1270 | ||
1271 | ||
1272 | ||
1273 | ||
1274 | fgu_fpy_dp_xor_macro__ports_2__stack_88c__width_63 a32_xor4_1 ( | |
1275 | .din0( a3_csa2_1_s[80:18] ), | |
1276 | .din1( a2_csa2_3_s[80:18] ), | |
1277 | .dout( a32_xr4_1[80:18] )); | |
1278 | ||
1279 | assign a32_xr4_1[17:0] = a3_csa2_1_s[17:0]; | |
1280 | assign a32_xr4_1[98:81] = a2_csa2_3_s[98:81]; | |
1281 | ||
1282 | ||
1283 | fgu_fpy_dp_msff_macro__stack_88c__width_44 i_a32_x_ff_a ( | |
1284 | .scan_in(i_a32_x_ff_a_scanin), | |
1285 | .scan_out(i_a32_x_ff_a_scanout), | |
1286 | .clk ( l2clk ), | |
1287 | .en ( mul_clken_rep01 ), | |
1288 | .din ( a32_xr4_1[87:44] ), | |
1289 | .dout( a32_xr_ff[87:44] ), | |
1290 | .se(se), | |
1291 | .siclk(siclk), | |
1292 | .soclk(soclk), | |
1293 | .pce_ov(pce_ov), | |
1294 | .stop(stop)); | |
1295 | ||
1296 | fgu_fpy_dp_msff_macro__stack_88c__width_44 i_a32_x_ff_b ( | |
1297 | .scan_in(i_a32_x_ff_b_scanin), | |
1298 | .scan_out(i_a32_x_ff_b_scanout), | |
1299 | .clk ( l2clk ), | |
1300 | .en ( mul_clken_rep0 ), | |
1301 | .din ( a32_xr4_1[43:0] ), | |
1302 | .dout( a32_xr_ff[43:0] ), | |
1303 | .se(se), | |
1304 | .siclk(siclk), | |
1305 | .soclk(soclk), | |
1306 | .pce_ov(pce_ov), | |
1307 | .stop(stop)); | |
1308 | ||
1309 | ||
1310 | ||
1311 | ||
1312 | ||
1313 | ||
1314 | // *** *** *** *** *** *** *** *** Start : "A2" 9:2 CSA Tree *** *** *** *** *** *** | |
1315 | ||
1316 | fgu_fpy_dp_msff_macro__stack_88c__width_31 i_a2_be_ff_a ( | |
1317 | .scan_in(i_a2_be_ff_a_scanin), | |
1318 | .scan_out(i_a2_be_ff_a_scanout), | |
1319 | .clk ( l2clk ), | |
1320 | .en ( mul_clken_rep01 ), | |
1321 | .din ({a32_xr4_1[98:88] , | |
1322 | xr_mode_fx1_ , | |
1323 | be_pout[17:9] , | |
1324 | be17[4:0] , | |
1325 | be16[4:0]} ), | |
1326 | .dout({a32_xr_ff[98:88] , | |
1327 | a2_xr_mode_fx2_ , | |
1328 | be_pout_ff[17:9] , | |
1329 | be_ff17[4:0] , | |
1330 | be_ff16[4:0]} ), | |
1331 | .se(se), | |
1332 | .siclk(siclk), | |
1333 | .soclk(soclk), | |
1334 | .pce_ov(pce_ov), | |
1335 | .stop(stop)); | |
1336 | ||
1337 | fgu_fpy_dp_msff_macro__stack_88c__width_44 i_a2_be_ff_b ( | |
1338 | .scan_in(i_a2_be_ff_b_scanin), | |
1339 | .scan_out(i_a2_be_ff_b_scanout), | |
1340 | .clk ( l2clk ), | |
1341 | .en ( mul_clken_rep0 ), | |
1342 | .din ({be15[4:0] , | |
1343 | be14[4:0] , | |
1344 | be13[4:0] , | |
1345 | be12[4:0] , | |
1346 | be11[4:0] , | |
1347 | be10[4:0] , | |
1348 | be09[4:0] , | |
1349 | be_hout[16:8]} ), | |
1350 | .dout({be_ff15[4:0] , | |
1351 | be_ff14[4:0] , | |
1352 | be_ff13[4:0] , | |
1353 | be_ff12[4:0] , | |
1354 | be_ff11[4:0] , | |
1355 | be_ff10[4:0] , | |
1356 | be_ff09[4:0] , | |
1357 | be_hout_ff[16:8]} ), | |
1358 | .se(se), | |
1359 | .siclk(siclk), | |
1360 | .soclk(soclk), | |
1361 | .pce_ov(pce_ov), | |
1362 | .stop(stop)); | |
1363 | ||
1364 | ||
1365 | fgu_fpy_dp_buff_macro__stack_88c__width_3 i_a2_rs2_fx1_ebuf ( | |
1366 | .din ({rs2_fx1_ebf[63] ,rs2_fx1_ebf[47] ,rs2_fx1_ebf[31]} ), | |
1367 | .dout({rs2_fx1_ebf2[63] ,rs2_fx1_ebf2[47] ,rs2_fx1_ebf2[31]} )); | |
1368 | ||
1369 | ||
1370 | fgu_fpy_dp_msff_macro__mux_aope__ports_5__stack_88c__width_64 i_a2_rs2_ff ( | |
1371 | .scan_in(i_a2_rs2_ff_scanin), | |
1372 | .scan_out(i_a2_rs2_ff_scanout), | |
1373 | .clk ( l2clk ), | |
1374 | .en ( mul_clken_rep0 ), | |
1375 | .din0({{32{1'b0}},{17{rs2_fx1_ebf2[63]}},fad_rs2_fmt_fx1_rep1[62:48]} ), | |
1376 | .din1({{32{1'b0}},{17{rs2_fx1_ebf2[47]}},fad_rs2_fmt_fx1_rep1[46:32]} ), | |
1377 | .din2({{32{1'b0}},{17{rs2_fx1_ebf2[31]}},fad_rs2_fmt_fx1_rep1[30:16]} ), | |
1378 | .din3( spu_fgu_rs2_fx1[63:0] ), | |
1379 | .din4( fad_rs2_fmt_fx1_rep1[63:0] ), | |
1380 | .sel0( fac_rs2_sel_fx1[0] ), | |
1381 | .sel1( fac_rs2_sel_fx1[1] ), | |
1382 | .sel2( fac_rs2_sel_fx1[2] ), | |
1383 | .sel3( fac_rs2_sel_fx1[3] ), | |
1384 | .dout( a2_rs2_ff[63:0] ), | |
1385 | .se(se), | |
1386 | .siclk(siclk), | |
1387 | .soclk(soclk), | |
1388 | .pce_ov(pce_ov), | |
1389 | .stop(stop)); | |
1390 | ||
1391 | ||
1392 | fgu_fpy_dp_buff_macro__stack_88c__width_64 i_a2_rs2_buf ( | |
1393 | .din ( a2_rs2_ff[63:0] ), | |
1394 | .dout( a2_rs2[63:0] )); | |
1395 | ||
1396 | fgu_fpy_dp_inv_macro__stack_88c__width_64 i_a2_rs2_inv ( | |
1397 | .din ( a2_rs2_ff[63:0] ), | |
1398 | .dout( a2_rs2_[63:0] )); | |
1399 | ||
1400 | ||
1401 | ||
1402 | ||
1403 | fgu_fpy_dp_mux_macro__mux_aonpe__ports_5__stack_88c__width_65 i_a2_bm_09 ( | |
1404 | .din0({1'b0 , a2_rs2[63:0] }), // +1 * rs2 | |
1405 | .din1({ a2_rs2[63:0] , 1'b0 }), // +2 * rs2 | |
1406 | .din2({ a2_rs2_[63:0] , 1'b1 }), // -2 * rs2 | |
1407 | .din3({1'b1 , a2_rs2_[63:0] }), // -1 * rs2 | |
1408 | .din4( rs2_3x[64:0] ), // +3 * rs2 | |
1409 | .sel0( be_ff09[0] ), | |
1410 | .sel1( be_ff09[1] ), | |
1411 | .sel2( be_ff09[2] ), | |
1412 | .sel3( be_ff09[3] ), | |
1413 | .sel4( be_ff09[4] ), | |
1414 | .dout( bm09[82:18] )); | |
1415 | ||
1416 | assign bm09[84:83] = { a2_xr_mode_fx2_ , be_pout_ff[9] }; // 1P | |
1417 | assign bm09[17:16] = { 1'b0 , be_hout_ff[8] }; | |
1418 | ||
1419 | ||
1420 | ||
1421 | fgu_fpy_dp_mux_macro__mux_aonpe__ports_5__stack_88c__width_65 i_a2_bm_10 ( | |
1422 | .din0({1'b0 , a2_rs2[63:0] }), // +1 * rs2 | |
1423 | .din1({ a2_rs2[63:0] , 1'b0 }), // +2 * rs2 | |
1424 | .din2({ a2_rs2_[63:0] , 1'b1 }), // -2 * rs2 | |
1425 | .din3({1'b1 , a2_rs2_[63:0] }), // -1 * rs2 | |
1426 | .din4( rs2_3x[64:0] ), // +3 * rs2 | |
1427 | .sel0( be_ff10[0] ), | |
1428 | .sel1( be_ff10[1] ), | |
1429 | .sel2( be_ff10[2] ), | |
1430 | .sel3( be_ff10[3] ), | |
1431 | .sel4( be_ff10[4] ), | |
1432 | .dout( bm10[84:20] )); | |
1433 | ||
1434 | assign bm10[86:85] = { a2_xr_mode_fx2_ , be_pout_ff[10]}; // 1P | |
1435 | assign bm10[19:18] = { 1'b0 , be_hout_ff[9] }; | |
1436 | ||
1437 | ||
1438 | ||
1439 | fgu_fpy_dp_mux_macro__mux_aonpe__ports_5__stack_88c__width_65 i_a2_bm_11 ( | |
1440 | .din0({1'b0 , a2_rs2[63:0] }), // +1 * rs2 | |
1441 | .din1({ a2_rs2[63:0] , 1'b0 }), // +2 * rs2 | |
1442 | .din2({ a2_rs2_[63:0] , 1'b1 }), // -2 * rs2 | |
1443 | .din3({1'b1 , a2_rs2_[63:0] }), // -1 * rs2 | |
1444 | .din4( rs2_3x[64:0] ), // +3 * rs2 | |
1445 | .sel0( be_ff11[0] ), | |
1446 | .sel1( be_ff11[1] ), | |
1447 | .sel2( be_ff11[2] ), | |
1448 | .sel3( be_ff11[3] ), | |
1449 | .sel4( be_ff11[4] ), | |
1450 | .dout( bm11[86:22] )); | |
1451 | ||
1452 | assign bm11[88:87] = { a2_xr_mode_fx2_ , be_pout_ff[11]}; // 1P | |
1453 | assign bm11[21:20] = { 1'b0 , be_hout_ff[10]}; | |
1454 | ||
1455 | ||
1456 | ||
1457 | fgu_fpy_dp_mux_macro__mux_aonpe__ports_5__stack_88c__width_65 i_a2_bm_12 ( | |
1458 | .din0({1'b0 , a2_rs2[63:0] }), // +1 * rs2 | |
1459 | .din1({ a2_rs2[63:0] , 1'b0 }), // +2 * rs2 | |
1460 | .din2({ a2_rs2_[63:0] , 1'b1 }), // -2 * rs2 | |
1461 | .din3({1'b1 , a2_rs2_[63:0] }), // -1 * rs2 | |
1462 | .din4( rs2_3x[64:0] ), // +3 * rs2 | |
1463 | .sel0( be_ff12[0] ), | |
1464 | .sel1( be_ff12[1] ), | |
1465 | .sel2( be_ff12[2] ), | |
1466 | .sel3( be_ff12[3] ), | |
1467 | .sel4( be_ff12[4] ), | |
1468 | .dout( bm12[88:24] )); | |
1469 | ||
1470 | assign bm12[90:89] = { a2_xr_mode_fx2_ , be_pout_ff[12]}; // 1P | |
1471 | assign bm12[23:22] = { 1'b0 , be_hout_ff[11]}; | |
1472 | ||
1473 | ||
1474 | ||
1475 | fgu_fpy_dp_mux_macro__mux_aonpe__ports_5__stack_88c__width_65 i_a2_bm_13 ( | |
1476 | .din0({1'b0 , a2_rs2[63:0] }), // +1 * rs2 | |
1477 | .din1({ a2_rs2[63:0] , 1'b0 }), // +2 * rs2 | |
1478 | .din2({ a2_rs2_[63:0] , 1'b1 }), // -2 * rs2 | |
1479 | .din3({1'b1 , a2_rs2_[63:0] }), // -1 * rs2 | |
1480 | .din4( rs2_3x[64:0] ), // +3 * rs2 | |
1481 | .sel0( be_ff13[0] ), | |
1482 | .sel1( be_ff13[1] ), | |
1483 | .sel2( be_ff13[2] ), | |
1484 | .sel3( be_ff13[3] ), | |
1485 | .sel4( be_ff13[4] ), | |
1486 | .dout( bm13[90:26] )); | |
1487 | ||
1488 | assign bm13[92:91] = { a2_xr_mode_fx2_ , be_pout_ff[13]}; // 1P | |
1489 | assign bm13[25:24] = { 1'b0 , be_hout_ff[12]}; | |
1490 | ||
1491 | ||
1492 | ||
1493 | fgu_fpy_dp_mux_macro__mux_aonpe__ports_5__stack_88c__width_65 i_a2_bm_14 ( | |
1494 | .din0({1'b0 , a2_rs2[63:0] }), // +1 * rs2 | |
1495 | .din1({ a2_rs2[63:0] , 1'b0 }), // +2 * rs2 | |
1496 | .din2({ a2_rs2_[63:0] , 1'b1 }), // -2 * rs2 | |
1497 | .din3({1'b1 , a2_rs2_[63:0] }), // -1 * rs2 | |
1498 | .din4( rs2_3x[64:0] ), // +3 * rs2 | |
1499 | .sel0( be_ff14[0] ), | |
1500 | .sel1( be_ff14[1] ), | |
1501 | .sel2( be_ff14[2] ), | |
1502 | .sel3( be_ff14[3] ), | |
1503 | .sel4( be_ff14[4] ), | |
1504 | .dout( bm14[92:28] )); | |
1505 | ||
1506 | assign bm14[94:93] = { a2_xr_mode_fx2_ , be_pout_ff[14]}; // 1P | |
1507 | assign bm14[27:26] = { 1'b0 , be_hout_ff[13]}; | |
1508 | ||
1509 | ||
1510 | ||
1511 | fgu_fpy_dp_mux_macro__mux_aonpe__ports_5__stack_88c__width_65 i_a2_bm_15 ( | |
1512 | .din0({1'b0 , a2_rs2[63:0] }), // +1 * rs2 | |
1513 | .din1({ a2_rs2[63:0] , 1'b0 }), // +2 * rs2 | |
1514 | .din2({ a2_rs2_[63:0] , 1'b1 }), // -2 * rs2 | |
1515 | .din3({1'b1 , a2_rs2_[63:0] }), // -1 * rs2 | |
1516 | .din4( rs2_3x[64:0] ), // +3 * rs2 | |
1517 | .sel0( be_ff15[0] ), | |
1518 | .sel1( be_ff15[1] ), | |
1519 | .sel2( be_ff15[2] ), | |
1520 | .sel3( be_ff15[3] ), | |
1521 | .sel4( be_ff15[4] ), | |
1522 | .dout( bm15[94:30] )); | |
1523 | ||
1524 | assign bm15[96:95] = { a2_xr_mode_fx2_ , be_pout_ff[15]}; // 1P | |
1525 | assign bm15[29:28] = { 1'b0 , be_hout_ff[14]}; | |
1526 | ||
1527 | ||
1528 | ||
1529 | fgu_fpy_dp_mux_macro__mux_aonpe__ports_5__stack_88c__width_65 i_a2_bm_16 ( | |
1530 | .din0({1'b0 , a2_rs2[63:0] }), // +1 * rs2 | |
1531 | .din1({ a2_rs2[63:0] , 1'b0 }), // +2 * rs2 | |
1532 | .din2({ a2_rs2_[63:0] , 1'b1 }), // -2 * rs2 | |
1533 | .din3({1'b1 , a2_rs2_[63:0] }), // -1 * rs2 | |
1534 | .din4( rs2_3x[64:0] ), // +3 * rs2 | |
1535 | .sel0( be_ff16[0] ), | |
1536 | .sel1( be_ff16[1] ), | |
1537 | .sel2( be_ff16[2] ), | |
1538 | .sel3( be_ff16[3] ), | |
1539 | .sel4( be_ff16[4] ), | |
1540 | .dout( bm16[96:32] )); | |
1541 | ||
1542 | assign bm16[98:97] = { a2_xr_mode_fx2_ , be_pout_ff[16]}; // 1P | |
1543 | assign bm16[31:30] = { 1'b0 , be_hout_ff[15]}; | |
1544 | ||
1545 | ||
1546 | ||
1547 | fgu_fpy_dp_mux_macro__mux_aonpe__ports_5__stack_88c__width_65 i_a2_bm_17 ( | |
1548 | .din0({1'b0 , a2_rs2[63:0] }), // +1 * rs2 | |
1549 | .din1({ a2_rs2[63:0] , 1'b0 }), // +2 * rs2 | |
1550 | .din2({ a2_rs2_[63:0] , 1'b1 }), // -2 * rs2 | |
1551 | .din3({1'b1 , a2_rs2_[63:0] }), // -1 * rs2 | |
1552 | .din4( rs2_3x[64:0] ), // +3 * rs2 | |
1553 | .sel0( be_ff17[0] ), | |
1554 | .sel1( be_ff17[1] ), | |
1555 | .sel2( be_ff17[2] ), | |
1556 | .sel3( be_ff17[3] ), | |
1557 | .sel4( be_ff17[4] ), | |
1558 | .dout( bm17[98:34] )); | |
1559 | ||
1560 | assign bm17[100:99] = { a2_xr_mode_fx2_ , be_pout_ff[17]}; // 1P | |
1561 | assign bm17[33:32] = { 1'b0 , be_hout_ff[16]}; | |
1562 | ||
1563 | ||
1564 | // bm09[84:16] bm10[86:18] bm11[88:20] | |
1565 | ||
1566 | fgu_fpy_dp_csa32_macro__stack_88c__width_69 a2_csa1_4 ( | |
1567 | .i0 ({ { 2{1'b0}}, bm09[84:18] }), | |
1568 | .i1 ({ bm10[86:18] }), | |
1569 | .i2 ({ bm11[86:20] , { 2{1'b0}} }), | |
1570 | .carry( a2_csa1_4_c[87:19] ), | |
1571 | .sum ( a2_csa1_4_s[86:18] )); | |
1572 | ||
1573 | assign a2_csa1_4_s[17:16] = bm09[17:16]; | |
1574 | assign a2_csa1_4_s[88:87] = bm11[88:87]; | |
1575 | ||
1576 | ||
1577 | ||
1578 | // bm12[90:22] bm13[92:24] bm14[94:26] | |
1579 | ||
1580 | fgu_fpy_dp_csa32_macro__stack_88c__width_69 a2_csa1_5 ( | |
1581 | .i0 ({ { 2{1'b0}}, bm12[90:24] }), | |
1582 | .i1 ({ bm13[92:24] }), | |
1583 | .i2 ({ bm14[92:26] , { 2{1'b0}} }), | |
1584 | .carry( a2_csa1_5_c[93:25] ), | |
1585 | .sum ( a2_csa1_5_s[92:24] )); | |
1586 | ||
1587 | assign a2_csa1_5_s[23:22] = bm12[23:22]; | |
1588 | assign a2_csa1_5_s[94:93] = bm14[94:93]; | |
1589 | ||
1590 | ||
1591 | ||
1592 | // bm15[96:28] bm16[98:30] bm17[100:32] | |
1593 | ||
1594 | fgu_fpy_dp_csa32_macro__stack_88c__width_69 a2_csa1_6 ( | |
1595 | .i0 ({ { 2{1'b0}}, bm15[96:30] }), | |
1596 | .i1 ({ bm16[98:30] }), | |
1597 | .i2 ({ bm17[98:32] , { 2{1'b0}} }), | |
1598 | .carry( a2_csa1_6_c[99:31] ), | |
1599 | .sum ( a2_csa1_6_s[98:30] )); | |
1600 | ||
1601 | assign a2_csa1_6_s[29:28] = bm15[29:28]; | |
1602 | assign a2_csa1_6_s[100:99] = bm17[100:99]; | |
1603 | ||
1604 | ||
1605 | ||
1606 | ||
1607 | // *** 1st level to 2nd level *** | |
1608 | // | |
1609 | // csa1_4_s[88:16] csa1_4_c[87:19] | |
1610 | // csa1_5_s[94:22] csa1_5_c[93:25] | |
1611 | // csa1_6_s[100:28] csa1_6_c[99:31] | |
1612 | ||
1613 | ||
1614 | fgu_fpy_dp_csa32_macro__stack_88c__width_73 a2_csa2_3 ( | |
1615 | .i0 ({ { 6{1'b0}}, a2_csa1_4_s[88:22] }), | |
1616 | .i1 ({ a2_csa1_5_s[94:22] }), | |
1617 | .i2 ({ a2_csa1_6_s[94:28], { 6{1'b0}} }), | |
1618 | .carry( a2_csa2_3_c[95:23] ), | |
1619 | .sum ( a2_csa2_3_s[94:22] )); | |
1620 | ||
1621 | assign a2_csa2_3_s[21:16] = a2_csa1_4_s[21:16]; | |
1622 | assign a2_csa2_3_s[100:95] = a2_csa1_6_s[100:95]; | |
1623 | ||
1624 | ||
1625 | ||
1626 | fgu_fpy_dp_csa32_macro__stack_88c__width_69 a2_csa2_4 ( | |
1627 | .i0 ({ { 6{1'b0}}, a2_csa1_4_c[87:25] }), | |
1628 | .i1 ({ a2_csa1_5_c[93:25] }), | |
1629 | .i2 ({ a2_csa1_6_c[93:31], { 6{1'b0}} }), | |
1630 | .carry( a2_csa2_4_c[94:26] ), | |
1631 | .sum ( a2_csa2_4_s[93:25] )); | |
1632 | ||
1633 | assign a2_csa2_4_s[24:19] = a2_csa1_4_c[24:19]; | |
1634 | assign a2_csa2_4_s[99:94] = a2_csa1_6_c[99:94]; | |
1635 | ||
1636 | ||
1637 | ||
1638 | ||
1639 | // *** 2nd level to 3rd level *** | |
1640 | // | |
1641 | // csa2_3_s[100:16] csa2_3_c[95:23] | |
1642 | // csa2_4_s[99:19] csa2_4_c[94:26] | |
1643 | ||
1644 | ||
1645 | fgu_fpy_dp_csa42_macro__stack_88c__width_81 a2_csa3_2 ( | |
1646 | .i0 ({ a2_csa2_3_s[99:19] }), | |
1647 | .i1 ({ { 4{1'b0}}, a2_csa2_3_c[95:23] , { 4{1'b0}} }), | |
1648 | .i2 ({ { 5{1'b0}}, a2_csa2_4_c[94:26] , { 7{1'b0}} }), | |
1649 | .i3 ({ a2_csa2_4_s[99:19] }), | |
1650 | .cin ( 1'b0 ), // 1 bit | |
1651 | .cout ( a2_csa3_2_unused ), // 1 bit | |
1652 | .carry( a2_csa3_2_c[100:20] ), | |
1653 | .sum ( a2_csa3_2_s[99:19] )); | |
1654 | ||
1655 | assign a2_csa3_2_s[18:16] = a2_csa2_3_s[18:16]; | |
1656 | assign a2_csa3_2_s[100] = a2_csa2_3_s[100]; | |
1657 | ||
1658 | ||
1659 | ||
1660 | fgu_fpy_dp_msff_macro__stack_88c__width_41 i_a2_s_ff_a ( | |
1661 | .scan_in(i_a2_s_ff_a_scanin), | |
1662 | .scan_out(i_a2_s_ff_a_scanout), | |
1663 | .clk ( l2clk ), | |
1664 | .en ( mul_clken_rep01 ), | |
1665 | .din ( a2_csa3_2_s[100:60] ), // [100] and [18:16] are early | |
1666 | .dout( a2_csa3_2_s_ff[100:60] ), | |
1667 | .se(se), | |
1668 | .siclk(siclk), | |
1669 | .soclk(soclk), | |
1670 | .pce_ov(pce_ov), | |
1671 | .stop(stop)); | |
1672 | ||
1673 | fgu_fpy_dp_msff_macro__stack_88c__width_44 i_a2_s_ff_b ( | |
1674 | .scan_in(i_a2_s_ff_b_scanin), | |
1675 | .scan_out(i_a2_s_ff_b_scanout), | |
1676 | .clk ( l2clk ), | |
1677 | .en ( mul_clken_rep0 ), | |
1678 | .din ( a2_csa3_2_s[59:16] ), // [100] and [18:16] are early | |
1679 | .dout( a2_csa3_2_s_ff[59:16] ), | |
1680 | .se(se), | |
1681 | .siclk(siclk), | |
1682 | .soclk(soclk), | |
1683 | .pce_ov(pce_ov), | |
1684 | .stop(stop)); | |
1685 | ||
1686 | ||
1687 | fgu_fpy_dp_msff_macro__stack_88c__width_37 i_a2_c_ff_a ( | |
1688 | .scan_in(i_a2_c_ff_a_scanin), | |
1689 | .scan_out(i_a2_c_ff_a_scanout), | |
1690 | .clk ( l2clk ), | |
1691 | .en ( mul_clken_rep01 ), | |
1692 | .din ( a2_csa3_2_c[100:64] ), | |
1693 | .dout( a2_csa3_2_c_ff[100:64] ), | |
1694 | .se(se), | |
1695 | .siclk(siclk), | |
1696 | .soclk(soclk), | |
1697 | .pce_ov(pce_ov), | |
1698 | .stop(stop)); | |
1699 | ||
1700 | fgu_fpy_dp_msff_macro__stack_88c__width_44 i_a2_c_ff_b ( | |
1701 | .scan_in(i_a2_c_ff_b_scanin), | |
1702 | .scan_out(i_a2_c_ff_b_scanout), | |
1703 | .clk ( l2clk ), | |
1704 | .en ( mul_clken_rep0 ), | |
1705 | .din ( a2_csa3_2_c[63:20] ), | |
1706 | .dout( a2_csa3_2_c_ff[63:20] ), | |
1707 | .se(se), | |
1708 | .siclk(siclk), | |
1709 | .soclk(soclk), | |
1710 | .pce_ov(pce_ov), | |
1711 | .stop(stop)); | |
1712 | ||
1713 | ||
1714 | ||
1715 | ||
1716 | // *** *** *** *** *** *** *** *** End : "A2" 9:2 CSA Tree *** *** *** *** *** *** | |
1717 | ||
1718 | ||
1719 | ||
1720 | ||
1721 | // *** *** *** *** *** *** *** *** Start : "A1" 9:2 CSA Tree *** *** *** *** *** *** | |
1722 | ||
1723 | fgu_fpy_dp_msff_macro__stack_88c__width_64 i_a1_be_ff ( | |
1724 | .scan_in(i_a1_be_ff_scanin), | |
1725 | .scan_out(i_a1_be_ff_scanout), | |
1726 | .clk ( l2clk ), | |
1727 | .en ( mul_clken_rep0 ), | |
1728 | .din ({xr_mode_fx1_ , | |
1729 | be_pout[26:18] , | |
1730 | be26[4:0] , | |
1731 | be25[4:0] , | |
1732 | be24[4:0] , | |
1733 | be23[4:0] , | |
1734 | be22[4:0] , | |
1735 | be21[4:0] , | |
1736 | be20[4:0] , | |
1737 | be19[4:0] , | |
1738 | be18[4:0] , | |
1739 | be_hout[25:17]} ), | |
1740 | .dout({a1_xr_mode_fx2_ , | |
1741 | be_pout_ff[26:18] , | |
1742 | be_ff26[4:0] , | |
1743 | be_ff25[4:0] , | |
1744 | be_ff24[4:0] , | |
1745 | be_ff23[4:0] , | |
1746 | be_ff22[4:0] , | |
1747 | be_ff21[4:0] , | |
1748 | be_ff20[4:0] , | |
1749 | be_ff19[4:0] , | |
1750 | be_ff18[4:0] , | |
1751 | be_hout_ff[25:17]} ), | |
1752 | .se(se), | |
1753 | .siclk(siclk), | |
1754 | .soclk(soclk), | |
1755 | .pce_ov(pce_ov), | |
1756 | .stop(stop)); | |
1757 | ||
1758 | ||
1759 | fgu_fpy_dp_buff_macro__stack_88c__width_2 i_a1_rs2_fx1_ebuf ( | |
1760 | .din ({rs2_fx1_ebf[63] ,rs2_fx1_ebf[47]} ), | |
1761 | .dout({rs2_fx1_ebf1[63] ,rs2_fx1_ebf1[47]} )); | |
1762 | ||
1763 | ||
1764 | ||
1765 | fgu_fpy_dp_msff_macro__mux_aope__ports_4__stack_88c__width_64 i_a1_rs2_ff ( | |
1766 | .scan_in(i_a1_rs2_ff_scanin), | |
1767 | .scan_out(i_a1_rs2_ff_scanout), | |
1768 | .clk ( l2clk ), | |
1769 | .en ( mul_clken_rep0 ), | |
1770 | .din0({{32{1'b0}},{17{rs2_fx1_ebf1[63]}},fad_rs2_fmt_fx1_rep0[62:48]} ), | |
1771 | .din1({{32{1'b0}},{17{rs2_fx1_ebf1[47]}},fad_rs2_fmt_fx1_rep0[46:32]} ), | |
1772 | .din2( spu_fgu_rs2_fx1[63:0] ), | |
1773 | .din3( fad_rs2_fmt_fx1_rep0[63:0] ), | |
1774 | .sel0( fac_rs2_sel_fx1[0] ), | |
1775 | .sel1( fac_rs2_sel_fx1[2] ), | |
1776 | .sel2( fac_rs2_sel_fx1[3] ), | |
1777 | .dout( a1_rs2_ff[63:0] ), | |
1778 | .se(se), | |
1779 | .siclk(siclk), | |
1780 | .soclk(soclk), | |
1781 | .pce_ov(pce_ov), | |
1782 | .stop(stop)); | |
1783 | ||
1784 | ||
1785 | fgu_fpy_dp_buff_macro__stack_88c__width_64 i_a1_rs2_buf ( | |
1786 | .din ( a1_rs2_ff[63:0] ), | |
1787 | .dout( a1_rs2[63:0] )); | |
1788 | ||
1789 | fgu_fpy_dp_inv_macro__stack_88c__width_64 i_a1_rs2_inv ( | |
1790 | .din ( a1_rs2_ff[63:0] ), | |
1791 | .dout( a1_rs2_[63:0] )); | |
1792 | ||
1793 | ||
1794 | ||
1795 | ||
1796 | fgu_fpy_dp_mux_macro__mux_aonpe__ports_5__stack_88c__width_65 i_a1_bm_18 ( | |
1797 | .din0({1'b0 , a1_rs2[63:0] }), // +1 * rs2 | |
1798 | .din1({ a1_rs2[63:0] , 1'b0 }), // +2 * rs2 | |
1799 | .din2({ a1_rs2_[63:0] , 1'b1 }), // -2 * rs2 | |
1800 | .din3({1'b1 , a1_rs2_[63:0] }), // -1 * rs2 | |
1801 | .din4( rs2_3x[64:0] ), // +3 * rs2 | |
1802 | .sel0( be_ff18[0] ), | |
1803 | .sel1( be_ff18[1] ), | |
1804 | .sel2( be_ff18[2] ), | |
1805 | .sel3( be_ff18[3] ), | |
1806 | .sel4( be_ff18[4] ), | |
1807 | .dout( bm18[100:36] )); | |
1808 | ||
1809 | assign bm18[102:101] = { a1_xr_mode_fx2_ , be_pout_ff[18]}; // 1P | |
1810 | assign bm18[35:34] = { 1'b0 , be_hout_ff[17]}; | |
1811 | ||
1812 | ||
1813 | ||
1814 | fgu_fpy_dp_mux_macro__mux_aonpe__ports_5__stack_88c__width_65 i_a1_bm_19 ( | |
1815 | .din0({1'b0 , a1_rs2[63:0] }), // +1 * rs2 | |
1816 | .din1({ a1_rs2[63:0] , 1'b0 }), // +2 * rs2 | |
1817 | .din2({ a1_rs2_[63:0] , 1'b1 }), // -2 * rs2 | |
1818 | .din3({1'b1 , a1_rs2_[63:0] }), // -1 * rs2 | |
1819 | .din4( rs2_3x[64:0] ), // +3 * rs2 | |
1820 | .sel0( be_ff19[0] ), | |
1821 | .sel1( be_ff19[1] ), | |
1822 | .sel2( be_ff19[2] ), | |
1823 | .sel3( be_ff19[3] ), | |
1824 | .sel4( be_ff19[4] ), | |
1825 | .dout( bm19[102:38] )); | |
1826 | ||
1827 | assign bm19[104:103] = { a1_xr_mode_fx2_ , be_pout_ff[19]}; // 1P | |
1828 | assign bm19[37:36] = { 1'b0 , be_hout_ff[18]}; | |
1829 | ||
1830 | ||
1831 | ||
1832 | fgu_fpy_dp_mux_macro__mux_aonpe__ports_5__stack_88c__width_65 i_a1_bm_20 ( | |
1833 | .din0({1'b0 , a1_rs2[63:0] }), // +1 * rs2 | |
1834 | .din1({ a1_rs2[63:0] , 1'b0 }), // +2 * rs2 | |
1835 | .din2({ a1_rs2_[63:0] , 1'b1 }), // -2 * rs2 | |
1836 | .din3({1'b1 , a1_rs2_[63:0] }), // -1 * rs2 | |
1837 | .din4( rs2_3x[64:0] ), // +3 * rs2 | |
1838 | .sel0( be_ff20[0] ), | |
1839 | .sel1( be_ff20[1] ), | |
1840 | .sel2( be_ff20[2] ), | |
1841 | .sel3( be_ff20[3] ), | |
1842 | .sel4( be_ff20[4] ), | |
1843 | .dout( bm20[104:40] )); | |
1844 | ||
1845 | assign bm20[106:105] = { a1_xr_mode_fx2_ , be_pout_ff[20]}; // 1P | |
1846 | assign bm20[39:38] = { 1'b0 , be_hout_ff[19]}; | |
1847 | ||
1848 | ||
1849 | ||
1850 | fgu_fpy_dp_mux_macro__mux_aonpe__ports_5__stack_88c__width_65 i_a1_bm_21 ( | |
1851 | .din0({1'b0 , a1_rs2[63:0] }), // +1 * rs2 | |
1852 | .din1({ a1_rs2[63:0] , 1'b0 }), // +2 * rs2 | |
1853 | .din2({ a1_rs2_[63:0] , 1'b1 }), // -2 * rs2 | |
1854 | .din3({1'b1 , a1_rs2_[63:0] }), // -1 * rs2 | |
1855 | .din4( rs2_3x[64:0] ), // +3 * rs2 | |
1856 | .sel0( be_ff21[0] ), | |
1857 | .sel1( be_ff21[1] ), | |
1858 | .sel2( be_ff21[2] ), | |
1859 | .sel3( be_ff21[3] ), | |
1860 | .sel4( be_ff21[4] ), | |
1861 | .dout( bm21[106:42] )); | |
1862 | ||
1863 | assign bm21[108:107] = { a1_xr_mode_fx2_ , be_pout_ff[21]}; // 1P | |
1864 | assign bm21[41:40] = { 1'b0 , be_hout_ff[20]}; | |
1865 | ||
1866 | ||
1867 | ||
1868 | fgu_fpy_dp_mux_macro__mux_aonpe__ports_5__stack_88c__width_65 i_a1_bm_22 ( | |
1869 | .din0({1'b0 , a1_rs2[63:0] }), // +1 * rs2 | |
1870 | .din1({ a1_rs2[63:0] , 1'b0 }), // +2 * rs2 | |
1871 | .din2({ a1_rs2_[63:0] , 1'b1 }), // -2 * rs2 | |
1872 | .din3({1'b1 , a1_rs2_[63:0] }), // -1 * rs2 | |
1873 | .din4( rs2_3x[64:0] ), // +3 * rs2 | |
1874 | .sel0( be_ff22[0] ), | |
1875 | .sel1( be_ff22[1] ), | |
1876 | .sel2( be_ff22[2] ), | |
1877 | .sel3( be_ff22[3] ), | |
1878 | .sel4( be_ff22[4] ), | |
1879 | .dout( bm22[108:44] )); | |
1880 | ||
1881 | assign bm22[110:109] = { a1_xr_mode_fx2_ , be_pout_ff[22]}; // 1P | |
1882 | assign bm22[43:42] = { 1'b0 , be_hout_ff[21]}; | |
1883 | ||
1884 | ||
1885 | ||
1886 | fgu_fpy_dp_mux_macro__mux_aonpe__ports_5__stack_88c__width_65 i_a1_bm_23 ( | |
1887 | .din0({1'b0 , a1_rs2[63:0] }), // +1 * rs2 | |
1888 | .din1({ a1_rs2[63:0] , 1'b0 }), // +2 * rs2 | |
1889 | .din2({ a1_rs2_[63:0] , 1'b1 }), // -2 * rs2 | |
1890 | .din3({1'b1 , a1_rs2_[63:0] }), // -1 * rs2 | |
1891 | .din4( rs2_3x[64:0] ), // +3 * rs2 | |
1892 | .sel0( be_ff23[0] ), | |
1893 | .sel1( be_ff23[1] ), | |
1894 | .sel2( be_ff23[2] ), | |
1895 | .sel3( be_ff23[3] ), | |
1896 | .sel4( be_ff23[4] ), | |
1897 | .dout( bm23[110:46] )); | |
1898 | ||
1899 | assign bm23[112:111] = { a1_xr_mode_fx2_ , be_pout_ff[23]}; // 1P | |
1900 | assign bm23[45:44] = { 1'b0 , be_hout_ff[22]}; | |
1901 | ||
1902 | ||
1903 | ||
1904 | fgu_fpy_dp_mux_macro__mux_aonpe__ports_5__stack_88c__width_65 i_a1_bm_24 ( | |
1905 | .din0({1'b0 , a1_rs2[63:0] }), // +1 * rs2 | |
1906 | .din1({ a1_rs2[63:0] , 1'b0 }), // +2 * rs2 | |
1907 | .din2({ a1_rs2_[63:0] , 1'b1 }), // -2 * rs2 | |
1908 | .din3({1'b1 , a1_rs2_[63:0] }), // -1 * rs2 | |
1909 | .din4( rs2_3x[64:0] ), // +3 * rs2 | |
1910 | .sel0( be_ff24[0] ), | |
1911 | .sel1( be_ff24[1] ), | |
1912 | .sel2( be_ff24[2] ), | |
1913 | .sel3( be_ff24[3] ), | |
1914 | .sel4( be_ff24[4] ), | |
1915 | .dout( bm24[112:48] )); | |
1916 | ||
1917 | assign bm24[114:113] = { a1_xr_mode_fx2_ , be_pout_ff[24]}; // 1P | |
1918 | assign bm24[47:46] = { 1'b0 , be_hout_ff[23]}; | |
1919 | ||
1920 | ||
1921 | ||
1922 | fgu_fpy_dp_mux_macro__mux_aonpe__ports_5__stack_88c__width_65 i_a1_bm_25 ( | |
1923 | .din0({1'b0 , a1_rs2[63:0] }), // +1 * rs2 | |
1924 | .din1({ a1_rs2[63:0] , 1'b0 }), // +2 * rs2 | |
1925 | .din2({ a1_rs2_[63:0] , 1'b1 }), // -2 * rs2 | |
1926 | .din3({1'b1 , a1_rs2_[63:0] }), // -1 * rs2 | |
1927 | .din4( rs2_3x[64:0] ), // +3 * rs2 | |
1928 | .sel0( be_ff25[0] ), | |
1929 | .sel1( be_ff25[1] ), | |
1930 | .sel2( be_ff25[2] ), | |
1931 | .sel3( be_ff25[3] ), | |
1932 | .sel4( be_ff25[4] ), | |
1933 | .dout( bm25[114:50] )); | |
1934 | ||
1935 | assign bm25[116:115] = { a1_xr_mode_fx2_ , be_pout_ff[25]}; // 1P | |
1936 | assign bm25[49:48] = { 1'b0 , be_hout_ff[24]}; | |
1937 | ||
1938 | ||
1939 | ||
1940 | fgu_fpy_dp_mux_macro__mux_aonpe__ports_5__stack_88c__width_65 i_a1_bm_26 ( | |
1941 | .din0({1'b0 , a1_rs2[63:0] }), // +1 * rs2 | |
1942 | .din1({ a1_rs2[63:0] , 1'b0 }), // +2 * rs2 | |
1943 | .din2({ a1_rs2_[63:0] , 1'b1 }), // -2 * rs2 | |
1944 | .din3({1'b1 , a1_rs2_[63:0] }), // -1 * rs2 | |
1945 | .din4( rs2_3x[64:0] ), // +3 * rs2 | |
1946 | .sel0( be_ff26[0] ), | |
1947 | .sel1( be_ff26[1] ), | |
1948 | .sel2( be_ff26[2] ), | |
1949 | .sel3( be_ff26[3] ), | |
1950 | .sel4( be_ff26[4] ), | |
1951 | .dout( bm26[116:52] )); | |
1952 | ||
1953 | assign bm26[118:117] = { a1_xr_mode_fx2_ , be_pout_ff[26]}; // 1P | |
1954 | assign bm26[51:50] = { 1'b0 , be_hout_ff[25]}; | |
1955 | ||
1956 | ||
1957 | ||
1958 | // bm18[102:34] bm19[104:36] bm20[106:38] | |
1959 | ||
1960 | fgu_fpy_dp_csa32_macro__stack_88c__width_69 a1_csa1_7 ( | |
1961 | .i0 ({ { 2{1'b0}}, bm18[102:36] }), | |
1962 | .i1 ({ bm19[104:36] }), | |
1963 | .i2 ({ bm20[104:38] , { 2{1'b0}} }), | |
1964 | .carry( a1_csa1_7_c[105:37] ), | |
1965 | .sum ( a1_csa1_7_s[104:36] )); | |
1966 | ||
1967 | assign a1_csa1_7_s[35:34] = bm18[35:34]; | |
1968 | assign a1_csa1_7_s[106:105] = bm20[106:105]; | |
1969 | ||
1970 | ||
1971 | ||
1972 | // bm21[108:40] bm22[110:42] bm23[112:44] | |
1973 | ||
1974 | fgu_fpy_dp_csa32_macro__stack_88c__width_69 a1_csa1_8 ( | |
1975 | .i0 ({ { 2{1'b0}}, bm21[108:42] }), | |
1976 | .i1 ({ bm22[110:42] }), | |
1977 | .i2 ({ bm23[110:44] , { 2{1'b0}} }), | |
1978 | .carry( a1_csa1_8_c[111:43] ), | |
1979 | .sum ( a1_csa1_8_s[110:42] )); | |
1980 | ||
1981 | assign a1_csa1_8_s[41:40] = bm21[41:40]; | |
1982 | assign a1_csa1_8_s[112:111] = bm23[112:111]; | |
1983 | ||
1984 | ||
1985 | ||
1986 | // bm24[114:46] bm25[116:48] bm26[118:50] | |
1987 | ||
1988 | fgu_fpy_dp_csa32_macro__stack_88c__width_69 a1_csa1_9 ( | |
1989 | .i0 ({ { 2{1'b0}}, bm24[114:48] }), | |
1990 | .i1 ({ bm25[116:48] }), | |
1991 | .i2 ({ bm26[116:50] , { 2{1'b0}} }), | |
1992 | .carry( a1_csa1_9_c[117:49] ), | |
1993 | .sum ( a1_csa1_9_s[116:48] )); | |
1994 | ||
1995 | assign a1_csa1_9_s[47:46] = bm24[47:46]; | |
1996 | assign a1_csa1_9_s[118:117] = bm26[118:117]; | |
1997 | ||
1998 | ||
1999 | ||
2000 | // *** 1st level to 2nd level *** | |
2001 | // | |
2002 | // csa1_7_s[106:34] csa1_7_c[105:37] | |
2003 | // csa1_8_s[112:40] csa1_8_c[111:43] | |
2004 | // csa1_9_s[118:46] csa1_9_c[117:49] | |
2005 | ||
2006 | ||
2007 | fgu_fpy_dp_csa32_macro__stack_88c__width_73 a1_csa2_5 ( | |
2008 | .i0 ({ { 6{1'b0}}, a1_csa1_7_s[106:40] }), | |
2009 | .i1 ({ a1_csa1_8_s[112:40] }), | |
2010 | .i2 ({ a1_csa1_9_s[112:46],{ 6{1'b0}} }), | |
2011 | .carry( a1_csa2_5_c[113:41] ), | |
2012 | .sum ( a1_csa2_5_s[112:40] )); | |
2013 | ||
2014 | assign a1_csa2_5_s[39:34] = a1_csa1_7_s[39:34]; | |
2015 | assign a1_csa2_5_s[118:113] = a1_csa1_9_s[118:113]; | |
2016 | ||
2017 | ||
2018 | ||
2019 | fgu_fpy_dp_csa32_macro__stack_88c__width_69 a1_csa2_6 ( | |
2020 | .i0 ({ { 6{1'b0}}, a1_csa1_7_c[105:43] }), | |
2021 | .i1 ({ a1_csa1_8_c[111:43] }), | |
2022 | .i2 ({ a1_csa1_9_c[111:49],{ 6{1'b0}} }), | |
2023 | .carry( a1_csa2_6_c[112:44] ), | |
2024 | .sum ( a1_csa2_6_s[111:43] )); | |
2025 | ||
2026 | assign a1_csa2_6_s[42:37] = a1_csa1_7_c[42:37]; | |
2027 | assign a1_csa2_6_s[117:112] = a1_csa1_9_c[117:112]; | |
2028 | ||
2029 | ||
2030 | ||
2031 | // *** 2nd level to 3rd level *** | |
2032 | // | |
2033 | // csa2_5_s[118:34] csa2_5_c[113:41] | |
2034 | // csa2_6_s[117:37] csa2_6_c[112:44] | |
2035 | ||
2036 | ||
2037 | fgu_fpy_dp_csa42_macro__stack_88c__width_81 a1_csa3_3 ( | |
2038 | .i0 ({ a1_csa2_5_s[117:37] }), | |
2039 | .i1 ({ { 4{1'b0}}, a1_csa2_5_c[113:41], { 4{1'b0}} }), | |
2040 | .i2 ({ { 5{1'b0}}, a1_csa2_6_c[112:44], { 7{1'b0}} }), | |
2041 | .i3 ({ a1_csa2_6_s[117:37] }), | |
2042 | .cin ( 1'b0 ), // 1 bit | |
2043 | .cout ( a1_csa3_3_unused ), // 1 bit | |
2044 | .carry( a1_csa3_3_c[118:38] ), | |
2045 | .sum ( a1_csa3_3_s[117:37] )); | |
2046 | ||
2047 | assign a1_csa3_3_s[36:34] = a1_csa2_5_s[36:34]; | |
2048 | assign a1_csa3_3_s[118] = a1_csa2_5_s[118]; | |
2049 | ||
2050 | ||
2051 | ||
2052 | fgu_fpy_dp_msff_macro__stack_88c__width_41 i_a1_s_ff_a ( | |
2053 | .scan_in(i_a1_s_ff_a_scanin), | |
2054 | .scan_out(i_a1_s_ff_a_scanout), | |
2055 | .clk ( l2clk ), | |
2056 | .en ( mul_clken_rep01 ), | |
2057 | .din ( a1_csa3_3_s[118:78] ), // [118] and [36:34] are early | |
2058 | .dout( a1_csa3_3_s_ff[118:78] ), | |
2059 | .se(se), | |
2060 | .siclk(siclk), | |
2061 | .soclk(soclk), | |
2062 | .pce_ov(pce_ov), | |
2063 | .stop(stop)); | |
2064 | ||
2065 | fgu_fpy_dp_msff_macro__stack_88c__width_44 i_a1_s_ff_b ( | |
2066 | .scan_in(i_a1_s_ff_b_scanin), | |
2067 | .scan_out(i_a1_s_ff_b_scanout), | |
2068 | .clk ( l2clk ), | |
2069 | .en ( mul_clken_rep0 ), | |
2070 | .din ( a1_csa3_3_s[77:34] ), // [118] and [36:34] are early | |
2071 | .dout( a1_csa3_3_s_ff[77:34] ), | |
2072 | .se(se), | |
2073 | .siclk(siclk), | |
2074 | .soclk(soclk), | |
2075 | .pce_ov(pce_ov), | |
2076 | .stop(stop)); | |
2077 | ||
2078 | ||
2079 | fgu_fpy_dp_msff_macro__stack_88c__width_37 i_a1_c_ff_a ( | |
2080 | .scan_in(i_a1_c_ff_a_scanin), | |
2081 | .scan_out(i_a1_c_ff_a_scanout), | |
2082 | .clk ( l2clk ), | |
2083 | .en ( mul_clken_rep01 ), | |
2084 | .din ( a1_csa3_3_c[118:82] ), | |
2085 | .dout( a1_csa3_3_c_ff[118:82] ), | |
2086 | .se(se), | |
2087 | .siclk(siclk), | |
2088 | .soclk(soclk), | |
2089 | .pce_ov(pce_ov), | |
2090 | .stop(stop)); | |
2091 | ||
2092 | fgu_fpy_dp_msff_macro__stack_88c__width_44 i_a1_c_ff_b ( | |
2093 | .scan_in(i_a1_c_ff_b_scanin), | |
2094 | .scan_out(i_a1_c_ff_b_scanout), | |
2095 | .clk ( l2clk ), | |
2096 | .en ( mul_clken_rep0 ), | |
2097 | .din ( a1_csa3_3_c[81:38] ), | |
2098 | .dout( a1_csa3_3_c_ff[81:38] ), | |
2099 | .se(se), | |
2100 | .siclk(siclk), | |
2101 | .soclk(soclk), | |
2102 | .pce_ov(pce_ov), | |
2103 | .stop(stop)); | |
2104 | ||
2105 | ||
2106 | ||
2107 | // *** *** *** *** *** *** *** *** End : "A1" 9:2 CSA Tree *** *** *** *** *** *** | |
2108 | ||
2109 | ||
2110 | fgu_fpy_dp_xor_macro__ports_2__stack_88c__width_63 a10_xor4_2 ( | |
2111 | .din0( a1_csa2_5_s[116:54] ), | |
2112 | .din1( a0_xr_in[116:54] ), | |
2113 | .dout( a10_xr4_2[116:54] )); | |
2114 | ||
2115 | assign a10_xr4_2[53:36] = a1_csa2_5_s[53:36]; | |
2116 | assign a10_xr4_2[126:117] = a0_xr_in[126:117]; | |
2117 | ||
2118 | ||
2119 | fgu_fpy_dp_msff_macro__stack_88c__width_44 i_a10_x_ff_a ( | |
2120 | .scan_in(i_a10_x_ff_a_scanin), | |
2121 | .scan_out(i_a10_x_ff_a_scanout), | |
2122 | .clk ( l2clk ), | |
2123 | .en ( mul_clken_rep01 ), | |
2124 | .din ( a10_xr4_2[123:80] ), | |
2125 | .dout( a10_xr_ff[123:80] ), | |
2126 | .se(se), | |
2127 | .siclk(siclk), | |
2128 | .soclk(soclk), | |
2129 | .pce_ov(pce_ov), | |
2130 | .stop(stop)); | |
2131 | ||
2132 | fgu_fpy_dp_msff_macro__stack_88c__width_44 i_a10_x_ff_b ( | |
2133 | .scan_in(i_a10_x_ff_b_scanin), | |
2134 | .scan_out(i_a10_x_ff_b_scanout), | |
2135 | .clk ( l2clk ), | |
2136 | .en ( mul_clken_rep0 ), | |
2137 | .din ( a10_xr4_2[79:36] ), | |
2138 | .dout( a10_xr_ff[79:36] ), | |
2139 | .se(se), | |
2140 | .siclk(siclk), | |
2141 | .soclk(soclk), | |
2142 | .pce_ov(pce_ov), | |
2143 | .stop(stop)); | |
2144 | ||
2145 | ||
2146 | ||
2147 | // *** *** *** *** *** *** *** *** Start : "A0" 6:2 CSA Tree *** *** *** *** *** *** | |
2148 | ||
2149 | fgu_fpy_dp_msff_macro__stack_88c__width_41 i_a0_be_ff ( | |
2150 | .scan_in(i_a0_be_ff_scanin), | |
2151 | .scan_out(i_a0_be_ff_scanout), | |
2152 | .clk ( l2clk ), | |
2153 | .en ( mul_clken_rep0 ), | |
2154 | .din ({a10_xr4_2[126:124] , | |
2155 | xr_mode_fx1_ , | |
2156 | be_pout[31:27] , | |
2157 | be32_b0 , | |
2158 | be31[4:0] , | |
2159 | be30[4:0] , | |
2160 | be29[4:0] , | |
2161 | be28[4:0] , | |
2162 | be27[4:0] , | |
2163 | be_hout[31:26]} ), | |
2164 | .dout({a10_xr_ff[126:124] , | |
2165 | a0_xr_mode_fx2_ , | |
2166 | be_pout_ff[31:27] , | |
2167 | be_ff32_b0 , | |
2168 | be_ff31[4:0] , | |
2169 | be_ff30[4:0] , | |
2170 | be_ff29[4:0] , | |
2171 | be_ff28[4:0] , | |
2172 | be_ff27[4:0] , | |
2173 | be_hout_ff[31:26]} ), | |
2174 | .se(se), | |
2175 | .siclk(siclk), | |
2176 | .soclk(soclk), | |
2177 | .pce_ov(pce_ov), | |
2178 | .stop(stop)); | |
2179 | ||
2180 | ||
2181 | fgu_fpy_dp_buff_macro__stack_88c__width_2 i_a0_rs2_fx1_ebuf ( | |
2182 | .din ({rs2_fx1_ebf[63] ,rs2_fx1_ebf[47]} ), | |
2183 | .dout({rs2_fx1_ebf0[63] ,rs2_fx1_ebf0[47]} )); | |
2184 | ||
2185 | ||
2186 | ||
2187 | fgu_fpy_dp_msff_macro__mux_aope__ports_4__stack_88c__width_64 i_a0_rs2_ff ( | |
2188 | .scan_in(i_a0_rs2_ff_scanin), | |
2189 | .scan_out(i_a0_rs2_ff_scanout), | |
2190 | .clk ( l2clk ), | |
2191 | .en ( mul_clken_rep0 ), | |
2192 | .din0({{32{1'b0}},{17{rs2_fx1_ebf0[47]}},fad_rs2_fmt_fx1_rep0[46:32]} ), | |
2193 | .din1({{32{1'b0}},{17{rs2_fx1_ebf0[63]}},fad_rs2_fmt_fx1_rep0[62:48]} ), | |
2194 | .din2( spu_fgu_rs2_fx1[63:0] ), | |
2195 | .din3( fad_rs2_fmt_fx1_rep0[63:0] ), | |
2196 | .sel0( fac_rs2_sel_fx1[1] ), | |
2197 | .sel1( fac_rs2_sel_fx1[2] ), | |
2198 | .sel2( fac_rs2_sel_fx1[3] ), | |
2199 | .dout( a0_rs2_ff[63:0] ), | |
2200 | .se(se), | |
2201 | .siclk(siclk), | |
2202 | .soclk(soclk), | |
2203 | .pce_ov(pce_ov), | |
2204 | .stop(stop)); | |
2205 | ||
2206 | ||
2207 | fgu_fpy_dp_buff_macro__stack_88c__width_64 i_a0_rs2_buf ( | |
2208 | .din ( a0_rs2_ff[63:0] ), | |
2209 | .dout( a0_rs2[63:0] )); | |
2210 | ||
2211 | fgu_fpy_dp_inv_macro__stack_88c__width_64 i_a0_rs2_inv ( | |
2212 | .din ( a0_rs2_ff[63:0] ), | |
2213 | .dout( a0_rs2_[63:0] )); | |
2214 | ||
2215 | ||
2216 | ||
2217 | ||
2218 | fgu_fpy_dp_mux_macro__mux_aonpe__ports_5__stack_88c__width_65 i_a0_bm_27 ( | |
2219 | .din0({1'b0 , a0_rs2[63:0] }), // +1 * rs2 | |
2220 | .din1({ a0_rs2[63:0] , 1'b0 }), // +2 * rs2 | |
2221 | .din2({ a0_rs2_[63:0] , 1'b1 }), // -2 * rs2 | |
2222 | .din3({1'b1 , a0_rs2_[63:0] }), // -1 * rs2 | |
2223 | .din4( rs2_3x[64:0] ), // +3 * rs2 | |
2224 | .sel0( be_ff27[0] ), | |
2225 | .sel1( be_ff27[1] ), | |
2226 | .sel2( be_ff27[2] ), | |
2227 | .sel3( be_ff27[3] ), | |
2228 | .sel4( be_ff27[4] ), | |
2229 | .dout( bm27[118:54] )); | |
2230 | ||
2231 | assign bm27[120:119] = { a0_xr_mode_fx2_ , be_pout_ff[27]}; // 1P | |
2232 | assign bm27[53:52] = { 1'b0 , be_hout_ff[26]}; | |
2233 | ||
2234 | ||
2235 | ||
2236 | fgu_fpy_dp_mux_macro__mux_aonpe__ports_5__stack_88c__width_65 i_a0_bm_28 ( | |
2237 | .din0({1'b0 , a0_rs2[63:0] }), // +1 * rs2 | |
2238 | .din1({ a0_rs2[63:0] , 1'b0 }), // +2 * rs2 | |
2239 | .din2({ a0_rs2_[63:0] , 1'b1 }), // -2 * rs2 | |
2240 | .din3({1'b1 , a0_rs2_[63:0] }), // -1 * rs2 | |
2241 | .din4( rs2_3x[64:0] ), // +3 * rs2 | |
2242 | .sel0( be_ff28[0] ), | |
2243 | .sel1( be_ff28[1] ), | |
2244 | .sel2( be_ff28[2] ), | |
2245 | .sel3( be_ff28[3] ), | |
2246 | .sel4( be_ff28[4] ), | |
2247 | .dout( bm28[120:56] )); | |
2248 | ||
2249 | assign bm28[122:121] = { a0_xr_mode_fx2_ , be_pout_ff[28]}; // 1P | |
2250 | assign bm28[55:54] = { 1'b0 , be_hout_ff[27]}; | |
2251 | ||
2252 | ||
2253 | ||
2254 | fgu_fpy_dp_mux_macro__mux_aonpe__ports_5__stack_88c__width_65 i_a0_bm_29 ( | |
2255 | .din0({1'b0 , a0_rs2[63:0] }), // +1 * rs2 | |
2256 | .din1({ a0_rs2[63:0] , 1'b0 }), // +2 * rs2 | |
2257 | .din2({ a0_rs2_[63:0] , 1'b1 }), // -2 * rs2 | |
2258 | .din3({1'b1 , a0_rs2_[63:0] }), // -1 * rs2 | |
2259 | .din4( rs2_3x[64:0] ), // +3 * rs2 | |
2260 | .sel0( be_ff29[0] ), | |
2261 | .sel1( be_ff29[1] ), | |
2262 | .sel2( be_ff29[2] ), | |
2263 | .sel3( be_ff29[3] ), | |
2264 | .sel4( be_ff29[4] ), | |
2265 | .dout( bm29[122:58] )); | |
2266 | ||
2267 | assign bm29[124:123] = { a0_xr_mode_fx2_ , be_pout_ff[29]}; // 1P | |
2268 | assign bm29[57:56] = { 1'b0 , be_hout_ff[28]}; | |
2269 | ||
2270 | ||
2271 | ||
2272 | fgu_fpy_dp_mux_macro__mux_aonpe__ports_5__stack_88c__width_65 i_a0_bm_30 ( | |
2273 | .din0({1'b0 , a0_rs2[63:0] }), // +1 * rs2 | |
2274 | .din1({ a0_rs2[63:0] , 1'b0 }), // +2 * rs2 | |
2275 | .din2({ a0_rs2_[63:0] , 1'b1 }), // -2 * rs2 | |
2276 | .din3({1'b1 , a0_rs2_[63:0] }), // -1 * rs2 | |
2277 | .din4( rs2_3x[64:0] ), // +3 * rs2 | |
2278 | .sel0( be_ff30[0] ), | |
2279 | .sel1( be_ff30[1] ), | |
2280 | .sel2( be_ff30[2] ), | |
2281 | .sel3( be_ff30[3] ), | |
2282 | .sel4( be_ff30[4] ), | |
2283 | .dout( bm30[124:60] )); | |
2284 | ||
2285 | assign bm30[126:125] = { a0_xr_mode_fx2_ , be_pout_ff[30]}; // 1P | |
2286 | assign bm30[59:58] = { 1'b0 , be_hout_ff[29]}; | |
2287 | ||
2288 | ||
2289 | ||
2290 | fgu_fpy_dp_mux_macro__mux_aonpe__ports_5__stack_88c__width_65 i_a0_bm_31 ( | |
2291 | .din0({1'b0 , a0_rs2[63:0] }), // +1 * rs2 | |
2292 | .din1({ a0_rs2[63:0] , 1'b0 }), // +2 * rs2 | |
2293 | .din2({ a0_rs2_[63:0] , 1'b1 }), // -2 * rs2 | |
2294 | .din3({1'b1 , a0_rs2_[63:0] }), // -1 * rs2 | |
2295 | .din4( rs2_3x[64:0] ), // +3 * rs2 | |
2296 | .sel0( be_ff31[0] ), | |
2297 | .sel1( be_ff31[1] ), | |
2298 | .sel2( be_ff31[2] ), | |
2299 | .sel3( be_ff31[3] ), | |
2300 | .sel4( be_ff31[4] ), | |
2301 | .dout( bm31[126:62] )); | |
2302 | ||
2303 | assign bm31[127] = { be_pout_ff[31]}; // 1P | |
2304 | assign bm31[61:60] = { 1'b0 , be_hout_ff[30]}; | |
2305 | ||
2306 | ||
2307 | fgu_fpy_dp_mux_macro__mux_aope__ports_2__stack_88c__width_64 i_a0_bm_32 ( | |
2308 | .din0({ a0_rs2[63:0] }), // +1 * rs2 | |
2309 | .din1( {64{1'b0}} ), | |
2310 | .sel0( be_ff32_b0 ), | |
2311 | .dout( bm32[127:64] )); | |
2312 | ||
2313 | assign bm32[135:128] = {8{a0_xr_mode_fx2_} }; // Extend beyond ACCUM range | |
2314 | assign bm32[63:62] = { 1'b0 , be_hout_ff[31]}; | |
2315 | ||
2316 | ||
2317 | ||
2318 | // bm27[120:52] bm28[122:54] bm29[124:56] | |
2319 | ||
2320 | fgu_fpy_dp_csa32_macro__stack_88c__width_69 a0_csa2_7 ( | |
2321 | .i0 ({ { 2{1'b0}}, bm27[120:54] }), | |
2322 | .i1 ({ bm28[122:54] }), | |
2323 | .i2 ({ bm29[122:56] , { 2{1'b0}} }), | |
2324 | .carry( a0_csa2_7_c[123:55] ), | |
2325 | .sum ( a0_csa2_7_s[122:54] )); | |
2326 | ||
2327 | assign a0_csa2_7_s[53:52] = bm27[53:52]; | |
2328 | assign a0_csa2_7_s[124:123] = bm29[124:123]; | |
2329 | ||
2330 | ||
2331 | ||
2332 | // bm30[126:58] bm31[127:60] bm32[135:62] | |
2333 | ||
2334 | fgu_fpy_dp_csa32_macro__stack_88c__width_68 a0_csa2_8 ( | |
2335 | .i0 ({ { 1{1'b0}}, bm30[126:60] }), | |
2336 | .i1 ({ bm31[127:60] }), | |
2337 | .i2 ({ bm32[127:62] , { 2{1'b0}} }), | |
2338 | .carry( a0_csa2_8_c[128:61] ), | |
2339 | .sum ( a0_csa2_8_s[127:60] )); | |
2340 | ||
2341 | assign a0_csa2_8_s[59:58] = bm30[59:58]; | |
2342 | assign a0_csa2_8_s[135:128] = bm32[135:128]; | |
2343 | ||
2344 | ||
2345 | // *** 2nd level to 3rd level *** | |
2346 | // | |
2347 | // csa2_7_s[124:52] csa2_7_c[123:55] | |
2348 | // csa2_8_s[135:58] csa2_8_c[128:61] | |
2349 | ||
2350 | ||
2351 | fgu_fpy_dp_csa42_macro__stack_88c__width_74 a0_csa3_4 ( | |
2352 | .i0 ({ { 4{1'b0}}, a0_csa2_7_s[124:55] }), | |
2353 | .i1 ({ { 5{1'b0}}, a0_csa2_7_c[123:55] }), | |
2354 | .i2 ({ a0_csa2_8_c[128:61], { 6{1'b0}} }), | |
2355 | .i3 ({ a0_csa2_8_s[128:58], { 3{1'b0}} }), | |
2356 | .cin ( 1'b0 ), // 1 bit | |
2357 | .cout ( a0_csa3_4_unused ), // 1 bit | |
2358 | .carry( a0_csa3_4_c[129:56] ), | |
2359 | .sum ( a0_csa3_4_s[128:55] )); | |
2360 | ||
2361 | assign a0_csa3_4_s[54:52] = a0_csa2_7_s[54:52]; | |
2362 | assign a0_csa3_4_s[135:129] = a0_csa2_8_s[135:129]; | |
2363 | ||
2364 | ||
2365 | ||
2366 | // a0_csa2_7_s[122:54] a0_csa2_8_s[126:60] | |
2367 | ||
2368 | fgu_fpy_dp_xor_macro__ports_2__stack_88c__width_63 a0_xor3_0 ( | |
2369 | .din0( a0_csa2_7_s[122:60] ), | |
2370 | .din1( a0_csa2_8_s[122:60] ), | |
2371 | .dout( a0_xr_in[122:60] )); | |
2372 | ||
2373 | assign a0_xr_in[59:54] = a0_csa2_7_s[59:54]; | |
2374 | assign a0_xr_in[126:123] = a0_csa2_8_s[126:123]; | |
2375 | ||
2376 | ||
2377 | ||
2378 | fgu_fpy_dp_msff_macro__stack_88c__width_40 i_a0_s_ff_a ( | |
2379 | .scan_in(i_a0_s_ff_a_scanin), | |
2380 | .scan_out(i_a0_s_ff_a_scanout), | |
2381 | .clk ( l2clk ), | |
2382 | .en ( mul_clken_rep01 ), | |
2383 | .din ( a0_csa3_4_s[135:96] ), | |
2384 | .dout( a0_csa3_4_s_ff[135:96] ), | |
2385 | .se(se), | |
2386 | .siclk(siclk), | |
2387 | .soclk(soclk), | |
2388 | .pce_ov(pce_ov), | |
2389 | .stop(stop)); | |
2390 | ||
2391 | fgu_fpy_dp_msff_macro__stack_88c__width_44 i_a0_s_ff_b ( | |
2392 | .scan_in(i_a0_s_ff_b_scanin), | |
2393 | .scan_out(i_a0_s_ff_b_scanout), | |
2394 | .clk ( l2clk ), | |
2395 | .en ( mul_clken_rep0 ), | |
2396 | .din ( a0_csa3_4_s[95:52] ), | |
2397 | .dout( a0_csa3_4_s_ff[95:52] ), | |
2398 | .se(se), | |
2399 | .siclk(siclk), | |
2400 | .soclk(soclk), | |
2401 | .pce_ov(pce_ov), | |
2402 | .stop(stop)); | |
2403 | ||
2404 | ||
2405 | fgu_fpy_dp_msff_macro__stack_88c__width_36 i_a0_c_ff_a ( | |
2406 | .scan_in(i_a0_c_ff_a_scanin), | |
2407 | .scan_out(i_a0_c_ff_a_scanout), | |
2408 | .clk ( l2clk ), | |
2409 | .en ( mul_clken_rep01 ), | |
2410 | .din (a0_csa3_4_c[129:94] ), | |
2411 | .dout(a0_csa3_4_c_ff[129:94] ), | |
2412 | .se(se), | |
2413 | .siclk(siclk), | |
2414 | .soclk(soclk), | |
2415 | .pce_ov(pce_ov), | |
2416 | .stop(stop)); | |
2417 | ||
2418 | fgu_fpy_dp_msff_macro__stack_88c__width_44 i_a0_c_ff_b ( | |
2419 | .scan_in(i_a0_c_ff_b_scanin), | |
2420 | .scan_out(i_a0_c_ff_b_scanout), | |
2421 | .clk ( l2clk ), | |
2422 | .en ( mul_clken_rep0 ), | |
2423 | .din ({a0_csa3_4_c[93:87] , fac_accum_sel_fx3[6:2] , fac_accum_sel_fx3[0] , a0_csa3_4_c[86:56]} ), | |
2424 | .dout({a0_csa3_4_c_ff[93:87] , accum_sel_fx4[6:2] , accum_sel_fx4_b0 , a0_csa3_4_c_ff[86:56]} ), | |
2425 | .se(se), | |
2426 | .siclk(siclk), | |
2427 | .soclk(soclk), | |
2428 | .pce_ov(pce_ov), | |
2429 | .stop(stop)); | |
2430 | ||
2431 | ||
2432 | // *** *** *** *** *** *** *** *** End : "A0" 6:2 CSA Tree *** *** *** *** *** *** | |
2433 | ||
2434 | ||
2435 | ||
2436 | ||
2437 | // *** *** *** *** *** *** *** *** Start : "A4" 8:2 CSA Tree *** *** *** *** *** *** | |
2438 | ||
2439 | ||
2440 | ||
2441 | // *** 8x16 3rd level to 4th level *** | |
2442 | // | |
2443 | // Define Raw Result = {M3,M2,M1,M0} | |
2444 | // | |
2445 | // M0 = a3_csa3_1_s_ff[31:0] a3_csa3_1_c_ff[31:2] | |
2446 | // M1 = a2_csa3_2_s_ff[49:18] a2_csa3_2_c_ff[49:20] | |
2447 | // M2 = a1_csa3_3_s_ff[67:36] a1_csa3_3_c_ff[67:38] | |
2448 | // M3 = a0_csa3_4_s_ff[85:54] a0_csa3_4_c_ff[85:56] | |
2449 | ||
2450 | ||
2451 | ||
2452 | fgu_fpy_dp_csa32_macro__stack_88c__width_25 a4_8x16csa4_1 ( | |
2453 | .i0 ({ a3_csa3_1_s_ff[31:7] }), | |
2454 | .i1 ({ a3_csa3_1_c_ff[31:7] }), | |
2455 | .i2 ({ {16{1'b0}}, fac_8x16_rnd_fx3[1], | |
2456 | { 7{1'b0}}, fac_8x16_rnd_fx3[0] }), | |
2457 | .carry({ a4_8x16csa4_1_unused , a4_8x16csa4_1_c[31:8]}), | |
2458 | .sum ( a4_8x16csa4_1_s[31:7] )); | |
2459 | ||
2460 | assign a4_8x16csa4_1_s[6:0] = a3_csa3_1_s_ff[6:0]; | |
2461 | assign a4_8x16csa4_1_c[7] = 1'b0; | |
2462 | assign a4_8x16csa4_1_c[6:2] = a3_csa3_1_c_ff[6:2]; | |
2463 | ||
2464 | ||
2465 | ||
2466 | fgu_fpy_dp_csa32_macro__stack_88c__width_25 a4_8x16csa4_2 ( | |
2467 | .i0 ({ a2_csa3_2_s_ff[49:25] }), | |
2468 | .i1 ({ a2_csa3_2_c_ff[49:25] }), | |
2469 | .i2 ({ {16{1'b0}}, fac_8x16_rnd_fx3[1], | |
2470 | { 7{1'b0}}, fac_8x16_rnd_fx3[0] }), | |
2471 | .carry({ a4_8x16csa4_2_unused , a4_8x16csa4_2_c[49:26]}), | |
2472 | .sum ( a4_8x16csa4_2_s[49:25] )); | |
2473 | ||
2474 | assign a4_8x16csa4_2_s[24:18] = a2_csa3_2_s_ff[24:18]; | |
2475 | assign a4_8x16csa4_2_c[25] = 1'b0; | |
2476 | assign a4_8x16csa4_2_c[24:20] = a2_csa3_2_c_ff[24:20]; | |
2477 | ||
2478 | ||
2479 | ||
2480 | fgu_fpy_dp_csa32_macro__stack_88c__width_25 a4_8x16csa4_3 ( | |
2481 | .i0 ({ a1_csa3_3_s_ff[67:43] }), | |
2482 | .i1 ({ a1_csa3_3_c_ff[67:43] }), | |
2483 | .i2 ({ {16{1'b0}}, fac_8x16_rnd_fx3[1], | |
2484 | { 7{1'b0}}, fac_8x16_rnd_fx3[0] }), | |
2485 | .carry({ a4_8x16csa4_3_unused , a4_8x16csa4_3_c[67:44]}), | |
2486 | .sum ( a4_8x16csa4_3_s[67:43] )); | |
2487 | ||
2488 | assign a4_8x16csa4_3_s[42:36] = a1_csa3_3_s_ff[42:36]; | |
2489 | assign a4_8x16csa4_3_c[43] = 1'b0; | |
2490 | assign a4_8x16csa4_3_c[42:38] = a1_csa3_3_c_ff[42:38]; | |
2491 | ||
2492 | ||
2493 | ||
2494 | fgu_fpy_dp_csa32_macro__stack_88c__width_25 a4_8x16csa4_4 ( | |
2495 | .i0 ({ a0_csa3_4_s_ff[85:61] }), | |
2496 | .i1 ({ a0_csa3_4_c_ff[85:61] }), | |
2497 | .i2 ({ {16{1'b0}}, fac_8x16_rnd_fx3[1], | |
2498 | { 7{1'b0}}, fac_8x16_rnd_fx3[0] }), | |
2499 | .carry({ a4_8x16csa4_4_unused , a4_8x16csa4_4_c[85:62]}), | |
2500 | .sum ( a4_8x16csa4_4_s[85:61] )); | |
2501 | ||
2502 | assign a4_8x16csa4_4_s[60:54] = a0_csa3_4_s_ff[60:54]; | |
2503 | assign a4_8x16csa4_4_c[61] = 1'b0; | |
2504 | assign a4_8x16csa4_4_c[60:56] = a0_csa3_4_c_ff[60:56]; | |
2505 | ||
2506 | ||
2507 | ||
2508 | ||
2509 | ||
2510 | ||
2511 | ||
2512 | // *** XOR 4th level to 5th level *** | |
2513 | // | |
2514 | ||
2515 | ||
2516 | fgu_fpy_dp_xor_macro__ports_2__stack_88c__width_63 a4_xor5_1 ( | |
2517 | .din0( a32_xr_ff[98:36] ), | |
2518 | .din1( a10_xr_ff[98:36] ), | |
2519 | .dout( a4_xr5_1[98:36] )); | |
2520 | ||
2521 | assign a4_xr5_1[35:0] = a32_xr_ff[35:0]; | |
2522 | assign a4_xr5_1[126:99] = a10_xr_ff[126:99]; | |
2523 | ||
2524 | ||
2525 | ||
2526 | ||
2527 | // *** 4th level to 5th level *** | |
2528 | // | |
2529 | // a3_csa3_1_s_ff[82:0] a3_csa3_1_c_ff[82:2] | |
2530 | // a2_csa3_2_s_ff[100:16] a2_csa3_1_c_ff[100:20] | |
2531 | // | |
2532 | // a1_csa3_3_s_ff[118:34] a1_csa3_3_c_ff[118:38] | |
2533 | // a0_csa3_4_s_ff[135:52] a0_csa3_4_c_ff[129:56] | |
2534 | ||
2535 | ||
2536 | ||
2537 | fgu_fpy_dp_csa42_macro__stack_88c__width_3 a4_csa4_1a ( | |
2538 | .i0 ({ { 3{1'b0}} }), | |
2539 | .i1 ({ { 3{1'b0}} }), | |
2540 | .i2 ({ a2_csa3_2_c_ff[100:98] }), | |
2541 | .i3 ({ a2_csa3_2_s_ff[100:98] }), | |
2542 | .cin ( a4_csa4_1b_cout ), // 1 bit | |
2543 | .cout ( a4_csa4_1a_unused ), // 1 bit | |
2544 | .carry( a4_csa4_1_c[101:99] ), | |
2545 | .sum ( a4_csa4_1_s[100:98] )); | |
2546 | ||
2547 | ||
2548 | fgu_fpy_dp_csa42_macro__stack_96c__width_96 a4_csa4_1b ( | |
2549 | .i0 ({ {15{1'b0}}, a3_csa3_1_s_ff[82:2] }), | |
2550 | .i1 ({ {15{1'b0}}, a3_csa3_1_c_ff[82:2] }), | |
2551 | .i2 ({ a2_csa3_2_c_ff[97:20] , {18{1'b0}} }), | |
2552 | .i3 ({ a2_csa3_2_s_ff[97:16] , {14{1'b0}} }), | |
2553 | .cin ( 1'b0 ), // 1 bit | |
2554 | .cout ( a4_csa4_1b_cout ), // 1 bit | |
2555 | .carry( a4_csa4_1_c[98:3] ), | |
2556 | .sum ( a4_csa4_1_s[97:2] )); | |
2557 | ||
2558 | assign a4_csa4_1_s[1:0] = a3_csa3_1_s_ff[1:0]; | |
2559 | ||
2560 | ||
2561 | ||
2562 | fgu_fpy_dp_csa42_macro__stack_96c__width_92 a4_csa4_2 ( | |
2563 | .i0 ({ {11{1'b0}}, a1_csa3_3_s_ff[118:38] }), | |
2564 | .i1 ({ {11{1'b0}}, a1_csa3_3_c_ff[118:38] }), | |
2565 | .i2 ({ a0_csa3_4_c_ff[129:56], {18{1'b0}} }), | |
2566 | .i3 ({ a0_csa3_4_s_ff[129:52], {14{1'b0}} }), | |
2567 | .cin ( 1'b0 ), // 1 bit | |
2568 | .cout ( a4_csa4_2_unused ), // 1 bit | |
2569 | .carry( a4_csa4_2_c[130:39] ), | |
2570 | .sum ( a4_csa4_2_s[129:38] )); | |
2571 | ||
2572 | assign a4_csa4_2_s[37:34] = a1_csa3_3_s_ff[37:34]; | |
2573 | assign a4_csa4_2_s[135:130] = a0_csa3_4_s_ff[135:130]; | |
2574 | ||
2575 | ||
2576 | ||
2577 | ||
2578 | fgu_fpy_dp_csa42_macro__stack_88c__width_32 a4_csa5_1a ( | |
2579 | .i0 ({ {30{1'b0}}, a4_csa4_1_s[100:99] }), | |
2580 | .i1 ({ {29{1'b0}}, a4_csa4_1_c[101:99] }), | |
2581 | .i2 ( a4_csa4_2_c[130:99] ), | |
2582 | .i3 ( a4_csa4_2_s[130:99] ), | |
2583 | .cin ( a4_csa5_1b_cout ), // 1 bit | |
2584 | .cout ( a4_csa5_1a_unused ), // 1 bit | |
2585 | .carry( a4_csa5_1_c[131:100] ), | |
2586 | .sum ( a4_csa5_1_s[130:99] )); | |
2587 | ||
2588 | ||
2589 | fgu_fpy_dp_csa42_macro__stack_96c__width_96 a4_csa5_1b ( | |
2590 | .i0 ( a4_csa4_1_s[98:3] ), | |
2591 | .i1 ( a4_csa4_1_c[98:3] ), | |
2592 | .i2 ({ a4_csa4_2_c[98:39], {36{1'b0}} }), | |
2593 | .i3 ({ a4_csa4_2_s[98:34], {31{1'b0}} }), | |
2594 | .cin ( 1'b0 ), // 1 bit | |
2595 | .cout ( a4_csa5_1b_cout ), // 1 bit | |
2596 | .carry( a4_csa5_1_c[99:4] ), | |
2597 | .sum ( a4_csa5_1_s[98:3] )); | |
2598 | ||
2599 | assign a4_csa5_1_s[2:0] = a4_csa4_1_s[2:0]; | |
2600 | assign a4_csa5_1_s[135:131] = a4_csa4_2_s[135:131]; | |
2601 | ||
2602 | ||
2603 | fgu_fpy_dp_msff_macro__mux_aope__ports_5__stack_88c__width_64 i_a4_s_lo_ff ( | |
2604 | .scan_in(i_a4_s_lo_ff_scanin), | |
2605 | .scan_out(i_a4_s_lo_ff_scanout), | |
2606 | .clk ( l2clk ), | |
2607 | .en ( mul_clken_rep0 ), | |
2608 | .din0( a4_csa5_1_s[63:0] ), // Integer, Float, MA Integer | |
2609 | .din1({a4_8x16csa4_2_s[48:18], | |
2610 | 1'b0, | |
2611 | a4_8x16csa4_1_s[31:0]} ), // 8x16 | |
2612 | .din2({a4_csa5_1_s[62:0] , 1'b0} ), // MA Integer * 2 | |
2613 | .din3( a4_xr5_1[63:0] ), // XOR multiply | |
2614 | .din4({a4_xr5_1[62:0] , 1'b0} ), // XOR multiply * 2 | |
2615 | .sel0( fac_scff_sel_fx3[0] ), | |
2616 | .sel1( fac_scff_sel_fx3[1] ), | |
2617 | .sel2( fac_scff_sel_fx3[2] ), | |
2618 | .sel3( fac_scff_sel_fx3[3] ), | |
2619 | .dout( a4_csa5_1_s_ff[63:0] ), | |
2620 | .se(se), | |
2621 | .siclk(siclk), | |
2622 | .soclk(soclk), | |
2623 | .pce_ov(pce_ov), | |
2624 | .stop(stop)); | |
2625 | ||
2626 | ||
2627 | fgu_fpy_dp_msff_macro__mux_aope__ports_5__stack_88c__width_72 i_a4_s_hi_ff ( | |
2628 | .scan_in(i_a4_s_hi_ff_scanin), | |
2629 | .scan_out(i_a4_s_hi_ff_scanout), | |
2630 | .clk ( l2clk ), | |
2631 | .en ( mul_clken_rep0 ), | |
2632 | .din0({a4_csa5_1_s[135:134], | |
2633 | a4_csa5_1_s[133:64]} ), // Integer, Float, MA Integer | |
2634 | .din1({2'b00, | |
2635 | 3'b000, | |
2636 | a4_8x16csa4_4_s[85:54], | |
2637 | 1'b0, | |
2638 | a4_8x16csa4_3_s[67:36], | |
2639 | 1'b0, | |
2640 | a4_8x16csa4_2_s[49]} ), // 8x16 | |
2641 | .din2({a4_csa5_1_s[134:133], | |
2642 | a4_csa5_1_s[132:63]} ), // MA Integer * 2 | |
2643 | .din3({2'b00, | |
2644 | 3'b000, | |
2645 | 4'b0000,a4_xr5_1[126:64]} ), // XOR multiply | |
2646 | .din4({2'b00, | |
2647 | 3'b000, | |
2648 | 3'b000 ,a4_xr5_1[126:63]} ), // XOR multiply * 2 | |
2649 | .sel0( fac_scff_sel_fx3[0] ), | |
2650 | .sel1( fac_scff_sel_fx3[1] ), | |
2651 | .sel2( fac_scff_sel_fx3[2] ), | |
2652 | .sel3( fac_scff_sel_fx3[3] ), | |
2653 | .dout( a4_csa5_1_s_ff[135:64] ), | |
2654 | .se(se), | |
2655 | .siclk(siclk), | |
2656 | .soclk(soclk), | |
2657 | .pce_ov(pce_ov), | |
2658 | .stop(stop)); | |
2659 | ||
2660 | ||
2661 | fgu_fpy_dp_msff_macro__mux_aonpe__ports_3__stack_88c__width_62 i_a4_c_lo_ff ( | |
2662 | .scan_in(i_a4_c_lo_ff_scanin), | |
2663 | .scan_out(i_a4_c_lo_ff_scanout), | |
2664 | .clk ( l2clk ), | |
2665 | .en ( mul_clken_rep0 ), | |
2666 | .din0({a4_csa5_1_c[63:4],2'b00} ), // Integer, Float, MA Integer | |
2667 | .din1({a4_8x16csa4_2_c[48:20],2'b00, | |
2668 | 1'b0, | |
2669 | a4_8x16csa4_1_c[31:2]} ), // 8x16 | |
2670 | .din2({a4_csa5_1_c[62:4],3'b000} ), // MA Integer * 2 | |
2671 | .sel0( fac_scff_sel_fx3[0] ), | |
2672 | .sel1( fac_scff_sel_fx3[1] ), | |
2673 | .sel2( fac_scff_sel_fx3[2] ), | |
2674 | .dout( a4_csa5_1_c_ff[63:2] ), | |
2675 | .se(se), | |
2676 | .siclk(siclk), | |
2677 | .soclk(soclk), | |
2678 | .pce_ov(pce_ov), | |
2679 | .stop(stop)); | |
2680 | ||
2681 | assign a4_csa5_1_c_ff[1:0] = 2'b00; | |
2682 | ||
2683 | ||
2684 | fgu_fpy_dp_msff_macro__mux_aonpe__ports_3__stack_88c__width_69 i_a4_c_hi_ff ( | |
2685 | .scan_in(i_a4_c_hi_ff_scanin), | |
2686 | .scan_out(i_a4_c_hi_ff_scanout), | |
2687 | .clk ( l2clk ), | |
2688 | .en ( mul_clken_rep0 ), | |
2689 | .din0({1'b0, | |
2690 | a4_csa5_1_c[131:64]} ), // Integer, Float, MA Integer | |
2691 | .din1({1'b0, | |
2692 | 1'b0,a4_8x16csa4_4_c[85:56],2'b00, | |
2693 | 1'b0, | |
2694 | a4_8x16csa4_3_c[67:38],3'b000, | |
2695 | a4_8x16csa4_2_c[49]} ), // 8x16 | |
2696 | .din2({a4_csa5_1_c[131], | |
2697 | a4_csa5_1_c[130:63]} ), // MA Integer * 2 | |
2698 | .sel0( fac_scff_sel_fx3[0] ), | |
2699 | .sel1( fac_scff_sel_fx3[1] ), | |
2700 | .sel2( fac_scff_sel_fx3[2] ), | |
2701 | .dout( a4_csa5_1_c_ff[132:64] ), | |
2702 | .se(se), | |
2703 | .siclk(siclk), | |
2704 | .soclk(soclk), | |
2705 | .pce_ov(pce_ov), | |
2706 | .stop(stop)); | |
2707 | ||
2708 | ||
2709 | // *** *** *** *** *** *** *** *** End : "A4" 8:2 CSA Tree *** *** *** *** *** *** | |
2710 | ||
2711 | ||
2712 | ||
2713 | ||
2714 | // *** *** *** *** *** *** *** *** Start : Accumulator *** *** *** *** *** *** | |
2715 | ||
2716 | ||
2717 | fgu_fpy_dp_xor_macro__ports_2__stack_88c__width_63 i_fx4_xor0 ( | |
2718 | .din0( a4_csa5_1_s_ff[126:64] ), | |
2719 | .din1( accum_ff[126:64] ), | |
2720 | .dout( xr_fx4[126:64] )); | |
2721 | ||
2722 | ||
2723 | fgu_fpy_dp_xor_macro__ports_2__stack_88c__width_64 i_fx4_xor1 ( | |
2724 | .din0( a4_csa5_1_s_ff[63:0] ), | |
2725 | .din1( accum_ff[63:0] ), | |
2726 | .dout( xr_fx4[63:0] )); | |
2727 | ||
2728 | ||
2729 | fgu_fpy_dp_msff_macro__mux_aope__ports_6__stack_88c__width_72 i_accum_ff0 ( | |
2730 | .scan_in(i_accum_ff0_scanin), | |
2731 | .scan_out(i_accum_ff0_scanout), | |
2732 | .clk ( l2clk ), | |
2733 | .en ( accum_sel_fx4_b0 ), | |
2734 | .din0({{ 9{1'b0}},xr_fx4[126:64]} ), // XOR w/ ACCUM and >> 0 | |
2735 | .din1( {72{1'b0}} ), // XOR w/ ACCUM and >> 64 | |
2736 | .din2({{ 9{1'b0}},xr_fx4[126:64]} ), // XOR w/o ACCUM and >> 0 | |
2737 | .din3( {72{1'b0}} ), // XOR w/o ACCUM and >> 64 | |
2738 | .din4( fya_add_result[135:64] ), // Int w/ or w/o ACCUM and >> 0 | |
2739 | .din5({{64{1'b0}},fya_add_result[135:128]} ), // Int w/ or w/o ACCUM and >> 64 | |
2740 | .sel0( accum_sel_fx4[2] ), | |
2741 | .sel1( accum_sel_fx4[3] ), | |
2742 | .sel2( accum_sel_fx4[4] ), | |
2743 | .sel3( accum_sel_fx4[5] ), | |
2744 | .sel4( accum_sel_fx4[6] ), | |
2745 | .dout( accum_ff[135:64] ), | |
2746 | .se(se), | |
2747 | .siclk(siclk), | |
2748 | .soclk(soclk), | |
2749 | .pce_ov(pce_ov), | |
2750 | .stop(stop)); | |
2751 | ||
2752 | ||
2753 | fgu_fpy_dp_msff_macro__mux_aope__ports_6__stack_88c__width_64 i_accum_ff1 ( | |
2754 | .scan_in(i_accum_ff1_scanin), | |
2755 | .scan_out(i_accum_ff1_scanout), | |
2756 | .clk ( l2clk ), | |
2757 | .en ( accum_sel_fx4_b0 ), | |
2758 | .din0( xr_fx4[63:0] ), // XOR w/ ACCUM and >> 0 | |
2759 | .din1({1'b0,xr_fx4[126:64]} ), // XOR w/ ACCUM and >> 64 | |
2760 | .din2( xr_fx4[63:0] ), // XOR w/o ACCUM and >> 0 | |
2761 | .din3({1'b0,xr_fx4[126:64]} ), // XOR w/o ACCUM and >> 64 | |
2762 | .din4( fya_add_result[63:0] ), // Int w/ or w/o ACCUM and >> 0 | |
2763 | .din5( fya_add_result[127:64] ), // Int w/ or w/o ACCUM and >> 64 | |
2764 | .sel0( accum_sel_fx4[2] ), | |
2765 | .sel1( accum_sel_fx4[3] ), | |
2766 | .sel2( accum_sel_fx4[4] ), | |
2767 | .sel3( accum_sel_fx4[5] ), | |
2768 | .sel4( accum_sel_fx4[6] ), | |
2769 | .dout( accum_ff[63:0] ), | |
2770 | .se(se), | |
2771 | .siclk(siclk), | |
2772 | .soclk(soclk), | |
2773 | .pce_ov(pce_ov), | |
2774 | .stop(stop)); | |
2775 | ||
2776 | ||
2777 | assign fgu_accum_b0_fx5 = accum_ff[0]; | |
2778 | ||
2779 | // *** *** *** *** *** *** *** *** End : Accumulator *** *** *** *** *** *** | |
2780 | ||
2781 | ||
2782 | fgu_fpy_dp_msff_macro__stack_88c__width_4 i_accum_sel_b1_ff ( | |
2783 | .scan_in(i_accum_sel_b1_ff_scanin), | |
2784 | .scan_out(i_accum_sel_b1_ff_scanout), | |
2785 | .clk ( l2clk ), | |
2786 | .en ( mul_clken_rep0 ), | |
2787 | .din ({4{fac_accum_sel_fx3[1]}} ), | |
2788 | .dout( accum_sel_fx4_b1[3:0]), | |
2789 | .se(se), | |
2790 | .siclk(siclk), | |
2791 | .soclk(soclk), | |
2792 | .pce_ov(pce_ov), | |
2793 | .stop(stop)); | |
2794 | ||
2795 | ||
2796 | ||
2797 | ||
2798 | // *** *** *** *** *** *** *** *** Start : Custom add136 *** *** *** *** *** *** | |
2799 | ||
2800 | ||
2801 | cl_dp1_add136_8x fya ( | |
2802 | .din0 ( a4_csa5_1_s_ff[135:0] ), | |
2803 | .din1 ( a4_csa5_1_c_ff[132:0] ), | |
2804 | .din2 ( accum_ff[135:0] ), | |
2805 | .sel_din2 ( accum_sel_fx4_b1[3:0] ), | |
2806 | .sum ( fya_add_result[135:0] ), | |
2807 | .fya_sticky_dp ( fya_sticky_dp ), | |
2808 | .fya_sticky_sp ( fya_sticky_sp ), | |
2809 | .fya_xicc_z ( fya_xicc_z[1:0] )); | |
2810 | ||
2811 | ||
2812 | ||
2813 | // *** *** *** *** *** *** *** *** End : Custom add136 *** *** *** *** *** *** | |
2814 | ||
2815 | ||
2816 | ||
2817 | ||
2818 | // *** *** *** *** *** *** *** *** Start : Output Flop *** *** *** *** *** *** | |
2819 | ||
2820 | ||
2821 | fgu_fpy_dp_buff_macro__stack_88c__width_1 i_fpy_fp_result_fx4_b63_buf ( | |
2822 | .din (fya_add_result[127] ), | |
2823 | .dout(fpy_fp_result_fx4_b63)); | |
2824 | ||
2825 | // 8x16 data is packed in FYA_ADD_RESULT as follows : | |
2826 | // | |
2827 | // 103:99 98 97:66 65 64:33 32 31:00 | |
2828 | // ------ ----- ----- ----- | |
2829 | // M3 M2 M1 M0 | |
2830 | ||
2831 | ||
2832 | fgu_fpy_dp_msff_macro__mux_aope__ports_7__stack_88c__width_68 i_fx5_ff ( | |
2833 | .scan_in(i_fx5_ff_scanin), | |
2834 | .scan_out(i_fx5_ff_scanout), | |
2835 | .clk ( l2clk ), | |
2836 | .en ( mul_clken_rep0 ), | |
2837 | .din0({ 2'b00 , | |
2838 | 1'b0 , | |
2839 | 1'b0 , | |
2840 | fya_add_result[122:107] , | |
2841 | fya_add_result[89:74] , | |
2842 | fya_add_result[56:41] , | |
2843 | fya_add_result[23:8] } ), // [0] : FMUL8x16 or FMUL8x16AU or FMUL8x16AL or FMUL8SUx16 | |
2844 | .din1({ 2'b00 , | |
2845 | 1'b0 , | |
2846 | 1'b0 , | |
2847 | fya_add_result[130:115] , | |
2848 | fya_add_result[97:82] , | |
2849 | fya_add_result[64:49] , | |
2850 | fya_add_result[31:16] } ), // [1] : FMUL8ULx16 | |
2851 | .din2({ 2'b00 , | |
2852 | 1'b0 , | |
2853 | 1'b0 , | |
2854 | fya_add_result[122:99],8'h00 , | |
2855 | fya_add_result[89:66] ,8'h00 } ), // [2] : FMULD8SUx16 | |
2856 | .din3({ 2'b00 , | |
2857 | 1'b0 , | |
2858 | 1'b0 , | |
2859 | fya_add_result[130:99] , | |
2860 | fya_add_result[97:66] } ), // [3] : FMULD8ULx16 | |
2861 | .din4({ 2'b00 , | |
2862 | 1'b0 , | |
2863 | 1'b0 , | |
2864 | xr_fx4[63:0] } ), // [4] : XOR multiply w/ ACCUMUMATE | |
2865 | .din5({ 2'b00 , | |
2866 | fya_sticky_sp , | |
2867 | fya_sticky_dp , | |
2868 | fya_add_result[127:73] , | |
2869 | {9{1'b0}} } ), // [5] : Float | |
2870 | .din6({fya_xicc_z[1:0] , | |
2871 | 1'b0 , | |
2872 | 1'b0 , | |
2873 | fya_add_result[63:0] } ), // Def : Integer, MA Integer w/ and w/o ACCUMULATE, XOR w/o ACCUMULATE; | |
2874 | .sel0( fac_result_sel_fx4[0] ), | |
2875 | .sel1( fac_result_sel_fx4[1] ), | |
2876 | .sel2( fac_result_sel_fx4[2] ), | |
2877 | .sel3( fac_result_sel_fx4[3] ), | |
2878 | .sel4( fac_result_sel_fx4[4] ), | |
2879 | .sel5( fac_result_sel_fx4[5] ), | |
2880 | .dout({fpy_xicc_z_fx5[1:0] , | |
2881 | fpy_sticky_sp_fx5 , | |
2882 | fpy_sticky_dp_fx5 , | |
2883 | fgu_mul_result_fx5[63:0] } ), | |
2884 | .se(se), | |
2885 | .siclk(siclk), | |
2886 | .soclk(soclk), | |
2887 | .pce_ov(pce_ov), | |
2888 | .stop(stop)); | |
2889 | ||
2890 | ||
2891 | ||
2892 | ||
2893 | fgu_fpy_dp_msff_macro__mux_aope__ports_2__stack_88c__width_64 i_ma_result_ff ( | |
2894 | .scan_in(i_ma_result_ff_scanin), | |
2895 | .scan_out(i_ma_result_ff_scanout), | |
2896 | .clk ( l2clk ), | |
2897 | .en ( fac_ma_result_en_fx4 ), | |
2898 | .din0( xr_fx4[63:0] ), // [4] : XOR multiply w/ ACCUMUMATE | |
2899 | .din1( fya_add_result[63:0] ), // Def : MA Integer w/ and w/o ACCUMULATE, XOR w/o ACCUMULATE; | |
2900 | .sel0( fac_result_sel_fx4[4] ), | |
2901 | .dout( ma_result_ff[63:0] ), | |
2902 | .se(se), | |
2903 | .siclk(siclk), | |
2904 | .soclk(soclk), | |
2905 | .pce_ov(pce_ov), | |
2906 | .stop(stop)); | |
2907 | ||
2908 | ||
2909 | ||
2910 | ||
2911 | // *** *** *** *** *** *** *** *** End : Output Flop *** *** *** *** *** *** | |
2912 | ||
2913 | ||
2914 | // fixscan start: | |
2915 | assign i_spu_rs1_ff_scanin = scan_in ; | |
2916 | assign i_spu_rs2_ff_scanin = i_spu_rs1_ff_scanout ; | |
2917 | assign i_3x_ff_scanin = i_spu_rs2_ff_scanout ; | |
2918 | assign i_a3_be_ff_scanin = i_3x_ff_scanout ; | |
2919 | assign i_a3_rs2_ff_scanin = i_a3_be_ff_scanout ; | |
2920 | assign i_a3_s_ff_a_scanin = i_a3_rs2_ff_scanout ; | |
2921 | assign i_a3_s_ff_b_scanin = i_a3_s_ff_a_scanout ; | |
2922 | assign i_a3_c_ff_a_scanin = i_a3_s_ff_b_scanout ; | |
2923 | assign i_a3_c_ff_b_scanin = i_a3_c_ff_a_scanout ; | |
2924 | assign i_a32_x_ff_a_scanin = i_a3_c_ff_b_scanout ; | |
2925 | assign i_a32_x_ff_b_scanin = i_a32_x_ff_a_scanout ; | |
2926 | assign i_a2_be_ff_a_scanin = i_a32_x_ff_b_scanout ; | |
2927 | assign i_a2_be_ff_b_scanin = i_a2_be_ff_a_scanout ; | |
2928 | assign i_a2_rs2_ff_scanin = i_a2_be_ff_b_scanout ; | |
2929 | assign i_a2_s_ff_a_scanin = i_a2_rs2_ff_scanout ; | |
2930 | assign i_a2_s_ff_b_scanin = i_a2_s_ff_a_scanout ; | |
2931 | assign i_a2_c_ff_a_scanin = i_a2_s_ff_b_scanout ; | |
2932 | assign i_a2_c_ff_b_scanin = i_a2_c_ff_a_scanout ; | |
2933 | assign i_a1_be_ff_scanin = i_a2_c_ff_b_scanout ; | |
2934 | assign i_a1_rs2_ff_scanin = i_a1_be_ff_scanout ; | |
2935 | assign i_a1_s_ff_a_scanin = i_a1_rs2_ff_scanout ; | |
2936 | assign i_a1_s_ff_b_scanin = i_a1_s_ff_a_scanout ; | |
2937 | assign i_a1_c_ff_a_scanin = i_a1_s_ff_b_scanout ; | |
2938 | assign i_a1_c_ff_b_scanin = i_a1_c_ff_a_scanout ; | |
2939 | assign i_a10_x_ff_a_scanin = i_a1_c_ff_b_scanout ; | |
2940 | assign i_a10_x_ff_b_scanin = i_a10_x_ff_a_scanout ; | |
2941 | assign i_a0_be_ff_scanin = i_a10_x_ff_b_scanout ; | |
2942 | assign i_a0_rs2_ff_scanin = i_a0_be_ff_scanout ; | |
2943 | assign i_a0_s_ff_a_scanin = i_a0_rs2_ff_scanout ; | |
2944 | assign i_a0_s_ff_b_scanin = i_a0_s_ff_a_scanout ; | |
2945 | assign i_a0_c_ff_a_scanin = i_a0_s_ff_b_scanout ; | |
2946 | assign i_a0_c_ff_b_scanin = i_a0_c_ff_a_scanout ; | |
2947 | assign i_a4_s_lo_ff_scanin = i_a0_c_ff_b_scanout ; | |
2948 | assign i_a4_s_hi_ff_scanin = i_a4_s_lo_ff_scanout ; | |
2949 | assign i_a4_c_lo_ff_scanin = i_a4_s_hi_ff_scanout ; | |
2950 | assign i_a4_c_hi_ff_scanin = i_a4_c_lo_ff_scanout ; | |
2951 | assign i_accum_ff0_scanin = i_a4_c_hi_ff_scanout ; | |
2952 | assign i_accum_ff1_scanin = i_accum_ff0_scanout ; | |
2953 | assign i_accum_sel_b1_ff_scanin = i_accum_ff1_scanout ; | |
2954 | assign i_fx5_ff_scanin = i_accum_sel_b1_ff_scanout; | |
2955 | assign i_ma_result_ff_scanin = i_fx5_ff_scanout ; | |
2956 | assign scan_out = i_ma_result_ff_scanout ; | |
2957 | // fixscan end: | |
2958 | endmodule // fgu_fpy_dp | |
2959 | ||
2960 | ||
2961 | // | |
2962 | // buff macro | |
2963 | // | |
2964 | // | |
2965 | ||
2966 | ||
2967 | ||
2968 | ||
2969 | ||
2970 | module fgu_fpy_dp_buff_macro__dbuff_32x__rep_1__stack_88c__width_4 ( | |
2971 | din, | |
2972 | dout); | |
2973 | input [3:0] din; | |
2974 | output [3:0] dout; | |
2975 | ||
2976 | ||
2977 | ||
2978 | ||
2979 | ||
2980 | ||
2981 | buff #(4) d0_0 ( | |
2982 | .in(din[3:0]), | |
2983 | .out(dout[3:0]) | |
2984 | ); | |
2985 | ||
2986 | ||
2987 | ||
2988 | ||
2989 | ||
2990 | ||
2991 | ||
2992 | ||
2993 | endmodule | |
2994 | ||
2995 | ||
2996 | ||
2997 | ||
2998 | ||
2999 | ||
3000 | ||
3001 | ||
3002 | ||
3003 | // any PARAMS parms go into naming of macro | |
3004 | ||
3005 | module fgu_fpy_dp_msff_macro__minbuff_1__stack_88c__width_64 ( | |
3006 | din, | |
3007 | clk, | |
3008 | en, | |
3009 | se, | |
3010 | scan_in, | |
3011 | siclk, | |
3012 | soclk, | |
3013 | pce_ov, | |
3014 | stop, | |
3015 | dout, | |
3016 | scan_out); | |
3017 | wire l1clk; | |
3018 | wire siclk_out; | |
3019 | wire soclk_out; | |
3020 | wire [62:0] so; | |
3021 | ||
3022 | input [63:0] din; | |
3023 | ||
3024 | ||
3025 | input clk; | |
3026 | input en; | |
3027 | input se; | |
3028 | input scan_in; | |
3029 | input siclk; | |
3030 | input soclk; | |
3031 | input pce_ov; | |
3032 | input stop; | |
3033 | ||
3034 | ||
3035 | ||
3036 | output [63:0] dout; | |
3037 | ||
3038 | ||
3039 | output scan_out; | |
3040 | ||
3041 | ||
3042 | ||
3043 | ||
3044 | cl_dp1_l1hdr_8x c0_0 ( | |
3045 | .l2clk(clk), | |
3046 | .pce(en), | |
3047 | .aclk(siclk), | |
3048 | .bclk(soclk), | |
3049 | .l1clk(l1clk), | |
3050 | .se(se), | |
3051 | .pce_ov(pce_ov), | |
3052 | .stop(stop), | |
3053 | .siclk_out(siclk_out), | |
3054 | .soclk_out(soclk_out) | |
3055 | ); | |
3056 | dff #(64) d0_0 ( | |
3057 | .l1clk(l1clk), | |
3058 | .siclk(siclk_out), | |
3059 | .soclk(soclk_out), | |
3060 | .d(din[63:0]), | |
3061 | .si({scan_in,so[62:0]}), | |
3062 | .so({so[62:0],scan_out}), | |
3063 | .q(dout[63:0]) | |
3064 | ); | |
3065 | ||
3066 | ||
3067 | ||
3068 | ||
3069 | ||
3070 | ||
3071 | ||
3072 | ||
3073 | ||
3074 | ||
3075 | ||
3076 | ||
3077 | ||
3078 | ||
3079 | ||
3080 | ||
3081 | ||
3082 | ||
3083 | ||
3084 | ||
3085 | endmodule | |
3086 | ||
3087 | ||
3088 | ||
3089 | ||
3090 | ||
3091 | ||
3092 | ||
3093 | ||
3094 | ||
3095 | ||
3096 | ||
3097 | ||
3098 | ||
3099 | // any PARAMS parms go into naming of macro | |
3100 | ||
3101 | module fgu_fpy_dp_msff_macro__stack_88c__width_64 ( | |
3102 | din, | |
3103 | clk, | |
3104 | en, | |
3105 | se, | |
3106 | scan_in, | |
3107 | siclk, | |
3108 | soclk, | |
3109 | pce_ov, | |
3110 | stop, | |
3111 | dout, | |
3112 | scan_out); | |
3113 | wire l1clk; | |
3114 | wire siclk_out; | |
3115 | wire soclk_out; | |
3116 | wire [62:0] so; | |
3117 | ||
3118 | input [63:0] din; | |
3119 | ||
3120 | ||
3121 | input clk; | |
3122 | input en; | |
3123 | input se; | |
3124 | input scan_in; | |
3125 | input siclk; | |
3126 | input soclk; | |
3127 | input pce_ov; | |
3128 | input stop; | |
3129 | ||
3130 | ||
3131 | ||
3132 | output [63:0] dout; | |
3133 | ||
3134 | ||
3135 | output scan_out; | |
3136 | ||
3137 | ||
3138 | ||
3139 | ||
3140 | cl_dp1_l1hdr_8x c0_0 ( | |
3141 | .l2clk(clk), | |
3142 | .pce(en), | |
3143 | .aclk(siclk), | |
3144 | .bclk(soclk), | |
3145 | .l1clk(l1clk), | |
3146 | .se(se), | |
3147 | .pce_ov(pce_ov), | |
3148 | .stop(stop), | |
3149 | .siclk_out(siclk_out), | |
3150 | .soclk_out(soclk_out) | |
3151 | ); | |
3152 | dff #(64) d0_0 ( | |
3153 | .l1clk(l1clk), | |
3154 | .siclk(siclk_out), | |
3155 | .soclk(soclk_out), | |
3156 | .d(din[63:0]), | |
3157 | .si({scan_in,so[62:0]}), | |
3158 | .so({so[62:0],scan_out}), | |
3159 | .q(dout[63:0]) | |
3160 | ); | |
3161 | ||
3162 | ||
3163 | ||
3164 | ||
3165 | ||
3166 | ||
3167 | ||
3168 | ||
3169 | ||
3170 | ||
3171 | ||
3172 | ||
3173 | ||
3174 | ||
3175 | ||
3176 | ||
3177 | ||
3178 | ||
3179 | ||
3180 | ||
3181 | endmodule | |
3182 | ||
3183 | ||
3184 | ||
3185 | ||
3186 | ||
3187 | ||
3188 | ||
3189 | ||
3190 | ||
3191 | // | |
3192 | // buff macro | |
3193 | // | |
3194 | // | |
3195 | ||
3196 | ||
3197 | ||
3198 | ||
3199 | ||
3200 | module fgu_fpy_dp_buff_macro__stack_88c__width_4 ( | |
3201 | din, | |
3202 | dout); | |
3203 | input [3:0] din; | |
3204 | output [3:0] dout; | |
3205 | ||
3206 | ||
3207 | ||
3208 | ||
3209 | ||
3210 | ||
3211 | buff #(4) d0_0 ( | |
3212 | .in(din[3:0]), | |
3213 | .out(dout[3:0]) | |
3214 | ); | |
3215 | ||
3216 | ||
3217 | ||
3218 | ||
3219 | ||
3220 | ||
3221 | ||
3222 | ||
3223 | endmodule | |
3224 | ||
3225 | ||
3226 | ||
3227 | ||
3228 | ||
3229 | // | |
3230 | // invert macro | |
3231 | // | |
3232 | // | |
3233 | ||
3234 | ||
3235 | ||
3236 | ||
3237 | ||
3238 | module fgu_fpy_dp_inv_macro__stack_88c__width_1 ( | |
3239 | din, | |
3240 | dout); | |
3241 | input [0:0] din; | |
3242 | output [0:0] dout; | |
3243 | ||
3244 | ||
3245 | ||
3246 | ||
3247 | ||
3248 | ||
3249 | inv #(1) d0_0 ( | |
3250 | .in(din[0:0]), | |
3251 | .out(dout[0:0]) | |
3252 | ); | |
3253 | ||
3254 | ||
3255 | ||
3256 | ||
3257 | ||
3258 | ||
3259 | ||
3260 | ||
3261 | ||
3262 | endmodule | |
3263 | ||
3264 | ||
3265 | ||
3266 | ||
3267 | ||
3268 | // | |
3269 | // buff macro | |
3270 | // | |
3271 | // | |
3272 | ||
3273 | ||
3274 | ||
3275 | ||
3276 | ||
3277 | module fgu_fpy_dp_buff_macro__stack_88c__width_2 ( | |
3278 | din, | |
3279 | dout); | |
3280 | input [1:0] din; | |
3281 | output [1:0] dout; | |
3282 | ||
3283 | ||
3284 | ||
3285 | ||
3286 | ||
3287 | ||
3288 | buff #(2) d0_0 ( | |
3289 | .in(din[1:0]), | |
3290 | .out(dout[1:0]) | |
3291 | ); | |
3292 | ||
3293 | ||
3294 | ||
3295 | ||
3296 | ||
3297 | ||
3298 | ||
3299 | ||
3300 | endmodule | |
3301 | ||
3302 | ||
3303 | ||
3304 | ||
3305 | ||
3306 | // | |
3307 | // buff macro | |
3308 | // | |
3309 | // | |
3310 | ||
3311 | ||
3312 | ||
3313 | ||
3314 | ||
3315 | module fgu_fpy_dp_buff_macro__dbuff_48x__stack_88c__width_1 ( | |
3316 | din, | |
3317 | dout); | |
3318 | input [0:0] din; | |
3319 | output [0:0] dout; | |
3320 | ||
3321 | ||
3322 | ||
3323 | ||
3324 | ||
3325 | ||
3326 | buff #(1) d0_0 ( | |
3327 | .in(din[0:0]), | |
3328 | .out(dout[0:0]) | |
3329 | ); | |
3330 | ||
3331 | ||
3332 | ||
3333 | ||
3334 | ||
3335 | ||
3336 | ||
3337 | ||
3338 | endmodule | |
3339 | ||
3340 | ||
3341 | ||
3342 | ||
3343 | ||
3344 | // general mux macro for pass-gate and and-or muxes with/wout priority encoders | |
3345 | // also for pass-gate with decoder | |
3346 | ||
3347 | ||
3348 | ||
3349 | ||
3350 | ||
3351 | // any PARAMS parms go into naming of macro | |
3352 | ||
3353 | module fgu_fpy_dp_mux_macro__mux_pgpe__ports_6__stack_88c__width_69 ( | |
3354 | din0, | |
3355 | din1, | |
3356 | din2, | |
3357 | din3, | |
3358 | din4, | |
3359 | din5, | |
3360 | sel0, | |
3361 | sel1, | |
3362 | sel2, | |
3363 | sel3, | |
3364 | sel4, | |
3365 | muxtst, | |
3366 | test, | |
3367 | dout); | |
3368 | wire psel0; | |
3369 | wire psel1; | |
3370 | wire psel2; | |
3371 | wire psel3; | |
3372 | wire psel4; | |
3373 | wire psel5; | |
3374 | ||
3375 | input [68:0] din0; | |
3376 | input [68:0] din1; | |
3377 | input [68:0] din2; | |
3378 | input [68:0] din3; | |
3379 | input [68:0] din4; | |
3380 | input [68:0] din5; | |
3381 | input sel0; | |
3382 | input sel1; | |
3383 | input sel2; | |
3384 | input sel3; | |
3385 | input sel4; | |
3386 | input muxtst; | |
3387 | input test; | |
3388 | output [68:0] dout; | |
3389 | ||
3390 | ||
3391 | ||
3392 | ||
3393 | ||
3394 | cl_dp1_penc6_8x c0_0 ( | |
3395 | .sel0(sel0), | |
3396 | .sel1(sel1), | |
3397 | .sel2(sel2), | |
3398 | .sel3(sel3), | |
3399 | .sel4(sel4), | |
3400 | .psel0(psel0), | |
3401 | .psel1(psel1), | |
3402 | .psel2(psel2), | |
3403 | .psel3(psel3), | |
3404 | .psel4(psel4), | |
3405 | .psel5(psel5), | |
3406 | .test(test) | |
3407 | ); | |
3408 | ||
3409 | mux6 #(69) d0_0 ( | |
3410 | .sel0(psel0), | |
3411 | .sel1(psel1), | |
3412 | .sel2(psel2), | |
3413 | .sel3(psel3), | |
3414 | .sel4(psel4), | |
3415 | .sel5(psel5), | |
3416 | .in0(din0[68:0]), | |
3417 | .in1(din1[68:0]), | |
3418 | .in2(din2[68:0]), | |
3419 | .in3(din3[68:0]), | |
3420 | .in4(din4[68:0]), | |
3421 | .in5(din5[68:0]), | |
3422 | .dout(dout[68:0]), | |
3423 | .muxtst(muxtst) | |
3424 | ); | |
3425 | ||
3426 | ||
3427 | ||
3428 | ||
3429 | ||
3430 | ||
3431 | ||
3432 | ||
3433 | ||
3434 | ||
3435 | ||
3436 | ||
3437 | ||
3438 | endmodule | |
3439 | ||
3440 | ||
3441 | // | |
3442 | // Booth Encoder with XOR multiply control | |
3443 | // | |
3444 | // | |
3445 | ||
3446 | ||
3447 | ||
3448 | ||
3449 | ||
3450 | // any PARAMS parms go into naming of macro | |
3451 | ||
3452 | ||
3453 | module fgu_fpy_dp_booth_encode_macro ( | |
3454 | din, | |
3455 | xr_mode, | |
3456 | dout, | |
3457 | pout, | |
3458 | hout); | |
3459 | input [2:0] din; | |
3460 | input xr_mode; | |
3461 | output [4:0] dout; | |
3462 | output pout; | |
3463 | output hout; | |
3464 | ||
3465 | ||
3466 | ||
3467 | ||
3468 | ||
3469 | ||
3470 | cl_dp1_boothenc_4x m0_0 ( | |
3471 | .din(din), | |
3472 | .xr_mode(xr_mode), | |
3473 | .dout(dout), | |
3474 | .pout(pout), | |
3475 | .hout(hout) | |
3476 | ); | |
3477 | ||
3478 | ||
3479 | ||
3480 | ||
3481 | ||
3482 | ||
3483 | endmodule | |
3484 | ||
3485 | ||
3486 | // | |
3487 | // xor macro for ports = 2,3 | |
3488 | // | |
3489 | // | |
3490 | ||
3491 | ||
3492 | ||
3493 | ||
3494 | ||
3495 | module fgu_fpy_dp_xor_macro__ports_2__stack_88c__width_63 ( | |
3496 | din0, | |
3497 | din1, | |
3498 | dout); | |
3499 | input [62:0] din0; | |
3500 | input [62:0] din1; | |
3501 | output [62:0] dout; | |
3502 | ||
3503 | ||
3504 | ||
3505 | ||
3506 | ||
3507 | xor2 #(63) d0_0 ( | |
3508 | .in0(din0[62:0]), | |
3509 | .in1(din1[62:0]), | |
3510 | .out(dout[62:0]) | |
3511 | ); | |
3512 | ||
3513 | ||
3514 | ||
3515 | ||
3516 | ||
3517 | ||
3518 | ||
3519 | ||
3520 | endmodule | |
3521 | ||
3522 | ||
3523 | ||
3524 | ||
3525 | ||
3526 | ||
3527 | ||
3528 | ||
3529 | ||
3530 | // any PARAMS parms go into naming of macro | |
3531 | ||
3532 | module fgu_fpy_dp_msff_macro__stack_88c__width_65 ( | |
3533 | din, | |
3534 | clk, | |
3535 | en, | |
3536 | se, | |
3537 | scan_in, | |
3538 | siclk, | |
3539 | soclk, | |
3540 | pce_ov, | |
3541 | stop, | |
3542 | dout, | |
3543 | scan_out); | |
3544 | wire l1clk; | |
3545 | wire siclk_out; | |
3546 | wire soclk_out; | |
3547 | wire [63:0] so; | |
3548 | ||
3549 | input [64:0] din; | |
3550 | ||
3551 | ||
3552 | input clk; | |
3553 | input en; | |
3554 | input se; | |
3555 | input scan_in; | |
3556 | input siclk; | |
3557 | input soclk; | |
3558 | input pce_ov; | |
3559 | input stop; | |
3560 | ||
3561 | ||
3562 | ||
3563 | output [64:0] dout; | |
3564 | ||
3565 | ||
3566 | output scan_out; | |
3567 | ||
3568 | ||
3569 | ||
3570 | ||
3571 | cl_dp1_l1hdr_8x c0_0 ( | |
3572 | .l2clk(clk), | |
3573 | .pce(en), | |
3574 | .aclk(siclk), | |
3575 | .bclk(soclk), | |
3576 | .l1clk(l1clk), | |
3577 | .se(se), | |
3578 | .pce_ov(pce_ov), | |
3579 | .stop(stop), | |
3580 | .siclk_out(siclk_out), | |
3581 | .soclk_out(soclk_out) | |
3582 | ); | |
3583 | dff #(65) d0_0 ( | |
3584 | .l1clk(l1clk), | |
3585 | .siclk(siclk_out), | |
3586 | .soclk(soclk_out), | |
3587 | .d(din[64:0]), | |
3588 | .si({scan_in,so[63:0]}), | |
3589 | .so({so[63:0],scan_out}), | |
3590 | .q(dout[64:0]) | |
3591 | ); | |
3592 | ||
3593 | ||
3594 | ||
3595 | ||
3596 | ||
3597 | ||
3598 | ||
3599 | ||
3600 | ||
3601 | ||
3602 | ||
3603 | ||
3604 | ||
3605 | ||
3606 | ||
3607 | ||
3608 | ||
3609 | ||
3610 | ||
3611 | ||
3612 | endmodule | |
3613 | ||
3614 | ||
3615 | ||
3616 | ||
3617 | ||
3618 | ||
3619 | ||
3620 | ||
3621 | ||
3622 | // | |
3623 | // buff macro | |
3624 | // | |
3625 | // | |
3626 | ||
3627 | ||
3628 | ||
3629 | ||
3630 | ||
3631 | module fgu_fpy_dp_buff_macro__stack_88c__width_65 ( | |
3632 | din, | |
3633 | dout); | |
3634 | input [64:0] din; | |
3635 | output [64:0] dout; | |
3636 | ||
3637 | ||
3638 | ||
3639 | ||
3640 | ||
3641 | ||
3642 | buff #(65) d0_0 ( | |
3643 | .in(din[64:0]), | |
3644 | .out(dout[64:0]) | |
3645 | ); | |
3646 | ||
3647 | ||
3648 | ||
3649 | ||
3650 | ||
3651 | ||
3652 | ||
3653 | ||
3654 | endmodule | |
3655 | ||
3656 | ||
3657 | ||
3658 | ||
3659 | ||
3660 | ||
3661 | ||
3662 | ||
3663 | ||
3664 | // any PARAMS parms go into naming of macro | |
3665 | ||
3666 | module fgu_fpy_dp_msff_macro__stack_88c__width_63 ( | |
3667 | din, | |
3668 | clk, | |
3669 | en, | |
3670 | se, | |
3671 | scan_in, | |
3672 | siclk, | |
3673 | soclk, | |
3674 | pce_ov, | |
3675 | stop, | |
3676 | dout, | |
3677 | scan_out); | |
3678 | wire l1clk; | |
3679 | wire siclk_out; | |
3680 | wire soclk_out; | |
3681 | wire [61:0] so; | |
3682 | ||
3683 | input [62:0] din; | |
3684 | ||
3685 | ||
3686 | input clk; | |
3687 | input en; | |
3688 | input se; | |
3689 | input scan_in; | |
3690 | input siclk; | |
3691 | input soclk; | |
3692 | input pce_ov; | |
3693 | input stop; | |
3694 | ||
3695 | ||
3696 | ||
3697 | output [62:0] dout; | |
3698 | ||
3699 | ||
3700 | output scan_out; | |
3701 | ||
3702 | ||
3703 | ||
3704 | ||
3705 | cl_dp1_l1hdr_8x c0_0 ( | |
3706 | .l2clk(clk), | |
3707 | .pce(en), | |
3708 | .aclk(siclk), | |
3709 | .bclk(soclk), | |
3710 | .l1clk(l1clk), | |
3711 | .se(se), | |
3712 | .pce_ov(pce_ov), | |
3713 | .stop(stop), | |
3714 | .siclk_out(siclk_out), | |
3715 | .soclk_out(soclk_out) | |
3716 | ); | |
3717 | dff #(63) d0_0 ( | |
3718 | .l1clk(l1clk), | |
3719 | .siclk(siclk_out), | |
3720 | .soclk(soclk_out), | |
3721 | .d(din[62:0]), | |
3722 | .si({scan_in,so[61:0]}), | |
3723 | .so({so[61:0],scan_out}), | |
3724 | .q(dout[62:0]) | |
3725 | ); | |
3726 | ||
3727 | ||
3728 | ||
3729 | ||
3730 | ||
3731 | ||
3732 | ||
3733 | ||
3734 | ||
3735 | ||
3736 | ||
3737 | ||
3738 | ||
3739 | ||
3740 | ||
3741 | ||
3742 | ||
3743 | ||
3744 | ||
3745 | ||
3746 | endmodule | |
3747 | ||
3748 | ||
3749 | ||
3750 | ||
3751 | ||
3752 | ||
3753 | ||
3754 | ||
3755 | ||
3756 | // | |
3757 | // buff macro | |
3758 | // | |
3759 | // | |
3760 | ||
3761 | ||
3762 | ||
3763 | ||
3764 | ||
3765 | module fgu_fpy_dp_buff_macro__stack_88c__width_3 ( | |
3766 | din, | |
3767 | dout); | |
3768 | input [2:0] din; | |
3769 | output [2:0] dout; | |
3770 | ||
3771 | ||
3772 | ||
3773 | ||
3774 | ||
3775 | ||
3776 | buff #(3) d0_0 ( | |
3777 | .in(din[2:0]), | |
3778 | .out(dout[2:0]) | |
3779 | ); | |
3780 | ||
3781 | ||
3782 | ||
3783 | ||
3784 | ||
3785 | ||
3786 | ||
3787 | ||
3788 | endmodule | |
3789 | ||
3790 | ||
3791 | ||
3792 | ||
3793 | ||
3794 | ||
3795 | ||
3796 | ||
3797 | ||
3798 | // any PARAMS parms go into naming of macro | |
3799 | ||
3800 | module fgu_fpy_dp_msff_macro__mux_aope__ports_5__stack_88c__width_64 ( | |
3801 | din0, | |
3802 | din1, | |
3803 | din2, | |
3804 | din3, | |
3805 | din4, | |
3806 | sel0, | |
3807 | sel1, | |
3808 | sel2, | |
3809 | sel3, | |
3810 | clk, | |
3811 | en, | |
3812 | se, | |
3813 | scan_in, | |
3814 | siclk, | |
3815 | soclk, | |
3816 | pce_ov, | |
3817 | stop, | |
3818 | dout, | |
3819 | scan_out); | |
3820 | wire psel0; | |
3821 | wire psel1; | |
3822 | wire psel2; | |
3823 | wire psel3; | |
3824 | wire psel4; | |
3825 | wire [63:0] muxout; | |
3826 | wire l1clk; | |
3827 | wire siclk_out; | |
3828 | wire soclk_out; | |
3829 | wire [62:0] so; | |
3830 | ||
3831 | input [63:0] din0; | |
3832 | input [63:0] din1; | |
3833 | input [63:0] din2; | |
3834 | input [63:0] din3; | |
3835 | input [63:0] din4; | |
3836 | input sel0; | |
3837 | input sel1; | |
3838 | input sel2; | |
3839 | input sel3; | |
3840 | ||
3841 | ||
3842 | input clk; | |
3843 | input en; | |
3844 | input se; | |
3845 | input scan_in; | |
3846 | input siclk; | |
3847 | input soclk; | |
3848 | input pce_ov; | |
3849 | input stop; | |
3850 | ||
3851 | ||
3852 | ||
3853 | output [63:0] dout; | |
3854 | ||
3855 | ||
3856 | output scan_out; | |
3857 | ||
3858 | ||
3859 | ||
3860 | ||
3861 | cl_dp1_penc5_8x c1_0 ( | |
3862 | .test(1'b1), | |
3863 | .sel0(sel0), | |
3864 | .sel1(sel1), | |
3865 | .sel2(sel2), | |
3866 | .sel3(sel3), | |
3867 | .psel0(psel0), | |
3868 | .psel1(psel1), | |
3869 | .psel2(psel2), | |
3870 | .psel3(psel3), | |
3871 | .psel4(psel4) | |
3872 | ); | |
3873 | ||
3874 | mux5s #(64) d1_0 ( | |
3875 | .sel0(psel0), | |
3876 | .sel1(psel1), | |
3877 | .sel2(psel2), | |
3878 | .sel3(psel3), | |
3879 | .sel4(psel4), | |
3880 | .in0(din0[63:0]), | |
3881 | .in1(din1[63:0]), | |
3882 | .in2(din2[63:0]), | |
3883 | .in3(din3[63:0]), | |
3884 | .in4(din4[63:0]), | |
3885 | .dout(muxout[63:0]) | |
3886 | ); | |
3887 | cl_dp1_l1hdr_8x c0_0 ( | |
3888 | .l2clk(clk), | |
3889 | .pce(en), | |
3890 | .aclk(siclk), | |
3891 | .bclk(soclk), | |
3892 | .l1clk(l1clk), | |
3893 | .se(se), | |
3894 | .pce_ov(pce_ov), | |
3895 | .stop(stop), | |
3896 | .siclk_out(siclk_out), | |
3897 | .soclk_out(soclk_out) | |
3898 | ); | |
3899 | dff #(64) d0_0 ( | |
3900 | .l1clk(l1clk), | |
3901 | .siclk(siclk_out), | |
3902 | .soclk(soclk_out), | |
3903 | .d(muxout[63:0]), | |
3904 | .si({scan_in,so[62:0]}), | |
3905 | .so({so[62:0],scan_out}), | |
3906 | .q(dout[63:0]) | |
3907 | ); | |
3908 | ||
3909 | ||
3910 | ||
3911 | ||
3912 | ||
3913 | ||
3914 | ||
3915 | ||
3916 | ||
3917 | ||
3918 | ||
3919 | ||
3920 | ||
3921 | ||
3922 | ||
3923 | ||
3924 | ||
3925 | ||
3926 | ||
3927 | ||
3928 | endmodule | |
3929 | ||
3930 | ||
3931 | ||
3932 | ||
3933 | ||
3934 | ||
3935 | ||
3936 | ||
3937 | ||
3938 | // | |
3939 | // buff macro | |
3940 | // | |
3941 | // | |
3942 | ||
3943 | ||
3944 | ||
3945 | ||
3946 | ||
3947 | module fgu_fpy_dp_buff_macro__stack_88c__width_64 ( | |
3948 | din, | |
3949 | dout); | |
3950 | input [63:0] din; | |
3951 | output [63:0] dout; | |
3952 | ||
3953 | ||
3954 | ||
3955 | ||
3956 | ||
3957 | ||
3958 | buff #(64) d0_0 ( | |
3959 | .in(din[63:0]), | |
3960 | .out(dout[63:0]) | |
3961 | ); | |
3962 | ||
3963 | ||
3964 | ||
3965 | ||
3966 | ||
3967 | ||
3968 | ||
3969 | ||
3970 | endmodule | |
3971 | ||
3972 | ||
3973 | ||
3974 | ||
3975 | ||
3976 | // | |
3977 | // invert macro | |
3978 | // | |
3979 | // | |
3980 | ||
3981 | ||
3982 | ||
3983 | ||
3984 | ||
3985 | module fgu_fpy_dp_inv_macro__stack_88c__width_64 ( | |
3986 | din, | |
3987 | dout); | |
3988 | input [63:0] din; | |
3989 | output [63:0] dout; | |
3990 | ||
3991 | ||
3992 | ||
3993 | ||
3994 | ||
3995 | ||
3996 | inv #(64) d0_0 ( | |
3997 | .in(din[63:0]), | |
3998 | .out(dout[63:0]) | |
3999 | ); | |
4000 | ||
4001 | ||
4002 | ||
4003 | ||
4004 | ||
4005 | ||
4006 | ||
4007 | ||
4008 | ||
4009 | endmodule | |
4010 | ||
4011 | ||
4012 | ||
4013 | ||
4014 | ||
4015 | // general mux macro for pass-gate and and-or muxes with/wout priority encoders | |
4016 | // also for pass-gate with decoder | |
4017 | ||
4018 | ||
4019 | ||
4020 | ||
4021 | ||
4022 | // any PARAMS parms go into naming of macro | |
4023 | ||
4024 | module fgu_fpy_dp_mux_macro__mux_aonpe__ports_5__stack_88c__width_65 ( | |
4025 | din0, | |
4026 | sel0, | |
4027 | din1, | |
4028 | sel1, | |
4029 | din2, | |
4030 | sel2, | |
4031 | din3, | |
4032 | sel3, | |
4033 | din4, | |
4034 | sel4, | |
4035 | dout); | |
4036 | wire buffout0; | |
4037 | wire buffout1; | |
4038 | wire buffout2; | |
4039 | wire buffout3; | |
4040 | wire buffout4; | |
4041 | ||
4042 | input [64:0] din0; | |
4043 | input sel0; | |
4044 | input [64:0] din1; | |
4045 | input sel1; | |
4046 | input [64:0] din2; | |
4047 | input sel2; | |
4048 | input [64:0] din3; | |
4049 | input sel3; | |
4050 | input [64:0] din4; | |
4051 | input sel4; | |
4052 | output [64:0] dout; | |
4053 | ||
4054 | ||
4055 | ||
4056 | ||
4057 | ||
4058 | cl_dp1_muxbuff5_8x c0_0 ( | |
4059 | .in0(sel0), | |
4060 | .in1(sel1), | |
4061 | .in2(sel2), | |
4062 | .in3(sel3), | |
4063 | .in4(sel4), | |
4064 | .out0(buffout0), | |
4065 | .out1(buffout1), | |
4066 | .out2(buffout2), | |
4067 | .out3(buffout3), | |
4068 | .out4(buffout4) | |
4069 | ); | |
4070 | mux5s #(65) d0_0 ( | |
4071 | .sel0(buffout0), | |
4072 | .sel1(buffout1), | |
4073 | .sel2(buffout2), | |
4074 | .sel3(buffout3), | |
4075 | .sel4(buffout4), | |
4076 | .in0(din0[64:0]), | |
4077 | .in1(din1[64:0]), | |
4078 | .in2(din2[64:0]), | |
4079 | .in3(din3[64:0]), | |
4080 | .in4(din4[64:0]), | |
4081 | .dout(dout[64:0]) | |
4082 | ); | |
4083 | ||
4084 | ||
4085 | ||
4086 | ||
4087 | ||
4088 | ||
4089 | ||
4090 | ||
4091 | ||
4092 | ||
4093 | ||
4094 | ||
4095 | ||
4096 | endmodule | |
4097 | ||
4098 | ||
4099 | // | |
4100 | // 3:2 Carry Save Adder | |
4101 | // | |
4102 | // | |
4103 | ||
4104 | ||
4105 | ||
4106 | ||
4107 | // any PARAMS parms go into naming of macro | |
4108 | ||
4109 | ||
4110 | module fgu_fpy_dp_csa32_macro__stack_88c__width_69 ( | |
4111 | i0, | |
4112 | i1, | |
4113 | i2, | |
4114 | carry, | |
4115 | sum); | |
4116 | input [68:0] i0; | |
4117 | input [68:0] i1; | |
4118 | input [68:0] i2; | |
4119 | output [68:0] carry; | |
4120 | output [68:0] sum; | |
4121 | ||
4122 | ||
4123 | ||
4124 | ||
4125 | ||
4126 | ||
4127 | csa32 #(69) d0_0 ( | |
4128 | .in0(i0[68:0]), | |
4129 | .in1(i1[68:0]), | |
4130 | .in2(i2[68:0]), | |
4131 | .carry(carry[68:0]), | |
4132 | .sum(sum[68:0]) | |
4133 | ); | |
4134 | ||
4135 | ||
4136 | ||
4137 | ||
4138 | ||
4139 | ||
4140 | ||
4141 | ||
4142 | ||
4143 | endmodule | |
4144 | ||
4145 | ||
4146 | // | |
4147 | // 3:2 Carry Save Adder | |
4148 | // | |
4149 | // | |
4150 | ||
4151 | ||
4152 | ||
4153 | ||
4154 | // any PARAMS parms go into naming of macro | |
4155 | ||
4156 | ||
4157 | module fgu_fpy_dp_csa32_macro__stack_88c__width_73 ( | |
4158 | i0, | |
4159 | i1, | |
4160 | i2, | |
4161 | carry, | |
4162 | sum); | |
4163 | input [72:0] i0; | |
4164 | input [72:0] i1; | |
4165 | input [72:0] i2; | |
4166 | output [72:0] carry; | |
4167 | output [72:0] sum; | |
4168 | ||
4169 | ||
4170 | ||
4171 | ||
4172 | ||
4173 | ||
4174 | csa32 #(73) d0_0 ( | |
4175 | .in0(i0[72:0]), | |
4176 | .in1(i1[72:0]), | |
4177 | .in2(i2[72:0]), | |
4178 | .carry(carry[72:0]), | |
4179 | .sum(sum[72:0]) | |
4180 | ); | |
4181 | ||
4182 | ||
4183 | ||
4184 | ||
4185 | ||
4186 | ||
4187 | ||
4188 | ||
4189 | ||
4190 | endmodule | |
4191 | ||
4192 | ||
4193 | // | |
4194 | // 4:2 Carry Save Adder | |
4195 | // | |
4196 | // | |
4197 | // i0 i1 i2 i3 | co | carry sum | |
4198 | // ------------|----|----------- | |
4199 | // 0 0 0 0 | 0 | 0 cin | |
4200 | // 0 0 0 1 | 0 | cin ~cin | |
4201 | // 0 0 1 0 | 0 | cin ~cin | |
4202 | // 0 0 1 1 | 0 | 1 cin | |
4203 | // | |
4204 | // 0 1 0 0 | 0 | cin ~cin | |
4205 | // 0 1 0 1 | 0 | 1 cin | |
4206 | // 0 1 1 0 | 1 | 0 cin | |
4207 | // 0 1 1 1 | 1 | cin ~cin | |
4208 | // | |
4209 | // 1 0 0 0 | 0 | cin ~cin | |
4210 | // 1 0 0 1 | 0 | 1 cin | |
4211 | // 1 0 1 0 | 1 | 0 cin | |
4212 | // 1 0 1 1 | 1 | cin ~cin | |
4213 | // | |
4214 | // 1 1 0 0 | 1 | 0 cin | |
4215 | // 1 1 0 1 | 1 | cin ~cin | |
4216 | // 1 1 1 0 | 1 | cin ~cin | |
4217 | // 1 1 1 1 | 1 | 1 cin | |
4218 | ||
4219 | ||
4220 | // This circuit looks like a compression of 5 terms down | |
4221 | // to 3 term on an individual bit basis. However, the fast | |
4222 | // output "co" from bit position "n" is actually the late input | |
4223 | // "cin" on bit position "n+1". Once a wrapper is written | |
4224 | // around multiple bits, this circuit will give the | |
4225 | // appearance of compressing 4 inputs down to 2 outputs. | |
4226 | ||
4227 | ||
4228 | ||
4229 | ||
4230 | ||
4231 | // any PARAMS parms go into naming of macro | |
4232 | ||
4233 | ||
4234 | module fgu_fpy_dp_csa42_macro__stack_88c__width_81 ( | |
4235 | i0, | |
4236 | i1, | |
4237 | i2, | |
4238 | i3, | |
4239 | cin, | |
4240 | cout, | |
4241 | carry, | |
4242 | sum); | |
4243 | input [80:0] i0; | |
4244 | input [80:0] i1; | |
4245 | input [80:0] i2; | |
4246 | input [80:0] i3; | |
4247 | input cin; | |
4248 | output cout; | |
4249 | output [80:0] carry; | |
4250 | output [80:0] sum; | |
4251 | ||
4252 | ||
4253 | ||
4254 | ||
4255 | ||
4256 | ||
4257 | csa42 #(81) d0_0 ( | |
4258 | .cin(cin), | |
4259 | .in0(i0[80:0]), | |
4260 | .in1(i1[80:0]), | |
4261 | .in2(i2[80:0]), | |
4262 | .in3(i3[80:0]), | |
4263 | .cout(cout), | |
4264 | .carry(carry[80:0]), | |
4265 | .sum(sum[80:0]) | |
4266 | ); | |
4267 | ||
4268 | ||
4269 | ||
4270 | ||
4271 | ||
4272 | ||
4273 | ||
4274 | ||
4275 | endmodule | |
4276 | ||
4277 | ||
4278 | ||
4279 | ||
4280 | ||
4281 | ||
4282 | ||
4283 | ||
4284 | // any PARAMS parms go into naming of macro | |
4285 | ||
4286 | module fgu_fpy_dp_msff_macro__stack_88c__width_39 ( | |
4287 | din, | |
4288 | clk, | |
4289 | en, | |
4290 | se, | |
4291 | scan_in, | |
4292 | siclk, | |
4293 | soclk, | |
4294 | pce_ov, | |
4295 | stop, | |
4296 | dout, | |
4297 | scan_out); | |
4298 | wire l1clk; | |
4299 | wire siclk_out; | |
4300 | wire soclk_out; | |
4301 | wire [37:0] so; | |
4302 | ||
4303 | input [38:0] din; | |
4304 | ||
4305 | ||
4306 | input clk; | |
4307 | input en; | |
4308 | input se; | |
4309 | input scan_in; | |
4310 | input siclk; | |
4311 | input soclk; | |
4312 | input pce_ov; | |
4313 | input stop; | |
4314 | ||
4315 | ||
4316 | ||
4317 | output [38:0] dout; | |
4318 | ||
4319 | ||
4320 | output scan_out; | |
4321 | ||
4322 | ||
4323 | ||
4324 | ||
4325 | cl_dp1_l1hdr_8x c0_0 ( | |
4326 | .l2clk(clk), | |
4327 | .pce(en), | |
4328 | .aclk(siclk), | |
4329 | .bclk(soclk), | |
4330 | .l1clk(l1clk), | |
4331 | .se(se), | |
4332 | .pce_ov(pce_ov), | |
4333 | .stop(stop), | |
4334 | .siclk_out(siclk_out), | |
4335 | .soclk_out(soclk_out) | |
4336 | ); | |
4337 | dff #(39) d0_0 ( | |
4338 | .l1clk(l1clk), | |
4339 | .siclk(siclk_out), | |
4340 | .soclk(soclk_out), | |
4341 | .d(din[38:0]), | |
4342 | .si({scan_in,so[37:0]}), | |
4343 | .so({so[37:0],scan_out}), | |
4344 | .q(dout[38:0]) | |
4345 | ); | |
4346 | ||
4347 | ||
4348 | ||
4349 | ||
4350 | ||
4351 | ||
4352 | ||
4353 | ||
4354 | ||
4355 | ||
4356 | ||
4357 | ||
4358 | ||
4359 | ||
4360 | ||
4361 | ||
4362 | ||
4363 | ||
4364 | ||
4365 | ||
4366 | endmodule | |
4367 | ||
4368 | ||
4369 | ||
4370 | ||
4371 | ||
4372 | ||
4373 | ||
4374 | ||
4375 | ||
4376 | ||
4377 | ||
4378 | ||
4379 | ||
4380 | // any PARAMS parms go into naming of macro | |
4381 | ||
4382 | module fgu_fpy_dp_msff_macro__stack_88c__width_44 ( | |
4383 | din, | |
4384 | clk, | |
4385 | en, | |
4386 | se, | |
4387 | scan_in, | |
4388 | siclk, | |
4389 | soclk, | |
4390 | pce_ov, | |
4391 | stop, | |
4392 | dout, | |
4393 | scan_out); | |
4394 | wire l1clk; | |
4395 | wire siclk_out; | |
4396 | wire soclk_out; | |
4397 | wire [42:0] so; | |
4398 | ||
4399 | input [43:0] din; | |
4400 | ||
4401 | ||
4402 | input clk; | |
4403 | input en; | |
4404 | input se; | |
4405 | input scan_in; | |
4406 | input siclk; | |
4407 | input soclk; | |
4408 | input pce_ov; | |
4409 | input stop; | |
4410 | ||
4411 | ||
4412 | ||
4413 | output [43:0] dout; | |
4414 | ||
4415 | ||
4416 | output scan_out; | |
4417 | ||
4418 | ||
4419 | ||
4420 | ||
4421 | cl_dp1_l1hdr_8x c0_0 ( | |
4422 | .l2clk(clk), | |
4423 | .pce(en), | |
4424 | .aclk(siclk), | |
4425 | .bclk(soclk), | |
4426 | .l1clk(l1clk), | |
4427 | .se(se), | |
4428 | .pce_ov(pce_ov), | |
4429 | .stop(stop), | |
4430 | .siclk_out(siclk_out), | |
4431 | .soclk_out(soclk_out) | |
4432 | ); | |
4433 | dff #(44) d0_0 ( | |
4434 | .l1clk(l1clk), | |
4435 | .siclk(siclk_out), | |
4436 | .soclk(soclk_out), | |
4437 | .d(din[43:0]), | |
4438 | .si({scan_in,so[42:0]}), | |
4439 | .so({so[42:0],scan_out}), | |
4440 | .q(dout[43:0]) | |
4441 | ); | |
4442 | ||
4443 | ||
4444 | ||
4445 | ||
4446 | ||
4447 | ||
4448 | ||
4449 | ||
4450 | ||
4451 | ||
4452 | ||
4453 | ||
4454 | ||
4455 | ||
4456 | ||
4457 | ||
4458 | ||
4459 | ||
4460 | ||
4461 | ||
4462 | endmodule | |
4463 | ||
4464 | ||
4465 | ||
4466 | ||
4467 | ||
4468 | ||
4469 | ||
4470 | ||
4471 | ||
4472 | ||
4473 | ||
4474 | ||
4475 | ||
4476 | // any PARAMS parms go into naming of macro | |
4477 | ||
4478 | module fgu_fpy_dp_msff_macro__stack_88c__width_37 ( | |
4479 | din, | |
4480 | clk, | |
4481 | en, | |
4482 | se, | |
4483 | scan_in, | |
4484 | siclk, | |
4485 | soclk, | |
4486 | pce_ov, | |
4487 | stop, | |
4488 | dout, | |
4489 | scan_out); | |
4490 | wire l1clk; | |
4491 | wire siclk_out; | |
4492 | wire soclk_out; | |
4493 | wire [35:0] so; | |
4494 | ||
4495 | input [36:0] din; | |
4496 | ||
4497 | ||
4498 | input clk; | |
4499 | input en; | |
4500 | input se; | |
4501 | input scan_in; | |
4502 | input siclk; | |
4503 | input soclk; | |
4504 | input pce_ov; | |
4505 | input stop; | |
4506 | ||
4507 | ||
4508 | ||
4509 | output [36:0] dout; | |
4510 | ||
4511 | ||
4512 | output scan_out; | |
4513 | ||
4514 | ||
4515 | ||
4516 | ||
4517 | cl_dp1_l1hdr_8x c0_0 ( | |
4518 | .l2clk(clk), | |
4519 | .pce(en), | |
4520 | .aclk(siclk), | |
4521 | .bclk(soclk), | |
4522 | .l1clk(l1clk), | |
4523 | .se(se), | |
4524 | .pce_ov(pce_ov), | |
4525 | .stop(stop), | |
4526 | .siclk_out(siclk_out), | |
4527 | .soclk_out(soclk_out) | |
4528 | ); | |
4529 | dff #(37) d0_0 ( | |
4530 | .l1clk(l1clk), | |
4531 | .siclk(siclk_out), | |
4532 | .soclk(soclk_out), | |
4533 | .d(din[36:0]), | |
4534 | .si({scan_in,so[35:0]}), | |
4535 | .so({so[35:0],scan_out}), | |
4536 | .q(dout[36:0]) | |
4537 | ); | |
4538 | ||
4539 | ||
4540 | ||
4541 | ||
4542 | ||
4543 | ||
4544 | ||
4545 | ||
4546 | ||
4547 | ||
4548 | ||
4549 | ||
4550 | ||
4551 | ||
4552 | ||
4553 | ||
4554 | ||
4555 | ||
4556 | ||
4557 | ||
4558 | endmodule | |
4559 | ||
4560 | ||
4561 | ||
4562 | ||
4563 | ||
4564 | ||
4565 | ||
4566 | ||
4567 | ||
4568 | ||
4569 | ||
4570 | ||
4571 | ||
4572 | // any PARAMS parms go into naming of macro | |
4573 | ||
4574 | module fgu_fpy_dp_msff_macro__stack_88c__width_31 ( | |
4575 | din, | |
4576 | clk, | |
4577 | en, | |
4578 | se, | |
4579 | scan_in, | |
4580 | siclk, | |
4581 | soclk, | |
4582 | pce_ov, | |
4583 | stop, | |
4584 | dout, | |
4585 | scan_out); | |
4586 | wire l1clk; | |
4587 | wire siclk_out; | |
4588 | wire soclk_out; | |
4589 | wire [29:0] so; | |
4590 | ||
4591 | input [30:0] din; | |
4592 | ||
4593 | ||
4594 | input clk; | |
4595 | input en; | |
4596 | input se; | |
4597 | input scan_in; | |
4598 | input siclk; | |
4599 | input soclk; | |
4600 | input pce_ov; | |
4601 | input stop; | |
4602 | ||
4603 | ||
4604 | ||
4605 | output [30:0] dout; | |
4606 | ||
4607 | ||
4608 | output scan_out; | |
4609 | ||
4610 | ||
4611 | ||
4612 | ||
4613 | cl_dp1_l1hdr_8x c0_0 ( | |
4614 | .l2clk(clk), | |
4615 | .pce(en), | |
4616 | .aclk(siclk), | |
4617 | .bclk(soclk), | |
4618 | .l1clk(l1clk), | |
4619 | .se(se), | |
4620 | .pce_ov(pce_ov), | |
4621 | .stop(stop), | |
4622 | .siclk_out(siclk_out), | |
4623 | .soclk_out(soclk_out) | |
4624 | ); | |
4625 | dff #(31) d0_0 ( | |
4626 | .l1clk(l1clk), | |
4627 | .siclk(siclk_out), | |
4628 | .soclk(soclk_out), | |
4629 | .d(din[30:0]), | |
4630 | .si({scan_in,so[29:0]}), | |
4631 | .so({so[29:0],scan_out}), | |
4632 | .q(dout[30:0]) | |
4633 | ); | |
4634 | ||
4635 | ||
4636 | ||
4637 | ||
4638 | ||
4639 | ||
4640 | ||
4641 | ||
4642 | ||
4643 | ||
4644 | ||
4645 | ||
4646 | ||
4647 | ||
4648 | ||
4649 | ||
4650 | ||
4651 | ||
4652 | ||
4653 | ||
4654 | endmodule | |
4655 | ||
4656 | ||
4657 | ||
4658 | ||
4659 | ||
4660 | ||
4661 | ||
4662 | ||
4663 | ||
4664 | ||
4665 | ||
4666 | ||
4667 | ||
4668 | // any PARAMS parms go into naming of macro | |
4669 | ||
4670 | module fgu_fpy_dp_msff_macro__stack_88c__width_41 ( | |
4671 | din, | |
4672 | clk, | |
4673 | en, | |
4674 | se, | |
4675 | scan_in, | |
4676 | siclk, | |
4677 | soclk, | |
4678 | pce_ov, | |
4679 | stop, | |
4680 | dout, | |
4681 | scan_out); | |
4682 | wire l1clk; | |
4683 | wire siclk_out; | |
4684 | wire soclk_out; | |
4685 | wire [39:0] so; | |
4686 | ||
4687 | input [40:0] din; | |
4688 | ||
4689 | ||
4690 | input clk; | |
4691 | input en; | |
4692 | input se; | |
4693 | input scan_in; | |
4694 | input siclk; | |
4695 | input soclk; | |
4696 | input pce_ov; | |
4697 | input stop; | |
4698 | ||
4699 | ||
4700 | ||
4701 | output [40:0] dout; | |
4702 | ||
4703 | ||
4704 | output scan_out; | |
4705 | ||
4706 | ||
4707 | ||
4708 | ||
4709 | cl_dp1_l1hdr_8x c0_0 ( | |
4710 | .l2clk(clk), | |
4711 | .pce(en), | |
4712 | .aclk(siclk), | |
4713 | .bclk(soclk), | |
4714 | .l1clk(l1clk), | |
4715 | .se(se), | |
4716 | .pce_ov(pce_ov), | |
4717 | .stop(stop), | |
4718 | .siclk_out(siclk_out), | |
4719 | .soclk_out(soclk_out) | |
4720 | ); | |
4721 | dff #(41) d0_0 ( | |
4722 | .l1clk(l1clk), | |
4723 | .siclk(siclk_out), | |
4724 | .soclk(soclk_out), | |
4725 | .d(din[40:0]), | |
4726 | .si({scan_in,so[39:0]}), | |
4727 | .so({so[39:0],scan_out}), | |
4728 | .q(dout[40:0]) | |
4729 | ); | |
4730 | ||
4731 | ||
4732 | ||
4733 | ||
4734 | ||
4735 | ||
4736 | ||
4737 | ||
4738 | ||
4739 | ||
4740 | ||
4741 | ||
4742 | ||
4743 | ||
4744 | ||
4745 | ||
4746 | ||
4747 | ||
4748 | ||
4749 | ||
4750 | endmodule | |
4751 | ||
4752 | ||
4753 | ||
4754 | ||
4755 | ||
4756 | ||
4757 | ||
4758 | ||
4759 | ||
4760 | ||
4761 | ||
4762 | ||
4763 | ||
4764 | // any PARAMS parms go into naming of macro | |
4765 | ||
4766 | module fgu_fpy_dp_msff_macro__mux_aope__ports_4__stack_88c__width_64 ( | |
4767 | din0, | |
4768 | din1, | |
4769 | din2, | |
4770 | din3, | |
4771 | sel0, | |
4772 | sel1, | |
4773 | sel2, | |
4774 | clk, | |
4775 | en, | |
4776 | se, | |
4777 | scan_in, | |
4778 | siclk, | |
4779 | soclk, | |
4780 | pce_ov, | |
4781 | stop, | |
4782 | dout, | |
4783 | scan_out); | |
4784 | wire psel0; | |
4785 | wire psel1; | |
4786 | wire psel2; | |
4787 | wire psel3; | |
4788 | wire [63:0] muxout; | |
4789 | wire l1clk; | |
4790 | wire siclk_out; | |
4791 | wire soclk_out; | |
4792 | wire [62:0] so; | |
4793 | ||
4794 | input [63:0] din0; | |
4795 | input [63:0] din1; | |
4796 | input [63:0] din2; | |
4797 | input [63:0] din3; | |
4798 | input sel0; | |
4799 | input sel1; | |
4800 | input sel2; | |
4801 | ||
4802 | ||
4803 | input clk; | |
4804 | input en; | |
4805 | input se; | |
4806 | input scan_in; | |
4807 | input siclk; | |
4808 | input soclk; | |
4809 | input pce_ov; | |
4810 | input stop; | |
4811 | ||
4812 | ||
4813 | ||
4814 | output [63:0] dout; | |
4815 | ||
4816 | ||
4817 | output scan_out; | |
4818 | ||
4819 | ||
4820 | ||
4821 | ||
4822 | cl_dp1_penc4_8x c1_0 ( | |
4823 | .test(1'b1), | |
4824 | .sel0(sel0), | |
4825 | .sel1(sel1), | |
4826 | .sel2(sel2), | |
4827 | .psel0(psel0), | |
4828 | .psel1(psel1), | |
4829 | .psel2(psel2), | |
4830 | .psel3(psel3) | |
4831 | ); | |
4832 | ||
4833 | mux4s #(64) d1_0 ( | |
4834 | .sel0(psel0), | |
4835 | .sel1(psel1), | |
4836 | .sel2(psel2), | |
4837 | .sel3(psel3), | |
4838 | .in0(din0[63:0]), | |
4839 | .in1(din1[63:0]), | |
4840 | .in2(din2[63:0]), | |
4841 | .in3(din3[63:0]), | |
4842 | .dout(muxout[63:0]) | |
4843 | ); | |
4844 | cl_dp1_l1hdr_8x c0_0 ( | |
4845 | .l2clk(clk), | |
4846 | .pce(en), | |
4847 | .aclk(siclk), | |
4848 | .bclk(soclk), | |
4849 | .l1clk(l1clk), | |
4850 | .se(se), | |
4851 | .pce_ov(pce_ov), | |
4852 | .stop(stop), | |
4853 | .siclk_out(siclk_out), | |
4854 | .soclk_out(soclk_out) | |
4855 | ); | |
4856 | dff #(64) d0_0 ( | |
4857 | .l1clk(l1clk), | |
4858 | .siclk(siclk_out), | |
4859 | .soclk(soclk_out), | |
4860 | .d(muxout[63:0]), | |
4861 | .si({scan_in,so[62:0]}), | |
4862 | .so({so[62:0],scan_out}), | |
4863 | .q(dout[63:0]) | |
4864 | ); | |
4865 | ||
4866 | ||
4867 | ||
4868 | ||
4869 | ||
4870 | ||
4871 | ||
4872 | ||
4873 | ||
4874 | ||
4875 | ||
4876 | ||
4877 | ||
4878 | ||
4879 | ||
4880 | ||
4881 | ||
4882 | ||
4883 | ||
4884 | ||
4885 | endmodule | |
4886 | ||
4887 | ||
4888 | ||
4889 | ||
4890 | ||
4891 | ||
4892 | ||
4893 | ||
4894 | ||
4895 | // general mux macro for pass-gate and and-or muxes with/wout priority encoders | |
4896 | // also for pass-gate with decoder | |
4897 | ||
4898 | ||
4899 | ||
4900 | ||
4901 | ||
4902 | // any PARAMS parms go into naming of macro | |
4903 | ||
4904 | module fgu_fpy_dp_mux_macro__mux_aope__ports_2__stack_88c__width_64 ( | |
4905 | din0, | |
4906 | din1, | |
4907 | sel0, | |
4908 | dout); | |
4909 | wire psel0; | |
4910 | wire psel1; | |
4911 | ||
4912 | input [63:0] din0; | |
4913 | input [63:0] din1; | |
4914 | input sel0; | |
4915 | output [63:0] dout; | |
4916 | ||
4917 | ||
4918 | ||
4919 | ||
4920 | ||
4921 | cl_dp1_penc2_8x c0_0 ( | |
4922 | .sel0(sel0), | |
4923 | .psel0(psel0), | |
4924 | .psel1(psel1) | |
4925 | ); | |
4926 | ||
4927 | mux2s #(64) d0_0 ( | |
4928 | .sel0(psel0), | |
4929 | .sel1(psel1), | |
4930 | .in0(din0[63:0]), | |
4931 | .in1(din1[63:0]), | |
4932 | .dout(dout[63:0]) | |
4933 | ); | |
4934 | ||
4935 | ||
4936 | ||
4937 | ||
4938 | ||
4939 | ||
4940 | ||
4941 | ||
4942 | ||
4943 | ||
4944 | ||
4945 | ||
4946 | ||
4947 | endmodule | |
4948 | ||
4949 | ||
4950 | // | |
4951 | // 3:2 Carry Save Adder | |
4952 | // | |
4953 | // | |
4954 | ||
4955 | ||
4956 | ||
4957 | ||
4958 | // any PARAMS parms go into naming of macro | |
4959 | ||
4960 | ||
4961 | module fgu_fpy_dp_csa32_macro__stack_88c__width_68 ( | |
4962 | i0, | |
4963 | i1, | |
4964 | i2, | |
4965 | carry, | |
4966 | sum); | |
4967 | input [67:0] i0; | |
4968 | input [67:0] i1; | |
4969 | input [67:0] i2; | |
4970 | output [67:0] carry; | |
4971 | output [67:0] sum; | |
4972 | ||
4973 | ||
4974 | ||
4975 | ||
4976 | ||
4977 | ||
4978 | csa32 #(68) d0_0 ( | |
4979 | .in0(i0[67:0]), | |
4980 | .in1(i1[67:0]), | |
4981 | .in2(i2[67:0]), | |
4982 | .carry(carry[67:0]), | |
4983 | .sum(sum[67:0]) | |
4984 | ); | |
4985 | ||
4986 | ||
4987 | ||
4988 | ||
4989 | ||
4990 | ||
4991 | ||
4992 | ||
4993 | ||
4994 | endmodule | |
4995 | ||
4996 | ||
4997 | // | |
4998 | // 4:2 Carry Save Adder | |
4999 | // | |
5000 | // | |
5001 | // i0 i1 i2 i3 | co | carry sum | |
5002 | // ------------|----|----------- | |
5003 | // 0 0 0 0 | 0 | 0 cin | |
5004 | // 0 0 0 1 | 0 | cin ~cin | |
5005 | // 0 0 1 0 | 0 | cin ~cin | |
5006 | // 0 0 1 1 | 0 | 1 cin | |
5007 | // | |
5008 | // 0 1 0 0 | 0 | cin ~cin | |
5009 | // 0 1 0 1 | 0 | 1 cin | |
5010 | // 0 1 1 0 | 1 | 0 cin | |
5011 | // 0 1 1 1 | 1 | cin ~cin | |
5012 | // | |
5013 | // 1 0 0 0 | 0 | cin ~cin | |
5014 | // 1 0 0 1 | 0 | 1 cin | |
5015 | // 1 0 1 0 | 1 | 0 cin | |
5016 | // 1 0 1 1 | 1 | cin ~cin | |
5017 | // | |
5018 | // 1 1 0 0 | 1 | 0 cin | |
5019 | // 1 1 0 1 | 1 | cin ~cin | |
5020 | // 1 1 1 0 | 1 | cin ~cin | |
5021 | // 1 1 1 1 | 1 | 1 cin | |
5022 | ||
5023 | ||
5024 | // This circuit looks like a compression of 5 terms down | |
5025 | // to 3 term on an individual bit basis. However, the fast | |
5026 | // output "co" from bit position "n" is actually the late input | |
5027 | // "cin" on bit position "n+1". Once a wrapper is written | |
5028 | // around multiple bits, this circuit will give the | |
5029 | // appearance of compressing 4 inputs down to 2 outputs. | |
5030 | ||
5031 | ||
5032 | ||
5033 | ||
5034 | ||
5035 | // any PARAMS parms go into naming of macro | |
5036 | ||
5037 | ||
5038 | module fgu_fpy_dp_csa42_macro__stack_88c__width_74 ( | |
5039 | i0, | |
5040 | i1, | |
5041 | i2, | |
5042 | i3, | |
5043 | cin, | |
5044 | cout, | |
5045 | carry, | |
5046 | sum); | |
5047 | input [73:0] i0; | |
5048 | input [73:0] i1; | |
5049 | input [73:0] i2; | |
5050 | input [73:0] i3; | |
5051 | input cin; | |
5052 | output cout; | |
5053 | output [73:0] carry; | |
5054 | output [73:0] sum; | |
5055 | ||
5056 | ||
5057 | ||
5058 | ||
5059 | ||
5060 | ||
5061 | csa42 #(74) d0_0 ( | |
5062 | .cin(cin), | |
5063 | .in0(i0[73:0]), | |
5064 | .in1(i1[73:0]), | |
5065 | .in2(i2[73:0]), | |
5066 | .in3(i3[73:0]), | |
5067 | .cout(cout), | |
5068 | .carry(carry[73:0]), | |
5069 | .sum(sum[73:0]) | |
5070 | ); | |
5071 | ||
5072 | ||
5073 | ||
5074 | ||
5075 | ||
5076 | ||
5077 | ||
5078 | ||
5079 | endmodule | |
5080 | ||
5081 | ||
5082 | ||
5083 | ||
5084 | ||
5085 | ||
5086 | ||
5087 | ||
5088 | // any PARAMS parms go into naming of macro | |
5089 | ||
5090 | module fgu_fpy_dp_msff_macro__stack_88c__width_40 ( | |
5091 | din, | |
5092 | clk, | |
5093 | en, | |
5094 | se, | |
5095 | scan_in, | |
5096 | siclk, | |
5097 | soclk, | |
5098 | pce_ov, | |
5099 | stop, | |
5100 | dout, | |
5101 | scan_out); | |
5102 | wire l1clk; | |
5103 | wire siclk_out; | |
5104 | wire soclk_out; | |
5105 | wire [38:0] so; | |
5106 | ||
5107 | input [39:0] din; | |
5108 | ||
5109 | ||
5110 | input clk; | |
5111 | input en; | |
5112 | input se; | |
5113 | input scan_in; | |
5114 | input siclk; | |
5115 | input soclk; | |
5116 | input pce_ov; | |
5117 | input stop; | |
5118 | ||
5119 | ||
5120 | ||
5121 | output [39:0] dout; | |
5122 | ||
5123 | ||
5124 | output scan_out; | |
5125 | ||
5126 | ||
5127 | ||
5128 | ||
5129 | cl_dp1_l1hdr_8x c0_0 ( | |
5130 | .l2clk(clk), | |
5131 | .pce(en), | |
5132 | .aclk(siclk), | |
5133 | .bclk(soclk), | |
5134 | .l1clk(l1clk), | |
5135 | .se(se), | |
5136 | .pce_ov(pce_ov), | |
5137 | .stop(stop), | |
5138 | .siclk_out(siclk_out), | |
5139 | .soclk_out(soclk_out) | |
5140 | ); | |
5141 | dff #(40) d0_0 ( | |
5142 | .l1clk(l1clk), | |
5143 | .siclk(siclk_out), | |
5144 | .soclk(soclk_out), | |
5145 | .d(din[39:0]), | |
5146 | .si({scan_in,so[38:0]}), | |
5147 | .so({so[38:0],scan_out}), | |
5148 | .q(dout[39:0]) | |
5149 | ); | |
5150 | ||
5151 | ||
5152 | ||
5153 | ||
5154 | ||
5155 | ||
5156 | ||
5157 | ||
5158 | ||
5159 | ||
5160 | ||
5161 | ||
5162 | ||
5163 | ||
5164 | ||
5165 | ||
5166 | ||
5167 | ||
5168 | ||
5169 | ||
5170 | endmodule | |
5171 | ||
5172 | ||
5173 | ||
5174 | ||
5175 | ||
5176 | ||
5177 | ||
5178 | ||
5179 | ||
5180 | ||
5181 | ||
5182 | ||
5183 | ||
5184 | // any PARAMS parms go into naming of macro | |
5185 | ||
5186 | module fgu_fpy_dp_msff_macro__stack_88c__width_36 ( | |
5187 | din, | |
5188 | clk, | |
5189 | en, | |
5190 | se, | |
5191 | scan_in, | |
5192 | siclk, | |
5193 | soclk, | |
5194 | pce_ov, | |
5195 | stop, | |
5196 | dout, | |
5197 | scan_out); | |
5198 | wire l1clk; | |
5199 | wire siclk_out; | |
5200 | wire soclk_out; | |
5201 | wire [34:0] so; | |
5202 | ||
5203 | input [35:0] din; | |
5204 | ||
5205 | ||
5206 | input clk; | |
5207 | input en; | |
5208 | input se; | |
5209 | input scan_in; | |
5210 | input siclk; | |
5211 | input soclk; | |
5212 | input pce_ov; | |
5213 | input stop; | |
5214 | ||
5215 | ||
5216 | ||
5217 | output [35:0] dout; | |
5218 | ||
5219 | ||
5220 | output scan_out; | |
5221 | ||
5222 | ||
5223 | ||
5224 | ||
5225 | cl_dp1_l1hdr_8x c0_0 ( | |
5226 | .l2clk(clk), | |
5227 | .pce(en), | |
5228 | .aclk(siclk), | |
5229 | .bclk(soclk), | |
5230 | .l1clk(l1clk), | |
5231 | .se(se), | |
5232 | .pce_ov(pce_ov), | |
5233 | .stop(stop), | |
5234 | .siclk_out(siclk_out), | |
5235 | .soclk_out(soclk_out) | |
5236 | ); | |
5237 | dff #(36) d0_0 ( | |
5238 | .l1clk(l1clk), | |
5239 | .siclk(siclk_out), | |
5240 | .soclk(soclk_out), | |
5241 | .d(din[35:0]), | |
5242 | .si({scan_in,so[34:0]}), | |
5243 | .so({so[34:0],scan_out}), | |
5244 | .q(dout[35:0]) | |
5245 | ); | |
5246 | ||
5247 | ||
5248 | ||
5249 | ||
5250 | ||
5251 | ||
5252 | ||
5253 | ||
5254 | ||
5255 | ||
5256 | ||
5257 | ||
5258 | ||
5259 | ||
5260 | ||
5261 | ||
5262 | ||
5263 | ||
5264 | ||
5265 | ||
5266 | endmodule | |
5267 | ||
5268 | ||
5269 | ||
5270 | ||
5271 | ||
5272 | ||
5273 | ||
5274 | ||
5275 | ||
5276 | // | |
5277 | // 3:2 Carry Save Adder | |
5278 | // | |
5279 | // | |
5280 | ||
5281 | ||
5282 | ||
5283 | ||
5284 | // any PARAMS parms go into naming of macro | |
5285 | ||
5286 | ||
5287 | module fgu_fpy_dp_csa32_macro__stack_88c__width_25 ( | |
5288 | i0, | |
5289 | i1, | |
5290 | i2, | |
5291 | carry, | |
5292 | sum); | |
5293 | input [24:0] i0; | |
5294 | input [24:0] i1; | |
5295 | input [24:0] i2; | |
5296 | output [24:0] carry; | |
5297 | output [24:0] sum; | |
5298 | ||
5299 | ||
5300 | ||
5301 | ||
5302 | ||
5303 | ||
5304 | csa32 #(25) d0_0 ( | |
5305 | .in0(i0[24:0]), | |
5306 | .in1(i1[24:0]), | |
5307 | .in2(i2[24:0]), | |
5308 | .carry(carry[24:0]), | |
5309 | .sum(sum[24:0]) | |
5310 | ); | |
5311 | ||
5312 | ||
5313 | ||
5314 | ||
5315 | ||
5316 | ||
5317 | ||
5318 | ||
5319 | ||
5320 | endmodule | |
5321 | ||
5322 | ||
5323 | // | |
5324 | // 4:2 Carry Save Adder | |
5325 | // | |
5326 | // | |
5327 | // i0 i1 i2 i3 | co | carry sum | |
5328 | // ------------|----|----------- | |
5329 | // 0 0 0 0 | 0 | 0 cin | |
5330 | // 0 0 0 1 | 0 | cin ~cin | |
5331 | // 0 0 1 0 | 0 | cin ~cin | |
5332 | // 0 0 1 1 | 0 | 1 cin | |
5333 | // | |
5334 | // 0 1 0 0 | 0 | cin ~cin | |
5335 | // 0 1 0 1 | 0 | 1 cin | |
5336 | // 0 1 1 0 | 1 | 0 cin | |
5337 | // 0 1 1 1 | 1 | cin ~cin | |
5338 | // | |
5339 | // 1 0 0 0 | 0 | cin ~cin | |
5340 | // 1 0 0 1 | 0 | 1 cin | |
5341 | // 1 0 1 0 | 1 | 0 cin | |
5342 | // 1 0 1 1 | 1 | cin ~cin | |
5343 | // | |
5344 | // 1 1 0 0 | 1 | 0 cin | |
5345 | // 1 1 0 1 | 1 | cin ~cin | |
5346 | // 1 1 1 0 | 1 | cin ~cin | |
5347 | // 1 1 1 1 | 1 | 1 cin | |
5348 | ||
5349 | ||
5350 | // This circuit looks like a compression of 5 terms down | |
5351 | // to 3 term on an individual bit basis. However, the fast | |
5352 | // output "co" from bit position "n" is actually the late input | |
5353 | // "cin" on bit position "n+1". Once a wrapper is written | |
5354 | // around multiple bits, this circuit will give the | |
5355 | // appearance of compressing 4 inputs down to 2 outputs. | |
5356 | ||
5357 | ||
5358 | ||
5359 | ||
5360 | ||
5361 | // any PARAMS parms go into naming of macro | |
5362 | ||
5363 | ||
5364 | module fgu_fpy_dp_csa42_macro__stack_88c__width_3 ( | |
5365 | i0, | |
5366 | i1, | |
5367 | i2, | |
5368 | i3, | |
5369 | cin, | |
5370 | cout, | |
5371 | carry, | |
5372 | sum); | |
5373 | input [2:0] i0; | |
5374 | input [2:0] i1; | |
5375 | input [2:0] i2; | |
5376 | input [2:0] i3; | |
5377 | input cin; | |
5378 | output cout; | |
5379 | output [2:0] carry; | |
5380 | output [2:0] sum; | |
5381 | ||
5382 | ||
5383 | ||
5384 | ||
5385 | ||
5386 | ||
5387 | csa42 #(3) d0_0 ( | |
5388 | .cin(cin), | |
5389 | .in0(i0[2:0]), | |
5390 | .in1(i1[2:0]), | |
5391 | .in2(i2[2:0]), | |
5392 | .in3(i3[2:0]), | |
5393 | .cout(cout), | |
5394 | .carry(carry[2:0]), | |
5395 | .sum(sum[2:0]) | |
5396 | ); | |
5397 | ||
5398 | ||
5399 | ||
5400 | ||
5401 | ||
5402 | ||
5403 | ||
5404 | ||
5405 | endmodule | |
5406 | ||
5407 | ||
5408 | ||
5409 | ||
5410 | // | |
5411 | // 4:2 Carry Save Adder | |
5412 | // | |
5413 | // | |
5414 | // i0 i1 i2 i3 | co | carry sum | |
5415 | // ------------|----|----------- | |
5416 | // 0 0 0 0 | 0 | 0 cin | |
5417 | // 0 0 0 1 | 0 | cin ~cin | |
5418 | // 0 0 1 0 | 0 | cin ~cin | |
5419 | // 0 0 1 1 | 0 | 1 cin | |
5420 | // | |
5421 | // 0 1 0 0 | 0 | cin ~cin | |
5422 | // 0 1 0 1 | 0 | 1 cin | |
5423 | // 0 1 1 0 | 1 | 0 cin | |
5424 | // 0 1 1 1 | 1 | cin ~cin | |
5425 | // | |
5426 | // 1 0 0 0 | 0 | cin ~cin | |
5427 | // 1 0 0 1 | 0 | 1 cin | |
5428 | // 1 0 1 0 | 1 | 0 cin | |
5429 | // 1 0 1 1 | 1 | cin ~cin | |
5430 | // | |
5431 | // 1 1 0 0 | 1 | 0 cin | |
5432 | // 1 1 0 1 | 1 | cin ~cin | |
5433 | // 1 1 1 0 | 1 | cin ~cin | |
5434 | // 1 1 1 1 | 1 | 1 cin | |
5435 | ||
5436 | ||
5437 | // This circuit looks like a compression of 5 terms down | |
5438 | // to 3 term on an individual bit basis. However, the fast | |
5439 | // output "co" from bit position "n" is actually the late input | |
5440 | // "cin" on bit position "n+1". Once a wrapper is written | |
5441 | // around multiple bits, this circuit will give the | |
5442 | // appearance of compressing 4 inputs down to 2 outputs. | |
5443 | ||
5444 | ||
5445 | ||
5446 | ||
5447 | ||
5448 | // any PARAMS parms go into naming of macro | |
5449 | ||
5450 | ||
5451 | module fgu_fpy_dp_csa42_macro__stack_96c__width_96 ( | |
5452 | i0, | |
5453 | i1, | |
5454 | i2, | |
5455 | i3, | |
5456 | cin, | |
5457 | cout, | |
5458 | carry, | |
5459 | sum); | |
5460 | input [95:0] i0; | |
5461 | input [95:0] i1; | |
5462 | input [95:0] i2; | |
5463 | input [95:0] i3; | |
5464 | input cin; | |
5465 | output cout; | |
5466 | output [95:0] carry; | |
5467 | output [95:0] sum; | |
5468 | ||
5469 | ||
5470 | ||
5471 | ||
5472 | ||
5473 | ||
5474 | csa42 #(96) d0_0 ( | |
5475 | .cin(cin), | |
5476 | .in0(i0[95:0]), | |
5477 | .in1(i1[95:0]), | |
5478 | .in2(i2[95:0]), | |
5479 | .in3(i3[95:0]), | |
5480 | .cout(cout), | |
5481 | .carry(carry[95:0]), | |
5482 | .sum(sum[95:0]) | |
5483 | ); | |
5484 | ||
5485 | ||
5486 | ||
5487 | ||
5488 | ||
5489 | ||
5490 | ||
5491 | ||
5492 | endmodule | |
5493 | ||
5494 | ||
5495 | ||
5496 | ||
5497 | // | |
5498 | // 4:2 Carry Save Adder | |
5499 | // | |
5500 | // | |
5501 | // i0 i1 i2 i3 | co | carry sum | |
5502 | // ------------|----|----------- | |
5503 | // 0 0 0 0 | 0 | 0 cin | |
5504 | // 0 0 0 1 | 0 | cin ~cin | |
5505 | // 0 0 1 0 | 0 | cin ~cin | |
5506 | // 0 0 1 1 | 0 | 1 cin | |
5507 | // | |
5508 | // 0 1 0 0 | 0 | cin ~cin | |
5509 | // 0 1 0 1 | 0 | 1 cin | |
5510 | // 0 1 1 0 | 1 | 0 cin | |
5511 | // 0 1 1 1 | 1 | cin ~cin | |
5512 | // | |
5513 | // 1 0 0 0 | 0 | cin ~cin | |
5514 | // 1 0 0 1 | 0 | 1 cin | |
5515 | // 1 0 1 0 | 1 | 0 cin | |
5516 | // 1 0 1 1 | 1 | cin ~cin | |
5517 | // | |
5518 | // 1 1 0 0 | 1 | 0 cin | |
5519 | // 1 1 0 1 | 1 | cin ~cin | |
5520 | // 1 1 1 0 | 1 | cin ~cin | |
5521 | // 1 1 1 1 | 1 | 1 cin | |
5522 | ||
5523 | ||
5524 | // This circuit looks like a compression of 5 terms down | |
5525 | // to 3 term on an individual bit basis. However, the fast | |
5526 | // output "co" from bit position "n" is actually the late input | |
5527 | // "cin" on bit position "n+1". Once a wrapper is written | |
5528 | // around multiple bits, this circuit will give the | |
5529 | // appearance of compressing 4 inputs down to 2 outputs. | |
5530 | ||
5531 | ||
5532 | ||
5533 | ||
5534 | ||
5535 | // any PARAMS parms go into naming of macro | |
5536 | ||
5537 | ||
5538 | module fgu_fpy_dp_csa42_macro__stack_96c__width_92 ( | |
5539 | i0, | |
5540 | i1, | |
5541 | i2, | |
5542 | i3, | |
5543 | cin, | |
5544 | cout, | |
5545 | carry, | |
5546 | sum); | |
5547 | input [91:0] i0; | |
5548 | input [91:0] i1; | |
5549 | input [91:0] i2; | |
5550 | input [91:0] i3; | |
5551 | input cin; | |
5552 | output cout; | |
5553 | output [91:0] carry; | |
5554 | output [91:0] sum; | |
5555 | ||
5556 | ||
5557 | ||
5558 | ||
5559 | ||
5560 | ||
5561 | csa42 #(92) d0_0 ( | |
5562 | .cin(cin), | |
5563 | .in0(i0[91:0]), | |
5564 | .in1(i1[91:0]), | |
5565 | .in2(i2[91:0]), | |
5566 | .in3(i3[91:0]), | |
5567 | .cout(cout), | |
5568 | .carry(carry[91:0]), | |
5569 | .sum(sum[91:0]) | |
5570 | ); | |
5571 | ||
5572 | ||
5573 | ||
5574 | ||
5575 | ||
5576 | ||
5577 | ||
5578 | ||
5579 | endmodule | |
5580 | ||
5581 | ||
5582 | ||
5583 | ||
5584 | // | |
5585 | // 4:2 Carry Save Adder | |
5586 | // | |
5587 | // | |
5588 | // i0 i1 i2 i3 | co | carry sum | |
5589 | // ------------|----|----------- | |
5590 | // 0 0 0 0 | 0 | 0 cin | |
5591 | // 0 0 0 1 | 0 | cin ~cin | |
5592 | // 0 0 1 0 | 0 | cin ~cin | |
5593 | // 0 0 1 1 | 0 | 1 cin | |
5594 | // | |
5595 | // 0 1 0 0 | 0 | cin ~cin | |
5596 | // 0 1 0 1 | 0 | 1 cin | |
5597 | // 0 1 1 0 | 1 | 0 cin | |
5598 | // 0 1 1 1 | 1 | cin ~cin | |
5599 | // | |
5600 | // 1 0 0 0 | 0 | cin ~cin | |
5601 | // 1 0 0 1 | 0 | 1 cin | |
5602 | // 1 0 1 0 | 1 | 0 cin | |
5603 | // 1 0 1 1 | 1 | cin ~cin | |
5604 | // | |
5605 | // 1 1 0 0 | 1 | 0 cin | |
5606 | // 1 1 0 1 | 1 | cin ~cin | |
5607 | // 1 1 1 0 | 1 | cin ~cin | |
5608 | // 1 1 1 1 | 1 | 1 cin | |
5609 | ||
5610 | ||
5611 | // This circuit looks like a compression of 5 terms down | |
5612 | // to 3 term on an individual bit basis. However, the fast | |
5613 | // output "co" from bit position "n" is actually the late input | |
5614 | // "cin" on bit position "n+1". Once a wrapper is written | |
5615 | // around multiple bits, this circuit will give the | |
5616 | // appearance of compressing 4 inputs down to 2 outputs. | |
5617 | ||
5618 | ||
5619 | ||
5620 | ||
5621 | ||
5622 | // any PARAMS parms go into naming of macro | |
5623 | ||
5624 | ||
5625 | module fgu_fpy_dp_csa42_macro__stack_88c__width_32 ( | |
5626 | i0, | |
5627 | i1, | |
5628 | i2, | |
5629 | i3, | |
5630 | cin, | |
5631 | cout, | |
5632 | carry, | |
5633 | sum); | |
5634 | input [31:0] i0; | |
5635 | input [31:0] i1; | |
5636 | input [31:0] i2; | |
5637 | input [31:0] i3; | |
5638 | input cin; | |
5639 | output cout; | |
5640 | output [31:0] carry; | |
5641 | output [31:0] sum; | |
5642 | ||
5643 | ||
5644 | ||
5645 | ||
5646 | ||
5647 | ||
5648 | csa42 #(32) d0_0 ( | |
5649 | .cin(cin), | |
5650 | .in0(i0[31:0]), | |
5651 | .in1(i1[31:0]), | |
5652 | .in2(i2[31:0]), | |
5653 | .in3(i3[31:0]), | |
5654 | .cout(cout), | |
5655 | .carry(carry[31:0]), | |
5656 | .sum(sum[31:0]) | |
5657 | ); | |
5658 | ||
5659 | ||
5660 | ||
5661 | ||
5662 | ||
5663 | ||
5664 | ||
5665 | ||
5666 | endmodule | |
5667 | ||
5668 | ||
5669 | ||
5670 | ||
5671 | ||
5672 | ||
5673 | ||
5674 | ||
5675 | // any PARAMS parms go into naming of macro | |
5676 | ||
5677 | module fgu_fpy_dp_msff_macro__mux_aope__ports_5__stack_88c__width_72 ( | |
5678 | din0, | |
5679 | din1, | |
5680 | din2, | |
5681 | din3, | |
5682 | din4, | |
5683 | sel0, | |
5684 | sel1, | |
5685 | sel2, | |
5686 | sel3, | |
5687 | clk, | |
5688 | en, | |
5689 | se, | |
5690 | scan_in, | |
5691 | siclk, | |
5692 | soclk, | |
5693 | pce_ov, | |
5694 | stop, | |
5695 | dout, | |
5696 | scan_out); | |
5697 | wire psel0; | |
5698 | wire psel1; | |
5699 | wire psel2; | |
5700 | wire psel3; | |
5701 | wire psel4; | |
5702 | wire [71:0] muxout; | |
5703 | wire l1clk; | |
5704 | wire siclk_out; | |
5705 | wire soclk_out; | |
5706 | wire [70:0] so; | |
5707 | ||
5708 | input [71:0] din0; | |
5709 | input [71:0] din1; | |
5710 | input [71:0] din2; | |
5711 | input [71:0] din3; | |
5712 | input [71:0] din4; | |
5713 | input sel0; | |
5714 | input sel1; | |
5715 | input sel2; | |
5716 | input sel3; | |
5717 | ||
5718 | ||
5719 | input clk; | |
5720 | input en; | |
5721 | input se; | |
5722 | input scan_in; | |
5723 | input siclk; | |
5724 | input soclk; | |
5725 | input pce_ov; | |
5726 | input stop; | |
5727 | ||
5728 | ||
5729 | ||
5730 | output [71:0] dout; | |
5731 | ||
5732 | ||
5733 | output scan_out; | |
5734 | ||
5735 | ||
5736 | ||
5737 | ||
5738 | cl_dp1_penc5_8x c1_0 ( | |
5739 | .test(1'b1), | |
5740 | .sel0(sel0), | |
5741 | .sel1(sel1), | |
5742 | .sel2(sel2), | |
5743 | .sel3(sel3), | |
5744 | .psel0(psel0), | |
5745 | .psel1(psel1), | |
5746 | .psel2(psel2), | |
5747 | .psel3(psel3), | |
5748 | .psel4(psel4) | |
5749 | ); | |
5750 | ||
5751 | mux5s #(72) d1_0 ( | |
5752 | .sel0(psel0), | |
5753 | .sel1(psel1), | |
5754 | .sel2(psel2), | |
5755 | .sel3(psel3), | |
5756 | .sel4(psel4), | |
5757 | .in0(din0[71:0]), | |
5758 | .in1(din1[71:0]), | |
5759 | .in2(din2[71:0]), | |
5760 | .in3(din3[71:0]), | |
5761 | .in4(din4[71:0]), | |
5762 | .dout(muxout[71:0]) | |
5763 | ); | |
5764 | cl_dp1_l1hdr_8x c0_0 ( | |
5765 | .l2clk(clk), | |
5766 | .pce(en), | |
5767 | .aclk(siclk), | |
5768 | .bclk(soclk), | |
5769 | .l1clk(l1clk), | |
5770 | .se(se), | |
5771 | .pce_ov(pce_ov), | |
5772 | .stop(stop), | |
5773 | .siclk_out(siclk_out), | |
5774 | .soclk_out(soclk_out) | |
5775 | ); | |
5776 | dff #(72) d0_0 ( | |
5777 | .l1clk(l1clk), | |
5778 | .siclk(siclk_out), | |
5779 | .soclk(soclk_out), | |
5780 | .d(muxout[71:0]), | |
5781 | .si({scan_in,so[70:0]}), | |
5782 | .so({so[70:0],scan_out}), | |
5783 | .q(dout[71:0]) | |
5784 | ); | |
5785 | ||
5786 | ||
5787 | ||
5788 | ||
5789 | ||
5790 | ||
5791 | ||
5792 | ||
5793 | ||
5794 | ||
5795 | ||
5796 | ||
5797 | ||
5798 | ||
5799 | ||
5800 | ||
5801 | ||
5802 | ||
5803 | ||
5804 | ||
5805 | endmodule | |
5806 | ||
5807 | ||
5808 | ||
5809 | ||
5810 | ||
5811 | ||
5812 | ||
5813 | ||
5814 | ||
5815 | ||
5816 | ||
5817 | ||
5818 | ||
5819 | // any PARAMS parms go into naming of macro | |
5820 | ||
5821 | module fgu_fpy_dp_msff_macro__mux_aonpe__ports_3__stack_88c__width_62 ( | |
5822 | din0, | |
5823 | sel0, | |
5824 | din1, | |
5825 | sel1, | |
5826 | din2, | |
5827 | sel2, | |
5828 | clk, | |
5829 | en, | |
5830 | se, | |
5831 | scan_in, | |
5832 | siclk, | |
5833 | soclk, | |
5834 | pce_ov, | |
5835 | stop, | |
5836 | dout, | |
5837 | scan_out); | |
5838 | wire buffout0; | |
5839 | wire buffout1; | |
5840 | wire buffout2; | |
5841 | wire [61:0] muxout; | |
5842 | wire l1clk; | |
5843 | wire siclk_out; | |
5844 | wire soclk_out; | |
5845 | wire [60:0] so; | |
5846 | ||
5847 | input [61:0] din0; | |
5848 | input sel0; | |
5849 | input [61:0] din1; | |
5850 | input sel1; | |
5851 | input [61:0] din2; | |
5852 | input sel2; | |
5853 | ||
5854 | ||
5855 | input clk; | |
5856 | input en; | |
5857 | input se; | |
5858 | input scan_in; | |
5859 | input siclk; | |
5860 | input soclk; | |
5861 | input pce_ov; | |
5862 | input stop; | |
5863 | ||
5864 | ||
5865 | ||
5866 | output [61:0] dout; | |
5867 | ||
5868 | ||
5869 | output scan_out; | |
5870 | ||
5871 | ||
5872 | ||
5873 | ||
5874 | cl_dp1_muxbuff3_8x c1_0 ( | |
5875 | .in0(sel0), | |
5876 | .in1(sel1), | |
5877 | .in2(sel2), | |
5878 | .out0(buffout0), | |
5879 | .out1(buffout1), | |
5880 | .out2(buffout2) | |
5881 | ); | |
5882 | mux3s #(62) d1_0 ( | |
5883 | .sel0(buffout0), | |
5884 | .sel1(buffout1), | |
5885 | .sel2(buffout2), | |
5886 | .in0(din0[61:0]), | |
5887 | .in1(din1[61:0]), | |
5888 | .in2(din2[61:0]), | |
5889 | .dout(muxout[61:0]) | |
5890 | ); | |
5891 | cl_dp1_l1hdr_8x c0_0 ( | |
5892 | .l2clk(clk), | |
5893 | .pce(en), | |
5894 | .aclk(siclk), | |
5895 | .bclk(soclk), | |
5896 | .l1clk(l1clk), | |
5897 | .se(se), | |
5898 | .pce_ov(pce_ov), | |
5899 | .stop(stop), | |
5900 | .siclk_out(siclk_out), | |
5901 | .soclk_out(soclk_out) | |
5902 | ); | |
5903 | dff #(62) d0_0 ( | |
5904 | .l1clk(l1clk), | |
5905 | .siclk(siclk_out), | |
5906 | .soclk(soclk_out), | |
5907 | .d(muxout[61:0]), | |
5908 | .si({scan_in,so[60:0]}), | |
5909 | .so({so[60:0],scan_out}), | |
5910 | .q(dout[61:0]) | |
5911 | ); | |
5912 | ||
5913 | ||
5914 | ||
5915 | ||
5916 | ||
5917 | ||
5918 | ||
5919 | ||
5920 | ||
5921 | ||
5922 | ||
5923 | ||
5924 | ||
5925 | ||
5926 | ||
5927 | ||
5928 | ||
5929 | ||
5930 | ||
5931 | ||
5932 | endmodule | |
5933 | ||
5934 | ||
5935 | ||
5936 | ||
5937 | ||
5938 | ||
5939 | ||
5940 | ||
5941 | ||
5942 | ||
5943 | ||
5944 | ||
5945 | ||
5946 | // any PARAMS parms go into naming of macro | |
5947 | ||
5948 | module fgu_fpy_dp_msff_macro__mux_aonpe__ports_3__stack_88c__width_69 ( | |
5949 | din0, | |
5950 | sel0, | |
5951 | din1, | |
5952 | sel1, | |
5953 | din2, | |
5954 | sel2, | |
5955 | clk, | |
5956 | en, | |
5957 | se, | |
5958 | scan_in, | |
5959 | siclk, | |
5960 | soclk, | |
5961 | pce_ov, | |
5962 | stop, | |
5963 | dout, | |
5964 | scan_out); | |
5965 | wire buffout0; | |
5966 | wire buffout1; | |
5967 | wire buffout2; | |
5968 | wire [68:0] muxout; | |
5969 | wire l1clk; | |
5970 | wire siclk_out; | |
5971 | wire soclk_out; | |
5972 | wire [67:0] so; | |
5973 | ||
5974 | input [68:0] din0; | |
5975 | input sel0; | |
5976 | input [68:0] din1; | |
5977 | input sel1; | |
5978 | input [68:0] din2; | |
5979 | input sel2; | |
5980 | ||
5981 | ||
5982 | input clk; | |
5983 | input en; | |
5984 | input se; | |
5985 | input scan_in; | |
5986 | input siclk; | |
5987 | input soclk; | |
5988 | input pce_ov; | |
5989 | input stop; | |
5990 | ||
5991 | ||
5992 | ||
5993 | output [68:0] dout; | |
5994 | ||
5995 | ||
5996 | output scan_out; | |
5997 | ||
5998 | ||
5999 | ||
6000 | ||
6001 | cl_dp1_muxbuff3_8x c1_0 ( | |
6002 | .in0(sel0), | |
6003 | .in1(sel1), | |
6004 | .in2(sel2), | |
6005 | .out0(buffout0), | |
6006 | .out1(buffout1), | |
6007 | .out2(buffout2) | |
6008 | ); | |
6009 | mux3s #(69) d1_0 ( | |
6010 | .sel0(buffout0), | |
6011 | .sel1(buffout1), | |
6012 | .sel2(buffout2), | |
6013 | .in0(din0[68:0]), | |
6014 | .in1(din1[68:0]), | |
6015 | .in2(din2[68:0]), | |
6016 | .dout(muxout[68:0]) | |
6017 | ); | |
6018 | cl_dp1_l1hdr_8x c0_0 ( | |
6019 | .l2clk(clk), | |
6020 | .pce(en), | |
6021 | .aclk(siclk), | |
6022 | .bclk(soclk), | |
6023 | .l1clk(l1clk), | |
6024 | .se(se), | |
6025 | .pce_ov(pce_ov), | |
6026 | .stop(stop), | |
6027 | .siclk_out(siclk_out), | |
6028 | .soclk_out(soclk_out) | |
6029 | ); | |
6030 | dff #(69) d0_0 ( | |
6031 | .l1clk(l1clk), | |
6032 | .siclk(siclk_out), | |
6033 | .soclk(soclk_out), | |
6034 | .d(muxout[68:0]), | |
6035 | .si({scan_in,so[67:0]}), | |
6036 | .so({so[67:0],scan_out}), | |
6037 | .q(dout[68:0]) | |
6038 | ); | |
6039 | ||
6040 | ||
6041 | ||
6042 | ||
6043 | ||
6044 | ||
6045 | ||
6046 | ||
6047 | ||
6048 | ||
6049 | ||
6050 | ||
6051 | ||
6052 | ||
6053 | ||
6054 | ||
6055 | ||
6056 | ||
6057 | ||
6058 | ||
6059 | endmodule | |
6060 | ||
6061 | ||
6062 | ||
6063 | ||
6064 | ||
6065 | ||
6066 | ||
6067 | ||
6068 | ||
6069 | // | |
6070 | // xor macro for ports = 2,3 | |
6071 | // | |
6072 | // | |
6073 | ||
6074 | ||
6075 | ||
6076 | ||
6077 | ||
6078 | module fgu_fpy_dp_xor_macro__ports_2__stack_88c__width_64 ( | |
6079 | din0, | |
6080 | din1, | |
6081 | dout); | |
6082 | input [63:0] din0; | |
6083 | input [63:0] din1; | |
6084 | output [63:0] dout; | |
6085 | ||
6086 | ||
6087 | ||
6088 | ||
6089 | ||
6090 | xor2 #(64) d0_0 ( | |
6091 | .in0(din0[63:0]), | |
6092 | .in1(din1[63:0]), | |
6093 | .out(dout[63:0]) | |
6094 | ); | |
6095 | ||
6096 | ||
6097 | ||
6098 | ||
6099 | ||
6100 | ||
6101 | ||
6102 | ||
6103 | endmodule | |
6104 | ||
6105 | ||
6106 | ||
6107 | ||
6108 | ||
6109 | ||
6110 | ||
6111 | ||
6112 | ||
6113 | // any PARAMS parms go into naming of macro | |
6114 | ||
6115 | module fgu_fpy_dp_msff_macro__mux_aope__ports_6__stack_88c__width_72 ( | |
6116 | din0, | |
6117 | din1, | |
6118 | din2, | |
6119 | din3, | |
6120 | din4, | |
6121 | din5, | |
6122 | sel0, | |
6123 | sel1, | |
6124 | sel2, | |
6125 | sel3, | |
6126 | sel4, | |
6127 | clk, | |
6128 | en, | |
6129 | se, | |
6130 | scan_in, | |
6131 | siclk, | |
6132 | soclk, | |
6133 | pce_ov, | |
6134 | stop, | |
6135 | dout, | |
6136 | scan_out); | |
6137 | wire psel0; | |
6138 | wire psel1; | |
6139 | wire psel2; | |
6140 | wire psel3; | |
6141 | wire psel4; | |
6142 | wire psel5; | |
6143 | wire [71:0] muxout; | |
6144 | wire l1clk; | |
6145 | wire siclk_out; | |
6146 | wire soclk_out; | |
6147 | wire [70:0] so; | |
6148 | ||
6149 | input [71:0] din0; | |
6150 | input [71:0] din1; | |
6151 | input [71:0] din2; | |
6152 | input [71:0] din3; | |
6153 | input [71:0] din4; | |
6154 | input [71:0] din5; | |
6155 | input sel0; | |
6156 | input sel1; | |
6157 | input sel2; | |
6158 | input sel3; | |
6159 | input sel4; | |
6160 | ||
6161 | ||
6162 | input clk; | |
6163 | input en; | |
6164 | input se; | |
6165 | input scan_in; | |
6166 | input siclk; | |
6167 | input soclk; | |
6168 | input pce_ov; | |
6169 | input stop; | |
6170 | ||
6171 | ||
6172 | ||
6173 | output [71:0] dout; | |
6174 | ||
6175 | ||
6176 | output scan_out; | |
6177 | ||
6178 | ||
6179 | ||
6180 | ||
6181 | cl_dp1_penc6_8x c1_0 ( | |
6182 | .test(1'b1), | |
6183 | .sel0(sel0), | |
6184 | .sel1(sel1), | |
6185 | .sel2(sel2), | |
6186 | .sel3(sel3), | |
6187 | .sel4(sel4), | |
6188 | .psel0(psel0), | |
6189 | .psel1(psel1), | |
6190 | .psel2(psel2), | |
6191 | .psel3(psel3), | |
6192 | .psel4(psel4), | |
6193 | .psel5(psel5) | |
6194 | ); | |
6195 | ||
6196 | mux6s #(72) d1_0 ( | |
6197 | .sel0(psel0), | |
6198 | .sel1(psel1), | |
6199 | .sel2(psel2), | |
6200 | .sel3(psel3), | |
6201 | .sel4(psel4), | |
6202 | .sel5(psel5), | |
6203 | .in0(din0[71:0]), | |
6204 | .in1(din1[71:0]), | |
6205 | .in2(din2[71:0]), | |
6206 | .in3(din3[71:0]), | |
6207 | .in4(din4[71:0]), | |
6208 | .in5(din5[71:0]), | |
6209 | .dout(muxout[71:0]) | |
6210 | ); | |
6211 | cl_dp1_l1hdr_8x c0_0 ( | |
6212 | .l2clk(clk), | |
6213 | .pce(en), | |
6214 | .aclk(siclk), | |
6215 | .bclk(soclk), | |
6216 | .l1clk(l1clk), | |
6217 | .se(se), | |
6218 | .pce_ov(pce_ov), | |
6219 | .stop(stop), | |
6220 | .siclk_out(siclk_out), | |
6221 | .soclk_out(soclk_out) | |
6222 | ); | |
6223 | dff #(72) d0_0 ( | |
6224 | .l1clk(l1clk), | |
6225 | .siclk(siclk_out), | |
6226 | .soclk(soclk_out), | |
6227 | .d(muxout[71:0]), | |
6228 | .si({scan_in,so[70:0]}), | |
6229 | .so({so[70:0],scan_out}), | |
6230 | .q(dout[71:0]) | |
6231 | ); | |
6232 | ||
6233 | ||
6234 | ||
6235 | ||
6236 | ||
6237 | ||
6238 | ||
6239 | ||
6240 | ||
6241 | ||
6242 | ||
6243 | ||
6244 | ||
6245 | ||
6246 | ||
6247 | ||
6248 | ||
6249 | ||
6250 | ||
6251 | ||
6252 | endmodule | |
6253 | ||
6254 | ||
6255 | ||
6256 | ||
6257 | ||
6258 | ||
6259 | ||
6260 | ||
6261 | ||
6262 | ||
6263 | ||
6264 | ||
6265 | ||
6266 | // any PARAMS parms go into naming of macro | |
6267 | ||
6268 | module fgu_fpy_dp_msff_macro__mux_aope__ports_6__stack_88c__width_64 ( | |
6269 | din0, | |
6270 | din1, | |
6271 | din2, | |
6272 | din3, | |
6273 | din4, | |
6274 | din5, | |
6275 | sel0, | |
6276 | sel1, | |
6277 | sel2, | |
6278 | sel3, | |
6279 | sel4, | |
6280 | clk, | |
6281 | en, | |
6282 | se, | |
6283 | scan_in, | |
6284 | siclk, | |
6285 | soclk, | |
6286 | pce_ov, | |
6287 | stop, | |
6288 | dout, | |
6289 | scan_out); | |
6290 | wire psel0; | |
6291 | wire psel1; | |
6292 | wire psel2; | |
6293 | wire psel3; | |
6294 | wire psel4; | |
6295 | wire psel5; | |
6296 | wire [63:0] muxout; | |
6297 | wire l1clk; | |
6298 | wire siclk_out; | |
6299 | wire soclk_out; | |
6300 | wire [62:0] so; | |
6301 | ||
6302 | input [63:0] din0; | |
6303 | input [63:0] din1; | |
6304 | input [63:0] din2; | |
6305 | input [63:0] din3; | |
6306 | input [63:0] din4; | |
6307 | input [63:0] din5; | |
6308 | input sel0; | |
6309 | input sel1; | |
6310 | input sel2; | |
6311 | input sel3; | |
6312 | input sel4; | |
6313 | ||
6314 | ||
6315 | input clk; | |
6316 | input en; | |
6317 | input se; | |
6318 | input scan_in; | |
6319 | input siclk; | |
6320 | input soclk; | |
6321 | input pce_ov; | |
6322 | input stop; | |
6323 | ||
6324 | ||
6325 | ||
6326 | output [63:0] dout; | |
6327 | ||
6328 | ||
6329 | output scan_out; | |
6330 | ||
6331 | ||
6332 | ||
6333 | ||
6334 | cl_dp1_penc6_8x c1_0 ( | |
6335 | .test(1'b1), | |
6336 | .sel0(sel0), | |
6337 | .sel1(sel1), | |
6338 | .sel2(sel2), | |
6339 | .sel3(sel3), | |
6340 | .sel4(sel4), | |
6341 | .psel0(psel0), | |
6342 | .psel1(psel1), | |
6343 | .psel2(psel2), | |
6344 | .psel3(psel3), | |
6345 | .psel4(psel4), | |
6346 | .psel5(psel5) | |
6347 | ); | |
6348 | ||
6349 | mux6s #(64) d1_0 ( | |
6350 | .sel0(psel0), | |
6351 | .sel1(psel1), | |
6352 | .sel2(psel2), | |
6353 | .sel3(psel3), | |
6354 | .sel4(psel4), | |
6355 | .sel5(psel5), | |
6356 | .in0(din0[63:0]), | |
6357 | .in1(din1[63:0]), | |
6358 | .in2(din2[63:0]), | |
6359 | .in3(din3[63:0]), | |
6360 | .in4(din4[63:0]), | |
6361 | .in5(din5[63:0]), | |
6362 | .dout(muxout[63:0]) | |
6363 | ); | |
6364 | cl_dp1_l1hdr_8x c0_0 ( | |
6365 | .l2clk(clk), | |
6366 | .pce(en), | |
6367 | .aclk(siclk), | |
6368 | .bclk(soclk), | |
6369 | .l1clk(l1clk), | |
6370 | .se(se), | |
6371 | .pce_ov(pce_ov), | |
6372 | .stop(stop), | |
6373 | .siclk_out(siclk_out), | |
6374 | .soclk_out(soclk_out) | |
6375 | ); | |
6376 | dff #(64) d0_0 ( | |
6377 | .l1clk(l1clk), | |
6378 | .siclk(siclk_out), | |
6379 | .soclk(soclk_out), | |
6380 | .d(muxout[63:0]), | |
6381 | .si({scan_in,so[62:0]}), | |
6382 | .so({so[62:0],scan_out}), | |
6383 | .q(dout[63:0]) | |
6384 | ); | |
6385 | ||
6386 | ||
6387 | ||
6388 | ||
6389 | ||
6390 | ||
6391 | ||
6392 | ||
6393 | ||
6394 | ||
6395 | ||
6396 | ||
6397 | ||
6398 | ||
6399 | ||
6400 | ||
6401 | ||
6402 | ||
6403 | ||
6404 | ||
6405 | endmodule | |
6406 | ||
6407 | ||
6408 | ||
6409 | ||
6410 | ||
6411 | ||
6412 | ||
6413 | ||
6414 | ||
6415 | ||
6416 | ||
6417 | ||
6418 | ||
6419 | // any PARAMS parms go into naming of macro | |
6420 | ||
6421 | module fgu_fpy_dp_msff_macro__stack_88c__width_4 ( | |
6422 | din, | |
6423 | clk, | |
6424 | en, | |
6425 | se, | |
6426 | scan_in, | |
6427 | siclk, | |
6428 | soclk, | |
6429 | pce_ov, | |
6430 | stop, | |
6431 | dout, | |
6432 | scan_out); | |
6433 | wire l1clk; | |
6434 | wire siclk_out; | |
6435 | wire soclk_out; | |
6436 | wire [2:0] so; | |
6437 | ||
6438 | input [3:0] din; | |
6439 | ||
6440 | ||
6441 | input clk; | |
6442 | input en; | |
6443 | input se; | |
6444 | input scan_in; | |
6445 | input siclk; | |
6446 | input soclk; | |
6447 | input pce_ov; | |
6448 | input stop; | |
6449 | ||
6450 | ||
6451 | ||
6452 | output [3:0] dout; | |
6453 | ||
6454 | ||
6455 | output scan_out; | |
6456 | ||
6457 | ||
6458 | ||
6459 | ||
6460 | cl_dp1_l1hdr_8x c0_0 ( | |
6461 | .l2clk(clk), | |
6462 | .pce(en), | |
6463 | .aclk(siclk), | |
6464 | .bclk(soclk), | |
6465 | .l1clk(l1clk), | |
6466 | .se(se), | |
6467 | .pce_ov(pce_ov), | |
6468 | .stop(stop), | |
6469 | .siclk_out(siclk_out), | |
6470 | .soclk_out(soclk_out) | |
6471 | ); | |
6472 | dff #(4) d0_0 ( | |
6473 | .l1clk(l1clk), | |
6474 | .siclk(siclk_out), | |
6475 | .soclk(soclk_out), | |
6476 | .d(din[3:0]), | |
6477 | .si({scan_in,so[2:0]}), | |
6478 | .so({so[2:0],scan_out}), | |
6479 | .q(dout[3:0]) | |
6480 | ); | |
6481 | ||
6482 | ||
6483 | ||
6484 | ||
6485 | ||
6486 | ||
6487 | ||
6488 | ||
6489 | ||
6490 | ||
6491 | ||
6492 | ||
6493 | ||
6494 | ||
6495 | ||
6496 | ||
6497 | ||
6498 | ||
6499 | ||
6500 | ||
6501 | endmodule | |
6502 | ||
6503 | ||
6504 | ||
6505 | ||
6506 | ||
6507 | ||
6508 | ||
6509 | ||
6510 | ||
6511 | // | |
6512 | // buff macro | |
6513 | // | |
6514 | // | |
6515 | ||
6516 | ||
6517 | ||
6518 | ||
6519 | ||
6520 | module fgu_fpy_dp_buff_macro__stack_88c__width_1 ( | |
6521 | din, | |
6522 | dout); | |
6523 | input [0:0] din; | |
6524 | output [0:0] dout; | |
6525 | ||
6526 | ||
6527 | ||
6528 | ||
6529 | ||
6530 | ||
6531 | buff #(1) d0_0 ( | |
6532 | .in(din[0:0]), | |
6533 | .out(dout[0:0]) | |
6534 | ); | |
6535 | ||
6536 | ||
6537 | ||
6538 | ||
6539 | ||
6540 | ||
6541 | ||
6542 | ||
6543 | endmodule | |
6544 | ||
6545 | ||
6546 | ||
6547 | ||
6548 | ||
6549 | ||
6550 | ||
6551 | ||
6552 | ||
6553 | // any PARAMS parms go into naming of macro | |
6554 | ||
6555 | module fgu_fpy_dp_msff_macro__mux_aope__ports_7__stack_88c__width_68 ( | |
6556 | din0, | |
6557 | din1, | |
6558 | din2, | |
6559 | din3, | |
6560 | din4, | |
6561 | din5, | |
6562 | din6, | |
6563 | sel0, | |
6564 | sel1, | |
6565 | sel2, | |
6566 | sel3, | |
6567 | sel4, | |
6568 | sel5, | |
6569 | clk, | |
6570 | en, | |
6571 | se, | |
6572 | scan_in, | |
6573 | siclk, | |
6574 | soclk, | |
6575 | pce_ov, | |
6576 | stop, | |
6577 | dout, | |
6578 | scan_out); | |
6579 | wire psel0; | |
6580 | wire psel1; | |
6581 | wire psel2; | |
6582 | wire psel3; | |
6583 | wire psel4; | |
6584 | wire psel5; | |
6585 | wire psel6; | |
6586 | wire [67:0] muxout; | |
6587 | wire l1clk; | |
6588 | wire siclk_out; | |
6589 | wire soclk_out; | |
6590 | wire [66:0] so; | |
6591 | ||
6592 | input [67:0] din0; | |
6593 | input [67:0] din1; | |
6594 | input [67:0] din2; | |
6595 | input [67:0] din3; | |
6596 | input [67:0] din4; | |
6597 | input [67:0] din5; | |
6598 | input [67:0] din6; | |
6599 | input sel0; | |
6600 | input sel1; | |
6601 | input sel2; | |
6602 | input sel3; | |
6603 | input sel4; | |
6604 | input sel5; | |
6605 | ||
6606 | ||
6607 | input clk; | |
6608 | input en; | |
6609 | input se; | |
6610 | input scan_in; | |
6611 | input siclk; | |
6612 | input soclk; | |
6613 | input pce_ov; | |
6614 | input stop; | |
6615 | ||
6616 | ||
6617 | ||
6618 | output [67:0] dout; | |
6619 | ||
6620 | ||
6621 | output scan_out; | |
6622 | ||
6623 | ||
6624 | ||
6625 | ||
6626 | cl_dp1_penc7_8x c1_0 ( | |
6627 | .test(1'b1), | |
6628 | .sel0(sel0), | |
6629 | .sel1(sel1), | |
6630 | .sel2(sel2), | |
6631 | .sel3(sel3), | |
6632 | .sel4(sel4), | |
6633 | .sel5(sel5), | |
6634 | .psel0(psel0), | |
6635 | .psel1(psel1), | |
6636 | .psel2(psel2), | |
6637 | .psel3(psel3), | |
6638 | .psel4(psel4), | |
6639 | .psel5(psel5), | |
6640 | .psel6(psel6) | |
6641 | ); | |
6642 | ||
6643 | mux7s #(68) d1_0 ( | |
6644 | .sel0(psel0), | |
6645 | .sel1(psel1), | |
6646 | .sel2(psel2), | |
6647 | .sel3(psel3), | |
6648 | .sel4(psel4), | |
6649 | .sel5(psel5), | |
6650 | .sel6(psel6), | |
6651 | .in0(din0[67:0]), | |
6652 | .in1(din1[67:0]), | |
6653 | .in2(din2[67:0]), | |
6654 | .in3(din3[67:0]), | |
6655 | .in4(din4[67:0]), | |
6656 | .in5(din5[67:0]), | |
6657 | .in6(din6[67:0]), | |
6658 | .dout(muxout[67:0]) | |
6659 | ); | |
6660 | cl_dp1_l1hdr_8x c0_0 ( | |
6661 | .l2clk(clk), | |
6662 | .pce(en), | |
6663 | .aclk(siclk), | |
6664 | .bclk(soclk), | |
6665 | .l1clk(l1clk), | |
6666 | .se(se), | |
6667 | .pce_ov(pce_ov), | |
6668 | .stop(stop), | |
6669 | .siclk_out(siclk_out), | |
6670 | .soclk_out(soclk_out) | |
6671 | ); | |
6672 | dff #(68) d0_0 ( | |
6673 | .l1clk(l1clk), | |
6674 | .siclk(siclk_out), | |
6675 | .soclk(soclk_out), | |
6676 | .d(muxout[67:0]), | |
6677 | .si({scan_in,so[66:0]}), | |
6678 | .so({so[66:0],scan_out}), | |
6679 | .q(dout[67:0]) | |
6680 | ); | |
6681 | ||
6682 | ||
6683 | ||
6684 | ||
6685 | ||
6686 | ||
6687 | ||
6688 | ||
6689 | ||
6690 | ||
6691 | ||
6692 | ||
6693 | ||
6694 | ||
6695 | ||
6696 | ||
6697 | ||
6698 | ||
6699 | ||
6700 | ||
6701 | endmodule | |
6702 | ||
6703 | ||
6704 | ||
6705 | ||
6706 | ||
6707 | ||
6708 | ||
6709 | ||
6710 | ||
6711 | ||
6712 | ||
6713 | ||
6714 | ||
6715 | // any PARAMS parms go into naming of macro | |
6716 | ||
6717 | module fgu_fpy_dp_msff_macro__mux_aope__ports_2__stack_88c__width_64 ( | |
6718 | din0, | |
6719 | din1, | |
6720 | sel0, | |
6721 | clk, | |
6722 | en, | |
6723 | se, | |
6724 | scan_in, | |
6725 | siclk, | |
6726 | soclk, | |
6727 | pce_ov, | |
6728 | stop, | |
6729 | dout, | |
6730 | scan_out); | |
6731 | wire psel0; | |
6732 | wire psel1; | |
6733 | wire [63:0] muxout; | |
6734 | wire l1clk; | |
6735 | wire siclk_out; | |
6736 | wire soclk_out; | |
6737 | wire [62:0] so; | |
6738 | ||
6739 | input [63:0] din0; | |
6740 | input [63:0] din1; | |
6741 | input sel0; | |
6742 | ||
6743 | ||
6744 | input clk; | |
6745 | input en; | |
6746 | input se; | |
6747 | input scan_in; | |
6748 | input siclk; | |
6749 | input soclk; | |
6750 | input pce_ov; | |
6751 | input stop; | |
6752 | ||
6753 | ||
6754 | ||
6755 | output [63:0] dout; | |
6756 | ||
6757 | ||
6758 | output scan_out; | |
6759 | ||
6760 | ||
6761 | ||
6762 | ||
6763 | cl_dp1_penc2_8x c1_0 ( | |
6764 | .sel0(sel0), | |
6765 | .psel0(psel0), | |
6766 | .psel1(psel1) | |
6767 | ); | |
6768 | ||
6769 | mux2s #(64) d1_0 ( | |
6770 | .sel0(psel0), | |
6771 | .sel1(psel1), | |
6772 | .in0(din0[63:0]), | |
6773 | .in1(din1[63:0]), | |
6774 | .dout(muxout[63:0]) | |
6775 | ); | |
6776 | cl_dp1_l1hdr_8x c0_0 ( | |
6777 | .l2clk(clk), | |
6778 | .pce(en), | |
6779 | .aclk(siclk), | |
6780 | .bclk(soclk), | |
6781 | .l1clk(l1clk), | |
6782 | .se(se), | |
6783 | .pce_ov(pce_ov), | |
6784 | .stop(stop), | |
6785 | .siclk_out(siclk_out), | |
6786 | .soclk_out(soclk_out) | |
6787 | ); | |
6788 | dff #(64) d0_0 ( | |
6789 | .l1clk(l1clk), | |
6790 | .siclk(siclk_out), | |
6791 | .soclk(soclk_out), | |
6792 | .d(muxout[63:0]), | |
6793 | .si({scan_in,so[62:0]}), | |
6794 | .so({so[62:0],scan_out}), | |
6795 | .q(dout[63:0]) | |
6796 | ); | |
6797 | ||
6798 | ||
6799 | ||
6800 | ||
6801 | ||
6802 | ||
6803 | ||
6804 | ||
6805 | ||
6806 | ||
6807 | ||
6808 | ||
6809 | ||
6810 | ||
6811 | ||
6812 | ||
6813 | ||
6814 | ||
6815 | ||
6816 | ||
6817 | endmodule | |
6818 | ||
6819 | ||
6820 | ||
6821 | ||
6822 | ||
6823 | ||
6824 | ||
6825 |