Commit | Line | Data |
---|---|---|
86530b38 AT |
1 | // ========== Copyright Header Begin ========================================== |
2 | // | |
3 | // OpenSPARC T2 Processor File: tlu_cer_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 tlu_cer_dp ( | |
36 | l2clk, | |
37 | scan_in, | |
38 | tcu_pce_ov, | |
39 | spc_aclk, | |
40 | spc_bclk, | |
41 | tcu_scan_en, | |
42 | asi_rd_cerer, | |
43 | asi_rd_ceter, | |
44 | asi_wr_cerer, | |
45 | asi_ceter_tid, | |
46 | asi_wr_ceter, | |
47 | asi_wr_data, | |
48 | cth_asi_data, | |
49 | scan_out, | |
50 | cer_asi_data, | |
51 | tlu_cerer_ittp, | |
52 | tlu_cerer_itdp, | |
53 | tlu_cerer_ittm, | |
54 | tlu_cerer_hwtwmu, | |
55 | tlu_cerer_hwtwl2, | |
56 | tlu_cerer_icl2c, | |
57 | tlu_cerer_icl2u, | |
58 | tlu_cerer_icl2nd, | |
59 | tlu_cerer_irf, | |
60 | tlu_cerer_frf, | |
61 | tlu_cerer_dttp, | |
62 | tlu_cerer_dttm, | |
63 | tlu_cerer_dtdp, | |
64 | tlu_cerer_dcl2c, | |
65 | tlu_cerer_dcl2u, | |
66 | tlu_cerer_dcl2nd, | |
67 | tlu_cerer_sbdlc, | |
68 | tlu_cerer_sbdlu, | |
69 | tlu_cerer_mrau, | |
70 | tlu_cerer_tsac, | |
71 | tlu_cerer_tsau, | |
72 | tlu_cerer_scac, | |
73 | tlu_cerer_scau, | |
74 | tlu_cerer_tccp, | |
75 | tlu_cerer_tcup, | |
76 | tlu_cerer_sbapp, | |
77 | tlu_cerer_l2c_socc, | |
78 | tlu_cerer_l2u_socu, | |
79 | tlu_cerer_l2nd, | |
80 | tlu_cerer_icvp, | |
81 | tlu_cerer_ictp, | |
82 | tlu_cerer_ictm, | |
83 | tlu_cerer_icdp, | |
84 | tlu_cerer_dcvp, | |
85 | tlu_cerer_dctp, | |
86 | tlu_cerer_dctm, | |
87 | tlu_cerer_dcdp, | |
88 | tlu_cerer_sbdpc, | |
89 | tlu_cerer_sbdpu, | |
90 | tlu_cerer_mamu, | |
91 | tlu_cerer_tccd, | |
92 | tlu_cerer_tcud, | |
93 | tlu_cerer_mal2c, | |
94 | tlu_cerer_mal2u, | |
95 | tlu_cerer_mal2nd, | |
96 | tlu_cerer_cwql2c, | |
97 | tlu_cerer_cwql2u, | |
98 | tlu_cerer_cwql2nd, | |
99 | tlu_ceter_pscce, | |
100 | tlu_ceter_de, | |
101 | tlu_ceter_dhcce); | |
102 | wire clk; | |
103 | wire stop; | |
104 | wire pce_ov; | |
105 | wire se; | |
106 | wire siclk; | |
107 | wire soclk; | |
108 | wire [57:22] wr_data_unused; | |
109 | wire cerer_lat_scanin; | |
110 | wire cerer_lat_scanout; | |
111 | wire [63:0] cerer; | |
112 | wire [23:0] ceter; | |
113 | wire [23:0] ceter_in; | |
114 | wire ceter_lat_scanin; | |
115 | wire ceter_lat_scanout; | |
116 | wire [62:60] ceter_data; | |
117 | wire [63:0] read_data; | |
118 | wire [63:0] asi_data; | |
119 | ||
120 | ||
121 | ||
122 | input l2clk; | |
123 | input scan_in; | |
124 | input tcu_pce_ov; | |
125 | input spc_aclk; | |
126 | input spc_bclk; | |
127 | input tcu_scan_en; | |
128 | ||
129 | ||
130 | input asi_rd_cerer; | |
131 | input asi_rd_ceter; | |
132 | input asi_wr_cerer; | |
133 | input [2:0] asi_ceter_tid; | |
134 | input asi_wr_ceter; | |
135 | input [63:0] asi_wr_data; | |
136 | ||
137 | input [63:0] cth_asi_data; | |
138 | ||
139 | ||
140 | ||
141 | output scan_out; | |
142 | ||
143 | output [63:0] cer_asi_data; | |
144 | ||
145 | output tlu_cerer_ittp ; | |
146 | output tlu_cerer_itdp ; | |
147 | output tlu_cerer_ittm ; | |
148 | output tlu_cerer_hwtwmu ; | |
149 | output tlu_cerer_hwtwl2 ; | |
150 | output tlu_cerer_icl2c ; | |
151 | output tlu_cerer_icl2u ; | |
152 | output tlu_cerer_icl2nd ; | |
153 | output tlu_cerer_irf ; | |
154 | output tlu_cerer_frf ; | |
155 | output tlu_cerer_dttp ; | |
156 | output tlu_cerer_dttm ; | |
157 | output tlu_cerer_dtdp ; | |
158 | output tlu_cerer_dcl2c ; | |
159 | output tlu_cerer_dcl2u ; | |
160 | output tlu_cerer_dcl2nd ; | |
161 | output tlu_cerer_sbdlc ; | |
162 | output tlu_cerer_sbdlu ; | |
163 | output tlu_cerer_mrau ; | |
164 | output tlu_cerer_tsac ; | |
165 | output tlu_cerer_tsau ; | |
166 | output tlu_cerer_scac ; | |
167 | output tlu_cerer_scau ; | |
168 | output tlu_cerer_tccp ; | |
169 | output tlu_cerer_tcup ; | |
170 | output tlu_cerer_sbapp ; | |
171 | output tlu_cerer_l2c_socc ; | |
172 | output tlu_cerer_l2u_socu ; | |
173 | output tlu_cerer_l2nd ; | |
174 | output tlu_cerer_icvp ; | |
175 | output tlu_cerer_ictp ; | |
176 | output tlu_cerer_ictm ; | |
177 | output tlu_cerer_icdp ; | |
178 | output tlu_cerer_dcvp ; | |
179 | output tlu_cerer_dctp ; | |
180 | output tlu_cerer_dctm ; | |
181 | output tlu_cerer_dcdp ; | |
182 | output tlu_cerer_sbdpc ; | |
183 | output tlu_cerer_sbdpu ; | |
184 | output tlu_cerer_mamu ; | |
185 | output tlu_cerer_tccd ; | |
186 | output tlu_cerer_tcud ; | |
187 | output tlu_cerer_mal2c ; | |
188 | output tlu_cerer_mal2u ; | |
189 | output tlu_cerer_mal2nd ; | |
190 | output tlu_cerer_cwql2c ; | |
191 | output tlu_cerer_cwql2u ; | |
192 | output tlu_cerer_cwql2nd ; | |
193 | ||
194 | output [7:0] tlu_ceter_pscce; | |
195 | output [7:0] tlu_ceter_de; | |
196 | output [7:0] tlu_ceter_dhcce; | |
197 | ||
198 | ||
199 | ||
200 | ||
201 | ||
202 | //////////////////////////////////////////////////////////////////////////////// | |
203 | ||
204 | assign clk = l2clk; | |
205 | assign stop = 1'b0; | |
206 | ||
207 | tlu_cer_dp_buff_macro__width_4 clk_control_buf ( | |
208 | .din ({tcu_pce_ov , | |
209 | tcu_scan_en , | |
210 | spc_aclk , | |
211 | spc_bclk }), | |
212 | .dout ({pce_ov , | |
213 | se , | |
214 | siclk , | |
215 | soclk }) | |
216 | ); | |
217 | ||
218 | assign wr_data_unused[57:56] = | |
219 | asi_wr_data[57:56]; | |
220 | assign wr_data_unused[51 ] = | |
221 | asi_wr_data[51 ]; | |
222 | assign wr_data_unused[49 ] = | |
223 | asi_wr_data[49 ]; | |
224 | assign wr_data_unused[45:41] = | |
225 | asi_wr_data[45:41]; | |
226 | assign wr_data_unused[35:34] = | |
227 | asi_wr_data[35:34]; | |
228 | assign wr_data_unused[26:24] = | |
229 | asi_wr_data[26:24]; | |
230 | assign wr_data_unused[22 ] = | |
231 | asi_wr_data[22 ]; | |
232 | ||
233 | ||
234 | /////////////////////////////////////////////////////////////////////////////// | |
235 | // CERER | |
236 | // One per core | |
237 | ||
238 | tlu_cer_dp_msff_macro__minbuff_1__width_48 cerer_lat ( | |
239 | .scan_in(cerer_lat_scanin), | |
240 | .scan_out(cerer_lat_scanout), | |
241 | .en (asi_wr_cerer ), | |
242 | .din ({asi_wr_data [63:61], | |
243 | asi_wr_data [59:58], | |
244 | asi_wr_data [55:52], | |
245 | asi_wr_data [50 ], | |
246 | asi_wr_data [48:46], | |
247 | asi_wr_data [40:36], | |
248 | asi_wr_data [33:27], | |
249 | asi_wr_data [23 ], | |
250 | asi_wr_data [21:0]}), | |
251 | .dout ({cerer [63:61], | |
252 | cerer [59:58], | |
253 | cerer [55:52], | |
254 | cerer [50 ], | |
255 | cerer [48:46], | |
256 | cerer [40:36], | |
257 | cerer [33:27], | |
258 | cerer [23 ], | |
259 | cerer [21:0]}), | |
260 | .clk(clk), | |
261 | .se(se), | |
262 | .siclk(siclk), | |
263 | .soclk(soclk), | |
264 | .pce_ov(pce_ov), | |
265 | .stop(stop) | |
266 | ); | |
267 | ||
268 | assign tlu_cerer_ittp = cerer[63]; | |
269 | assign tlu_cerer_itdp = cerer[62]; | |
270 | assign tlu_cerer_ittm = cerer[61]; | |
271 | assign tlu_cerer_hwtwmu = cerer[59]; | |
272 | assign tlu_cerer_hwtwl2 = cerer[58]; | |
273 | assign tlu_cerer_icl2c = cerer[55]; | |
274 | assign tlu_cerer_icl2u = cerer[54]; | |
275 | assign tlu_cerer_icl2nd = cerer[53]; | |
276 | assign tlu_cerer_irf = cerer[52]; | |
277 | assign tlu_cerer_frf = cerer[50]; | |
278 | assign tlu_cerer_dttp = cerer[48]; | |
279 | assign tlu_cerer_dttm = cerer[47]; | |
280 | assign tlu_cerer_dtdp = cerer[46]; | |
281 | assign tlu_cerer_dcl2c = cerer[40]; | |
282 | assign tlu_cerer_dcl2u = cerer[39]; | |
283 | assign tlu_cerer_dcl2nd = cerer[38]; | |
284 | assign tlu_cerer_sbdlc = cerer[37]; | |
285 | assign tlu_cerer_sbdlu = cerer[36]; | |
286 | assign tlu_cerer_mrau = cerer[33]; | |
287 | assign tlu_cerer_tsac = cerer[32]; | |
288 | assign tlu_cerer_tsau = cerer[31]; | |
289 | assign tlu_cerer_scac = cerer[30]; | |
290 | assign tlu_cerer_scau = cerer[29]; | |
291 | assign tlu_cerer_tccp = cerer[28]; | |
292 | assign tlu_cerer_tcup = cerer[27]; | |
293 | assign tlu_cerer_sbapp = cerer[23]; | |
294 | assign tlu_cerer_l2c_socc = cerer[21]; | |
295 | assign tlu_cerer_l2u_socu = cerer[20]; | |
296 | assign tlu_cerer_l2nd = cerer[19]; | |
297 | assign tlu_cerer_icvp = cerer[18]; | |
298 | assign tlu_cerer_ictp = cerer[17]; | |
299 | assign tlu_cerer_ictm = cerer[16]; | |
300 | assign tlu_cerer_icdp = cerer[15]; | |
301 | assign tlu_cerer_dcvp = cerer[14]; | |
302 | assign tlu_cerer_dctp = cerer[13]; | |
303 | assign tlu_cerer_dctm = cerer[12]; | |
304 | assign tlu_cerer_dcdp = cerer[11]; | |
305 | assign tlu_cerer_sbdpc = cerer[10]; | |
306 | assign tlu_cerer_sbdpu = cerer[9]; | |
307 | assign tlu_cerer_mamu = cerer[8]; | |
308 | assign tlu_cerer_tccd = cerer[7]; | |
309 | assign tlu_cerer_tcud = cerer[6]; | |
310 | assign tlu_cerer_mal2c = cerer[5]; | |
311 | assign tlu_cerer_mal2u = cerer[4]; | |
312 | assign tlu_cerer_mal2nd = cerer[3]; | |
313 | assign tlu_cerer_cwql2c = cerer[2]; | |
314 | assign tlu_cerer_cwql2u = cerer[1]; | |
315 | assign tlu_cerer_cwql2nd = cerer[0]; | |
316 | ||
317 | ||
318 | ////////////////////////////////////////////////////////////////////////////// | |
319 | // CETER | |
320 | // 4 bits per CETER, 1 per thread | |
321 | ||
322 | tlu_cer_dp_mux_macro__mux_aodec__ports_8__width_24 ceter_mux ( | |
323 | .din0 ({ceter [23:3], | |
324 | asi_wr_data [62:60]}), | |
325 | .din1 ({ceter [23:6], | |
326 | asi_wr_data [62:60], | |
327 | ceter [2:0]}), | |
328 | .din2 ({ceter [23:9], | |
329 | asi_wr_data [62:60], | |
330 | ceter [5:0]}), | |
331 | .din3 ({ceter [23:12], | |
332 | asi_wr_data [62:60], | |
333 | ceter [8:0]}), | |
334 | .din4 ({ceter [23:15], | |
335 | asi_wr_data [62:60], | |
336 | ceter [11:0]}), | |
337 | .din5 ({ceter [23:18], | |
338 | asi_wr_data [62:60], | |
339 | ceter [14:0]}), | |
340 | .din6 ({ceter [23:21], | |
341 | asi_wr_data [62:60], | |
342 | ceter [17:0]}), | |
343 | .din7 ({asi_wr_data [62:60], | |
344 | ceter [20:0]}), | |
345 | .sel (asi_ceter_tid [2:0] ), | |
346 | .dout (ceter_in [23:0] ) | |
347 | ); | |
348 | ||
349 | tlu_cer_dp_msff_macro__width_24 ceter_lat ( | |
350 | .scan_in(ceter_lat_scanin), | |
351 | .scan_out(ceter_lat_scanout), | |
352 | .en (asi_wr_ceter ), | |
353 | .din (ceter_in [23:0] ), | |
354 | .dout (ceter [23:0] ), | |
355 | .clk(clk), | |
356 | .se(se), | |
357 | .siclk(siclk), | |
358 | .soclk(soclk), | |
359 | .pce_ov(pce_ov), | |
360 | .stop(stop) | |
361 | ); | |
362 | ||
363 | ||
364 | ||
365 | ||
366 | assign tlu_ceter_pscce[7:0] = | |
367 | {ceter[23], ceter[20], ceter[17], ceter[14], | |
368 | ceter[11], ceter[8], ceter[5], ceter[2]}; | |
369 | ||
370 | assign tlu_ceter_de[7:0] = | |
371 | {ceter[22], ceter[19], ceter[16], ceter[13], | |
372 | ceter[10], ceter[7], ceter[4], ceter[1]}; | |
373 | ||
374 | assign tlu_ceter_dhcce[7:0] = | |
375 | {ceter[21], ceter[18], ceter[15], ceter[12], | |
376 | ceter[9], ceter[6], ceter[3], ceter[0]}; | |
377 | ||
378 | ||
379 | ||
380 | ||
381 | ////////////////////////////////////////////////////////////////////////////// | |
382 | tlu_cer_dp_mux_macro__mux_aodec__ports_8__width_3 ceter_data_mux ( | |
383 | .din0 (ceter [2:0] ), | |
384 | .din1 (ceter [5:3] ), | |
385 | .din2 (ceter [8:6] ), | |
386 | .din3 (ceter [11:9] ), | |
387 | .din4 (ceter [14:12] ), | |
388 | .din5 (ceter [17:15] ), | |
389 | .din6 (ceter [20:18] ), | |
390 | .din7 (ceter [23:21] ), | |
391 | .sel (asi_ceter_tid [2:0] ), | |
392 | .dout (ceter_data [62:60] ) | |
393 | ); | |
394 | ||
395 | tlu_cer_dp_mux_macro__dmux_8x__mux_aonpe__ports_2__width_49 read_data_mux ( | |
396 | .din0 ({cerer [63:61], | |
397 | 1'b0 , | |
398 | cerer [59:58], | |
399 | cerer [55:52], | |
400 | cerer [50 ], | |
401 | cerer [48:46], | |
402 | cerer [40:36], | |
403 | cerer [33:27], | |
404 | cerer [23 ], | |
405 | cerer [21:0]}), | |
406 | .din1 ({1'b0 , | |
407 | ceter_data [62:60], | |
408 | {45 {1'b0}} }), | |
409 | .sel0 (asi_rd_cerer ), | |
410 | .sel1 (asi_rd_ceter ), | |
411 | .dout ({read_data [63:60], | |
412 | read_data [59:58], | |
413 | read_data [55:52], | |
414 | read_data [50 ], | |
415 | read_data [48:46], | |
416 | read_data [40:36], | |
417 | read_data [33:27], | |
418 | read_data [23 ], | |
419 | read_data [21:0]}) | |
420 | ); | |
421 | ||
422 | assign asi_data[63:0] = | |
423 | {read_data[63:60], | |
424 | read_data[59:58], | |
425 | {2 {1'b0}}, | |
426 | read_data[55:52], | |
427 | {1 {1'b0}}, | |
428 | read_data[50 ], | |
429 | {1 {1'b0}}, | |
430 | read_data[48:46], | |
431 | {5 {1'b0}}, | |
432 | read_data[40:36], | |
433 | {2 {1'b0}}, | |
434 | read_data[33:27], | |
435 | {3 {1'b0}}, | |
436 | read_data[23 ], | |
437 | {1 {1'b0}}, | |
438 | read_data[21:0]}; | |
439 | ||
440 | ||
441 | tlu_cer_dp_or_macro__ports_2__width_64 asi_data_or ( | |
442 | .din0 (cth_asi_data [63:0] ), | |
443 | .din1 (asi_data [63:0] ), | |
444 | .dout (cer_asi_data [63:0] ) | |
445 | ); | |
446 | ||
447 | ||
448 | ||
449 | ||
450 | ||
451 | // fixscan start: | |
452 | assign cerer_lat_scanin = scan_in ; | |
453 | assign ceter_lat_scanin = cerer_lat_scanout ; | |
454 | assign scan_out = ceter_lat_scanout ; | |
455 | // fixscan end: | |
456 | endmodule | |
457 | ||
458 | ||
459 | ||
460 | // | |
461 | // buff macro | |
462 | // | |
463 | // | |
464 | ||
465 | ||
466 | ||
467 | ||
468 | ||
469 | module tlu_cer_dp_buff_macro__width_4 ( | |
470 | din, | |
471 | dout); | |
472 | input [3:0] din; | |
473 | output [3:0] dout; | |
474 | ||
475 | ||
476 | ||
477 | ||
478 | ||
479 | ||
480 | buff #(4) d0_0 ( | |
481 | .in(din[3:0]), | |
482 | .out(dout[3:0]) | |
483 | ); | |
484 | ||
485 | ||
486 | ||
487 | ||
488 | ||
489 | ||
490 | ||
491 | ||
492 | endmodule | |
493 | ||
494 | ||
495 | ||
496 | ||
497 | ||
498 | ||
499 | ||
500 | ||
501 | ||
502 | // any PARAMS parms go into naming of macro | |
503 | ||
504 | module tlu_cer_dp_msff_macro__minbuff_1__width_48 ( | |
505 | din, | |
506 | clk, | |
507 | en, | |
508 | se, | |
509 | scan_in, | |
510 | siclk, | |
511 | soclk, | |
512 | pce_ov, | |
513 | stop, | |
514 | dout, | |
515 | scan_out); | |
516 | wire l1clk; | |
517 | wire siclk_out; | |
518 | wire soclk_out; | |
519 | wire [46:0] so; | |
520 | ||
521 | input [47:0] din; | |
522 | ||
523 | ||
524 | input clk; | |
525 | input en; | |
526 | input se; | |
527 | input scan_in; | |
528 | input siclk; | |
529 | input soclk; | |
530 | input pce_ov; | |
531 | input stop; | |
532 | ||
533 | ||
534 | ||
535 | output [47:0] dout; | |
536 | ||
537 | ||
538 | output scan_out; | |
539 | ||
540 | ||
541 | ||
542 | ||
543 | cl_dp1_l1hdr_8x c0_0 ( | |
544 | .l2clk(clk), | |
545 | .pce(en), | |
546 | .aclk(siclk), | |
547 | .bclk(soclk), | |
548 | .l1clk(l1clk), | |
549 | .se(se), | |
550 | .pce_ov(pce_ov), | |
551 | .stop(stop), | |
552 | .siclk_out(siclk_out), | |
553 | .soclk_out(soclk_out) | |
554 | ); | |
555 | dff #(48) d0_0 ( | |
556 | .l1clk(l1clk), | |
557 | .siclk(siclk_out), | |
558 | .soclk(soclk_out), | |
559 | .d(din[47:0]), | |
560 | .si({scan_in,so[46:0]}), | |
561 | .so({so[46:0],scan_out}), | |
562 | .q(dout[47:0]) | |
563 | ); | |
564 | ||
565 | ||
566 | ||
567 | ||
568 | ||
569 | ||
570 | ||
571 | ||
572 | ||
573 | ||
574 | ||
575 | ||
576 | ||
577 | ||
578 | ||
579 | ||
580 | ||
581 | ||
582 | ||
583 | ||
584 | endmodule | |
585 | ||
586 | ||
587 | ||
588 | ||
589 | ||
590 | ||
591 | ||
592 | ||
593 | ||
594 | // general mux macro for pass-gate and and-or muxes with/wout priority encoders | |
595 | // also for pass-gate with decoder | |
596 | ||
597 | ||
598 | ||
599 | ||
600 | ||
601 | // any PARAMS parms go into naming of macro | |
602 | ||
603 | module tlu_cer_dp_mux_macro__mux_aodec__ports_8__width_24 ( | |
604 | din0, | |
605 | din1, | |
606 | din2, | |
607 | din3, | |
608 | din4, | |
609 | din5, | |
610 | din6, | |
611 | din7, | |
612 | sel, | |
613 | dout); | |
614 | wire psel0; | |
615 | wire psel1; | |
616 | wire psel2; | |
617 | wire psel3; | |
618 | wire psel4; | |
619 | wire psel5; | |
620 | wire psel6; | |
621 | wire psel7; | |
622 | ||
623 | input [23:0] din0; | |
624 | input [23:0] din1; | |
625 | input [23:0] din2; | |
626 | input [23:0] din3; | |
627 | input [23:0] din4; | |
628 | input [23:0] din5; | |
629 | input [23:0] din6; | |
630 | input [23:0] din7; | |
631 | input [2:0] sel; | |
632 | output [23:0] dout; | |
633 | ||
634 | ||
635 | ||
636 | ||
637 | ||
638 | cl_dp1_pdec8_8x c0_0 ( | |
639 | .test(1'b1), | |
640 | .sel0(sel[0]), | |
641 | .sel1(sel[1]), | |
642 | .sel2(sel[2]), | |
643 | .psel0(psel0), | |
644 | .psel1(psel1), | |
645 | .psel2(psel2), | |
646 | .psel3(psel3), | |
647 | .psel4(psel4), | |
648 | .psel5(psel5), | |
649 | .psel6(psel6), | |
650 | .psel7(psel7) | |
651 | ); | |
652 | ||
653 | mux8s #(24) d0_0 ( | |
654 | .sel0(psel0), | |
655 | .sel1(psel1), | |
656 | .sel2(psel2), | |
657 | .sel3(psel3), | |
658 | .sel4(psel4), | |
659 | .sel5(psel5), | |
660 | .sel6(psel6), | |
661 | .sel7(psel7), | |
662 | .in0(din0[23:0]), | |
663 | .in1(din1[23:0]), | |
664 | .in2(din2[23:0]), | |
665 | .in3(din3[23:0]), | |
666 | .in4(din4[23:0]), | |
667 | .in5(din5[23:0]), | |
668 | .in6(din6[23:0]), | |
669 | .in7(din7[23:0]), | |
670 | .dout(dout[23:0]) | |
671 | ); | |
672 | ||
673 | ||
674 | ||
675 | ||
676 | ||
677 | ||
678 | ||
679 | ||
680 | ||
681 | ||
682 | ||
683 | ||
684 | ||
685 | endmodule | |
686 | ||
687 | ||
688 | ||
689 | ||
690 | ||
691 | ||
692 | // any PARAMS parms go into naming of macro | |
693 | ||
694 | module tlu_cer_dp_msff_macro__width_24 ( | |
695 | din, | |
696 | clk, | |
697 | en, | |
698 | se, | |
699 | scan_in, | |
700 | siclk, | |
701 | soclk, | |
702 | pce_ov, | |
703 | stop, | |
704 | dout, | |
705 | scan_out); | |
706 | wire l1clk; | |
707 | wire siclk_out; | |
708 | wire soclk_out; | |
709 | wire [22:0] so; | |
710 | ||
711 | input [23:0] din; | |
712 | ||
713 | ||
714 | input clk; | |
715 | input en; | |
716 | input se; | |
717 | input scan_in; | |
718 | input siclk; | |
719 | input soclk; | |
720 | input pce_ov; | |
721 | input stop; | |
722 | ||
723 | ||
724 | ||
725 | output [23:0] dout; | |
726 | ||
727 | ||
728 | output scan_out; | |
729 | ||
730 | ||
731 | ||
732 | ||
733 | cl_dp1_l1hdr_8x c0_0 ( | |
734 | .l2clk(clk), | |
735 | .pce(en), | |
736 | .aclk(siclk), | |
737 | .bclk(soclk), | |
738 | .l1clk(l1clk), | |
739 | .se(se), | |
740 | .pce_ov(pce_ov), | |
741 | .stop(stop), | |
742 | .siclk_out(siclk_out), | |
743 | .soclk_out(soclk_out) | |
744 | ); | |
745 | dff #(24) d0_0 ( | |
746 | .l1clk(l1clk), | |
747 | .siclk(siclk_out), | |
748 | .soclk(soclk_out), | |
749 | .d(din[23:0]), | |
750 | .si({scan_in,so[22:0]}), | |
751 | .so({so[22:0],scan_out}), | |
752 | .q(dout[23:0]) | |
753 | ); | |
754 | ||
755 | ||
756 | ||
757 | ||
758 | ||
759 | ||
760 | ||
761 | ||
762 | ||
763 | ||
764 | ||
765 | ||
766 | ||
767 | ||
768 | ||
769 | ||
770 | ||
771 | ||
772 | ||
773 | ||
774 | endmodule | |
775 | ||
776 | ||
777 | ||
778 | ||
779 | ||
780 | ||
781 | ||
782 | ||
783 | ||
784 | // general mux macro for pass-gate and and-or muxes with/wout priority encoders | |
785 | // also for pass-gate with decoder | |
786 | ||
787 | ||
788 | ||
789 | ||
790 | ||
791 | // any PARAMS parms go into naming of macro | |
792 | ||
793 | module tlu_cer_dp_mux_macro__mux_aodec__ports_8__width_3 ( | |
794 | din0, | |
795 | din1, | |
796 | din2, | |
797 | din3, | |
798 | din4, | |
799 | din5, | |
800 | din6, | |
801 | din7, | |
802 | sel, | |
803 | dout); | |
804 | wire psel0; | |
805 | wire psel1; | |
806 | wire psel2; | |
807 | wire psel3; | |
808 | wire psel4; | |
809 | wire psel5; | |
810 | wire psel6; | |
811 | wire psel7; | |
812 | ||
813 | input [2:0] din0; | |
814 | input [2:0] din1; | |
815 | input [2:0] din2; | |
816 | input [2:0] din3; | |
817 | input [2:0] din4; | |
818 | input [2:0] din5; | |
819 | input [2:0] din6; | |
820 | input [2:0] din7; | |
821 | input [2:0] sel; | |
822 | output [2:0] dout; | |
823 | ||
824 | ||
825 | ||
826 | ||
827 | ||
828 | cl_dp1_pdec8_8x c0_0 ( | |
829 | .test(1'b1), | |
830 | .sel0(sel[0]), | |
831 | .sel1(sel[1]), | |
832 | .sel2(sel[2]), | |
833 | .psel0(psel0), | |
834 | .psel1(psel1), | |
835 | .psel2(psel2), | |
836 | .psel3(psel3), | |
837 | .psel4(psel4), | |
838 | .psel5(psel5), | |
839 | .psel6(psel6), | |
840 | .psel7(psel7) | |
841 | ); | |
842 | ||
843 | mux8s #(3) d0_0 ( | |
844 | .sel0(psel0), | |
845 | .sel1(psel1), | |
846 | .sel2(psel2), | |
847 | .sel3(psel3), | |
848 | .sel4(psel4), | |
849 | .sel5(psel5), | |
850 | .sel6(psel6), | |
851 | .sel7(psel7), | |
852 | .in0(din0[2:0]), | |
853 | .in1(din1[2:0]), | |
854 | .in2(din2[2:0]), | |
855 | .in3(din3[2:0]), | |
856 | .in4(din4[2:0]), | |
857 | .in5(din5[2:0]), | |
858 | .in6(din6[2:0]), | |
859 | .in7(din7[2:0]), | |
860 | .dout(dout[2:0]) | |
861 | ); | |
862 | ||
863 | ||
864 | ||
865 | ||
866 | ||
867 | ||
868 | ||
869 | ||
870 | ||
871 | ||
872 | ||
873 | ||
874 | ||
875 | endmodule | |
876 | ||
877 | ||
878 | // general mux macro for pass-gate and and-or muxes with/wout priority encoders | |
879 | // also for pass-gate with decoder | |
880 | ||
881 | ||
882 | ||
883 | ||
884 | ||
885 | // any PARAMS parms go into naming of macro | |
886 | ||
887 | module tlu_cer_dp_mux_macro__dmux_8x__mux_aonpe__ports_2__width_49 ( | |
888 | din0, | |
889 | sel0, | |
890 | din1, | |
891 | sel1, | |
892 | dout); | |
893 | wire buffout0; | |
894 | wire buffout1; | |
895 | ||
896 | input [48:0] din0; | |
897 | input sel0; | |
898 | input [48:0] din1; | |
899 | input sel1; | |
900 | output [48:0] dout; | |
901 | ||
902 | ||
903 | ||
904 | ||
905 | ||
906 | cl_dp1_muxbuff2_8x c0_0 ( | |
907 | .in0(sel0), | |
908 | .in1(sel1), | |
909 | .out0(buffout0), | |
910 | .out1(buffout1) | |
911 | ); | |
912 | mux2s #(49) d0_0 ( | |
913 | .sel0(buffout0), | |
914 | .sel1(buffout1), | |
915 | .in0(din0[48:0]), | |
916 | .in1(din1[48:0]), | |
917 | .dout(dout[48:0]) | |
918 | ); | |
919 | ||
920 | ||
921 | ||
922 | ||
923 | ||
924 | ||
925 | ||
926 | ||
927 | ||
928 | ||
929 | ||
930 | ||
931 | ||
932 | endmodule | |
933 | ||
934 | ||
935 | // | |
936 | // or macro for ports = 2,3 | |
937 | // | |
938 | // | |
939 | ||
940 | ||
941 | ||
942 | ||
943 | ||
944 | module tlu_cer_dp_or_macro__ports_2__width_64 ( | |
945 | din0, | |
946 | din1, | |
947 | dout); | |
948 | input [63:0] din0; | |
949 | input [63:0] din1; | |
950 | output [63:0] dout; | |
951 | ||
952 | ||
953 | ||
954 | ||
955 | ||
956 | ||
957 | or2 #(64) d0_0 ( | |
958 | .in0(din0[63:0]), | |
959 | .in1(din1[63:0]), | |
960 | .out(dout[63:0]) | |
961 | ); | |
962 | ||
963 | ||
964 | ||
965 | ||
966 | ||
967 | ||
968 | ||
969 | ||
970 | ||
971 | endmodule | |
972 | ||
973 | ||
974 | ||
975 |