Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / design / sys / iop / tcu / rtl / tcu_clkstp_ctl.v
CommitLineData
86530b38
AT
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T2 Processor File: tcu_clkstp_ctl.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 ============================================
35module tcu_clkstp_ctl (
36 l2clk,
37 scan_in,
38 scan_out,
39 tcu_int_se,
40 tcu_int_aclk,
41 tcu_int_bclk,
42 tcu_int_ce,
43 tcu_pce_ov,
44 cmp_dr_sync_en,
45 mt_mode_sync,
46 instr_mt_scan_rti,
47 pre_spc0_clk_stop,
48 pre_spc1_clk_stop,
49 pre_spc2_clk_stop,
50 pre_spc3_clk_stop,
51 pre_spc4_clk_stop,
52 pre_spc5_clk_stop,
53 pre_spc6_clk_stop,
54 pre_spc7_clk_stop,
55 pre_bnk0_clk_stop,
56 pre_l2t0_clk_stop,
57 pre_bnk1_clk_stop,
58 pre_l2t1_clk_stop,
59 pre_bnk2_clk_stop,
60 pre_l2t2_clk_stop,
61 pre_bnk3_clk_stop,
62 pre_l2t3_clk_stop,
63 pre_bnk4_clk_stop,
64 pre_l2t4_clk_stop,
65 pre_bnk5_clk_stop,
66 pre_l2t5_clk_stop,
67 pre_bnk6_clk_stop,
68 pre_l2t6_clk_stop,
69 pre_bnk7_clk_stop,
70 pre_l2t7_clk_stop,
71 pre_mcu0_clk_stop,
72 pre_mcu0_io_clk_stop,
73 pre_mcu0_dr_clk_stop,
74 pre_mcu0_fbd_clk_stop,
75 pre_mcu1_clk_stop,
76 pre_mcu1_io_clk_stop,
77 pre_mcu1_dr_clk_stop,
78 pre_mcu1_fbd_clk_stop,
79 pre_mcu2_clk_stop,
80 pre_mcu2_io_clk_stop,
81 pre_mcu2_dr_clk_stop,
82 pre_mcu2_fbd_clk_stop,
83 pre_mcu3_clk_stop,
84 pre_mcu3_io_clk_stop,
85 pre_mcu3_dr_clk_stop,
86 pre_mcu3_fbd_clk_stop,
87 pre_soc0_clk_stop,
88 pre_soc0_io_clk_stop,
89 pre_soc1_io_clk_stop,
90 pre_soc2_io_clk_stop,
91 pre_soc3_clk_stop,
92 pre_soc3_io_clk_stop,
93 tcu_spc0_clk_stop,
94 tcu_spc1_clk_stop,
95 tcu_spc2_clk_stop,
96 tcu_spc3_clk_stop,
97 tcu_spc4_clk_stop,
98 tcu_spc5_clk_stop,
99 tcu_spc6_clk_stop,
100 tcu_spc7_clk_stop,
101 tcu_l2d0_clk_stop,
102 tcu_l2d1_clk_stop,
103 tcu_l2d2_clk_stop,
104 tcu_l2d3_clk_stop,
105 tcu_l2d4_clk_stop,
106 tcu_l2d5_clk_stop,
107 tcu_l2d6_clk_stop,
108 tcu_l2d7_clk_stop,
109 tcu_l2b0_clk_stop,
110 tcu_l2b1_clk_stop,
111 tcu_l2b2_clk_stop,
112 tcu_l2b3_clk_stop,
113 tcu_l2b4_clk_stop,
114 tcu_l2b5_clk_stop,
115 tcu_l2b6_clk_stop,
116 tcu_l2b7_clk_stop,
117 tcu_l2t0_clk_stop,
118 tcu_l2t1_clk_stop,
119 tcu_l2t2_clk_stop,
120 tcu_l2t3_clk_stop,
121 tcu_l2t4_clk_stop,
122 tcu_l2t5_clk_stop,
123 tcu_l2t6_clk_stop,
124 tcu_l2t7_clk_stop,
125 tcu_mcu0_clk_stop,
126 tcu_mcu1_clk_stop,
127 tcu_mcu2_clk_stop,
128 tcu_mcu3_clk_stop,
129 tcu_mcu0_dr_clk_stop,
130 tcu_mcu1_dr_clk_stop,
131 tcu_mcu2_dr_clk_stop,
132 tcu_mcu3_dr_clk_stop,
133 tcu_mcu0_io_clk_stop,
134 tcu_mcu1_io_clk_stop,
135 tcu_mcu2_io_clk_stop,
136 tcu_mcu3_io_clk_stop,
137 tcu_mcu0_fbd_clk_stop,
138 tcu_mcu1_fbd_clk_stop,
139 tcu_mcu2_fbd_clk_stop,
140 tcu_mcu3_fbd_clk_stop,
141 tcu_sii_clk_stop,
142 tcu_sio_clk_stop,
143 tcu_ncu_clk_stop,
144 tcu_ccx_clk_stop,
145 tcu_efu_clk_stop,
146 tcu_sii_io_clk_stop,
147 tcu_sio_io_clk_stop,
148 tcu_ncu_io_clk_stop,
149 tcu_efu_io_clk_stop,
150 tcu_db0_clk_stop,
151 tcu_db1_clk_stop,
152 tcu_mio_clk_stop,
153 tcu_rdp_io_clk_stop,
154 tcu_mac_io_clk_stop,
155 tcu_rtx_io_clk_stop,
156 tcu_tds_io_clk_stop,
157 tcu_dmu_io_clk_stop,
158 tcu_peu_pc_clk_stop,
159 tcu_peu_io_clk_stop);
160wire l1en;
161wire pce_ov;
162wire stop;
163wire se;
164wire siclk;
165wire soclk;
166wire l1clk;
167wire clkstp_cmpsync_reg_scanin;
168wire clkstp_cmpsync_reg_scanout;
169wire cmp_dr_sync_en_local;
170wire not_mt_mode;
171wire instr_mt_scan_rti_sync;
172wire clkstp_spc0stop_reg_scanin;
173wire clkstp_spc0stop_reg_scanout;
174wire pre_spc0_clk_stop_l;
175wire tcu_spc0_clk_stop_l;
176wire clkstp_spc1stop_reg_scanin;
177wire clkstp_spc1stop_reg_scanout;
178wire pre_spc1_clk_stop_l;
179wire tcu_spc1_clk_stop_l;
180wire clkstp_spc2stop_reg_scanin;
181wire clkstp_spc2stop_reg_scanout;
182wire pre_spc2_clk_stop_l;
183wire tcu_spc2_clk_stop_l;
184wire clkstp_spc3stop_reg_scanin;
185wire clkstp_spc3stop_reg_scanout;
186wire pre_spc3_clk_stop_l;
187wire tcu_spc3_clk_stop_l;
188wire clkstp_spc4stop_reg_scanin;
189wire clkstp_spc4stop_reg_scanout;
190wire pre_spc4_clk_stop_l;
191wire tcu_spc4_clk_stop_l;
192wire clkstp_spc5stop_reg_scanin;
193wire clkstp_spc5stop_reg_scanout;
194wire pre_spc5_clk_stop_l;
195wire tcu_spc5_clk_stop_l;
196wire clkstp_spc6stop_reg_scanin;
197wire clkstp_spc6stop_reg_scanout;
198wire pre_spc6_clk_stop_l;
199wire tcu_spc6_clk_stop_l;
200wire clkstp_spc7stop_reg_scanin;
201wire clkstp_spc7stop_reg_scanout;
202wire pre_spc7_clk_stop_l;
203wire tcu_spc7_clk_stop_l;
204wire clkstp_bnkstop_reg_scanin;
205wire clkstp_bnkstop_reg_scanout;
206wire pre_bnk0_clk_stop_l;
207wire pre_bnk1_clk_stop_l;
208wire pre_bnk2_clk_stop_l;
209wire pre_bnk3_clk_stop_l;
210wire pre_bnk4_clk_stop_l;
211wire pre_bnk5_clk_stop_l;
212wire pre_bnk6_clk_stop_l;
213wire pre_bnk7_clk_stop_l;
214wire tcu_bnk0_clk_stop_l;
215wire tcu_bnk1_clk_stop_l;
216wire tcu_bnk2_clk_stop_l;
217wire tcu_bnk3_clk_stop_l;
218wire tcu_bnk4_clk_stop_l;
219wire tcu_bnk5_clk_stop_l;
220wire tcu_bnk6_clk_stop_l;
221wire tcu_bnk7_clk_stop_l;
222wire clkstp_l2tstop_reg_scanin;
223wire clkstp_l2tstop_reg_scanout;
224wire pre_l2t0_clk_stop_l;
225wire pre_l2t1_clk_stop_l;
226wire pre_l2t2_clk_stop_l;
227wire pre_l2t3_clk_stop_l;
228wire pre_l2t4_clk_stop_l;
229wire pre_l2t5_clk_stop_l;
230wire pre_l2t6_clk_stop_l;
231wire pre_l2t7_clk_stop_l;
232wire tcu_l2t0_clk_stop_l;
233wire tcu_l2t1_clk_stop_l;
234wire tcu_l2t2_clk_stop_l;
235wire tcu_l2t3_clk_stop_l;
236wire tcu_l2t4_clk_stop_l;
237wire tcu_l2t5_clk_stop_l;
238wire tcu_l2t6_clk_stop_l;
239wire tcu_l2t7_clk_stop_l;
240wire clkstp_mcustop_reg_scanin;
241wire clkstp_mcustop_reg_scanout;
242wire pre_mcu0_clk_stop_l;
243wire pre_mcu1_clk_stop_l;
244wire pre_mcu2_clk_stop_l;
245wire pre_mcu3_clk_stop_l;
246wire tcu_mcu0_clk_stop_l;
247wire tcu_mcu1_clk_stop_l;
248wire tcu_mcu2_clk_stop_l;
249wire tcu_mcu3_clk_stop_l;
250wire clkstp_mcuiostop_reg_scanin;
251wire clkstp_mcuiostop_reg_scanout;
252wire pre_mcu0_io_clk_stop_l;
253wire pre_mcu1_io_clk_stop_l;
254wire pre_mcu2_io_clk_stop_l;
255wire pre_mcu3_io_clk_stop_l;
256wire tcu_mcu0_io_clk_stop_l;
257wire tcu_mcu1_io_clk_stop_l;
258wire tcu_mcu2_io_clk_stop_l;
259wire tcu_mcu3_io_clk_stop_l;
260wire clkstp_mcudrstop_reg_scanin;
261wire clkstp_mcudrstop_reg_scanout;
262wire pre_mcu0_dr_clk_stop_l;
263wire pre_mcu1_dr_clk_stop_l;
264wire pre_mcu2_dr_clk_stop_l;
265wire pre_mcu3_dr_clk_stop_l;
266wire tcu_mcu0_dr_clk_stop_l;
267wire tcu_mcu1_dr_clk_stop_l;
268wire tcu_mcu2_dr_clk_stop_l;
269wire tcu_mcu3_dr_clk_stop_l;
270wire clkstp_mcufbdstop_reg_scanin;
271wire clkstp_mcufbdstop_reg_scanout;
272wire pre_mcu0_fbd_clk_stop_l;
273wire pre_mcu1_fbd_clk_stop_l;
274wire pre_mcu2_fbd_clk_stop_l;
275wire pre_mcu3_fbd_clk_stop_l;
276wire tcu_mcu0_fbd_clk_stop_l;
277wire tcu_mcu1_fbd_clk_stop_l;
278wire tcu_mcu2_fbd_clk_stop_l;
279wire tcu_mcu3_fbd_clk_stop_l;
280wire clkstp_soc0stop_reg_scanin;
281wire clkstp_soc0stop_reg_scanout;
282wire pre_soc0_clk_stop_l;
283wire tcu_soc0_clk_stop_l;
284wire clkstp_soc0iostop_reg_scanin;
285wire clkstp_soc0iostop_reg_scanout;
286wire pre_soc0_io_clk_stop_l;
287wire tcu_soc0_io_clk_stop_l;
288wire clkstp_soc1iostop_reg_scanin;
289wire clkstp_soc1iostop_reg_scanout;
290wire pre_soc1_io_clk_stop_l;
291wire tcu_soc1_io_clk_stop_l;
292wire clkstp_soc2iostop_reg_scanin;
293wire clkstp_soc2iostop_reg_scanout;
294wire pre_soc2_io_clk_stop_l;
295wire tcu_soc2_io_clk_stop_l;
296wire clkstp_soc3stop_reg_scanin;
297wire clkstp_soc3stop_reg_scanout;
298wire pre_soc3_clk_stop_l;
299wire tcu_soc3_clk_stop_l;
300wire clkstp_soc3iostop_reg_scanin;
301wire clkstp_soc3iostop_reg_scanout;
302wire pre_soc3_io_clk_stop_l;
303wire tcu_soc3_io_clk_stop_l;
304wire turn_off_clk_stop;
305wire tcu_bnk0_clk_stop;
306wire tcu_bnk1_clk_stop;
307wire tcu_bnk2_clk_stop;
308wire tcu_bnk3_clk_stop;
309wire tcu_bnk4_clk_stop;
310wire tcu_bnk5_clk_stop;
311wire tcu_bnk6_clk_stop;
312wire tcu_bnk7_clk_stop;
313wire tcu_soc0_clk_stop;
314wire tcu_soc0_io_clk_stop;
315wire tcu_soc1_io_clk_stop;
316wire tcu_soc2_io_clk_stop;
317wire tcu_soc3_clk_stop;
318wire tcu_soc3_io_clk_stop;
319wire sync_ff_instr_mt_scan_scanin;
320wire sync_ff_instr_mt_scan_scanout;
321
322
323 input l2clk;
324
325 // Scan input/output for this block
326 input scan_in;
327 output scan_out;
328 // Scan Controls
329 input tcu_int_se;
330 input tcu_int_aclk;
331 input tcu_int_bclk;
332 input tcu_int_ce;
333 input tcu_pce_ov;
334
335 // Synchronizer enables
336 input cmp_dr_sync_en; // enable dr_clk_stops with this
337
338 // Synchronized macro test mode enable signal
339 input mt_mode_sync;
340 input instr_mt_scan_rti;
341
342 // Inputs from sigmux_ctl
343 input pre_spc0_clk_stop;
344 input pre_spc1_clk_stop;
345 input pre_spc2_clk_stop;
346 input pre_spc3_clk_stop;
347 input pre_spc4_clk_stop;
348 input pre_spc5_clk_stop;
349 input pre_spc6_clk_stop;
350 input pre_spc7_clk_stop;
351
352 input pre_bnk0_clk_stop;
353 input pre_l2t0_clk_stop;
354 input pre_bnk1_clk_stop;
355 input pre_l2t1_clk_stop;
356 input pre_bnk2_clk_stop;
357 input pre_l2t2_clk_stop;
358 input pre_bnk3_clk_stop;
359 input pre_l2t3_clk_stop;
360 input pre_bnk4_clk_stop;
361 input pre_l2t4_clk_stop;
362 input pre_bnk5_clk_stop;
363 input pre_l2t5_clk_stop;
364 input pre_bnk6_clk_stop;
365 input pre_l2t6_clk_stop;
366 input pre_bnk7_clk_stop;
367 input pre_l2t7_clk_stop;
368
369 input pre_mcu0_clk_stop;
370 input pre_mcu0_io_clk_stop;
371 input pre_mcu0_dr_clk_stop;
372 input pre_mcu0_fbd_clk_stop;
373
374 input pre_mcu1_clk_stop;
375 input pre_mcu1_io_clk_stop;
376 input pre_mcu1_dr_clk_stop;
377 input pre_mcu1_fbd_clk_stop;
378
379 input pre_mcu2_clk_stop;
380 input pre_mcu2_io_clk_stop;
381 input pre_mcu2_dr_clk_stop;
382 input pre_mcu2_fbd_clk_stop;
383
384 input pre_mcu3_clk_stop;
385 input pre_mcu3_io_clk_stop;
386 input pre_mcu3_dr_clk_stop;
387 input pre_mcu3_fbd_clk_stop;
388
389 input pre_soc0_clk_stop;
390 input pre_soc0_io_clk_stop;
391
392 input pre_soc1_io_clk_stop;
393 input pre_soc2_io_clk_stop;
394 input pre_soc3_clk_stop;
395 input pre_soc3_io_clk_stop;
396
397
398 // Outputs from TCU
399 output tcu_spc0_clk_stop;
400 output tcu_spc1_clk_stop;
401 output tcu_spc2_clk_stop;
402 output tcu_spc3_clk_stop;
403 output tcu_spc4_clk_stop;
404 output tcu_spc5_clk_stop;
405 output tcu_spc6_clk_stop;
406 output tcu_spc7_clk_stop;
407 output tcu_l2d0_clk_stop;
408 output tcu_l2d1_clk_stop;
409 output tcu_l2d2_clk_stop;
410 output tcu_l2d3_clk_stop;
411 output tcu_l2d4_clk_stop;
412 output tcu_l2d5_clk_stop;
413 output tcu_l2d6_clk_stop;
414 output tcu_l2d7_clk_stop;
415 output tcu_l2b0_clk_stop;
416 output tcu_l2b1_clk_stop;
417 output tcu_l2b2_clk_stop;
418 output tcu_l2b3_clk_stop;
419 output tcu_l2b4_clk_stop;
420 output tcu_l2b5_clk_stop;
421 output tcu_l2b6_clk_stop;
422 output tcu_l2b7_clk_stop;
423 output tcu_l2t0_clk_stop;
424 output tcu_l2t1_clk_stop;
425 output tcu_l2t2_clk_stop;
426 output tcu_l2t3_clk_stop;
427 output tcu_l2t4_clk_stop;
428 output tcu_l2t5_clk_stop;
429 output tcu_l2t6_clk_stop;
430 output tcu_l2t7_clk_stop;
431 output tcu_mcu0_clk_stop;
432 output tcu_mcu1_clk_stop;
433 output tcu_mcu2_clk_stop;
434 output tcu_mcu3_clk_stop;
435 output tcu_mcu0_dr_clk_stop;
436 output tcu_mcu1_dr_clk_stop;
437 output tcu_mcu2_dr_clk_stop;
438 output tcu_mcu3_dr_clk_stop;
439 output tcu_mcu0_io_clk_stop;
440 output tcu_mcu1_io_clk_stop;
441 output tcu_mcu2_io_clk_stop;
442 output tcu_mcu3_io_clk_stop;
443 output tcu_mcu0_fbd_clk_stop;
444 output tcu_mcu1_fbd_clk_stop;
445 output tcu_mcu2_fbd_clk_stop;
446 output tcu_mcu3_fbd_clk_stop;
447
448 output tcu_sii_clk_stop;
449 output tcu_sio_clk_stop;
450 output tcu_ncu_clk_stop;
451 //output tcu_rst_clk_stop;
452 output tcu_ccx_clk_stop;
453 output tcu_efu_clk_stop;
454
455 output tcu_sii_io_clk_stop;
456 output tcu_sio_io_clk_stop;
457 output tcu_ncu_io_clk_stop;
458 output tcu_efu_io_clk_stop;
459 //output tcu_rst_io_clk_stop;
460 output tcu_db0_clk_stop; // io clk domain
461 output tcu_db1_clk_stop; // io clk domain
462 output tcu_mio_clk_stop; // io clk domain
463
464 output tcu_rdp_io_clk_stop;
465 output tcu_mac_io_clk_stop;
466 output tcu_rtx_io_clk_stop;
467 output tcu_tds_io_clk_stop;
468
469 output tcu_dmu_io_clk_stop;
470
471 output tcu_peu_pc_clk_stop;
472
473 output tcu_peu_io_clk_stop;
474
475
476 //********************************************************************
477 // Scan reassigns
478 //********************************************************************
479 assign l1en = tcu_int_ce; // 1'b1;
480 assign pce_ov = tcu_pce_ov; // 1'b1;
481 assign stop = 1'b0;
482 assign se = tcu_int_se;
483 assign siclk = tcu_int_aclk;
484 assign soclk = tcu_int_bclk;
485
486 tcu_clkstp_ctl_l1clkhdr_ctl_macro clkstp_clkgen
487 ( .l2clk (l2clk),
488 .l1clk (l1clk),
489 .l1en(l1en),
490 .pce_ov(pce_ov),
491 .stop(stop),
492 .se(se) );
493
494 // ********************************************************************
495 // Synchronizer Enable Pulses from cluster header
496 // ********************************************************************
497 tcu_clkstp_ctl_msff_ctl_macro__width_1 clkstp_cmpsync_reg
498 (
499 .scan_in (clkstp_cmpsync_reg_scanin),
500 .scan_out (clkstp_cmpsync_reg_scanout),
501 .l1clk (l1clk),
502 .din (cmp_dr_sync_en ),
503 .dout (cmp_dr_sync_en_local),
504 .siclk(siclk),
505 .soclk(soclk)
506 );
507
508 assign not_mt_mode = ~mt_mode_sync | instr_mt_scan_rti_sync;
509
510 // ********************************************************************
511 // Flop Clock Stop Signals before leaving TCU
512 // ********************************************************************
513 tcu_clkstp_ctl_msff_ctl_macro__en_1__width_1 clkstp_spc0stop_reg
514 ( .scan_in (clkstp_spc0stop_reg_scanin),
515 .scan_out (clkstp_spc0stop_reg_scanout),
516 .en (not_mt_mode),
517 .din (pre_spc0_clk_stop_l),
518 .dout (tcu_spc0_clk_stop_l),
519 .l1clk (l1clk),
520 .siclk(siclk),
521 .soclk(soclk));
522 tcu_clkstp_ctl_msff_ctl_macro__en_1__width_1 clkstp_spc1stop_reg
523 ( .scan_in (clkstp_spc1stop_reg_scanin),
524 .scan_out (clkstp_spc1stop_reg_scanout),
525 .en (not_mt_mode),
526 .din (pre_spc1_clk_stop_l),
527 .dout (tcu_spc1_clk_stop_l),
528 .l1clk (l1clk),
529 .siclk(siclk),
530 .soclk(soclk));
531 tcu_clkstp_ctl_msff_ctl_macro__en_1__width_1 clkstp_spc2stop_reg
532 ( .scan_in (clkstp_spc2stop_reg_scanin),
533 .scan_out (clkstp_spc2stop_reg_scanout),
534 .en (not_mt_mode),
535 .din (pre_spc2_clk_stop_l),
536 .dout (tcu_spc2_clk_stop_l),
537 .l1clk (l1clk),
538 .siclk(siclk),
539 .soclk(soclk));
540 tcu_clkstp_ctl_msff_ctl_macro__en_1__width_1 clkstp_spc3stop_reg
541 ( .scan_in (clkstp_spc3stop_reg_scanin),
542 .scan_out (clkstp_spc3stop_reg_scanout),
543 .en (not_mt_mode),
544 .din (pre_spc3_clk_stop_l),
545 .dout (tcu_spc3_clk_stop_l),
546 .l1clk (l1clk),
547 .siclk(siclk),
548 .soclk(soclk));
549 tcu_clkstp_ctl_msff_ctl_macro__en_1__width_1 clkstp_spc4stop_reg
550 ( .scan_in (clkstp_spc4stop_reg_scanin),
551 .scan_out (clkstp_spc4stop_reg_scanout),
552 .en (not_mt_mode),
553 .din (pre_spc4_clk_stop_l),
554 .dout (tcu_spc4_clk_stop_l),
555 .l1clk (l1clk),
556 .siclk(siclk),
557 .soclk(soclk));
558 tcu_clkstp_ctl_msff_ctl_macro__en_1__width_1 clkstp_spc5stop_reg
559 ( .scan_in (clkstp_spc5stop_reg_scanin),
560 .scan_out (clkstp_spc5stop_reg_scanout),
561 .en (not_mt_mode),
562 .din (pre_spc5_clk_stop_l),
563 .dout (tcu_spc5_clk_stop_l),
564 .l1clk (l1clk),
565 .siclk(siclk),
566 .soclk(soclk));
567 tcu_clkstp_ctl_msff_ctl_macro__en_1__width_1 clkstp_spc6stop_reg
568 ( .scan_in (clkstp_spc6stop_reg_scanin),
569 .scan_out (clkstp_spc6stop_reg_scanout),
570 .en (not_mt_mode),
571 .din (pre_spc6_clk_stop_l),
572 .dout (tcu_spc6_clk_stop_l),
573 .l1clk (l1clk),
574 .siclk(siclk),
575 .soclk(soclk));
576 tcu_clkstp_ctl_msff_ctl_macro__en_1__width_1 clkstp_spc7stop_reg
577 ( .scan_in (clkstp_spc7stop_reg_scanin),
578 .scan_out (clkstp_spc7stop_reg_scanout),
579 .en (not_mt_mode),
580 .din (pre_spc7_clk_stop_l),
581 .dout (tcu_spc7_clk_stop_l),
582 .l1clk (l1clk),
583 .siclk(siclk),
584 .soclk(soclk));
585
586 tcu_clkstp_ctl_msff_ctl_macro__en_1__width_8 clkstp_bnkstop_reg
587 ( .scan_in (clkstp_bnkstop_reg_scanin),
588 .scan_out (clkstp_bnkstop_reg_scanout),
589 .en (not_mt_mode),
590 .din ({pre_bnk0_clk_stop_l,pre_bnk1_clk_stop_l,pre_bnk2_clk_stop_l,pre_bnk3_clk_stop_l,
591 pre_bnk4_clk_stop_l,pre_bnk5_clk_stop_l,pre_bnk6_clk_stop_l,pre_bnk7_clk_stop_l}),
592 .dout ({tcu_bnk0_clk_stop_l,tcu_bnk1_clk_stop_l,tcu_bnk2_clk_stop_l,tcu_bnk3_clk_stop_l,
593 tcu_bnk4_clk_stop_l,tcu_bnk5_clk_stop_l,tcu_bnk6_clk_stop_l,tcu_bnk7_clk_stop_l}),
594 .l1clk (l1clk),
595 .siclk(siclk),
596 .soclk(soclk));
597 tcu_clkstp_ctl_msff_ctl_macro__en_1__width_8 clkstp_l2tstop_reg
598 ( .scan_in (clkstp_l2tstop_reg_scanin),
599 .scan_out (clkstp_l2tstop_reg_scanout),
600 .en (not_mt_mode),
601 .din ({pre_l2t0_clk_stop_l,pre_l2t1_clk_stop_l,pre_l2t2_clk_stop_l,pre_l2t3_clk_stop_l,
602 pre_l2t4_clk_stop_l,pre_l2t5_clk_stop_l,pre_l2t6_clk_stop_l,pre_l2t7_clk_stop_l}),
603 .dout ({tcu_l2t0_clk_stop_l,tcu_l2t1_clk_stop_l,tcu_l2t2_clk_stop_l,tcu_l2t3_clk_stop_l,
604 tcu_l2t4_clk_stop_l,tcu_l2t5_clk_stop_l,tcu_l2t6_clk_stop_l,tcu_l2t7_clk_stop_l}),
605 .l1clk (l1clk),
606 .siclk(siclk),
607 .soclk(soclk));
608
609 tcu_clkstp_ctl_msff_ctl_macro__en_1__width_4 clkstp_mcustop_reg
610 ( .scan_in (clkstp_mcustop_reg_scanin),
611 .scan_out (clkstp_mcustop_reg_scanout),
612 .en (not_mt_mode),
613 .din ({pre_mcu0_clk_stop_l,pre_mcu1_clk_stop_l,pre_mcu2_clk_stop_l,pre_mcu3_clk_stop_l}),
614 .dout ({tcu_mcu0_clk_stop_l,tcu_mcu1_clk_stop_l,tcu_mcu2_clk_stop_l,tcu_mcu3_clk_stop_l}),
615 .l1clk (l1clk),
616 .siclk(siclk),
617 .soclk(soclk));
618 tcu_clkstp_ctl_msff_ctl_macro__en_1__width_4 clkstp_mcuiostop_reg
619 ( .scan_in (clkstp_mcuiostop_reg_scanin),
620 .scan_out (clkstp_mcuiostop_reg_scanout),
621 .en (not_mt_mode),
622 .din ({pre_mcu0_io_clk_stop_l,pre_mcu1_io_clk_stop_l,pre_mcu2_io_clk_stop_l,pre_mcu3_io_clk_stop_l}),
623 .dout ({tcu_mcu0_io_clk_stop_l,tcu_mcu1_io_clk_stop_l,tcu_mcu2_io_clk_stop_l,tcu_mcu3_io_clk_stop_l}),
624 .l1clk (l1clk),
625 .siclk(siclk),
626 .soclk(soclk));
627 tcu_clkstp_ctl_msff_ctl_macro__en_1__width_4 clkstp_mcudrstop_reg
628 ( .scan_in (clkstp_mcudrstop_reg_scanin),
629 .scan_out (clkstp_mcudrstop_reg_scanout),
630 .en (cmp_dr_sync_en_local),
631 .din ({pre_mcu0_dr_clk_stop_l,pre_mcu1_dr_clk_stop_l,pre_mcu2_dr_clk_stop_l,pre_mcu3_dr_clk_stop_l}),
632 .dout ({tcu_mcu0_dr_clk_stop_l,tcu_mcu1_dr_clk_stop_l,tcu_mcu2_dr_clk_stop_l,tcu_mcu3_dr_clk_stop_l}),
633 .l1clk (l1clk),
634 .siclk(siclk),
635 .soclk(soclk));
636 tcu_clkstp_ctl_msff_ctl_macro__en_1__width_4 clkstp_mcufbdstop_reg
637 ( .scan_in (clkstp_mcufbdstop_reg_scanin),
638 .scan_out (clkstp_mcufbdstop_reg_scanout),
639 .en (not_mt_mode),
640 .din ({pre_mcu0_fbd_clk_stop_l,pre_mcu1_fbd_clk_stop_l,pre_mcu2_fbd_clk_stop_l,pre_mcu3_fbd_clk_stop_l}),
641 .dout ({tcu_mcu0_fbd_clk_stop_l,tcu_mcu1_fbd_clk_stop_l,tcu_mcu2_fbd_clk_stop_l,tcu_mcu3_fbd_clk_stop_l}),
642 .l1clk (l1clk),
643 .siclk(siclk),
644 .soclk(soclk));
645
646 tcu_clkstp_ctl_msff_ctl_macro__en_1__width_1 clkstp_soc0stop_reg
647 ( .scan_in (clkstp_soc0stop_reg_scanin),
648 .scan_out (clkstp_soc0stop_reg_scanout),
649 .en (not_mt_mode),
650 .din (pre_soc0_clk_stop_l),
651 .dout (tcu_soc0_clk_stop_l),
652 .l1clk (l1clk),
653 .siclk(siclk),
654 .soclk(soclk));
655 tcu_clkstp_ctl_msff_ctl_macro__en_1__width_1 clkstp_soc0iostop_reg
656 ( .scan_in (clkstp_soc0iostop_reg_scanin),
657 .scan_out (clkstp_soc0iostop_reg_scanout),
658 .en (not_mt_mode),
659 .din (pre_soc0_io_clk_stop_l),
660 .dout (tcu_soc0_io_clk_stop_l),
661 .l1clk (l1clk),
662 .siclk(siclk),
663 .soclk(soclk));
664
665 tcu_clkstp_ctl_msff_ctl_macro__en_1__width_1 clkstp_soc1iostop_reg
666 ( .scan_in (clkstp_soc1iostop_reg_scanin),
667 .scan_out (clkstp_soc1iostop_reg_scanout),
668 .en (not_mt_mode),
669 .din (pre_soc1_io_clk_stop_l),
670 .dout (tcu_soc1_io_clk_stop_l),
671 .l1clk (l1clk),
672 .siclk(siclk),
673 .soclk(soclk));
674 tcu_clkstp_ctl_msff_ctl_macro__en_1__width_1 clkstp_soc2iostop_reg
675 ( .scan_in (clkstp_soc2iostop_reg_scanin),
676 .scan_out (clkstp_soc2iostop_reg_scanout),
677 .en (not_mt_mode),
678 .din (pre_soc2_io_clk_stop_l),
679 .dout (tcu_soc2_io_clk_stop_l),
680 .l1clk (l1clk),
681 .siclk(siclk),
682 .soclk(soclk));
683
684 tcu_clkstp_ctl_msff_ctl_macro__en_1__width_1 clkstp_soc3stop_reg
685 ( .scan_in (clkstp_soc3stop_reg_scanin),
686 .scan_out (clkstp_soc3stop_reg_scanout),
687 .en (not_mt_mode),
688 .din (pre_soc3_clk_stop_l),
689 .dout (tcu_soc3_clk_stop_l),
690 .l1clk (l1clk),
691 .siclk(siclk),
692 .soclk(soclk));
693 tcu_clkstp_ctl_msff_ctl_macro__en_1__width_1 clkstp_soc3iostop_reg
694 ( .scan_in (clkstp_soc3iostop_reg_scanin),
695 .scan_out (clkstp_soc3iostop_reg_scanout),
696 .en (not_mt_mode),
697 .din (pre_soc3_io_clk_stop_l),
698 .dout (tcu_soc3_io_clk_stop_l),
699 .l1clk (l1clk),
700 .siclk(siclk),
701 .soclk(soclk));
702
703 // Invert din and dout so flush to zero puts the flops to '1'
704 assign pre_spc0_clk_stop_l = ~pre_spc0_clk_stop | turn_off_clk_stop;
705 assign pre_spc1_clk_stop_l = ~pre_spc1_clk_stop | turn_off_clk_stop;
706 assign pre_spc2_clk_stop_l = ~pre_spc2_clk_stop | turn_off_clk_stop;
707 assign pre_spc3_clk_stop_l = ~pre_spc3_clk_stop | turn_off_clk_stop;
708 assign pre_spc4_clk_stop_l = ~pre_spc4_clk_stop | turn_off_clk_stop;
709 assign pre_spc5_clk_stop_l = ~pre_spc5_clk_stop | turn_off_clk_stop;
710 assign pre_spc6_clk_stop_l = ~pre_spc6_clk_stop | turn_off_clk_stop;
711 assign pre_spc7_clk_stop_l = ~pre_spc7_clk_stop | turn_off_clk_stop;
712 assign tcu_spc0_clk_stop = ~tcu_spc0_clk_stop_l;
713 assign tcu_spc1_clk_stop = ~tcu_spc1_clk_stop_l;
714 assign tcu_spc2_clk_stop = ~tcu_spc2_clk_stop_l;
715 assign tcu_spc3_clk_stop = ~tcu_spc3_clk_stop_l;
716 assign tcu_spc4_clk_stop = ~tcu_spc4_clk_stop_l;
717 assign tcu_spc5_clk_stop = ~tcu_spc5_clk_stop_l;
718 assign tcu_spc6_clk_stop = ~tcu_spc6_clk_stop_l;
719 assign tcu_spc7_clk_stop = ~tcu_spc7_clk_stop_l;
720
721 assign pre_bnk0_clk_stop_l = ~pre_bnk0_clk_stop | turn_off_clk_stop;
722 assign pre_bnk1_clk_stop_l = ~pre_bnk1_clk_stop | turn_off_clk_stop;
723 assign pre_bnk2_clk_stop_l = ~pre_bnk2_clk_stop | turn_off_clk_stop;
724 assign pre_bnk3_clk_stop_l = ~pre_bnk3_clk_stop | turn_off_clk_stop;
725 assign pre_bnk4_clk_stop_l = ~pre_bnk4_clk_stop | turn_off_clk_stop;
726 assign pre_bnk5_clk_stop_l = ~pre_bnk5_clk_stop | turn_off_clk_stop;
727 assign pre_bnk6_clk_stop_l = ~pre_bnk6_clk_stop | turn_off_clk_stop;
728 assign pre_bnk7_clk_stop_l = ~pre_bnk7_clk_stop | turn_off_clk_stop;
729 assign tcu_bnk0_clk_stop = ~tcu_bnk0_clk_stop_l;
730 assign tcu_bnk1_clk_stop = ~tcu_bnk1_clk_stop_l;
731 assign tcu_bnk2_clk_stop = ~tcu_bnk2_clk_stop_l;
732 assign tcu_bnk3_clk_stop = ~tcu_bnk3_clk_stop_l;
733 assign tcu_bnk4_clk_stop = ~tcu_bnk4_clk_stop_l;
734 assign tcu_bnk5_clk_stop = ~tcu_bnk5_clk_stop_l;
735 assign tcu_bnk6_clk_stop = ~tcu_bnk6_clk_stop_l;
736 assign tcu_bnk7_clk_stop = ~tcu_bnk7_clk_stop_l;
737 assign pre_l2t0_clk_stop_l = ~pre_l2t0_clk_stop | turn_off_clk_stop;
738 assign pre_l2t1_clk_stop_l = ~pre_l2t1_clk_stop | turn_off_clk_stop;
739 assign pre_l2t2_clk_stop_l = ~pre_l2t2_clk_stop | turn_off_clk_stop;
740 assign pre_l2t3_clk_stop_l = ~pre_l2t3_clk_stop | turn_off_clk_stop;
741 assign pre_l2t4_clk_stop_l = ~pre_l2t4_clk_stop | turn_off_clk_stop;
742 assign pre_l2t5_clk_stop_l = ~pre_l2t5_clk_stop | turn_off_clk_stop;
743 assign pre_l2t6_clk_stop_l = ~pre_l2t6_clk_stop | turn_off_clk_stop;
744 assign pre_l2t7_clk_stop_l = ~pre_l2t7_clk_stop | turn_off_clk_stop;
745 assign tcu_l2t0_clk_stop = ~tcu_l2t0_clk_stop_l;
746 assign tcu_l2t1_clk_stop = ~tcu_l2t1_clk_stop_l;
747 assign tcu_l2t2_clk_stop = ~tcu_l2t2_clk_stop_l;
748 assign tcu_l2t3_clk_stop = ~tcu_l2t3_clk_stop_l;
749 assign tcu_l2t4_clk_stop = ~tcu_l2t4_clk_stop_l;
750 assign tcu_l2t5_clk_stop = ~tcu_l2t5_clk_stop_l;
751 assign tcu_l2t6_clk_stop = ~tcu_l2t6_clk_stop_l;
752 assign tcu_l2t7_clk_stop = ~tcu_l2t7_clk_stop_l;
753
754 assign pre_mcu0_clk_stop_l = ~pre_mcu0_clk_stop | turn_off_clk_stop;
755 assign pre_mcu0_io_clk_stop_l = ~pre_mcu0_io_clk_stop | turn_off_clk_stop;
756 assign pre_mcu0_dr_clk_stop_l = ~pre_mcu0_dr_clk_stop | turn_off_clk_stop;
757 assign pre_mcu0_fbd_clk_stop_l = ~pre_mcu0_fbd_clk_stop | turn_off_clk_stop;
758 assign tcu_mcu0_clk_stop = ~tcu_mcu0_clk_stop_l;
759 assign tcu_mcu0_io_clk_stop = ~tcu_mcu0_io_clk_stop_l;
760 assign tcu_mcu0_dr_clk_stop = ~tcu_mcu0_dr_clk_stop_l;
761 assign tcu_mcu0_fbd_clk_stop = ~tcu_mcu0_fbd_clk_stop_l;
762 assign pre_mcu1_clk_stop_l = ~pre_mcu1_clk_stop | turn_off_clk_stop;
763 assign pre_mcu1_io_clk_stop_l = ~pre_mcu1_io_clk_stop | turn_off_clk_stop;
764 assign pre_mcu1_dr_clk_stop_l = ~pre_mcu1_dr_clk_stop | turn_off_clk_stop;
765 assign pre_mcu1_fbd_clk_stop_l = ~pre_mcu1_fbd_clk_stop | turn_off_clk_stop;
766 assign tcu_mcu1_clk_stop = ~tcu_mcu1_clk_stop_l;
767 assign tcu_mcu1_io_clk_stop = ~tcu_mcu1_io_clk_stop_l;
768 assign tcu_mcu1_dr_clk_stop = ~tcu_mcu1_dr_clk_stop_l;
769 assign tcu_mcu1_fbd_clk_stop = ~tcu_mcu1_fbd_clk_stop_l;
770 assign pre_mcu2_clk_stop_l = ~pre_mcu2_clk_stop | turn_off_clk_stop;
771 assign pre_mcu2_io_clk_stop_l = ~pre_mcu2_io_clk_stop | turn_off_clk_stop;
772 assign pre_mcu2_dr_clk_stop_l = ~pre_mcu2_dr_clk_stop | turn_off_clk_stop;
773 assign pre_mcu2_fbd_clk_stop_l = ~pre_mcu2_fbd_clk_stop | turn_off_clk_stop;
774 assign tcu_mcu2_clk_stop = ~tcu_mcu2_clk_stop_l;
775 assign tcu_mcu2_io_clk_stop = ~tcu_mcu2_io_clk_stop_l;
776 assign tcu_mcu2_dr_clk_stop = ~tcu_mcu2_dr_clk_stop_l;
777 assign tcu_mcu2_fbd_clk_stop = ~tcu_mcu2_fbd_clk_stop_l;
778 assign pre_mcu3_clk_stop_l = ~pre_mcu3_clk_stop | turn_off_clk_stop;
779 assign pre_mcu3_io_clk_stop_l = ~pre_mcu3_io_clk_stop | turn_off_clk_stop;
780 assign pre_mcu3_dr_clk_stop_l = ~pre_mcu3_dr_clk_stop | turn_off_clk_stop;
781 assign pre_mcu3_fbd_clk_stop_l = ~pre_mcu3_fbd_clk_stop | turn_off_clk_stop;
782 assign tcu_mcu3_clk_stop = ~tcu_mcu3_clk_stop_l;
783 assign tcu_mcu3_io_clk_stop = ~tcu_mcu3_io_clk_stop_l;
784 assign tcu_mcu3_dr_clk_stop = ~tcu_mcu3_dr_clk_stop_l;
785 assign tcu_mcu3_fbd_clk_stop = ~tcu_mcu3_fbd_clk_stop_l;
786
787 assign pre_soc0_clk_stop_l = ~pre_soc0_clk_stop | turn_off_clk_stop;
788 assign pre_soc0_io_clk_stop_l = ~pre_soc0_io_clk_stop | turn_off_clk_stop;
789 assign tcu_soc0_clk_stop = ~tcu_soc0_clk_stop_l;
790 assign tcu_soc0_io_clk_stop = ~tcu_soc0_io_clk_stop_l;
791 assign pre_soc1_io_clk_stop_l = ~pre_soc1_io_clk_stop | turn_off_clk_stop;
792 assign tcu_soc1_io_clk_stop = ~tcu_soc1_io_clk_stop_l;
793 assign pre_soc2_io_clk_stop_l = ~pre_soc2_io_clk_stop | turn_off_clk_stop;
794 assign tcu_soc2_io_clk_stop = ~tcu_soc2_io_clk_stop_l;
795 assign pre_soc3_clk_stop_l = ~pre_soc3_clk_stop | turn_off_clk_stop;
796 assign pre_soc3_io_clk_stop_l = ~pre_soc3_io_clk_stop | turn_off_clk_stop;
797 assign tcu_soc3_clk_stop = ~tcu_soc3_clk_stop_l;
798 assign tcu_soc3_io_clk_stop = ~tcu_soc3_io_clk_stop_l;
799
800
801 // ********************************************************************
802 // End of Flop Clock Stop Signals before leaving TCU
803 // ********************************************************************
804
805
806 // Assign clock stops to outputs
807 assign tcu_l2d0_clk_stop = tcu_bnk0_clk_stop;
808 assign tcu_l2d1_clk_stop = tcu_bnk1_clk_stop;
809 assign tcu_l2d2_clk_stop = tcu_bnk2_clk_stop;
810 assign tcu_l2d3_clk_stop = tcu_bnk3_clk_stop;
811 assign tcu_l2d4_clk_stop = tcu_bnk4_clk_stop;
812 assign tcu_l2d5_clk_stop = tcu_bnk5_clk_stop;
813 assign tcu_l2d6_clk_stop = tcu_bnk6_clk_stop;
814 assign tcu_l2d7_clk_stop = tcu_bnk7_clk_stop;
815 assign tcu_l2b0_clk_stop = tcu_bnk0_clk_stop;
816 assign tcu_l2b1_clk_stop = tcu_bnk1_clk_stop;
817 assign tcu_l2b2_clk_stop = tcu_bnk2_clk_stop;
818 assign tcu_l2b3_clk_stop = tcu_bnk3_clk_stop;
819 assign tcu_l2b4_clk_stop = tcu_bnk4_clk_stop;
820 assign tcu_l2b5_clk_stop = tcu_bnk5_clk_stop;
821 assign tcu_l2b6_clk_stop = tcu_bnk6_clk_stop;
822 assign tcu_l2b7_clk_stop = tcu_bnk7_clk_stop;
823
824 assign tcu_ccx_clk_stop = tcu_soc0_clk_stop;
825 assign tcu_efu_clk_stop = tcu_soc0_clk_stop;
826 assign tcu_sii_clk_stop = tcu_soc0_clk_stop;
827 assign tcu_sio_clk_stop = tcu_soc0_clk_stop;
828 assign tcu_ncu_clk_stop = tcu_soc0_clk_stop;
829
830 assign tcu_sii_io_clk_stop = tcu_soc0_io_clk_stop;
831 assign tcu_sio_io_clk_stop = tcu_soc0_io_clk_stop;
832 assign tcu_ncu_io_clk_stop = tcu_soc0_io_clk_stop;
833 assign tcu_efu_io_clk_stop = tcu_soc0_io_clk_stop;
834 assign tcu_db0_clk_stop = tcu_soc0_io_clk_stop;
835 assign tcu_db1_clk_stop = tcu_soc0_io_clk_stop;
836 assign tcu_mio_clk_stop = tcu_soc0_io_clk_stop;
837
838 assign tcu_rdp_io_clk_stop = tcu_soc1_io_clk_stop;
839 assign tcu_mac_io_clk_stop = tcu_soc1_io_clk_stop;
840 assign tcu_rtx_io_clk_stop = tcu_soc1_io_clk_stop;
841 assign tcu_tds_io_clk_stop = tcu_soc1_io_clk_stop;
842
843 assign tcu_dmu_io_clk_stop = tcu_soc2_io_clk_stop;
844
845 assign tcu_peu_pc_clk_stop = tcu_soc3_clk_stop;
846 assign tcu_peu_io_clk_stop = tcu_soc3_io_clk_stop;
847
848 // this is synchronizer for JTAG Macrotest instruction
849 cl_sc1_clksyncff_4x sync_ff_instr_mt_scan
850 (.si (sync_ff_instr_mt_scan_scanin),
851 .so (sync_ff_instr_mt_scan_scanout),
852 .l1clk (l1clk),
853 .d (instr_mt_scan_rti),
854 .q (instr_mt_scan_rti_sync),
855 .siclk(siclk),
856 .soclk(soclk)
857 );
858
859 // load '1' to turn off clock stop, when enter jtag macrotest
860 assign turn_off_clk_stop = instr_mt_scan_rti_sync;
861
862
863// fixscan start:
864assign clkstp_cmpsync_reg_scanin = scan_in ;
865assign clkstp_spc0stop_reg_scanin = clkstp_cmpsync_reg_scanout;
866assign clkstp_spc1stop_reg_scanin = clkstp_spc0stop_reg_scanout;
867assign clkstp_spc2stop_reg_scanin = clkstp_spc1stop_reg_scanout;
868assign clkstp_spc3stop_reg_scanin = clkstp_spc2stop_reg_scanout;
869assign clkstp_spc4stop_reg_scanin = clkstp_spc3stop_reg_scanout;
870assign clkstp_spc5stop_reg_scanin = clkstp_spc4stop_reg_scanout;
871assign clkstp_spc6stop_reg_scanin = clkstp_spc5stop_reg_scanout;
872assign clkstp_spc7stop_reg_scanin = clkstp_spc6stop_reg_scanout;
873assign clkstp_bnkstop_reg_scanin = clkstp_spc7stop_reg_scanout;
874assign clkstp_l2tstop_reg_scanin = clkstp_bnkstop_reg_scanout;
875assign clkstp_mcustop_reg_scanin = clkstp_l2tstop_reg_scanout;
876assign clkstp_mcuiostop_reg_scanin = clkstp_mcustop_reg_scanout;
877assign clkstp_mcudrstop_reg_scanin = clkstp_mcuiostop_reg_scanout;
878assign clkstp_mcufbdstop_reg_scanin = clkstp_mcudrstop_reg_scanout;
879assign clkstp_soc0stop_reg_scanin = clkstp_mcufbdstop_reg_scanout;
880assign clkstp_soc0iostop_reg_scanin = clkstp_soc0stop_reg_scanout;
881assign clkstp_soc1iostop_reg_scanin = clkstp_soc0iostop_reg_scanout;
882assign clkstp_soc2iostop_reg_scanin = clkstp_soc1iostop_reg_scanout;
883assign clkstp_soc3stop_reg_scanin = clkstp_soc2iostop_reg_scanout;
884assign clkstp_soc3iostop_reg_scanin = clkstp_soc3stop_reg_scanout;
885assign sync_ff_instr_mt_scan_scanin = clkstp_soc3iostop_reg_scanout;
886assign scan_out = sync_ff_instr_mt_scan_scanout;
887// fixscan end:
888endmodule
889
890
891
892
893
894
895// any PARAMS parms go into naming of macro
896
897module tcu_clkstp_ctl_l1clkhdr_ctl_macro (
898 l2clk,
899 l1en,
900 pce_ov,
901 stop,
902 se,
903 l1clk);
904
905
906 input l2clk;
907 input l1en;
908 input pce_ov;
909 input stop;
910 input se;
911 output l1clk;
912
913
914
915
916
917cl_sc1_l1hdr_8x c_0 (
918
919
920 .l2clk(l2clk),
921 .pce(l1en),
922 .l1clk(l1clk),
923 .se(se),
924 .pce_ov(pce_ov),
925 .stop(stop)
926);
927
928
929
930endmodule
931
932
933
934
935
936
937
938
939
940
941
942
943
944// any PARAMS parms go into naming of macro
945
946module tcu_clkstp_ctl_msff_ctl_macro__width_1 (
947 din,
948 l1clk,
949 scan_in,
950 siclk,
951 soclk,
952 dout,
953 scan_out);
954wire [0:0] fdin;
955
956 input [0:0] din;
957 input l1clk;
958 input scan_in;
959
960
961 input siclk;
962 input soclk;
963
964 output [0:0] dout;
965 output scan_out;
966assign fdin[0:0] = din[0:0];
967
968
969
970
971
972
973dff #(1) d0_0 (
974.l1clk(l1clk),
975.siclk(siclk),
976.soclk(soclk),
977.d(fdin[0:0]),
978.si(scan_in),
979.so(scan_out),
980.q(dout[0:0])
981);
982
983
984
985
986
987
988
989
990
991
992
993
994endmodule
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008// any PARAMS parms go into naming of macro
1009
1010module tcu_clkstp_ctl_msff_ctl_macro__en_1__width_1 (
1011 din,
1012 en,
1013 l1clk,
1014 scan_in,
1015 siclk,
1016 soclk,
1017 dout,
1018 scan_out);
1019wire [0:0] fdin;
1020
1021 input [0:0] din;
1022 input en;
1023 input l1clk;
1024 input scan_in;
1025
1026
1027 input siclk;
1028 input soclk;
1029
1030 output [0:0] dout;
1031 output scan_out;
1032assign fdin[0:0] = (din[0:0] & {1{en}}) | (dout[0:0] & ~{1{en}});
1033
1034
1035
1036
1037
1038
1039dff #(1) d0_0 (
1040.l1clk(l1clk),
1041.siclk(siclk),
1042.soclk(soclk),
1043.d(fdin[0:0]),
1044.si(scan_in),
1045.so(scan_out),
1046.q(dout[0:0])
1047);
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060endmodule
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074// any PARAMS parms go into naming of macro
1075
1076module tcu_clkstp_ctl_msff_ctl_macro__en_1__width_8 (
1077 din,
1078 en,
1079 l1clk,
1080 scan_in,
1081 siclk,
1082 soclk,
1083 dout,
1084 scan_out);
1085wire [7:0] fdin;
1086wire [6:0] so;
1087
1088 input [7:0] din;
1089 input en;
1090 input l1clk;
1091 input scan_in;
1092
1093
1094 input siclk;
1095 input soclk;
1096
1097 output [7:0] dout;
1098 output scan_out;
1099assign fdin[7:0] = (din[7:0] & {8{en}}) | (dout[7:0] & ~{8{en}});
1100
1101
1102
1103
1104
1105
1106dff #(8) d0_0 (
1107.l1clk(l1clk),
1108.siclk(siclk),
1109.soclk(soclk),
1110.d(fdin[7:0]),
1111.si({scan_in,so[6:0]}),
1112.so({so[6:0],scan_out}),
1113.q(dout[7:0])
1114);
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127endmodule
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141// any PARAMS parms go into naming of macro
1142
1143module tcu_clkstp_ctl_msff_ctl_macro__en_1__width_4 (
1144 din,
1145 en,
1146 l1clk,
1147 scan_in,
1148 siclk,
1149 soclk,
1150 dout,
1151 scan_out);
1152wire [3:0] fdin;
1153wire [2:0] so;
1154
1155 input [3:0] din;
1156 input en;
1157 input l1clk;
1158 input scan_in;
1159
1160
1161 input siclk;
1162 input soclk;
1163
1164 output [3:0] dout;
1165 output scan_out;
1166assign fdin[3:0] = (din[3:0] & {4{en}}) | (dout[3:0] & ~{4{en}});
1167
1168
1169
1170
1171
1172
1173dff #(4) d0_0 (
1174.l1clk(l1clk),
1175.siclk(siclk),
1176.soclk(soclk),
1177.d(fdin[3:0]),
1178.si({scan_in,so[2:0]}),
1179.so({so[2:0],scan_out}),
1180.q(dout[3:0])
1181);
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194endmodule
1195
1196
1197
1198
1199
1200
1201
1202