Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / design / sys / iop / spc / rtl / spc_msf0_dp.v
CommitLineData
86530b38
AT
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T2 Processor File: spc_msf0_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 ============================================
35module spc_msf0_dp (
36 l2clk,
37 tcu_pce_ov,
38 spc_aclk,
39 spc_bclk,
40 tcu_scan_en,
41 tcu_se_scancollar_out,
42 tcu_atpg_mode,
43 scan_in,
44 lb_lbist_running,
45 slow_cmp_sync_en,
46 cmp_slow_sync_en,
47 ncu_cmp_tick_enable,
48 ncu_wmr_vec_mask,
49 tcu_ss_mode,
50 tcu_do_mode,
51 tcu_mbist_user_mode,
52 tcu_mbist_bisi_en,
53 tcu_ss_request,
54 tcu_core_running,
55 tcu_shscan_clk_stop,
56 tcu_shscanid,
57 efu_spc_fuse_data,
58 efu_spc_fuse_ixfer_en,
59 efu_spc_fuse_dxfer_en,
60 efu_spc_fuse_iclr,
61 efu_spc_fuse_dclr,
62 spc_efu_fuse_ddata,
63 spc_efu_fuse_idata,
64 spc_efu_fuse_ixfer_en,
65 spc_efu_fuse_dxfer_en,
66 efu_spc_fuse_data_buf,
67 efu_spc_fuse_ixfer_en_buf,
68 efu_spc_fuse_dxfer_en_buf,
69 efu_spc_fuse_iclr_buf,
70 efu_spc_fuse_dclr_buf,
71 spc_efu_fuse_ddata_buf,
72 spc_efu_fuse_idata_buf,
73 spc_efu_fuse_ixfer_en_buf,
74 spc_efu_fuse_dxfer_en_buf,
75 tlu_core_running_status,
76 tlu_ss_complete,
77 tlu_hardstop_request,
78 tlu_softstop_request,
79 tlu_trigger_pulse,
80 tlu_dbg_instr_cmt_grp0,
81 tlu_dbg_instr_cmt_grp1,
82 scan_out,
83 msf0_cmp_tick_enable,
84 msf0_wmr_vec_mask,
85 msf0_ss_mode,
86 msf0_do_mode,
87 msf0_ss_request,
88 msf0_core_running,
89 msf0_shscan_clk_stop,
90 msf0_shscanid,
91 msf0_mbist_user_mode_ff,
92 msf0_mbist_bisi_en_ff,
93 msf0_atpg_mode_buf,
94 spc_core_running_status,
95 spc_ss_complete,
96 spc_hardstop_request,
97 spc_softstop_request,
98 spc_trigger_pulse,
99 spc_dbg_instr_cmt_grp0,
100 spc_dbg_instr_cmt_grp1,
101 power_throttle,
102 power_throttle_buf);
103wire stop;
104wire en;
105wire clk;
106wire pce_ov;
107wire se;
108wire siclk;
109wire soclk;
110wire bank0_lat_scanin;
111wire bank0_lat_scanout;
112wire cmp_slow_sync_en_ff;
113wire [7:0] tlu_core_running_status_rep0;
114wire tlu_ss_complete_rep0;
115wire tlu_hardstop_request_rep0;
116wire tlu_softstop_request_rep0;
117wire tlu_trigger_pulse_rep0;
118wire [1:0] tlu_dbg_instr_cmt_grp0_rep0;
119wire [1:0] tlu_dbg_instr_cmt_grp1_rep0;
120wire bank1_lat_scanin;
121wire bank1_lat_scanout;
122wire tcu_ss_request_rep0;
123wire bank2_lat_scanin;
124wire bank2_lat_scanout;
125wire slow_cmp_sync_en_ff;
126wire efu_spc_fuse_data_bufin;
127wire efu_spc_fuse_ixfer_en_bufin;
128wire efu_spc_fuse_dxfer_en_bufin;
129wire efu_spc_fuse_iclr_bufin;
130wire efu_spc_fuse_dclr_bufin;
131wire lb_lbist_running_n1;
132wire lb_efu_spc_fuse_data;
133wire lb_efu_spc_fuse_ixfer_en;
134wire lb_efu_spc_fuse_dxfer_en;
135wire lb_efu_spc_fuse_iclr;
136wire lb_efu_spc_fuse_dclr;
137wire ncu_cmp_tick_enable_rep0;
138wire [7:0] tcu_core_running_rep0;
139wire ncu_wmr_vec_mask_rep0;
140wire bank3_lat_scanin;
141wire bank3_lat_scanout;
142wire tcu_ss_mode_rep0;
143wire tcu_mbist_user_mode_rep0;
144wire tcu_mbist_bisi_en_rep0;
145wire tcu_do_mode_rep0;
146wire bank4_lat_scanin;
147wire bank4_lat_scanout;
148wire [2:0] tcu_shscanid_rep0;
149wire tcu_shscan_clk_stop_rep0;
150wire bank5_lat_scanin;
151wire bank5_lat_scanout;
152
153
154input l2clk;
155input tcu_pce_ov;
156input spc_aclk;
157input spc_bclk;
158input tcu_scan_en;
159input tcu_se_scancollar_out;
160input tcu_atpg_mode;
161input scan_in;
162
163input lb_lbist_running;
164
165input slow_cmp_sync_en;
166input cmp_slow_sync_en;
167
168// Core inputs before the MSFF
169input ncu_cmp_tick_enable;
170input ncu_wmr_vec_mask;
171input tcu_ss_mode;
172input tcu_do_mode;
173input tcu_mbist_user_mode;
174input tcu_mbist_bisi_en;
175input tcu_ss_request;
176input [7:0] tcu_core_running;
177input tcu_shscan_clk_stop;
178input [2:0] tcu_shscanid;
179
180input efu_spc_fuse_data;
181input efu_spc_fuse_ixfer_en;
182input efu_spc_fuse_dxfer_en;
183input efu_spc_fuse_iclr;
184input efu_spc_fuse_dclr;
185
186output spc_efu_fuse_ddata;
187output spc_efu_fuse_idata;
188output spc_efu_fuse_ixfer_en;
189output spc_efu_fuse_dxfer_en;
190
191output efu_spc_fuse_data_buf;
192output efu_spc_fuse_ixfer_en_buf;
193output efu_spc_fuse_dxfer_en_buf;
194output efu_spc_fuse_iclr_buf;
195output efu_spc_fuse_dclr_buf;
196
197input spc_efu_fuse_ddata_buf;
198input spc_efu_fuse_idata_buf;
199input spc_efu_fuse_ixfer_en_buf;
200input spc_efu_fuse_dxfer_en_buf;
201
202// Core outputs before the MSFF
203input [7:0] tlu_core_running_status;
204input tlu_ss_complete;
205input tlu_hardstop_request;
206input tlu_softstop_request;
207input tlu_trigger_pulse;
208input [1:0] tlu_dbg_instr_cmt_grp0;
209input [1:0] tlu_dbg_instr_cmt_grp1;
210
211output scan_out;
212
213// Core inputs after the MSFF
214output msf0_cmp_tick_enable;
215output msf0_wmr_vec_mask;
216output msf0_ss_mode;
217output msf0_do_mode;
218output msf0_ss_request;
219output [7:0] msf0_core_running;
220output msf0_shscan_clk_stop;
221output [2:0] msf0_shscanid;
222output msf0_mbist_user_mode_ff;
223output msf0_mbist_bisi_en_ff;
224output msf0_atpg_mode_buf;
225
226// Core outputs after the MSFF
227output [7:0] spc_core_running_status;
228output spc_ss_complete;
229output spc_hardstop_request;
230output spc_softstop_request;
231output spc_trigger_pulse;
232output [1:0] spc_dbg_instr_cmt_grp0;
233output [1:0] spc_dbg_instr_cmt_grp1;
234
235input [2:0] power_throttle;
236output [2:0] power_throttle_buf;
237
238
239//////////////////////////////////////////////////////////////////////
240
241assign stop = 1'b0;
242assign en = 1'b1;
243assign clk = l2clk;
244
245assign pce_ov = tcu_pce_ov;
246assign se = tcu_scan_en;
247assign siclk = spc_aclk;
248assign soclk = spc_bclk;
249
250//////////////////////////////////////////////////////////////////////
251
252
253spc_msf0_dpmsff_macro__stack_10r__width_8 bank0_lat (
254 .scan_in(bank0_lat_scanin),
255 .scan_out(bank0_lat_scanout),
256 .en (cmp_slow_sync_en_ff),
257 .din (tlu_core_running_status [7:0] ),
258 .dout (tlu_core_running_status_rep0 [7:0] ),
259 .clk(clk),
260 .se(se),
261 .siclk(siclk),
262 .soclk(soclk),
263 .pce_ov(pce_ov),
264 .stop(stop)
265);
266
267spc_msf0_dpbuff_macro__dbuff_32x__rep_1__stack_none__width_8 bank0_rep (
268 .din(tlu_core_running_status_rep0[7:0]),
269 .dout(spc_core_running_status[7:0])
270);
271
272//inv_macro bank1_inv (width=1) (
273// .din(lb_lbist_running),
274// .dout(lb_lbist_running_n)
275//);
276
277//buff_macro bank1_rep0 (width=3,stack=none,dbuff=16x,rep=1) (
278// .din (power_throttle[2:0]),
279// .dout (power_throttle_bufin[2:0])
280//);
281
282//and_macro bank1_and (width=3) (
283// .din0 (power_throttle_bufin[2:0]),
284// .din1 ({3 {lb_lbist_running_n}}),
285// .dout (lb_power_throttle[2:0])
286//);
287
288spc_msf0_dpbuff_macro__dbuff_32x__rep_1__stack_none__width_11 bank1_rep1 (
289 .din ({tlu_ss_complete_rep0 ,
290 tlu_hardstop_request_rep0 ,
291 tlu_softstop_request_rep0 ,
292 power_throttle[2:0] ,
293 tlu_trigger_pulse_rep0 ,
294 tlu_dbg_instr_cmt_grp0_rep0 [1:0],
295 tlu_dbg_instr_cmt_grp1_rep0 [1:0]}),
296 .dout ({spc_ss_complete ,
297 spc_hardstop_request ,
298 spc_softstop_request ,
299 power_throttle_buf[2:0] ,
300 spc_trigger_pulse ,
301 spc_dbg_instr_cmt_grp0 [1:0],
302 spc_dbg_instr_cmt_grp1 [1:0]})
303);
304
305spc_msf0_dpmsff_macro__stack_8r__width_8 bank1_lat (
306 .scan_in(bank1_lat_scanin),
307 .scan_out(bank1_lat_scanout),
308 .din ({tlu_ss_complete ,
309 tlu_hardstop_request ,
310 tlu_softstop_request ,
311 tlu_trigger_pulse ,
312 tlu_dbg_instr_cmt_grp0 [1:0],
313 tlu_dbg_instr_cmt_grp1 [1:0]}),
314 .dout ({tlu_ss_complete_rep0 ,
315 tlu_hardstop_request_rep0 ,
316 tlu_softstop_request_rep0 ,
317 tlu_trigger_pulse_rep0 ,
318 tlu_dbg_instr_cmt_grp0_rep0 [1:0],
319 tlu_dbg_instr_cmt_grp1_rep0 [1:0]}),
320 .clk(clk),
321 .en(en),
322 .se(se),
323 .siclk(siclk),
324 .soclk(soclk),
325 .pce_ov(pce_ov),
326 .stop(stop)
327);
328
329spc_msf0_dpbuff_macro__dbuff_32x__rep_1__stack_none__width_1 bank2_rep1 (
330 .din (tcu_ss_request ),
331 .dout (tcu_ss_request_rep0 )
332);
333
334spc_msf0_dpmsff_macro__stack_8r__width_3 bank2_lat (
335 .scan_in(bank2_lat_scanin),
336 .scan_out(bank2_lat_scanout),
337 .se ( tcu_se_scancollar_out ),
338 .din ({slow_cmp_sync_en ,
339 cmp_slow_sync_en ,
340 tcu_ss_request_rep0 }),
341 .dout ({slow_cmp_sync_en_ff ,
342 cmp_slow_sync_en_ff ,
343 msf0_ss_request }),
344 .clk(clk),
345 .en(en),
346 .siclk(siclk),
347 .soclk(soclk),
348 .pce_ov(pce_ov),
349 .stop(stop)
350);
351
352spc_msf0_dpbuff_macro__dbuff_16x__rep_1__stack_none__width_5 bank3_rep0 (
353 .din ({efu_spc_fuse_data,
354 efu_spc_fuse_ixfer_en,
355 efu_spc_fuse_dxfer_en,
356 efu_spc_fuse_iclr,
357 efu_spc_fuse_dclr}),
358 .dout ({efu_spc_fuse_data_bufin,
359 efu_spc_fuse_ixfer_en_bufin,
360 efu_spc_fuse_dxfer_en_bufin,
361 efu_spc_fuse_iclr_bufin,
362 efu_spc_fuse_dclr_bufin})
363);
364
365spc_msf0_dpinv_macro__width_1 bank3_inv (
366 .din(lb_lbist_running),
367 .dout(lb_lbist_running_n1)
368);
369
370spc_msf0_dpand_macro__width_5 bank3_and (
371 .din0 ({efu_spc_fuse_data_bufin,
372 efu_spc_fuse_ixfer_en_bufin,
373 efu_spc_fuse_dxfer_en_bufin,
374 efu_spc_fuse_iclr_bufin,
375 efu_spc_fuse_dclr_bufin}),
376 .din1 ({5 {lb_lbist_running_n1}}),
377 .dout ({lb_efu_spc_fuse_data,
378 lb_efu_spc_fuse_ixfer_en,
379 lb_efu_spc_fuse_dxfer_en,
380 lb_efu_spc_fuse_iclr,
381 lb_efu_spc_fuse_dclr})
382
383);
384
385spc_msf0_dpbuff_macro__dbuff_32x__rep_1__stack_none__width_19 bank3_rep1 (
386 .din ({ncu_cmp_tick_enable ,
387 tcu_core_running[7:0],
388 lb_efu_spc_fuse_data,
389 lb_efu_spc_fuse_ixfer_en,
390 lb_efu_spc_fuse_dxfer_en,
391 lb_efu_spc_fuse_iclr,
392 lb_efu_spc_fuse_dclr,
393 spc_efu_fuse_ddata_buf,
394 spc_efu_fuse_idata_buf,
395 spc_efu_fuse_ixfer_en_buf,
396 spc_efu_fuse_dxfer_en_buf,
397 ncu_wmr_vec_mask }),
398 .dout ({ncu_cmp_tick_enable_rep0 ,
399 tcu_core_running_rep0[7:0],
400 efu_spc_fuse_data_buf,
401 efu_spc_fuse_ixfer_en_buf,
402 efu_spc_fuse_dxfer_en_buf,
403 efu_spc_fuse_iclr_buf,
404 efu_spc_fuse_dclr_buf,
405 spc_efu_fuse_ddata,
406 spc_efu_fuse_idata,
407 spc_efu_fuse_ixfer_en,
408 spc_efu_fuse_dxfer_en,
409 ncu_wmr_vec_mask_rep0 })
410);
411
412spc_msf0_dpmsff_macro__stack_10r__width_10 bank3_lat (
413 .scan_in(bank3_lat_scanin),
414 .scan_out(bank3_lat_scanout),
415 .se ( tcu_se_scancollar_out ),
416 .en ( slow_cmp_sync_en_ff),
417 .din ({ncu_cmp_tick_enable_rep0 ,
418 tcu_core_running_rep0[7:0],
419 ncu_wmr_vec_mask_rep0 }),
420 .dout ({msf0_cmp_tick_enable ,
421 msf0_core_running[7:0] ,
422 msf0_wmr_vec_mask }),
423 .clk(clk),
424 .siclk(siclk),
425 .soclk(soclk),
426 .pce_ov(pce_ov),
427 .stop(stop)
428);
429
430spc_msf0_dpbuff_macro__dbuff_32x__rep_1__stack_none__width_5 bank4_rep1 (
431 .din ({tcu_atpg_mode,
432 tcu_ss_mode,
433 tcu_mbist_user_mode,
434 tcu_mbist_bisi_en,
435 tcu_do_mode }),
436 .dout ({msf0_atpg_mode_buf,
437 tcu_ss_mode_rep0,
438 tcu_mbist_user_mode_rep0,
439 tcu_mbist_bisi_en_rep0,
440 tcu_do_mode_rep0 })
441);
442
443spc_msf0_dpmsff_macro__stack_8r__width_4 bank4_lat (
444 .scan_in(bank4_lat_scanin),
445 .scan_out(bank4_lat_scanout),
446 .se ( tcu_se_scancollar_out ),
447 .en ( slow_cmp_sync_en_ff),
448 .din ({tcu_ss_mode_rep0,
449 tcu_mbist_user_mode_rep0,
450 tcu_mbist_bisi_en_rep0,
451 tcu_do_mode_rep0 }),
452 .dout ({msf0_ss_mode,
453 msf0_mbist_user_mode_ff,
454 msf0_mbist_bisi_en_ff,
455 msf0_do_mode }),
456 .clk(clk),
457 .siclk(siclk),
458 .soclk(soclk),
459 .pce_ov(pce_ov),
460 .stop(stop)
461);
462
463spc_msf0_dpbuff_macro__dbuff_32x__rep_1__stack_none__width_4 bank5_rep1 (
464 .din ({tcu_shscanid [2:0],
465 tcu_shscan_clk_stop }),
466 .dout ({tcu_shscanid_rep0 [2:0],
467 tcu_shscan_clk_stop_rep0 })
468);
469
470spc_msf0_dpmsff_macro__stack_8r__width_4 bank5_lat (
471 .scan_in(bank5_lat_scanin),
472 .scan_out(bank5_lat_scanout),
473 .se ( tcu_se_scancollar_out ),
474 .en ( slow_cmp_sync_en_ff),
475 .din ({tcu_shscanid_rep0 [2:0],
476 tcu_shscan_clk_stop_rep0 }),
477 .dout ({msf0_shscanid [2:0],
478 msf0_shscan_clk_stop }),
479 .clk(clk),
480 .siclk(siclk),
481 .soclk(soclk),
482 .pce_ov(pce_ov),
483 .stop(stop)
484);
485
486
487// fixscan start:
488assign bank0_lat_scanin = scan_in ;
489assign bank1_lat_scanin = bank0_lat_scanout ;
490assign bank2_lat_scanin = bank1_lat_scanout ;
491assign bank3_lat_scanin = bank2_lat_scanout ;
492assign bank4_lat_scanin = bank3_lat_scanout ;
493assign bank5_lat_scanin = bank4_lat_scanout ;
494assign scan_out = bank5_lat_scanout ;
495// fixscan end:
496endmodule
497
498
499
500
501
502
503// any PARAMS parms go into naming of macro
504
505module spc_msf0_dpmsff_macro__stack_10r__width_8 (
506 din,
507 clk,
508 en,
509 se,
510 scan_in,
511 siclk,
512 soclk,
513 pce_ov,
514 stop,
515 dout,
516 scan_out);
517wire l1clk;
518wire siclk_out;
519wire soclk_out;
520wire [6:0] so;
521
522 input [7:0] din;
523
524
525 input clk;
526 input en;
527 input se;
528 input scan_in;
529 input siclk;
530 input soclk;
531 input pce_ov;
532 input stop;
533
534
535
536 output [7:0] dout;
537
538
539 output scan_out;
540
541
542
543
544cl_dp1_l1hdr_8x c0_0 (
545.l2clk(clk),
546.pce(en),
547.aclk(siclk),
548.bclk(soclk),
549.l1clk(l1clk),
550 .se(se),
551 .pce_ov(pce_ov),
552 .stop(stop),
553 .siclk_out(siclk_out),
554 .soclk_out(soclk_out)
555);
556dff #(8) d0_0 (
557.l1clk(l1clk),
558.siclk(siclk_out),
559.soclk(soclk_out),
560.d(din[7:0]),
561.si({scan_in,so[6:0]}),
562.so({so[6:0],scan_out}),
563.q(dout[7:0])
564);
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585endmodule
586
587
588
589
590
591
592
593
594
595//
596// buff macro
597//
598//
599
600
601
602
603
604module spc_msf0_dpbuff_macro__dbuff_32x__rep_1__stack_none__width_8 (
605 din,
606 dout);
607 input [7:0] din;
608 output [7:0] dout;
609
610
611
612
613
614
615buff #(8) d0_0 (
616.in(din[7:0]),
617.out(dout[7:0])
618);
619
620
621
622
623
624
625
626
627endmodule
628
629
630
631
632
633//
634// buff macro
635//
636//
637
638
639
640
641
642module spc_msf0_dpbuff_macro__dbuff_32x__rep_1__stack_none__width_11 (
643 din,
644 dout);
645 input [10:0] din;
646 output [10:0] dout;
647
648
649
650
651
652
653buff #(11) d0_0 (
654.in(din[10:0]),
655.out(dout[10:0])
656);
657
658
659
660
661
662
663
664
665endmodule
666
667
668
669
670
671
672
673
674
675// any PARAMS parms go into naming of macro
676
677module spc_msf0_dpmsff_macro__stack_8r__width_8 (
678 din,
679 clk,
680 en,
681 se,
682 scan_in,
683 siclk,
684 soclk,
685 pce_ov,
686 stop,
687 dout,
688 scan_out);
689wire l1clk;
690wire siclk_out;
691wire soclk_out;
692wire [6:0] so;
693
694 input [7:0] din;
695
696
697 input clk;
698 input en;
699 input se;
700 input scan_in;
701 input siclk;
702 input soclk;
703 input pce_ov;
704 input stop;
705
706
707
708 output [7:0] dout;
709
710
711 output scan_out;
712
713
714
715
716cl_dp1_l1hdr_8x c0_0 (
717.l2clk(clk),
718.pce(en),
719.aclk(siclk),
720.bclk(soclk),
721.l1clk(l1clk),
722 .se(se),
723 .pce_ov(pce_ov),
724 .stop(stop),
725 .siclk_out(siclk_out),
726 .soclk_out(soclk_out)
727);
728dff #(8) d0_0 (
729.l1clk(l1clk),
730.siclk(siclk_out),
731.soclk(soclk_out),
732.d(din[7:0]),
733.si({scan_in,so[6:0]}),
734.so({so[6:0],scan_out}),
735.q(dout[7:0])
736);
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757endmodule
758
759
760
761
762
763
764
765
766
767//
768// buff macro
769//
770//
771
772
773
774
775
776module spc_msf0_dpbuff_macro__dbuff_32x__rep_1__stack_none__width_1 (
777 din,
778 dout);
779 input [0:0] din;
780 output [0:0] dout;
781
782
783
784
785
786
787buff #(1) d0_0 (
788.in(din[0:0]),
789.out(dout[0:0])
790);
791
792
793
794
795
796
797
798
799endmodule
800
801
802
803
804
805
806
807
808
809// any PARAMS parms go into naming of macro
810
811module spc_msf0_dpmsff_macro__stack_8r__width_3 (
812 din,
813 clk,
814 en,
815 se,
816 scan_in,
817 siclk,
818 soclk,
819 pce_ov,
820 stop,
821 dout,
822 scan_out);
823wire l1clk;
824wire siclk_out;
825wire soclk_out;
826wire [1:0] so;
827
828 input [2:0] din;
829
830
831 input clk;
832 input en;
833 input se;
834 input scan_in;
835 input siclk;
836 input soclk;
837 input pce_ov;
838 input stop;
839
840
841
842 output [2:0] dout;
843
844
845 output scan_out;
846
847
848
849
850cl_dp1_l1hdr_8x c0_0 (
851.l2clk(clk),
852.pce(en),
853.aclk(siclk),
854.bclk(soclk),
855.l1clk(l1clk),
856 .se(se),
857 .pce_ov(pce_ov),
858 .stop(stop),
859 .siclk_out(siclk_out),
860 .soclk_out(soclk_out)
861);
862dff #(3) d0_0 (
863.l1clk(l1clk),
864.siclk(siclk_out),
865.soclk(soclk_out),
866.d(din[2:0]),
867.si({scan_in,so[1:0]}),
868.so({so[1:0],scan_out}),
869.q(dout[2:0])
870);
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891endmodule
892
893
894
895
896
897
898
899
900
901//
902// buff macro
903//
904//
905
906
907
908
909
910module spc_msf0_dpbuff_macro__dbuff_16x__rep_1__stack_none__width_5 (
911 din,
912 dout);
913 input [4:0] din;
914 output [4:0] dout;
915
916
917
918
919
920
921buff #(5) d0_0 (
922.in(din[4:0]),
923.out(dout[4:0])
924);
925
926
927
928
929
930
931
932
933endmodule
934
935
936
937
938
939//
940// invert macro
941//
942//
943
944
945
946
947
948module spc_msf0_dpinv_macro__width_1 (
949 din,
950 dout);
951 input [0:0] din;
952 output [0:0] dout;
953
954
955
956
957
958
959inv #(1) d0_0 (
960.in(din[0:0]),
961.out(dout[0:0])
962);
963
964
965
966
967
968
969
970
971
972endmodule
973
974
975
976
977
978//
979// and macro for ports = 2,3,4
980//
981//
982
983
984
985
986
987module spc_msf0_dpand_macro__width_5 (
988 din0,
989 din1,
990 dout);
991 input [4:0] din0;
992 input [4:0] din1;
993 output [4:0] dout;
994
995
996
997
998
999
1000and2 #(5) d0_0 (
1001.in0(din0[4:0]),
1002.in1(din1[4:0]),
1003.out(dout[4:0])
1004);
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014endmodule
1015
1016
1017
1018
1019
1020//
1021// buff macro
1022//
1023//
1024
1025
1026
1027
1028
1029module spc_msf0_dpbuff_macro__dbuff_32x__rep_1__stack_none__width_19 (
1030 din,
1031 dout);
1032 input [18:0] din;
1033 output [18:0] dout;
1034
1035
1036
1037
1038
1039
1040buff #(19) d0_0 (
1041.in(din[18:0]),
1042.out(dout[18:0])
1043);
1044
1045
1046
1047
1048
1049
1050
1051
1052endmodule
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062// any PARAMS parms go into naming of macro
1063
1064module spc_msf0_dpmsff_macro__stack_10r__width_10 (
1065 din,
1066 clk,
1067 en,
1068 se,
1069 scan_in,
1070 siclk,
1071 soclk,
1072 pce_ov,
1073 stop,
1074 dout,
1075 scan_out);
1076wire l1clk;
1077wire siclk_out;
1078wire soclk_out;
1079wire [8:0] so;
1080
1081 input [9:0] din;
1082
1083
1084 input clk;
1085 input en;
1086 input se;
1087 input scan_in;
1088 input siclk;
1089 input soclk;
1090 input pce_ov;
1091 input stop;
1092
1093
1094
1095 output [9:0] dout;
1096
1097
1098 output scan_out;
1099
1100
1101
1102
1103cl_dp1_l1hdr_8x c0_0 (
1104.l2clk(clk),
1105.pce(en),
1106.aclk(siclk),
1107.bclk(soclk),
1108.l1clk(l1clk),
1109 .se(se),
1110 .pce_ov(pce_ov),
1111 .stop(stop),
1112 .siclk_out(siclk_out),
1113 .soclk_out(soclk_out)
1114);
1115dff #(10) d0_0 (
1116.l1clk(l1clk),
1117.siclk(siclk_out),
1118.soclk(soclk_out),
1119.d(din[9:0]),
1120.si({scan_in,so[8:0]}),
1121.so({so[8:0],scan_out}),
1122.q(dout[9:0])
1123);
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144endmodule
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154//
1155// buff macro
1156//
1157//
1158
1159
1160
1161
1162
1163module spc_msf0_dpbuff_macro__dbuff_32x__rep_1__stack_none__width_5 (
1164 din,
1165 dout);
1166 input [4:0] din;
1167 output [4:0] dout;
1168
1169
1170
1171
1172
1173
1174buff #(5) d0_0 (
1175.in(din[4:0]),
1176.out(dout[4:0])
1177);
1178
1179
1180
1181
1182
1183
1184
1185
1186endmodule
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196// any PARAMS parms go into naming of macro
1197
1198module spc_msf0_dpmsff_macro__stack_8r__width_4 (
1199 din,
1200 clk,
1201 en,
1202 se,
1203 scan_in,
1204 siclk,
1205 soclk,
1206 pce_ov,
1207 stop,
1208 dout,
1209 scan_out);
1210wire l1clk;
1211wire siclk_out;
1212wire soclk_out;
1213wire [2:0] so;
1214
1215 input [3:0] din;
1216
1217
1218 input clk;
1219 input en;
1220 input se;
1221 input scan_in;
1222 input siclk;
1223 input soclk;
1224 input pce_ov;
1225 input stop;
1226
1227
1228
1229 output [3:0] dout;
1230
1231
1232 output scan_out;
1233
1234
1235
1236
1237cl_dp1_l1hdr_8x c0_0 (
1238.l2clk(clk),
1239.pce(en),
1240.aclk(siclk),
1241.bclk(soclk),
1242.l1clk(l1clk),
1243 .se(se),
1244 .pce_ov(pce_ov),
1245 .stop(stop),
1246 .siclk_out(siclk_out),
1247 .soclk_out(soclk_out)
1248);
1249dff #(4) d0_0 (
1250.l1clk(l1clk),
1251.siclk(siclk_out),
1252.soclk(soclk_out),
1253.d(din[3:0]),
1254.si({scan_in,so[2:0]}),
1255.so({so[2:0],scan_out}),
1256.q(dout[3:0])
1257);
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278endmodule
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288//
1289// buff macro
1290//
1291//
1292
1293
1294
1295
1296
1297module spc_msf0_dpbuff_macro__dbuff_32x__rep_1__stack_none__width_4 (
1298 din,
1299 dout);
1300 input [3:0] din;
1301 output [3:0] dout;
1302
1303
1304
1305
1306
1307
1308buff #(4) d0_0 (
1309.in(din[3:0]),
1310.out(dout[3:0])
1311);
1312
1313
1314
1315
1316
1317
1318
1319
1320endmodule
1321
1322
1323
1324