Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / libs / cl / cl_sc1 / cl_sc1.v
CommitLineData
86530b38
AT
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T2 Processor File: cl_sc1.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 cl_sc1_msffmin_fp_16x ( q, so, d, l1clk, si, siclk, soclk );
36// RFM 05-14-2004
37// Level sensitive in SCAN_MODE
38// Edge triggered when not in SCAN_MODE
39
40
41 parameter SIZE = 1;
42
43 output q;
44 output so;
45
46 input d;
47 input l1clk;
48 input si;
49 input siclk;
50 input soclk;
51
52 reg q;
53 wire so;
54 wire l1clk, siclk, soclk;
55
56 `ifdef SCAN_MODE
57
58 reg l1;
59 `ifdef FAST_FLUSH
60 always @(posedge l1clk or posedge siclk ) begin
61 if (siclk) begin
62 q <= 1'b0; //pseudo flush reset
63 end else begin
64 q <= d;
65 end
66 end
67 `else
68 always @(l1clk or siclk or soclk or d or si)
69 begin
70 if (!l1clk && !siclk) l1 <= d; // Load master with data
71 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
72 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
73
74 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
75 if ( l1clk && siclk && !soclk) q <= si; // Flush
76 end
77 `endif
78 `else
79 wire si_unused;
80 wire siclk_unused;
81 wire soclk_unused;
82 assign si_unused = si;
83 assign siclk_unused = siclk;
84 assign soclk_unused = soclk;
85
86
87 `ifdef INITLATZERO
88 initial q = 1'b0;
89 `endif
90
91 always @(posedge l1clk)
92 begin
93 if (!siclk && !soclk) q <= d;
94 else q <= 1'bx;
95 end
96 `endif
97
98 assign so = q;
99
100endmodule // dff
101
102
103
104
105module cl_sc1_msffmin_fp_8x ( q, so, d, l1clk, si, siclk, soclk );
106// RFM 05-14-2004
107// Level sensitive in SCAN_MODE
108// Edge triggered when not in SCAN_MODE
109
110
111 parameter SIZE = 1;
112
113 output q;
114 output so;
115
116 input d;
117 input l1clk;
118 input si;
119 input siclk;
120 input soclk;
121
122 reg q;
123 wire so;
124 wire l1clk, siclk, soclk;
125
126 `ifdef SCAN_MODE
127 `ifdef FAST_FLUSH
128 always @(posedge l1clk or posedge siclk ) begin
129 if (siclk) begin
130 q <= 1'b0; //pseudo flush reset
131 end else begin
132 q <= d;
133 end
134 end
135 `else
136 reg l1;
137
138 always @(l1clk or siclk or soclk or d or si)
139 begin
140 if (!l1clk && !siclk) l1 <= d; // Load master with data
141 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
142 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
143
144 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
145 if ( l1clk && siclk && !soclk) q <= si; // Flush
146 end
147 `endif
148 `else
149 wire si_unused;
150 wire siclk_unused;
151 wire soclk_unused;
152 assign si_unused = si;
153 assign siclk_unused = siclk;
154 assign soclk_unused = soclk;
155
156
157 `ifdef INITLATZERO
158 initial q = 1'b0;
159 `endif
160
161 always @(posedge l1clk)
162 begin
163 if (!siclk && !soclk) q <= d;
164 else q <= 1'bx;
165 end
166 `endif
167
168 assign so = q;
169
170endmodule // dff
171module cl_sc1_msffmin_fp_4x ( q, so, d, l1clk, si, siclk, soclk );
172// RFM 05-14-2004
173// Level sensitive in SCAN_MODE
174// Edge triggered when not in SCAN_MODE
175
176
177 parameter SIZE = 1;
178
179 output q;
180 output so;
181
182 input d;
183 input l1clk;
184 input si;
185 input siclk;
186 input soclk;
187
188 reg q;
189 wire so;
190 wire l1clk, siclk, soclk;
191
192 `ifdef SCAN_MODE
193
194 reg l1;
195 `ifdef FAST_FLUSH
196 always @(posedge l1clk or posedge siclk ) begin
197 if (siclk) begin
198 q <= 1'b0; //pseudo flush reset
199 end else begin
200 q <= d;
201 end
202 end
203 `else
204 always @(l1clk or siclk or soclk or d or si)
205 begin
206 if (!l1clk && !siclk) l1 <= d; // Load master with data
207 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
208 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
209
210 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
211 if ( l1clk && siclk && !soclk) q <= si; // Flush
212 end
213 `endif
214 `else
215 wire si_unused;
216 wire siclk_unused;
217 wire soclk_unused;
218 assign si_unused = si;
219 assign siclk_unused = siclk;
220 assign soclk_unused = soclk;
221
222
223 `ifdef INITLATZERO
224 initial q = 1'b0;
225 `endif
226
227 always @(posedge l1clk)
228 begin
229 if (!siclk && !soclk) q <= d;
230 else q <= 1'bx;
231 end
232 `endif
233
234 assign so = q;
235
236endmodule // dff
237module cl_sc1_msffmin_fp_32x ( q, so, d, l1clk, si, siclk, soclk );
238// RFM 05-14-2004
239// Level sensitive in SCAN_MODE
240// Edge triggered when not in SCAN_MODE
241
242
243 parameter SIZE = 1;
244
245 output q;
246 output so;
247
248 input d;
249 input l1clk;
250 input si;
251 input siclk;
252 input soclk;
253
254 reg q;
255 wire so;
256 wire l1clk, siclk, soclk;
257
258 `ifdef SCAN_MODE
259
260 reg l1;
261 `ifdef FAST_FLUSH
262 always @(posedge l1clk or posedge siclk ) begin
263 if (siclk) begin
264 q <= 1'b0; //pseudo flush reset
265 end else begin
266 q <= d;
267 end
268 end
269 `else
270 always @(l1clk or siclk or soclk or d or si)
271 begin
272 if (!l1clk && !siclk) l1 <= d; // Load master with data
273 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
274 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
275
276 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
277 if ( l1clk && siclk && !soclk) q <= si; // Flush
278 end
279 `endif
280 `else
281 wire si_unused;
282 wire siclk_unused;
283 wire soclk_unused;
284 assign si_unused = si;
285 assign siclk_unused = siclk;
286 assign soclk_unused = soclk;
287
288
289 `ifdef INITLATZERO
290 initial q = 1'b0;
291 `endif
292
293 always @(posedge l1clk)
294 begin
295 if (!siclk && !soclk) q <= d;
296 else q <= 1'bx;
297 end
298 `endif
299
300 assign so = q;
301
302endmodule // dff
303module cl_sc1_msffmin_fp_1x ( q, so, d, l1clk, si, siclk, soclk );
304// RFM 05-14-2004
305// Level sensitive in SCAN_MODE
306// Edge triggered when not in SCAN_MODE
307
308
309 parameter SIZE = 1;
310
311 output q;
312 output so;
313
314 input d;
315 input l1clk;
316 input si;
317 input siclk;
318 input soclk;
319
320 reg q;
321 wire so;
322 wire l1clk, siclk, soclk;
323
324 `ifdef SCAN_MODE
325
326 reg l1;
327 `ifdef FAST_FLUSH
328 always @(posedge l1clk or posedge siclk ) begin
329 if (siclk) begin
330 q <= 1'b0; //pseudo flush reset
331 end else begin
332 q <= d;
333 end
334 end
335 `else
336 always @(l1clk or siclk or soclk or d or si)
337 begin
338 if (!l1clk && !siclk) l1 <= d; // Load master with data
339 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
340 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
341
342 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
343 if ( l1clk && siclk && !soclk) q <= si; // Flush
344 end
345 `endif
346 `else
347 wire si_unused;
348 wire siclk_unused;
349 wire soclk_unused;
350 assign si_unused = si;
351 assign siclk_unused = siclk;
352 assign soclk_unused = soclk;
353
354
355 `ifdef INITLATZERO
356 initial q = 1'b0;
357 `endif
358
359 always @(posedge l1clk)
360 begin
361 if (!siclk && !soclk) q <= d;
362 else q <= 1'bx;
363 end
364 `endif
365
366 assign so = q;
367
368endmodule // dff
369module cl_sc1_msffmin_fp_30ps_16x ( q, so, d, l1clk, si, siclk, soclk );
370// RFM 05-14-2004
371// Level sensitive in SCAN_MODE
372// Edge triggered when not in SCAN_MODE
373
374
375 parameter SIZE = 1;
376
377 output q;
378 output so;
379
380 input d;
381 input l1clk;
382 input si;
383 input siclk;
384 input soclk;
385
386 reg q;
387 wire so;
388 wire l1clk, siclk, soclk;
389
390 `ifdef SCAN_MODE
391
392 reg l1;
393 `ifdef FAST_FLUSH
394 always @(posedge l1clk or posedge siclk ) begin
395 if (siclk) begin
396 q <= 1'b0; //pseudo flush reset
397 end else begin
398 q <= d;
399 end
400 end
401 `else
402
403 always @(l1clk or siclk or soclk or d or si)
404 begin
405 if (!l1clk && !siclk) l1 <= d; // Load master with data
406 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
407 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
408
409 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
410 if ( l1clk && siclk && !soclk) q <= si; // Flush
411 end
412 `endif
413 `else
414 wire si_unused;
415 wire siclk_unused;
416 wire soclk_unused;
417 assign si_unused = si;
418 assign siclk_unused = siclk;
419 assign soclk_unused = soclk;
420
421
422 `ifdef INITLATZERO
423 initial q = 1'b0;
424 `endif
425
426 always @(posedge l1clk)
427 begin
428 if (!siclk && !soclk) q <= d;
429 else q <= 1'bx;
430 end
431 `endif
432
433 assign so = q;
434
435endmodule // dff
436
437
438
439
440module cl_sc1_msffmin_fp_30ps_8x ( q, so, d, l1clk, si, siclk, soclk );
441// RFM 05-14-2004
442// Level sensitive in SCAN_MODE
443// Edge triggered when not in SCAN_MODE
444
445
446 parameter SIZE = 1;
447
448 output q;
449 output so;
450
451 input d;
452 input l1clk;
453 input si;
454 input siclk;
455 input soclk;
456
457 reg q;
458 wire so;
459 wire l1clk, siclk, soclk;
460
461 `ifdef SCAN_MODE
462
463 reg l1;
464 `ifdef FAST_FLUSH
465 always @(posedge l1clk or posedge siclk ) begin
466 if (siclk) begin
467 q <= 1'b0; //pseudo flush reset
468 end else begin
469 q <= d;
470 end
471 end
472 `else
473 always @(l1clk or siclk or soclk or d or si)
474 begin
475 if (!l1clk && !siclk) l1 <= d; // Load master with data
476 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
477 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
478
479 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
480 if ( l1clk && siclk && !soclk) q <= si; // Flush
481 end
482 `endif
483 `else
484 wire si_unused;
485 wire siclk_unused;
486 wire soclk_unused;
487 assign si_unused = si;
488 assign siclk_unused = siclk;
489 assign soclk_unused = soclk;
490
491
492 `ifdef INITLATZERO
493 initial q = 1'b0;
494 `endif
495
496 always @(posedge l1clk)
497 begin
498 if (!siclk && !soclk) q <= d;
499 else q <= 1'bx;
500 end
501 `endif
502
503 assign so = q;
504
505endmodule // dff
506module cl_sc1_msffmin_fp_30ps_4x ( q, so, d, l1clk, si, siclk, soclk );
507// RFM 05-14-2004
508// Level sensitive in SCAN_MODE
509// Edge triggered when not in SCAN_MODE
510
511
512 parameter SIZE = 1;
513
514 output q;
515 output so;
516
517 input d;
518 input l1clk;
519 input si;
520 input siclk;
521 input soclk;
522
523 reg q;
524 wire so;
525 wire l1clk, siclk, soclk;
526
527 `ifdef SCAN_MODE
528
529 reg l1;
530 `ifdef FAST_FLUSH
531 always @(posedge l1clk or posedge siclk ) begin
532 if (siclk) begin
533 q <= 1'b0; //pseudo flush reset
534 end else begin
535 q <= d;
536 end
537 end
538 `else
539 always @(l1clk or siclk or soclk or d or si)
540 begin
541 if (!l1clk && !siclk) l1 <= d; // Load master with data
542 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
543 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
544
545 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
546 if ( l1clk && siclk && !soclk) q <= si; // Flush
547 end
548 `endif
549 `else
550 wire si_unused;
551 wire siclk_unused;
552 wire soclk_unused;
553 assign si_unused = si;
554 assign siclk_unused = siclk;
555 assign soclk_unused = soclk;
556
557
558 `ifdef INITLATZERO
559 initial q = 1'b0;
560 `endif
561
562 always @(posedge l1clk)
563 begin
564 if (!siclk && !soclk) q <= d;
565 else q <= 1'bx;
566 end
567 `endif
568
569 assign so = q;
570
571endmodule // dff
572module cl_sc1_msffmin_fp_30ps_32x ( q, so, d, l1clk, si, siclk, soclk );
573// RFM 05-14-2004
574// Level sensitive in SCAN_MODE
575// Edge triggered when not in SCAN_MODE
576
577
578 parameter SIZE = 1;
579
580 output q;
581 output so;
582
583 input d;
584 input l1clk;
585 input si;
586 input siclk;
587 input soclk;
588
589 reg q;
590 wire so;
591 wire l1clk, siclk, soclk;
592
593 `ifdef SCAN_MODE
594
595 reg l1;
596 `ifdef FAST_FLUSH
597 always @(posedge l1clk or posedge siclk ) begin
598 if (siclk) begin
599 q <= 1'b0; //pseudo flush reset
600 end else begin
601 q <= d;
602 end
603 end
604 `else
605 always @(l1clk or siclk or soclk or d or si)
606 begin
607 if (!l1clk && !siclk) l1 <= d; // Load master with data
608 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
609 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
610
611 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
612 if ( l1clk && siclk && !soclk) q <= si; // Flush
613 end
614 `endif
615 `else
616 wire si_unused;
617 wire siclk_unused;
618 wire soclk_unused;
619 assign si_unused = si;
620 assign siclk_unused = siclk;
621 assign soclk_unused = soclk;
622
623
624 `ifdef INITLATZERO
625 initial q = 1'b0;
626 `endif
627
628 always @(posedge l1clk)
629 begin
630 if (!siclk && !soclk) q <= d;
631 else q <= 1'bx;
632 end
633 `endif
634
635 assign so = q;
636
637endmodule // dff
638module cl_sc1_msffmin_fp_30ps_1x ( q, so, d, l1clk, si, siclk, soclk );
639// RFM 05-14-2004
640// Level sensitive in SCAN_MODE
641// Edge triggered when not in SCAN_MODE
642
643
644 parameter SIZE = 1;
645
646 output q;
647 output so;
648
649 input d;
650 input l1clk;
651 input si;
652 input siclk;
653 input soclk;
654
655 reg q;
656 wire so;
657 wire l1clk, siclk, soclk;
658
659 `ifdef SCAN_MODE
660
661 reg l1;
662 `ifdef FAST_FLUSH
663 always @(posedge l1clk or posedge siclk ) begin
664 if (siclk) begin
665 q <= 1'b0; //pseudo flush reset
666 end else begin
667 q <= d;
668 end
669 end
670 `else
671 always @(l1clk or siclk or soclk or d or si)
672 begin
673 if (!l1clk && !siclk) l1 <= d; // Load master with data
674 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
675 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
676
677 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
678 if ( l1clk && siclk && !soclk) q <= si; // Flush
679 end
680 `endif
681 `else
682 wire si_unused;
683 wire siclk_unused;
684 wire soclk_unused;
685 assign si_unused = si;
686 assign siclk_unused = siclk;
687 assign soclk_unused = soclk;
688
689
690 `ifdef INITLATZERO
691 initial q = 1'b0;
692 `endif
693
694 always @(posedge l1clk)
695 begin
696 if (!siclk && !soclk) q <= d;
697 else q <= 1'bx;
698 end
699 `endif
700
701 assign so = q;
702
703endmodule // dff
704
705module cl_sc1_msffmin_fp_syrst_1x ( q, so, d, l1clk, si, siclk, soclk,reset );
706// RFM 05-14-2004
707// Level sensitive in SCAN_MODE
708// Edge triggered when not in SCAN_MODE
709
710
711 parameter SIZE = 1;
712
713 output q;
714 output so;
715
716 input d;
717 input l1clk;
718 input si;
719 input siclk;
720 input soclk;
721 input reset;
722 reg q;
723 wire so;
724 wire l1clk, siclk, soclk;
725
726 `ifdef SCAN_MODE
727
728 reg l1;
729`ifdef FAST_FLUSH
730 always @(l1clk or siclk or d ) // vcs optimized code
731 begin
732 if (!l1clk && !siclk) l1 <= (d&reset); // Load master with data
733 else if ( l1clk && !siclk) q <= l1; // Load slave with master data
734 else if ( l1clk && siclk) begin // Conflict between data and scan
735 l1 <= 1'b0;
736 q <= 1'b0;
737 end
738 end
739 `else
740 always @(l1clk or siclk or soclk or d or si)
741 begin
742 if (!l1clk && !siclk) l1 <= (d&reset); // Load master with data
743 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
744 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
745
746 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
747 if ( l1clk && siclk && !soclk) q <= si; // Flush
748 end
749 `endif
750 `else
751 wire si_unused;
752 wire siclk_unused;
753 wire soclk_unused;
754 assign si_unused = si;
755 assign siclk_unused = siclk;
756 assign soclk_unused = soclk;
757
758
759 `ifdef INITLATZERO
760 initial q = 1'b0;
761 `endif
762
763 always @(posedge l1clk)
764 begin
765 if (!siclk && !soclk) q <= (d&reset);
766 else q <= 1'bx;
767 end
768 `endif
769
770 assign so = q;
771
772endmodule // dff
773module cl_sc1_msffmin_fp_syrst_4x ( q, so, d, l1clk, si, siclk, soclk,reset );
774// RFM 05-14-2004
775// Level sensitive in SCAN_MODE
776// Edge triggered when not in SCAN_MODE
777
778
779 parameter SIZE = 1;
780
781 output q;
782 output so;
783
784 input d;
785 input l1clk;
786 input si;
787 input siclk;
788 input soclk;
789 input reset;
790 reg q;
791 wire so;
792 wire l1clk, siclk, soclk;
793
794 `ifdef SCAN_MODE
795
796 reg l1;
797`ifdef FAST_FLUSH
798 always @(l1clk or siclk or d ) // vcs optimized code
799 begin
800 if (!l1clk && !siclk) l1 <= (d&reset); // Load master with data
801 else if ( l1clk && !siclk) q <= l1; // Load slave with master data
802 else if ( l1clk && siclk) begin // Conflict between data and scan
803 l1 <= 1'b0;
804 q <= 1'b0;
805 end
806 end
807 `else
808 always @(l1clk or siclk or soclk or d or si)
809 begin
810 if (!l1clk && !siclk) l1 <= (d&reset); // Load master with data
811 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
812 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
813
814 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
815 if ( l1clk && siclk && !soclk) q <= si; // Flush
816 end
817 `endif
818 `else
819 wire si_unused;
820 wire siclk_unused;
821 wire soclk_unused;
822 assign si_unused = si;
823 assign siclk_unused = siclk;
824 assign soclk_unused = soclk;
825
826
827 `ifdef INITLATZERO
828 initial q = 1'b0;
829 `endif
830
831 always @(posedge l1clk)
832 begin
833 if (!siclk && !soclk) q <= (d&reset);
834 else q <= 1'bx;
835 end
836 `endif
837
838 assign so = q;
839
840endmodule // dff
841module cl_sc1_msffmin_fp_syrst_8x ( q, so, d, l1clk, si, siclk, soclk,reset );
842// RFM 05-14-2004
843// Level sensitive in SCAN_MODE
844// Edge triggered when not in SCAN_MODE
845
846
847 parameter SIZE = 1;
848
849 output q;
850 output so;
851
852 input d;
853 input l1clk;
854 input si;
855 input siclk;
856 input soclk;
857 input reset;
858 reg q;
859 wire so;
860 wire l1clk, siclk, soclk;
861
862 `ifdef SCAN_MODE
863
864 reg l1;
865`ifdef FAST_FLUSH
866 always @(l1clk or siclk or d ) // vcs optimized code
867 begin
868 if (!l1clk && !siclk) l1 <= (d&reset); // Load master with data
869 else if ( l1clk && !siclk) q <= l1; // Load slave with master data
870 else if ( l1clk && siclk) begin // Conflict between data and scan
871 l1 <= 1'b0;
872 q <= 1'b0;
873 end
874 end
875 `else
876 always @(l1clk or siclk or soclk or d or si)
877 begin
878 if (!l1clk && !siclk) l1 <= (d&reset); // Load master with data
879 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
880 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
881
882 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
883 if ( l1clk && siclk && !soclk) q <= si; // Flush
884 end
885 `endif
886 `else
887 wire si_unused;
888 wire siclk_unused;
889 wire soclk_unused;
890 assign si_unused = si;
891 assign siclk_unused = siclk;
892 assign soclk_unused = soclk;
893
894
895 `ifdef INITLATZERO
896 initial q = 1'b0;
897 `endif
898
899 always @(posedge l1clk)
900 begin
901 if (!siclk && !soclk) q <= (d&reset);
902 else q <= 1'bx;
903 end
904 `endif
905
906 assign so = q;
907
908endmodule // dff
909module cl_sc1_msffmin_fp_syrst_16x ( q, so, d, l1clk, si, siclk, soclk,reset );
910// RFM 05-14-2004
911// Level sensitive in SCAN_MODE
912// Edge triggered when not in SCAN_MODE
913
914
915 parameter SIZE = 1;
916
917 output q;
918 output so;
919
920 input d;
921 input l1clk;
922 input si;
923 input siclk;
924 input soclk;
925 input reset;
926 reg q;
927 wire so;
928 wire l1clk, siclk, soclk;
929
930 `ifdef SCAN_MODE
931
932 reg l1;
933`ifdef FAST_FLUSH
934 always @(l1clk or siclk or d ) // vcs optimized code
935 begin
936 if (!l1clk && !siclk) l1 <= (d&reset); // Load master with data
937 else if ( l1clk && !siclk) q <= l1; // Load slave with master data
938 else if ( l1clk && siclk) begin // Conflict between data and scan
939 l1 <= 1'b0;
940 q <= 1'b0;
941 end
942 end
943 `else
944 always @(l1clk or siclk or soclk or d or si)
945 begin
946 if (!l1clk && !siclk) l1 <= (d&reset); // Load master with data
947 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
948 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
949
950 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
951 if ( l1clk && siclk && !soclk) q <= si; // Flush
952 end
953 `endif
954 `else
955 wire si_unused;
956 wire siclk_unused;
957 wire soclk_unused;
958 assign si_unused = si;
959 assign siclk_unused = siclk;
960 assign soclk_unused = soclk;
961
962
963 `ifdef INITLATZERO
964 initial q = 1'b0;
965 `endif
966
967 always @(posedge l1clk)
968 begin
969 if (!siclk && !soclk) q <= (d&reset);
970 else q <= 1'bx;
971 end
972 `endif
973
974 assign so = q;
975
976endmodule // dff
977module cl_sc1_msffmin_fp_syrst_32x ( q, so, d, l1clk, si, siclk, soclk,reset );
978// RFM 05-14-2004
979// Level sensitive in SCAN_MODE
980// Edge triggered when not in SCAN_MODE
981
982
983 parameter SIZE = 1;
984
985 output q;
986 output so;
987
988 input d;
989 input l1clk;
990 input si;
991 input siclk;
992 input soclk;
993 input reset;
994 reg q;
995 wire so;
996 wire l1clk, siclk, soclk;
997
998 `ifdef SCAN_MODE
999
1000 reg l1;
1001`ifdef FAST_FLUSH
1002 always @(l1clk or siclk or d ) // vcs optimized code
1003 begin
1004 if (!l1clk && !siclk) l1 <= (d&reset); // Load master with data
1005 else if ( l1clk && !siclk) q <= l1; // Load slave with master data
1006 else if ( l1clk && siclk) begin // Conflict between data and scan
1007 l1 <= 1'b0;
1008 q <= 1'b0;
1009 end
1010 end
1011 `else
1012 always @(l1clk or siclk or soclk or d or si)
1013 begin
1014 if (!l1clk && !siclk) l1 <= (d&reset); // Load master with data
1015 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
1016 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
1017
1018 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
1019 if ( l1clk && siclk && !soclk) q <= si; // Flush
1020 end
1021 `endif
1022 `else
1023 wire si_unused;
1024 wire siclk_unused;
1025 wire soclk_unused;
1026 assign si_unused = si;
1027 assign siclk_unused = siclk;
1028 assign soclk_unused = soclk;
1029
1030
1031 `ifdef INITLATZERO
1032 initial q = 1'b0;
1033 `endif
1034
1035 always @(posedge l1clk)
1036 begin
1037 if (!siclk && !soclk) q <= (d&reset);
1038 else q <= 1'bx;
1039 end
1040 `endif
1041
1042 assign so = q;
1043
1044endmodule // dff
1045module cl_sc1_msffmin_30ps_16x ( q, so, d, l1clk, si, siclk, soclk );
1046// RFM 05-14-2004
1047// Level sensitive in SCAN_MODE
1048// Edge triggered when not in SCAN_MODE
1049
1050
1051 parameter SIZE = 1;
1052
1053 output q;
1054 output so;
1055
1056 input d;
1057 input l1clk;
1058 input si;
1059 input siclk;
1060 input soclk;
1061
1062 reg q;
1063 wire so;
1064 wire l1clk, siclk, soclk;
1065
1066 `ifdef SCAN_MODE
1067
1068 reg l1;
1069 `ifdef FAST_FLUSH
1070 always @(posedge l1clk or posedge siclk ) begin
1071 if (siclk) begin
1072 q <= 1'b0; //pseudo flush reset
1073 end else begin
1074 q <= d;
1075 end
1076 end
1077 `else
1078
1079 always @(l1clk or siclk or soclk or d or si)
1080 begin
1081 if (!l1clk && !siclk) l1 <= d; // Load master with data
1082 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
1083 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
1084
1085 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
1086 if ( l1clk && siclk && !soclk) q <= si; // Flush
1087 end
1088 `endif
1089 `else
1090 wire si_unused;
1091 wire siclk_unused;
1092 wire soclk_unused;
1093 assign si_unused = si;
1094 assign siclk_unused = siclk;
1095 assign soclk_unused = soclk;
1096
1097
1098 `ifdef INITLATZERO
1099 initial q = 1'b0;
1100 `endif
1101
1102 always @(posedge l1clk)
1103 begin
1104 if (!siclk && !soclk) q <= d;
1105 else q <= 1'bx;
1106 end
1107 `endif
1108
1109 assign so = q;
1110
1111endmodule // dff
1112
1113
1114
1115
1116module cl_sc1_msffmin_30ps_8x ( q, so, d, l1clk, si, siclk, soclk );
1117// RFM 05-14-2004
1118// Level sensitive in SCAN_MODE
1119// Edge triggered when not in SCAN_MODE
1120
1121
1122 parameter SIZE = 1;
1123
1124 output q;
1125 output so;
1126
1127 input d;
1128 input l1clk;
1129 input si;
1130 input siclk;
1131 input soclk;
1132
1133 reg q;
1134 wire so;
1135 wire l1clk, siclk, soclk;
1136
1137 `ifdef SCAN_MODE
1138
1139 reg l1;
1140 `ifdef FAST_FLUSH
1141 always @(posedge l1clk or posedge siclk ) begin
1142 if (siclk) begin
1143 q <= 1'b0; //pseudo flush reset
1144 end else begin
1145 q <= d;
1146 end
1147 end
1148 `else
1149 always @(l1clk or siclk or soclk or d or si)
1150 begin
1151 if (!l1clk && !siclk) l1 <= d; // Load master with data
1152 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
1153 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
1154
1155 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
1156 if ( l1clk && siclk && !soclk) q <= si; // Flush
1157 end
1158 `endif
1159 `else
1160 wire si_unused;
1161 wire siclk_unused;
1162 wire soclk_unused;
1163 assign si_unused = si;
1164 assign siclk_unused = siclk;
1165 assign soclk_unused = soclk;
1166
1167
1168 `ifdef INITLATZERO
1169 initial q = 1'b0;
1170 `endif
1171
1172 always @(posedge l1clk)
1173 begin
1174 if (!siclk && !soclk) q <= d;
1175 else q <= 1'bx;
1176 end
1177 `endif
1178
1179 assign so = q;
1180
1181endmodule // dff
1182module cl_sc1_msffmin_30ps_4x ( q, so, d, l1clk, si, siclk, soclk );
1183// RFM 05-14-2004
1184// Level sensitive in SCAN_MODE
1185// Edge triggered when not in SCAN_MODE
1186
1187
1188 parameter SIZE = 1;
1189
1190 output q;
1191 output so;
1192
1193 input d;
1194 input l1clk;
1195 input si;
1196 input siclk;
1197 input soclk;
1198
1199 reg q;
1200 wire so;
1201 wire l1clk, siclk, soclk;
1202
1203 `ifdef SCAN_MODE
1204
1205 reg l1;
1206 `ifdef FAST_FLUSH
1207 always @(posedge l1clk or posedge siclk ) begin
1208 if (siclk) begin
1209 q <= 1'b0; //pseudo flush reset
1210 end else begin
1211 q <= d;
1212 end
1213 end
1214 `else
1215 always @(l1clk or siclk or soclk or d or si)
1216 begin
1217 if (!l1clk && !siclk) l1 <= d; // Load master with data
1218 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
1219 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
1220
1221 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
1222 if ( l1clk && siclk && !soclk) q <= si; // Flush
1223 end
1224 `endif
1225 `else
1226 wire si_unused;
1227 wire siclk_unused;
1228 wire soclk_unused;
1229 assign si_unused = si;
1230 assign siclk_unused = siclk;
1231 assign soclk_unused = soclk;
1232
1233
1234 `ifdef INITLATZERO
1235 initial q = 1'b0;
1236 `endif
1237
1238 always @(posedge l1clk)
1239 begin
1240 if (!siclk && !soclk) q <= d;
1241 else q <= 1'bx;
1242 end
1243 `endif
1244
1245 assign so = q;
1246
1247endmodule // dff
1248module cl_sc1_msffmin_30ps_32x ( q, so, d, l1clk, si, siclk, soclk );
1249// RFM 05-14-2004
1250// Level sensitive in SCAN_MODE
1251// Edge triggered when not in SCAN_MODE
1252
1253
1254 parameter SIZE = 1;
1255
1256 output q;
1257 output so;
1258
1259 input d;
1260 input l1clk;
1261 input si;
1262 input siclk;
1263 input soclk;
1264
1265 reg q;
1266 wire so;
1267 wire l1clk, siclk, soclk;
1268
1269 `ifdef SCAN_MODE
1270
1271 reg l1;
1272 `ifdef FAST_FLUSH
1273 always @(posedge l1clk or posedge siclk ) begin
1274 if (siclk) begin
1275 q <= 1'b0; //pseudo flush reset
1276 end else begin
1277 q <= d;
1278 end
1279 end
1280 `else
1281 always @(l1clk or siclk or soclk or d or si)
1282 begin
1283 if (!l1clk && !siclk) l1 <= d; // Load master with data
1284 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
1285 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
1286
1287 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
1288 if ( l1clk && siclk && !soclk) q <= si; // Flush
1289 end
1290 `endif
1291 `else
1292 wire si_unused;
1293 wire siclk_unused;
1294 wire soclk_unused;
1295 assign si_unused = si;
1296 assign siclk_unused = siclk;
1297 assign soclk_unused = soclk;
1298
1299
1300 `ifdef INITLATZERO
1301 initial q = 1'b0;
1302 `endif
1303
1304 always @(posedge l1clk)
1305 begin
1306 if (!siclk && !soclk) q <= d;
1307 else q <= 1'bx;
1308 end
1309 `endif
1310
1311 assign so = q;
1312
1313endmodule // dff
1314module cl_sc1_msffmin_30ps_1x ( q, so, d, l1clk, si, siclk, soclk );
1315// RFM 05-14-2004
1316// Level sensitive in SCAN_MODE
1317// Edge triggered when not in SCAN_MODE
1318
1319
1320 parameter SIZE = 1;
1321
1322 output q;
1323 output so;
1324
1325 input d;
1326 input l1clk;
1327 input si;
1328 input siclk;
1329 input soclk;
1330
1331 reg q;
1332 wire so;
1333 wire l1clk, siclk, soclk;
1334
1335 `ifdef SCAN_MODE
1336
1337 reg l1;
1338 `ifdef FAST_FLUSH
1339 always @(posedge l1clk or posedge siclk ) begin
1340 if (siclk) begin
1341 q <= 1'b0; //pseudo flush reset
1342 end else begin
1343 q <= d;
1344 end
1345 end
1346 `else
1347 always @(l1clk or siclk or soclk or d or si)
1348 begin
1349 if (!l1clk && !siclk) l1 <= d; // Load master with data
1350 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
1351 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
1352
1353 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
1354 if ( l1clk && siclk && !soclk) q <= si; // Flush
1355 end
1356 `endif
1357 `else
1358 wire si_unused;
1359 wire siclk_unused;
1360 wire soclk_unused;
1361 assign si_unused = si;
1362 assign siclk_unused = siclk;
1363 assign soclk_unused = soclk;
1364
1365
1366 `ifdef INITLATZERO
1367 initial q = 1'b0;
1368 `endif
1369
1370 always @(posedge l1clk)
1371 begin
1372 if (!siclk && !soclk) q <= d;
1373 else q <= 1'bx;
1374 end
1375 `endif
1376
1377 assign so = q;
1378
1379endmodule // dff
1380 module cl_sc1_clken_msffmin_4x ( q, so, d, l1clk, si, siclk, soclk, clken);
1381// Level sensitive in SCAN_MODE
1382// Edge triggered when not in SCAN_MODE
1383// created by xl on 3/18
1384
1385
1386
1387 output q;
1388 output so;
1389
1390 input d;
1391 input l1clk;
1392 input si;
1393 input siclk;
1394 input soclk;
1395 input clken;
1396 reg q;
1397 wire so;
1398 wire l1clk, siclk, soclk;
1399
1400 `ifdef SCAN_MODE
1401
1402 reg l1;
1403
1404 always @(l1clk or siclk or soclk or d or si)
1405 begin
1406 if (!l1clk && !siclk) l1 <= (d & clken ) | (q & !clken); // Load master with data
1407 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
1408 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
1409
1410 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
1411 if ( l1clk && siclk && !soclk) q <= si; // Flush
1412 end
1413
1414
1415 `else
1416 wire si_unused;
1417 wire siclk_unused;
1418 wire soclk_unused;
1419 assign si_unused = si;
1420 assign siclk_unused = siclk;
1421 assign soclk_unused = soclk;
1422
1423
1424 `ifdef INITLATZERO
1425
1426 initial q = 1'b0;
1427 `endif
1428
1429 always @(posedge l1clk)
1430 begin
1431 if (!siclk && !soclk) q <= (d & clken ) | (q & !clken);
1432 else q <= 1'bx;
1433 end
1434 `endif
1435
1436 assign so = q;
1437
1438endmodule
1439module cl_sc1_msffmin_syrst_1x ( q, so, d, l1clk, si, siclk, soclk,reset );
1440// RFM 05-14-2004
1441// Level sensitive in SCAN_MODE
1442// Edge triggered when not in SCAN_MODE
1443
1444
1445 parameter SIZE = 1;
1446
1447 output q;
1448 output so;
1449
1450 input d;
1451 input l1clk;
1452 input si;
1453 input siclk;
1454 input soclk;
1455 input reset;
1456 reg q;
1457 wire so;
1458 wire l1clk, siclk, soclk;
1459
1460 `ifdef SCAN_MODE
1461
1462 reg l1;
1463`ifdef FAST_FLUSH
1464 always @(l1clk or siclk or d ) // vcs optimized code
1465 begin
1466 if (!l1clk && !siclk) l1 <= (d&reset); // Load master with data
1467 else if ( l1clk && !siclk) q <= l1; // Load slave with master data
1468 else if ( l1clk && siclk) begin // Conflict between data and scan
1469 l1 <= 1'b0;
1470 q <= 1'b0;
1471 end
1472 end
1473 `else
1474 always @(l1clk or siclk or soclk or d or si)
1475 begin
1476 if (!l1clk && !siclk) l1 <= (d&reset); // Load master with data
1477 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
1478 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
1479
1480 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
1481 if ( l1clk && siclk && !soclk) q <= si; // Flush
1482 end
1483 `endif
1484 `else
1485 wire si_unused;
1486 wire siclk_unused;
1487 wire soclk_unused;
1488 assign si_unused = si;
1489 assign siclk_unused = siclk;
1490 assign soclk_unused = soclk;
1491
1492
1493 `ifdef INITLATZERO
1494 initial q = 1'b0;
1495 `endif
1496
1497 always @(posedge l1clk)
1498 begin
1499 if (!siclk && !soclk) q <= (d&reset);
1500 else q <= 1'bx;
1501 end
1502 `endif
1503
1504 assign so = q;
1505
1506endmodule // dff
1507module cl_sc1_msffmin_syrst_4x ( q, so, d, l1clk, si, siclk, soclk,reset );
1508// RFM 05-14-2004
1509// Level sensitive in SCAN_MODE
1510// Edge triggered when not in SCAN_MODE
1511
1512
1513 parameter SIZE = 1;
1514
1515 output q;
1516 output so;
1517
1518 input d;
1519 input l1clk;
1520 input si;
1521 input siclk;
1522 input soclk;
1523 input reset;
1524 reg q;
1525 wire so;
1526 wire l1clk, siclk, soclk;
1527
1528 `ifdef SCAN_MODE
1529
1530 reg l1;
1531`ifdef FAST_FLUSH
1532 always @(l1clk or siclk or d ) // vcs optimized code
1533 begin
1534 if (!l1clk && !siclk) l1 <= (d&reset); // Load master with data
1535 else if ( l1clk && !siclk) q <= l1; // Load slave with master data
1536 else if ( l1clk && siclk) begin // Conflict between data and scan
1537 l1 <= 1'b0;
1538 q <= 1'b0;
1539 end
1540 end
1541 `else
1542 always @(l1clk or siclk or soclk or d or si)
1543 begin
1544 if (!l1clk && !siclk) l1 <= (d&reset); // Load master with data
1545 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
1546 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
1547
1548 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
1549 if ( l1clk && siclk && !soclk) q <= si; // Flush
1550 end
1551 `endif
1552 `else
1553 wire si_unused;
1554 wire siclk_unused;
1555 wire soclk_unused;
1556 assign si_unused = si;
1557 assign siclk_unused = siclk;
1558 assign soclk_unused = soclk;
1559
1560
1561 `ifdef INITLATZERO
1562 initial q = 1'b0;
1563 `endif
1564
1565 always @(posedge l1clk)
1566 begin
1567 if (!siclk && !soclk) q <= (d&reset);
1568 else q <= 1'bx;
1569 end
1570 `endif
1571
1572 assign so = q;
1573
1574endmodule // dff
1575module cl_sc1_msffmin_syrst_8x ( q, so, d, l1clk, si, siclk, soclk,reset );
1576// RFM 05-14-2004
1577// Level sensitive in SCAN_MODE
1578// Edge triggered when not in SCAN_MODE
1579
1580
1581 parameter SIZE = 1;
1582
1583 output q;
1584 output so;
1585
1586 input d;
1587 input l1clk;
1588 input si;
1589 input siclk;
1590 input soclk;
1591 input reset;
1592 reg q;
1593 wire so;
1594 wire l1clk, siclk, soclk;
1595
1596 `ifdef SCAN_MODE
1597
1598 reg l1;
1599`ifdef FAST_FLUSH
1600 always @(l1clk or siclk or d ) // vcs optimized code
1601 begin
1602 if (!l1clk && !siclk) l1 <= (d&reset); // Load master with data
1603 else if ( l1clk && !siclk) q <= l1; // Load slave with master data
1604 else if ( l1clk && siclk) begin // Conflict between data and scan
1605 l1 <= 1'b0;
1606 q <= 1'b0;
1607 end
1608 end
1609 `else
1610 always @(l1clk or siclk or soclk or d or si)
1611 begin
1612 if (!l1clk && !siclk) l1 <= (d&reset); // Load master with data
1613 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
1614 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
1615
1616 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
1617 if ( l1clk && siclk && !soclk) q <= si; // Flush
1618 end
1619 `endif
1620 `else
1621 wire si_unused;
1622 wire siclk_unused;
1623 wire soclk_unused;
1624 assign si_unused = si;
1625 assign siclk_unused = siclk;
1626 assign soclk_unused = soclk;
1627
1628
1629 `ifdef INITLATZERO
1630 initial q = 1'b0;
1631 `endif
1632
1633 always @(posedge l1clk)
1634 begin
1635 if (!siclk && !soclk) q <= (d&reset);
1636 else q <= 1'bx;
1637 end
1638 `endif
1639
1640 assign so = q;
1641
1642endmodule // dff
1643module cl_sc1_msffmin_syrst_16x ( q, so, d, l1clk, si, siclk, soclk,reset );
1644// RFM 05-14-2004
1645// Level sensitive in SCAN_MODE
1646// Edge triggered when not in SCAN_MODE
1647
1648
1649 parameter SIZE = 1;
1650
1651 output q;
1652 output so;
1653
1654 input d;
1655 input l1clk;
1656 input si;
1657 input siclk;
1658 input soclk;
1659 input reset;
1660 reg q;
1661 wire so;
1662 wire l1clk, siclk, soclk;
1663
1664 `ifdef SCAN_MODE
1665
1666 reg l1;
1667`ifdef FAST_FLUSH
1668 always @(l1clk or siclk or d ) // vcs optimized code
1669 begin
1670 if (!l1clk && !siclk) l1 <= (d&reset); // Load master with data
1671 else if ( l1clk && !siclk) q <= l1; // Load slave with master data
1672 else if ( l1clk && siclk) begin // Conflict between data and scan
1673 l1 <= 1'b0;
1674 q <= 1'b0;
1675 end
1676 end
1677 `else
1678 always @(l1clk or siclk or soclk or d or si)
1679 begin
1680 if (!l1clk && !siclk) l1 <= (d&reset); // Load master with data
1681 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
1682 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
1683
1684 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
1685 if ( l1clk && siclk && !soclk) q <= si; // Flush
1686 end
1687 `endif
1688 `else
1689 wire si_unused;
1690 wire siclk_unused;
1691 wire soclk_unused;
1692 assign si_unused = si;
1693 assign siclk_unused = siclk;
1694 assign soclk_unused = soclk;
1695
1696
1697 `ifdef INITLATZERO
1698 initial q = 1'b0;
1699 `endif
1700
1701 always @(posedge l1clk)
1702 begin
1703 if (!siclk && !soclk) q <= (d&reset);
1704 else q <= 1'bx;
1705 end
1706 `endif
1707
1708 assign so = q;
1709
1710endmodule // dff
1711module cl_sc1_msffmin_syrst_32x ( q, so, d, l1clk, si, siclk, soclk,reset );
1712// RFM 05-14-2004
1713// Level sensitive in SCAN_MODE
1714// Edge triggered when not in SCAN_MODE
1715
1716
1717 parameter SIZE = 1;
1718
1719 output q;
1720 output so;
1721
1722 input d;
1723 input l1clk;
1724 input si;
1725 input siclk;
1726 input soclk;
1727 input reset;
1728 reg q;
1729 wire so;
1730 wire l1clk, siclk, soclk;
1731
1732 `ifdef SCAN_MODE
1733
1734 reg l1;
1735`ifdef FAST_FLUSH
1736 always @(l1clk or siclk or d ) // vcs optimized code
1737 begin
1738 if (!l1clk && !siclk) l1 <= (d&reset); // Load master with data
1739 else if ( l1clk && !siclk) q <= l1; // Load slave with master data
1740 else if ( l1clk && siclk) begin // Conflict between data and scan
1741 l1 <= 1'b0;
1742 q <= 1'b0;
1743 end
1744 end
1745 `else
1746 always @(l1clk or siclk or soclk or d or si)
1747 begin
1748 if (!l1clk && !siclk) l1 <= (d&reset); // Load master with data
1749 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
1750 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
1751
1752 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
1753 if ( l1clk && siclk && !soclk) q <= si; // Flush
1754 end
1755 `endif
1756 `else
1757 wire si_unused;
1758 wire siclk_unused;
1759 wire soclk_unused;
1760 assign si_unused = si;
1761 assign siclk_unused = siclk;
1762 assign soclk_unused = soclk;
1763
1764
1765 `ifdef INITLATZERO
1766 initial q = 1'b0;
1767 `endif
1768
1769 always @(posedge l1clk)
1770 begin
1771 if (!siclk && !soclk) q <= (d&reset);
1772 else q <= 1'bx;
1773 end
1774 `endif
1775
1776 assign so = q;
1777
1778endmodule // dff
1779module cl_sc1_bsac_cell_4x(q, so, d, l1clk, si, siclk, soclk, updateclk,
1780 ac_mode, ac_test_signal);
1781 output q;
1782 output so;
1783
1784 input d, ac_test_signal;
1785 input l1clk;
1786 input si;
1787 input siclk;
1788 input soclk;
1789 input updateclk, ac_mode;
1790
1791 reg q;
1792 reg so;
1793 wire l1clk, siclk, soclk, updateclk;
1794
1795
1796 reg l1, qm;
1797
1798 always @(l1clk or siclk or soclk or d or si)
1799 begin
1800 if (!l1clk && !siclk) l1 <= d; // Load master with data
1801 if ( l1clk && siclk) l1 <= si; // Load master with
1802 // scan or flush
1803 if (!l1clk && siclk) l1 <= 1'bx; // Conflict between
1804 // data and scan
1805 if ( l1clk && !soclk) so <= l1; // Load slave with
1806 // master data
1807 if ( l1clk && siclk && !soclk) so <= si; // Flush
1808 end
1809
1810 initial qm = 1'b0;
1811
1812 always@(updateclk or l1)
1813 begin
1814 if(updateclk) qm <=l1;
1815 end
1816always@(ac_mode or qm or ac_test_signal)
1817 begin
1818 if(ac_mode==0) q=qm;
1819 else q=qm ^ ac_test_signal;
1820 end
1821endmodule
1822module cl_sc1_blatch_4x ( latout, so, d, l1clk, si, siclk, soclk);
1823
1824 output latout;
1825 output so;
1826 input d;
1827 input l1clk;
1828 input si;
1829 input siclk;
1830 input soclk;
1831
1832
1833 wire so;
1834 reg s, m;
1835
1836 `ifdef SCAN_MODE
1837
1838 always @(l1clk or siclk or soclk or d or si) begin
1839
1840 if (!l1clk && !siclk) m <= d; // Load master with data
1841 else if ( l1clk && siclk) m <= si; // Load master with scan or flush
1842 else if (!l1clk && siclk) m <= 1'bx; // Conflict between data and scan
1843
1844 if ( l1clk && !soclk && !siclk) s <= m; // Load slave with master data
1845 else if (l1clk && siclk && !soclk) s <= si; // Flush
1846 end
1847
1848 `else
1849 wire si_unused = si;
1850`ifdef INITLATZERO
1851
1852
1853 initial m = 1'b0;
1854 `endif
1855
1856
1857 always @(l1clk or d or si or siclk) begin
1858 if(siclk==0 && l1clk==0) m = d;
1859 else if(siclk && !l1clk) m = 1'bx;
1860 if(siclk && l1clk) m = si;
1861 if(l1clk && !soclk) s = m;
1862 end
1863
1864 `endif
1865
1866 assign latout = m;
1867 assign so = s;
1868
1869
1870endmodule
1871
1872
1873
1874
1875
1876 module cl_sc1_alatch_4x ( q, so, d, l1clk, si, siclk, soclk, se );
1877
1878
1879
1880
1881
1882 output q;
1883 output so;
1884
1885 input d;
1886 input l1clk;
1887 input si;
1888 input siclk;
1889 input soclk;
1890 input se;
1891
1892 reg q;
1893 wire so;
1894 wire l1clk, siclk, soclk;
1895
1896
1897
1898 reg l1;
1899
1900 always @(l1clk or siclk or soclk or d or si or se)
1901 begin
1902
1903 if (siclk) l1 <= si; // Load master with scan or flush
1904
1905 if(se && !soclk && l1clk && siclk) q <= si;
1906 else if ( se && !soclk && l1clk) q <= l1;
1907 else if ( !soclk && l1clk) q <= d;
1908 end
1909
1910
1911
1912
1913 `ifdef INITLATZERO
1914 initial q = 1'b0;
1915 `endif
1916
1917
1918
1919 assign so = q;
1920
1921endmodule // dff
1922 module cl_sc1_clken_msff_4x ( q, so, d, l1clk, si, siclk, soclk, clken);
1923// Level sensitive in SCAN_MODE
1924// Edge triggered when not in SCAN_MODE
1925// created by xl on 3/18
1926
1927
1928
1929 output q;
1930 output so;
1931
1932 input d;
1933 input l1clk;
1934 input si;
1935 input siclk;
1936 input soclk;
1937 input clken;
1938 reg q;
1939 wire so;
1940 wire l1clk, siclk, soclk;
1941
1942 `ifdef SCAN_MODE
1943
1944 reg l1;
1945
1946 always @(l1clk or siclk or soclk or d or si)
1947 begin
1948 if (!l1clk && !siclk) l1 <= (d & clken ) | (q & !clken); // Load master with data
1949 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
1950 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
1951
1952 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
1953 if ( l1clk && siclk && !soclk) q <= si; // Flush
1954 end
1955
1956
1957 `else
1958 wire si_unused;
1959 wire siclk_unused;
1960 wire soclk_unused;
1961 assign si_unused = si;
1962 assign siclk_unused = siclk;
1963 assign soclk_unused = soclk;
1964
1965
1966 `ifdef INITLATZERO
1967
1968 initial q = 1'b0;
1969 `endif
1970
1971 always @(posedge l1clk)
1972 begin
1973 if (!siclk && !soclk) q <= (d & clken ) | (q & !clken);
1974 else q <= 1'bx;
1975 end
1976 `endif
1977
1978 assign so = q;
1979
1980endmodule
1981
1982 module cl_sc1_msff_arst_4x ( q, so, d, l1clk, si, siclk, soclk, reset );
1983// RFM 05-14-2004
1984// Level sensitive in SCAN_MODE
1985// Edge triggered when not in SCAN_MODE
1986
1987
1988 parameter SIZE = 1;
1989
1990 output q;
1991 output so;
1992
1993 input d;
1994 input l1clk;
1995 input si;
1996 input siclk;
1997 input soclk;
1998 input reset;
1999
2000 reg q;
2001 wire so;
2002 wire l1clk, siclk, soclk;
2003
2004 `ifdef SCAN_MODE
2005
2006 reg l1;
2007
2008 always @(l1clk or siclk or soclk or d or si or reset)
2009 begin
2010 if (reset ) l1 <= 1'b0;
2011 else if (!l1clk && !siclk) l1 <= d;
2012 else if ( l1clk && siclk) l1 <= si;
2013 else if (!l1clk && siclk) l1 <= 1'bx;
2014
2015 if (reset) q <= 1'b0;
2016 else if ( l1clk && !siclk && !soclk) q <= l1;
2017 else if ( l1clk && siclk && !soclk) q <= si;
2018
2019 end
2020
2021
2022 `else
2023 wire si_unused;
2024 wire siclk_unused;
2025 wire soclk_unused;
2026 assign si_unused = si;
2027 assign siclk_unused = siclk;
2028 assign soclk_unused = soclk;
2029
2030
2031 `ifdef INITLATZERO
2032 initial q = 1'b0;
2033 `endif
2034
2035 always @(posedge l1clk or posedge reset)
2036 begin
2037
2038 if ( reset) q <= 1'b0;
2039 else if (!siclk && !soclk ) q <= d;
2040 else q <= 1'bx;
2041 end
2042 `endif
2043
2044 assign so = q;
2045
2046endmodule // dff
2047
2048
2049
2050
2051module cl_sc1_aomux2_12x (
2052in0,
2053in1,
2054sel0,
2055sel1,
2056out
2057);
2058input in0;
2059input in1;
2060input sel0;
2061input sel1;
2062output out;
2063
2064`ifdef LIB
2065assign out = ((sel0 & in0) |
2066 (sel1 & in1));
2067`endif
2068
2069
2070endmodule
2071module cl_sc1_aomux2_16x (
2072in0,
2073in1,
2074sel0,
2075sel1,
2076out
2077);
2078input in0;
2079input in1;
2080input sel0;
2081input sel1;
2082output out;
2083
2084`ifdef LIB
2085assign out = ((sel0 & in0) |
2086 (sel1 & in1));
2087`endif
2088
2089
2090endmodule
2091module cl_sc1_aomux2_1x (
2092in0,
2093in1,
2094sel0,
2095sel1,
2096out
2097);
2098input in0;
2099input in1;
2100input sel0;
2101input sel1;
2102output out;
2103
2104`ifdef LIB
2105assign out = ((sel0 & in0) |
2106 (sel1 & in1));
2107`endif
2108
2109
2110endmodule
2111module cl_sc1_aomux2_2x (
2112in0,
2113in1,
2114sel0,
2115sel1,
2116out
2117);
2118input in0;
2119input in1;
2120input sel0;
2121input sel1;
2122output out;
2123
2124`ifdef LIB
2125assign out = ((sel0 & in0) |
2126 (sel1 & in1));
2127`endif
2128
2129
2130endmodule
2131module cl_sc1_aomux2_4x (
2132in0,
2133in1,
2134sel0,
2135sel1,
2136out
2137);
2138input in0;
2139input in1;
2140input sel0;
2141input sel1;
2142output out;
2143
2144`ifdef LIB
2145assign out = ((sel0 & in0) |
2146 (sel1 & in1));
2147`endif
2148
2149
2150endmodule
2151module cl_sc1_aomux2_6x (
2152in0,
2153in1,
2154sel0,
2155sel1,
2156out
2157);
2158input in0;
2159input in1;
2160input sel0;
2161input sel1;
2162output out;
2163
2164`ifdef LIB
2165assign out = ((sel0 & in0) |
2166 (sel1 & in1));
2167`endif
2168
2169
2170endmodule
2171module cl_sc1_aomux2_8x (
2172in0,
2173in1,
2174sel0,
2175sel1,
2176out
2177);
2178input in0;
2179input in1;
2180input sel0;
2181input sel1;
2182output out;
2183
2184`ifdef LIB
2185assign out = ((sel0 & in0) |
2186 (sel1 & in1));
2187`endif
2188
2189
2190endmodule
2191module cl_sc1_aomux3_12x (
2192in0,
2193in1,
2194in2,
2195sel0,
2196sel1,
2197sel2,
2198out
2199);
2200input in0;
2201input in1;
2202input in2;
2203input sel0;
2204input sel1;
2205input sel2;
2206output out;
2207
2208`ifdef LIB
2209assign out = ((sel0 & in0) |
2210 (sel1 & in1) |
2211 (sel2 & in2));
2212`endif
2213
2214endmodule
2215module cl_sc1_aomux3_16x (
2216in0,
2217in1,
2218in2,
2219sel0,
2220sel1,
2221sel2,
2222out
2223);
2224input in0;
2225input in1;
2226input in2;
2227input sel0;
2228input sel1;
2229input sel2;
2230output out;
2231
2232`ifdef LIB
2233assign out = ((sel0 & in0) |
2234 (sel1 & in1) |
2235 (sel2 & in2));
2236`endif
2237
2238endmodule
2239module cl_sc1_aomux3_1x (
2240in0,
2241in1,
2242in2,
2243sel0,
2244sel1,
2245sel2,
2246out
2247);
2248input in0;
2249input in1;
2250input in2;
2251input sel0;
2252input sel1;
2253input sel2;
2254output out;
2255
2256`ifdef LIB
2257assign out = ((sel0 & in0) |
2258 (sel1 & in1) |
2259 (sel2 & in2));
2260`endif
2261
2262endmodule
2263module cl_sc1_aomux3_2x (
2264in0,
2265in1,
2266in2,
2267sel0,
2268sel1,
2269sel2,
2270out
2271);
2272input in0;
2273input in1;
2274input in2;
2275input sel0;
2276input sel1;
2277input sel2;
2278output out;
2279
2280`ifdef LIB
2281assign out = ((sel0 & in0) |
2282 (sel1 & in1) |
2283 (sel2 & in2));
2284`endif
2285
2286endmodule
2287module cl_sc1_aomux3_4x (
2288in0,
2289in1,
2290in2,
2291sel0,
2292sel1,
2293sel2,
2294out
2295);
2296input in0;
2297input in1;
2298input in2;
2299input sel0;
2300input sel1;
2301input sel2;
2302output out;
2303
2304`ifdef LIB
2305assign out = ((sel0 & in0) |
2306 (sel1 & in1) |
2307 (sel2 & in2));
2308`endif
2309
2310endmodule
2311module cl_sc1_aomux3_6x (
2312in0,
2313in1,
2314in2,
2315sel0,
2316sel1,
2317sel2,
2318out
2319);
2320input in0;
2321input in1;
2322input in2;
2323input sel0;
2324input sel1;
2325input sel2;
2326output out;
2327
2328`ifdef LIB
2329assign out = ((sel0 & in0) |
2330 (sel1 & in1) |
2331 (sel2 & in2));
2332`endif
2333
2334endmodule
2335module cl_sc1_aomux3_8x (
2336in0,
2337in1,
2338in2,
2339sel0,
2340sel1,
2341sel2,
2342out
2343);
2344input in0;
2345input in1;
2346input in2;
2347input sel0;
2348input sel1;
2349input sel2;
2350output out;
2351
2352`ifdef LIB
2353assign out = ((sel0 & in0) |
2354 (sel1 & in1) |
2355 (sel2 & in2));
2356`endif
2357
2358endmodule
2359module cl_sc1_aomux4_12x (
2360in0,
2361in1,
2362in2,
2363in3,
2364sel0,
2365sel1,
2366sel2,
2367sel3,
2368out
2369);
2370input in0;
2371input in1;
2372input in2;
2373input in3;
2374input sel0;
2375input sel1;
2376input sel2;
2377input sel3;
2378output out;
2379
2380`ifdef LIB
2381assign out = ((sel0 & in0) |
2382 (sel1 & in1) |
2383 (sel2 & in2) |
2384 (sel3 & in3));
2385`endif
2386
2387endmodule
2388module cl_sc1_aomux4_16x (
2389in0,
2390in1,
2391in2,
2392in3,
2393sel0,
2394sel1,
2395sel2,
2396sel3,
2397out
2398);
2399input in0;
2400input in1;
2401input in2;
2402input in3;
2403input sel0;
2404input sel1;
2405input sel2;
2406input sel3;
2407output out;
2408
2409`ifdef LIB
2410assign out = ((sel0 & in0) |
2411 (sel1 & in1) |
2412 (sel2 & in2) |
2413 (sel3 & in3));
2414`endif
2415
2416endmodule
2417module cl_sc1_aomux4_1x (
2418in0,
2419in1,
2420in2,
2421in3,
2422sel0,
2423sel1,
2424sel2,
2425sel3,
2426out
2427);
2428input in0;
2429input in1;
2430input in2;
2431input in3;
2432input sel0;
2433input sel1;
2434input sel2;
2435input sel3;
2436output out;
2437
2438`ifdef LIB
2439assign out = ((sel0 & in0) |
2440 (sel1 & in1) |
2441 (sel2 & in2) |
2442 (sel3 & in3));
2443`endif
2444
2445endmodule
2446module cl_sc1_aomux4_2x (
2447in0,
2448in1,
2449in2,
2450in3,
2451sel0,
2452sel1,
2453sel2,
2454sel3,
2455out
2456);
2457input in0;
2458input in1;
2459input in2;
2460input in3;
2461input sel0;
2462input sel1;
2463input sel2;
2464input sel3;
2465output out;
2466
2467`ifdef LIB
2468assign out = ((sel0 & in0) |
2469 (sel1 & in1) |
2470 (sel2 & in2) |
2471 (sel3 & in3));
2472`endif
2473
2474endmodule
2475module cl_sc1_aomux4_4x (
2476in0,
2477in1,
2478in2,
2479in3,
2480sel0,
2481sel1,
2482sel2,
2483sel3,
2484out
2485);
2486input in0;
2487input in1;
2488input in2;
2489input in3;
2490input sel0;
2491input sel1;
2492input sel2;
2493input sel3;
2494output out;
2495
2496`ifdef LIB
2497assign out = ((sel0 & in0) |
2498 (sel1 & in1) |
2499 (sel2 & in2) |
2500 (sel3 & in3));
2501`endif
2502
2503endmodule
2504module cl_sc1_aomux4_6x (
2505in0,
2506in1,
2507in2,
2508in3,
2509sel0,
2510sel1,
2511sel2,
2512sel3,
2513out
2514);
2515input in0;
2516input in1;
2517input in2;
2518input in3;
2519input sel0;
2520input sel1;
2521input sel2;
2522input sel3;
2523output out;
2524
2525`ifdef LIB
2526assign out = ((sel0 & in0) |
2527 (sel1 & in1) |
2528 (sel2 & in2) |
2529 (sel3 & in3));
2530`endif
2531
2532endmodule
2533module cl_sc1_aomux4_8x (
2534in0,
2535in1,
2536in2,
2537in3,
2538sel0,
2539sel1,
2540sel2,
2541sel3,
2542out
2543);
2544input in0;
2545input in1;
2546input in2;
2547input in3;
2548input sel0;
2549input sel1;
2550input sel2;
2551input sel3;
2552output out;
2553
2554`ifdef LIB
2555assign out = ((sel0 & in0) |
2556 (sel1 & in1) |
2557 (sel2 & in2) |
2558 (sel3 & in3));
2559`endif
2560
2561endmodule
2562module cl_sc1_aomux5_12x (
2563in0,
2564in1,
2565in2,
2566in3,
2567in4,
2568sel0,
2569sel1,
2570sel2,
2571sel3,
2572sel4,
2573out
2574);
2575input in0;
2576input in1;
2577input in2;
2578input in3;
2579input in4;
2580input sel0;
2581input sel1;
2582input sel2;
2583input sel3;
2584input sel4;
2585output out;
2586
2587`ifdef LIB
2588assign out = ((sel0 & in0) |
2589 (sel1 & in1) |
2590 (sel2 & in2) |
2591 (sel3 & in3) |
2592 (sel4 & in4));
2593`endif
2594
2595endmodule
2596module cl_sc1_aomux5_16x (
2597in0,
2598in1,
2599in2,
2600in3,
2601in4,
2602sel0,
2603sel1,
2604sel2,
2605sel3,
2606sel4,
2607out
2608);
2609input in0;
2610input in1;
2611input in2;
2612input in3;
2613input in4;
2614input sel0;
2615input sel1;
2616input sel2;
2617input sel3;
2618input sel4;
2619output out;
2620
2621`ifdef LIB
2622assign out = ((sel0 & in0) |
2623 (sel1 & in1) |
2624 (sel2 & in2) |
2625 (sel3 & in3) |
2626 (sel4 & in4));
2627`endif
2628
2629endmodule
2630module cl_sc1_aomux5_1x (
2631in0,
2632in1,
2633in2,
2634in3,
2635in4,
2636sel0,
2637sel1,
2638sel2,
2639sel3,
2640sel4,
2641out
2642);
2643input in0;
2644input in1;
2645input in2;
2646input in3;
2647input in4;
2648input sel0;
2649input sel1;
2650input sel2;
2651input sel3;
2652input sel4;
2653output out;
2654
2655`ifdef LIB
2656assign out = ((sel0 & in0) |
2657 (sel1 & in1) |
2658 (sel2 & in2) |
2659 (sel3 & in3) |
2660 (sel4 & in4));
2661`endif
2662
2663endmodule
2664module cl_sc1_aomux5_2x (
2665in0,
2666in1,
2667in2,
2668in3,
2669in4,
2670sel0,
2671sel1,
2672sel2,
2673sel3,
2674sel4,
2675out
2676);
2677input in0;
2678input in1;
2679input in2;
2680input in3;
2681input in4;
2682input sel0;
2683input sel1;
2684input sel2;
2685input sel3;
2686input sel4;
2687output out;
2688
2689`ifdef LIB
2690assign out = ((sel0 & in0) |
2691 (sel1 & in1) |
2692 (sel2 & in2) |
2693 (sel3 & in3) |
2694 (sel4 & in4));
2695`endif
2696
2697endmodule
2698module cl_sc1_aomux5_4x (
2699in0,
2700in1,
2701in2,
2702in3,
2703in4,
2704sel0,
2705sel1,
2706sel2,
2707sel3,
2708sel4,
2709out
2710);
2711input in0;
2712input in1;
2713input in2;
2714input in3;
2715input in4;
2716input sel0;
2717input sel1;
2718input sel2;
2719input sel3;
2720input sel4;
2721output out;
2722
2723`ifdef LIB
2724assign out = ((sel0 & in0) |
2725 (sel1 & in1) |
2726 (sel2 & in2) |
2727 (sel3 & in3) |
2728 (sel4 & in4));
2729`endif
2730
2731endmodule
2732module cl_sc1_aomux5_6x (
2733in0,
2734in1,
2735in2,
2736in3,
2737in4,
2738sel0,
2739sel1,
2740sel2,
2741sel3,
2742sel4,
2743out
2744);
2745input in0;
2746input in1;
2747input in2;
2748input in3;
2749input in4;
2750input sel0;
2751input sel1;
2752input sel2;
2753input sel3;
2754input sel4;
2755output out;
2756
2757`ifdef LIB
2758assign out = ((sel0 & in0) |
2759 (sel1 & in1) |
2760 (sel2 & in2) |
2761 (sel3 & in3) |
2762 (sel4 & in4));
2763`endif
2764
2765endmodule
2766module cl_sc1_aomux5_8x (
2767in0,
2768in1,
2769in2,
2770in3,
2771in4,
2772sel0,
2773sel1,
2774sel2,
2775sel3,
2776sel4,
2777out
2778);
2779input in0;
2780input in1;
2781input in2;
2782input in3;
2783input in4;
2784input sel0;
2785input sel1;
2786input sel2;
2787input sel3;
2788input sel4;
2789output out;
2790
2791`ifdef LIB
2792assign out = ((sel0 & in0) |
2793 (sel1 & in1) |
2794 (sel2 & in2) |
2795 (sel3 & in3) |
2796 (sel4 & in4));
2797`endif
2798
2799endmodule
2800module cl_sc1_aomux6_12x (
2801in0,
2802in1,
2803in2,
2804in3,
2805in4,
2806in5,
2807sel0,
2808sel1,
2809sel2,
2810sel3,
2811sel4,
2812sel5,
2813out
2814);
2815input in0;
2816input in1;
2817input in2;
2818input in3;
2819input in4;
2820input in5;
2821input sel0;
2822input sel1;
2823input sel2;
2824input sel3;
2825input sel4;
2826input sel5;
2827output out;
2828
2829`ifdef LIB
2830assign out = ((sel0 & in0) |
2831 (sel1 & in1) |
2832 (sel2 & in2) |
2833 (sel3 & in3) |
2834 (sel4 & in4) |
2835 (sel5 & in5));
2836`endif
2837
2838endmodule
2839module cl_sc1_aomux6_16x (
2840in0,
2841in1,
2842in2,
2843in3,
2844in4,
2845in5,
2846sel0,
2847sel1,
2848sel2,
2849sel3,
2850sel4,
2851sel5,
2852out
2853);
2854input in0;
2855input in1;
2856input in2;
2857input in3;
2858input in4;
2859input in5;
2860input sel0;
2861input sel1;
2862input sel2;
2863input sel3;
2864input sel4;
2865input sel5;
2866output out;
2867
2868`ifdef LIB
2869assign out = ((sel0 & in0) |
2870 (sel1 & in1) |
2871 (sel2 & in2) |
2872 (sel3 & in3) |
2873 (sel4 & in4) |
2874 (sel5 & in5));
2875`endif
2876
2877endmodule
2878module cl_sc1_aomux6_1x (
2879in0,
2880in1,
2881in2,
2882in3,
2883in4,
2884in5,
2885sel0,
2886sel1,
2887sel2,
2888sel3,
2889sel4,
2890sel5,
2891out
2892);
2893input in0;
2894input in1;
2895input in2;
2896input in3;
2897input in4;
2898input in5;
2899input sel0;
2900input sel1;
2901input sel2;
2902input sel3;
2903input sel4;
2904input sel5;
2905output out;
2906
2907`ifdef LIB
2908assign out = ((sel0 & in0) |
2909 (sel1 & in1) |
2910 (sel2 & in2) |
2911 (sel3 & in3) |
2912 (sel4 & in4) |
2913 (sel5 & in5));
2914`endif
2915
2916endmodule
2917module cl_sc1_aomux6_2x (
2918in0,
2919in1,
2920in2,
2921in3,
2922in4,
2923in5,
2924sel0,
2925sel1,
2926sel2,
2927sel3,
2928sel4,
2929sel5,
2930out
2931);
2932input in0;
2933input in1;
2934input in2;
2935input in3;
2936input in4;
2937input in5;
2938input sel0;
2939input sel1;
2940input sel2;
2941input sel3;
2942input sel4;
2943input sel5;
2944output out;
2945
2946`ifdef LIB
2947assign out = ((sel0 & in0) |
2948 (sel1 & in1) |
2949 (sel2 & in2) |
2950 (sel3 & in3) |
2951 (sel4 & in4) |
2952 (sel5 & in5));
2953`endif
2954
2955endmodule
2956module cl_sc1_aomux6_4x (
2957in0,
2958in1,
2959in2,
2960in3,
2961in4,
2962in5,
2963sel0,
2964sel1,
2965sel2,
2966sel3,
2967sel4,
2968sel5,
2969out
2970);
2971input in0;
2972input in1;
2973input in2;
2974input in3;
2975input in4;
2976input in5;
2977input sel0;
2978input sel1;
2979input sel2;
2980input sel3;
2981input sel4;
2982input sel5;
2983output out;
2984
2985`ifdef LIB
2986assign out = ((sel0 & in0) |
2987 (sel1 & in1) |
2988 (sel2 & in2) |
2989 (sel3 & in3) |
2990 (sel4 & in4) |
2991 (sel5 & in5));
2992`endif
2993
2994endmodule
2995module cl_sc1_aomux6_6x (
2996in0,
2997in1,
2998in2,
2999in3,
3000in4,
3001in5,
3002sel0,
3003sel1,
3004sel2,
3005sel3,
3006sel4,
3007sel5,
3008out
3009);
3010input in0;
3011input in1;
3012input in2;
3013input in3;
3014input in4;
3015input in5;
3016input sel0;
3017input sel1;
3018input sel2;
3019input sel3;
3020input sel4;
3021input sel5;
3022output out;
3023
3024`ifdef LIB
3025assign out = ((sel0 & in0) |
3026 (sel1 & in1) |
3027 (sel2 & in2) |
3028 (sel3 & in3) |
3029 (sel4 & in4) |
3030 (sel5 & in5));
3031`endif
3032
3033endmodule
3034module cl_sc1_aomux6_8x (
3035in0,
3036in1,
3037in2,
3038in3,
3039in4,
3040in5,
3041sel0,
3042sel1,
3043sel2,
3044sel3,
3045sel4,
3046sel5,
3047out
3048);
3049input in0;
3050input in1;
3051input in2;
3052input in3;
3053input in4;
3054input in5;
3055input sel0;
3056input sel1;
3057input sel2;
3058input sel3;
3059input sel4;
3060input sel5;
3061output out;
3062
3063`ifdef LIB
3064assign out = ((sel0 & in0) |
3065 (sel1 & in1) |
3066 (sel2 & in2) |
3067 (sel3 & in3) |
3068 (sel4 & in4) |
3069 (sel5 & in5));
3070`endif
3071
3072endmodule
3073module cl_sc1_aomux6_by2_1x (
3074in0,
3075in1,
3076in2,
3077in3,
3078in4,
3079in5,
3080sel0,
3081sel1,
3082sel2,
3083sel3,
3084sel4,
3085sel5,
3086out
3087);
3088input in0;
3089input in1;
3090input in2;
3091input in3;
3092input in4;
3093input in5;
3094input sel0;
3095input sel1;
3096input sel2;
3097input sel3;
3098input sel4;
3099input sel5;
3100output out;
3101
3102`ifdef LIB
3103assign out = ((sel0 & in0) |
3104 (sel1 & in1) |
3105 (sel2 & in2) |
3106 (sel3 & in3) |
3107 (sel4 & in4) |
3108 (sel5 & in5));
3109`endif
3110
3111endmodule
3112module cl_sc1_aomux6_by2_2x (
3113in0,
3114in1,
3115in2,
3116in3,
3117in4,
3118in5,
3119sel0,
3120sel1,
3121sel2,
3122sel3,
3123sel4,
3124sel5,
3125out
3126);
3127input in0;
3128input in1;
3129input in2;
3130input in3;
3131input in4;
3132input in5;
3133input sel0;
3134input sel1;
3135input sel2;
3136input sel3;
3137input sel4;
3138input sel5;
3139output out;
3140
3141`ifdef LIB
3142assign out = ((sel0 & in0) |
3143 (sel1 & in1) |
3144 (sel2 & in2) |
3145 (sel3 & in3) |
3146 (sel4 & in4) |
3147 (sel5 & in5));
3148`endif
3149
3150endmodule
3151module cl_sc1_aomux7_12x (
3152in0,
3153in1,
3154in2,
3155in3,
3156in4,
3157in5,
3158in6,
3159sel0,
3160sel1,
3161sel2,
3162sel3,
3163sel4,
3164sel5,
3165sel6,
3166out
3167);
3168input in0;
3169input in1;
3170input in2;
3171input in3;
3172input in4;
3173input in5;
3174input in6;
3175input sel0;
3176input sel1;
3177input sel2;
3178input sel3;
3179input sel4;
3180input sel5;
3181input sel6;
3182output out;
3183
3184`ifdef LIB
3185assign out = ((sel0 & in0) |
3186 (sel1 & in1) |
3187 (sel2 & in2) |
3188 (sel3 & in3) |
3189 (sel4 & in4) |
3190 (sel5 & in5) |
3191 (sel6 & in6));
3192`endif
3193
3194endmodule
3195module cl_sc1_aomux7_16x (
3196in0,
3197in1,
3198in2,
3199in3,
3200in4,
3201in5,
3202in6,
3203sel0,
3204sel1,
3205sel2,
3206sel3,
3207sel4,
3208sel5,
3209sel6,
3210out
3211);
3212input in0;
3213input in1;
3214input in2;
3215input in3;
3216input in4;
3217input in5;
3218input in6;
3219input sel0;
3220input sel1;
3221input sel2;
3222input sel3;
3223input sel4;
3224input sel5;
3225input sel6;
3226output out;
3227
3228`ifdef LIB
3229assign out = ((sel0 & in0) |
3230 (sel1 & in1) |
3231 (sel2 & in2) |
3232 (sel3 & in3) |
3233 (sel4 & in4) |
3234 (sel5 & in5) |
3235 (sel6 & in6));
3236`endif
3237
3238endmodule
3239module cl_sc1_aomux7_1x (
3240in0,
3241in1,
3242in2,
3243in3,
3244in4,
3245in5,
3246in6,
3247sel0,
3248sel1,
3249sel2,
3250sel3,
3251sel4,
3252sel5,
3253sel6,
3254out
3255);
3256input in0;
3257input in1;
3258input in2;
3259input in3;
3260input in4;
3261input in5;
3262input in6;
3263input sel0;
3264input sel1;
3265input sel2;
3266input sel3;
3267input sel4;
3268input sel5;
3269input sel6;
3270output out;
3271
3272`ifdef LIB
3273assign out = ((sel0 & in0) |
3274 (sel1 & in1) |
3275 (sel2 & in2) |
3276 (sel3 & in3) |
3277 (sel4 & in4) |
3278 (sel5 & in5) |
3279 (sel6 & in6));
3280`endif
3281
3282endmodule
3283module cl_sc1_aomux7_2x (
3284in0,
3285in1,
3286in2,
3287in3,
3288in4,
3289in5,
3290in6,
3291sel0,
3292sel1,
3293sel2,
3294sel3,
3295sel4,
3296sel5,
3297sel6,
3298out
3299);
3300input in0;
3301input in1;
3302input in2;
3303input in3;
3304input in4;
3305input in5;
3306input in6;
3307input sel0;
3308input sel1;
3309input sel2;
3310input sel3;
3311input sel4;
3312input sel5;
3313input sel6;
3314output out;
3315
3316`ifdef LIB
3317assign out = ((sel0 & in0) |
3318 (sel1 & in1) |
3319 (sel2 & in2) |
3320 (sel3 & in3) |
3321 (sel4 & in4) |
3322 (sel5 & in5) |
3323 (sel6 & in6));
3324`endif
3325
3326endmodule
3327module cl_sc1_aomux7_4x (
3328in0,
3329in1,
3330in2,
3331in3,
3332in4,
3333in5,
3334in6,
3335sel0,
3336sel1,
3337sel2,
3338sel3,
3339sel4,
3340sel5,
3341sel6,
3342out
3343);
3344input in0;
3345input in1;
3346input in2;
3347input in3;
3348input in4;
3349input in5;
3350input in6;
3351input sel0;
3352input sel1;
3353input sel2;
3354input sel3;
3355input sel4;
3356input sel5;
3357input sel6;
3358output out;
3359
3360`ifdef LIB
3361assign out = ((sel0 & in0) |
3362 (sel1 & in1) |
3363 (sel2 & in2) |
3364 (sel3 & in3) |
3365 (sel4 & in4) |
3366 (sel5 & in5) |
3367 (sel6 & in6));
3368`endif
3369
3370endmodule
3371module cl_sc1_aomux7_6x (
3372in0,
3373in1,
3374in2,
3375in3,
3376in4,
3377in5,
3378in6,
3379sel0,
3380sel1,
3381sel2,
3382sel3,
3383sel4,
3384sel5,
3385sel6,
3386out
3387);
3388input in0;
3389input in1;
3390input in2;
3391input in3;
3392input in4;
3393input in5;
3394input in6;
3395input sel0;
3396input sel1;
3397input sel2;
3398input sel3;
3399input sel4;
3400input sel5;
3401input sel6;
3402output out;
3403
3404`ifdef LIB
3405assign out = ((sel0 & in0) |
3406 (sel1 & in1) |
3407 (sel2 & in2) |
3408 (sel3 & in3) |
3409 (sel4 & in4) |
3410 (sel5 & in5) |
3411 (sel6 & in6));
3412`endif
3413
3414endmodule
3415module cl_sc1_aomux7_8x (
3416in0,
3417in1,
3418in2,
3419in3,
3420in4,
3421in5,
3422in6,
3423sel0,
3424sel1,
3425sel2,
3426sel3,
3427sel4,
3428sel5,
3429sel6,
3430out
3431);
3432input in0;
3433input in1;
3434input in2;
3435input in3;
3436input in4;
3437input in5;
3438input in6;
3439input sel0;
3440input sel1;
3441input sel2;
3442input sel3;
3443input sel4;
3444input sel5;
3445input sel6;
3446output out;
3447
3448`ifdef LIB
3449assign out = ((sel0 & in0) |
3450 (sel1 & in1) |
3451 (sel2 & in2) |
3452 (sel3 & in3) |
3453 (sel4 & in4) |
3454 (sel5 & in5) |
3455 (sel6 & in6));
3456`endif
3457
3458endmodule
3459module cl_sc1_aomux7_by2_1x (
3460in0,
3461in1,
3462in2,
3463in3,
3464in4,
3465in5,
3466in6,
3467sel0,
3468sel1,
3469sel2,
3470sel3,
3471sel4,
3472sel5,
3473sel6,
3474out
3475);
3476input in0;
3477input in1;
3478input in2;
3479input in3;
3480input in4;
3481input in5;
3482input in6;
3483input sel0;
3484input sel1;
3485input sel2;
3486input sel3;
3487input sel4;
3488input sel5;
3489input sel6;
3490output out;
3491
3492`ifdef LIB
3493assign out = ((sel0 & in0) |
3494 (sel1 & in1) |
3495 (sel2 & in2) |
3496 (sel3 & in3) |
3497 (sel4 & in4) |
3498 (sel5 & in5) |
3499 (sel6 & in6));
3500`endif
3501
3502endmodule
3503module cl_sc1_aomux7_by2_2x (
3504in0,
3505in1,
3506in2,
3507in3,
3508in4,
3509in5,
3510in6,
3511sel0,
3512sel1,
3513sel2,
3514sel3,
3515sel4,
3516sel5,
3517sel6,
3518out
3519);
3520input in0;
3521input in1;
3522input in2;
3523input in3;
3524input in4;
3525input in5;
3526input in6;
3527input sel0;
3528input sel1;
3529input sel2;
3530input sel3;
3531input sel4;
3532input sel5;
3533input sel6;
3534output out;
3535
3536`ifdef LIB
3537assign out = ((sel0 & in0) |
3538 (sel1 & in1) |
3539 (sel2 & in2) |
3540 (sel3 & in3) |
3541 (sel4 & in4) |
3542 (sel5 & in5) |
3543 (sel6 & in6));
3544`endif
3545
3546endmodule
3547module cl_sc1_aomux8_12x (
3548in0,
3549in1,
3550in2,
3551in3,
3552in4,
3553in5,
3554in6,
3555in7,
3556sel0,
3557sel1,
3558sel2,
3559sel3,
3560sel4,
3561sel5,
3562sel6,
3563sel7,
3564out
3565);
3566input in0;
3567input in1;
3568input in2;
3569input in3;
3570input in4;
3571input in5;
3572input in6;
3573input in7;
3574input sel0;
3575input sel1;
3576input sel2;
3577input sel3;
3578input sel4;
3579input sel5;
3580input sel6;
3581input sel7;
3582output out;
3583
3584`ifdef LIB
3585assign out = ((sel0 & in0) |
3586 (sel1 & in1) |
3587 (sel2 & in2) |
3588 (sel3 & in3) |
3589 (sel4 & in4) |
3590 (sel5 & in5) |
3591 (sel6 & in6) |
3592 (sel7 & in7));
3593`endif
3594
3595
3596endmodule
3597module cl_sc1_aomux8_16x (
3598in0,
3599in1,
3600in2,
3601in3,
3602in4,
3603in5,
3604in6,
3605in7,
3606sel0,
3607sel1,
3608sel2,
3609sel3,
3610sel4,
3611sel5,
3612sel6,
3613sel7,
3614out
3615);
3616input in0;
3617input in1;
3618input in2;
3619input in3;
3620input in4;
3621input in5;
3622input in6;
3623input in7;
3624input sel0;
3625input sel1;
3626input sel2;
3627input sel3;
3628input sel4;
3629input sel5;
3630input sel6;
3631input sel7;
3632output out;
3633
3634`ifdef LIB
3635assign out = ((sel0 & in0) |
3636 (sel1 & in1) |
3637 (sel2 & in2) |
3638 (sel3 & in3) |
3639 (sel4 & in4) |
3640 (sel5 & in5) |
3641 (sel6 & in6) |
3642 (sel7 & in7));
3643`endif
3644
3645
3646endmodule
3647module cl_sc1_aomux8_1x (
3648in0,
3649in1,
3650in2,
3651in3,
3652in4,
3653in5,
3654in6,
3655in7,
3656sel0,
3657sel1,
3658sel2,
3659sel3,
3660sel4,
3661sel5,
3662sel6,
3663sel7,
3664out
3665);
3666input in0;
3667input in1;
3668input in2;
3669input in3;
3670input in4;
3671input in5;
3672input in6;
3673input in7;
3674input sel0;
3675input sel1;
3676input sel2;
3677input sel3;
3678input sel4;
3679input sel5;
3680input sel6;
3681input sel7;
3682output out;
3683
3684`ifdef LIB
3685assign out = ((sel0 & in0) |
3686 (sel1 & in1) |
3687 (sel2 & in2) |
3688 (sel3 & in3) |
3689 (sel4 & in4) |
3690 (sel5 & in5) |
3691 (sel6 & in6) |
3692 (sel7 & in7));
3693`endif
3694
3695
3696endmodule
3697module cl_sc1_aomux8_2x (
3698in0,
3699in1,
3700in2,
3701in3,
3702in4,
3703in5,
3704in6,
3705in7,
3706sel0,
3707sel1,
3708sel2,
3709sel3,
3710sel4,
3711sel5,
3712sel6,
3713sel7,
3714out
3715);
3716input in0;
3717input in1;
3718input in2;
3719input in3;
3720input in4;
3721input in5;
3722input in6;
3723input in7;
3724input sel0;
3725input sel1;
3726input sel2;
3727input sel3;
3728input sel4;
3729input sel5;
3730input sel6;
3731input sel7;
3732output out;
3733
3734`ifdef LIB
3735assign out = ((sel0 & in0) |
3736 (sel1 & in1) |
3737 (sel2 & in2) |
3738 (sel3 & in3) |
3739 (sel4 & in4) |
3740 (sel5 & in5) |
3741 (sel6 & in6) |
3742 (sel7 & in7));
3743`endif
3744
3745
3746endmodule
3747module cl_sc1_aomux8_4x (
3748in0,
3749in1,
3750in2,
3751in3,
3752in4,
3753in5,
3754in6,
3755in7,
3756sel0,
3757sel1,
3758sel2,
3759sel3,
3760sel4,
3761sel5,
3762sel6,
3763sel7,
3764out
3765);
3766input in0;
3767input in1;
3768input in2;
3769input in3;
3770input in4;
3771input in5;
3772input in6;
3773input in7;
3774input sel0;
3775input sel1;
3776input sel2;
3777input sel3;
3778input sel4;
3779input sel5;
3780input sel6;
3781input sel7;
3782output out;
3783
3784`ifdef LIB
3785assign out = ((sel0 & in0) |
3786 (sel1 & in1) |
3787 (sel2 & in2) |
3788 (sel3 & in3) |
3789 (sel4 & in4) |
3790 (sel5 & in5) |
3791 (sel6 & in6) |
3792 (sel7 & in7));
3793`endif
3794
3795
3796endmodule
3797module cl_sc1_aomux8_6x (
3798in0,
3799in1,
3800in2,
3801in3,
3802in4,
3803in5,
3804in6,
3805in7,
3806sel0,
3807sel1,
3808sel2,
3809sel3,
3810sel4,
3811sel5,
3812sel6,
3813sel7,
3814out
3815);
3816input in0;
3817input in1;
3818input in2;
3819input in3;
3820input in4;
3821input in5;
3822input in6;
3823input in7;
3824input sel0;
3825input sel1;
3826input sel2;
3827input sel3;
3828input sel4;
3829input sel5;
3830input sel6;
3831input sel7;
3832output out;
3833
3834`ifdef LIB
3835assign out = ((sel0 & in0) |
3836 (sel1 & in1) |
3837 (sel2 & in2) |
3838 (sel3 & in3) |
3839 (sel4 & in4) |
3840 (sel5 & in5) |
3841 (sel6 & in6) |
3842 (sel7 & in7));
3843`endif
3844
3845
3846endmodule
3847module cl_sc1_aomux8_8x (
3848in0,
3849in1,
3850in2,
3851in3,
3852in4,
3853in5,
3854in6,
3855in7,
3856sel0,
3857sel1,
3858sel2,
3859sel3,
3860sel4,
3861sel5,
3862sel6,
3863sel7,
3864out
3865);
3866input in0;
3867input in1;
3868input in2;
3869input in3;
3870input in4;
3871input in5;
3872input in6;
3873input in7;
3874input sel0;
3875input sel1;
3876input sel2;
3877input sel3;
3878input sel4;
3879input sel5;
3880input sel6;
3881input sel7;
3882output out;
3883
3884`ifdef LIB
3885assign out = ((sel0 & in0) |
3886 (sel1 & in1) |
3887 (sel2 & in2) |
3888 (sel3 & in3) |
3889 (sel4 & in4) |
3890 (sel5 & in5) |
3891 (sel6 & in6) |
3892 (sel7 & in7));
3893`endif
3894
3895
3896endmodule
3897module cl_sc1_aomux8_by2_1x (
3898in0,
3899in1,
3900in2,
3901in3,
3902in4,
3903in5,
3904in6,
3905in7,
3906sel0,
3907sel1,
3908sel2,
3909sel3,
3910sel4,
3911sel5,
3912sel6,
3913sel7,
3914out
3915);
3916input in0;
3917input in1;
3918input in2;
3919input in3;
3920input in4;
3921input in5;
3922input in6;
3923input in7;
3924input sel0;
3925input sel1;
3926input sel2;
3927input sel3;
3928input sel4;
3929input sel5;
3930input sel6;
3931input sel7;
3932output out;
3933
3934`ifdef LIB
3935assign out = ((sel0 & in0) |
3936 (sel1 & in1) |
3937 (sel2 & in2) |
3938 (sel3 & in3) |
3939 (sel4 & in4) |
3940 (sel5 & in5) |
3941 (sel6 & in6) |
3942 (sel7 & in7));
3943`endif
3944
3945
3946endmodule
3947module cl_sc1_aomux8_by2_2x (
3948in0,
3949in1,
3950in2,
3951in3,
3952in4,
3953in5,
3954in6,
3955in7,
3956sel0,
3957sel1,
3958sel2,
3959sel3,
3960sel4,
3961sel5,
3962sel6,
3963sel7,
3964out
3965);
3966input in0;
3967input in1;
3968input in2;
3969input in3;
3970input in4;
3971input in5;
3972input in6;
3973input in7;
3974input sel0;
3975input sel1;
3976input sel2;
3977input sel3;
3978input sel4;
3979input sel5;
3980input sel6;
3981input sel7;
3982output out;
3983
3984`ifdef LIB
3985assign out = ((sel0 & in0) |
3986 (sel1 & in1) |
3987 (sel2 & in2) |
3988 (sel3 & in3) |
3989 (sel4 & in4) |
3990 (sel5 & in5) |
3991 (sel6 & in6) |
3992 (sel7 & in7));
3993`endif
3994
3995
3996endmodule
3997module cl_sc1_l1hdr_12x (
3998 l2clk,
3999 se,
4000 pce,
4001 pce_ov,
4002 stop,
4003 l1clk
4004
4005 );
4006
4007
4008
4009
4010 input l2clk; // level 2 clock, from clock grid
4011 input se; // Scan Enable
4012 input pce; // Clock enable for local power savings
4013 input pce_ov; // TCU sourced clock enable override for testing
4014 input stop; // TCU/CCU sourced clock stop for debug
4015 output l1clk;
4016`ifdef FORMAL_TOOL
4017 wire l1en = (~stop & ( pce | pce_ov ));
4018 assign l1clk = (l2clk & l1en) | se;
4019 `else
4020`ifdef LIB
4021 reg l1en;
4022
4023`ifdef SCAN_MODE
4024 always @ (l2clk or stop or pce or pce_ov)
4025 begin
4026 if (~l2clk) l1en <= (~stop & (pce | pce_ov));
4027 end
4028`else
4029 always @ (negedge l2clk )
4030 begin
4031 l1en <= (~stop & ( pce | pce_ov ));
4032 end
4033`endif
4034
4035
4036 assign l1clk = (l2clk & l1en) | se; // se is async and highest priority
4037
4038
4039
4040`endif
4041`endif
4042
4043endmodule
4044
4045module cl_sc1_l1hdr_16x (
4046 l2clk,
4047 se,
4048 pce,
4049 pce_ov,
4050 stop,
4051 l1clk
4052 );
4053// RFM 05/21/2004
4054
4055
4056
4057 input l2clk; // level 2 clock, from clock grid
4058 input se; // Scan Enable
4059 input pce; // Clock enable for local power savings
4060 input pce_ov; // TCU sourced clock enable override for testing
4061 input stop; // TCU/CCU sourced clock stop for debug
4062 output l1clk;
4063`ifdef FORMAL_TOOL
4064 wire l1en = (~stop & ( pce | pce_ov ));
4065 assign l1clk = (l2clk & l1en) | se;
4066 `else
4067`ifdef LIB
4068 reg l1en;
4069
4070`ifdef SCAN_MODE
4071 always @ (l2clk or stop or pce or pce_ov)
4072 begin
4073 if (~l2clk) l1en <= (~stop & (pce | pce_ov));
4074 end
4075`else
4076 always @ (negedge l2clk )
4077 begin
4078 l1en <= (~stop & ( pce | pce_ov ));
4079 end
4080`endif
4081
4082
4083
4084 assign l1clk = (l2clk & l1en) | se; // se is async and highest priority
4085
4086
4087
4088`endif
4089`endif
4090
4091endmodule
4092module cl_sc1_l1hdr_24x (
4093 l2clk,
4094 se,
4095 pce,
4096 pce_ov,
4097 stop,
4098 l1clk
4099 );
4100// RFM 05/21/2004
4101
4102
4103
4104 input l2clk; // level 2 clock, from clock grid
4105 input se; // Scan Enable
4106 input pce; // Clock enable for local power savings
4107 input pce_ov; // TCU sourced clock enable override for testing
4108 input stop; // TCU/CCU sourced clock stop for debug
4109 output l1clk;
4110`ifdef FORMAL_TOOL
4111 wire l1en = (~stop & ( pce | pce_ov ));
4112 assign l1clk = (l2clk & l1en) | se;
4113 `else
4114`ifdef LIB
4115 reg l1en;
4116
4117
4118
4119`ifdef SCAN_MODE
4120 always @ (l2clk or stop or pce or pce_ov)
4121 begin
4122 if (~l2clk) l1en <= (~stop & (pce | pce_ov));
4123 end
4124`else
4125 always @ (negedge l2clk )
4126 begin
4127 l1en <= (~stop & ( pce | pce_ov ));
4128 end
4129`endif
4130
4131 assign l1clk = (l2clk & l1en) | se; // se is async and highest priority
4132
4133
4134`endif
4135`endif
4136
4137endmodule
4138module cl_sc1_l1hdr_32x (
4139 l2clk,
4140 se,
4141 pce,
4142 pce_ov,
4143 stop,
4144 l1clk
4145 );
4146// RFM 05/21/2004
4147
4148
4149
4150 input l2clk; // level 2 clock, from clock grid
4151 input se; // Scan Enable
4152 input pce; // Clock enable for local power savings
4153 input pce_ov; // TCU sourced clock enable override for testing
4154 input stop; // TCU/CCU sourced clock stop for debug
4155 output l1clk;
4156`ifdef FORMAL_TOOL
4157 wire l1en = (~stop & ( pce | pce_ov ));
4158 assign l1clk = (l2clk & l1en) | se;
4159 `else
4160`ifdef LIB
4161 reg l1en;
4162
4163`ifdef SCAN_MODE
4164 always @ (l2clk or stop or pce or pce_ov)
4165 begin
4166 if (~l2clk) l1en <= (~stop & (pce | pce_ov));
4167 end
4168`else
4169 always @ (negedge l2clk )
4170 begin
4171 l1en <= (~stop & ( pce | pce_ov ));
4172 end
4173`endif
4174
4175
4176
4177 assign l1clk = (l2clk & l1en) | se; // se is async and highest priority
4178
4179
4180
4181`endif
4182`endif
4183
4184endmodule
4185
4186module cl_sc1_l1hdr_4x (
4187 l2clk,
4188 se,
4189 pce,
4190 pce_ov,
4191 stop,
4192 l1clk
4193 );
4194// RFM 05/21/2004
4195
4196
4197
4198 input l2clk; // level 2 clock, from clock grid
4199 input se; // Scan Enable
4200 input pce; // Clock enable for local power savings
4201 input pce_ov; // TCU sourced clock enable override for testing
4202 input stop; // TCU/CCU sourced clock stop for debug
4203 output l1clk;
4204`ifdef FORMAL_TOOL
4205 wire l1en = (~stop & ( pce | pce_ov ));
4206 assign l1clk = (l2clk & l1en) | se;
4207 `else
4208`ifdef LIB
4209 reg l1en;
4210
4211`ifdef SCAN_MODE
4212 always @ (l2clk or stop or pce or pce_ov)
4213 begin
4214 if (~l2clk) l1en <= (~stop & (pce | pce_ov));
4215 end
4216`else
4217 always @ (negedge l2clk )
4218 begin
4219 l1en <= (~stop & ( pce | pce_ov ));
4220 end
4221`endif
4222
4223
4224
4225 assign l1clk = (l2clk & l1en) | se; // se is async and highest priority
4226
4227
4228
4229`endif
4230`endif
4231
4232endmodule
4233module cl_sc1_l1hdr_48x (
4234 l2clk,
4235 se,
4236 pce,
4237 pce_ov,
4238 stop,
4239 l1clk
4240
4241 );
4242
4243
4244
4245
4246 input l2clk; // level 2 clock, from clock grid
4247 input se; // Scan Enable
4248 input pce; // Clock enable for local power savings
4249 input pce_ov; // TCU sourced clock enable override for testing
4250 input stop; // TCU/CCU sourced clock stop for debug
4251 output l1clk;
4252`ifdef FORMAL_TOOL
4253 wire l1en = (~stop & ( pce | pce_ov ));
4254 assign l1clk = (l2clk & l1en) | se;
4255 `else
4256`ifdef LIB
4257 reg l1en;
4258
4259
4260
4261`ifdef SCAN_MODE
4262 always @ (l2clk or stop or pce or pce_ov)
4263 begin
4264 if (~l2clk) l1en <= (~stop & (pce | pce_ov));
4265 end
4266`else
4267 always @ (negedge l2clk )
4268 begin
4269 l1en <= (~stop & ( pce | pce_ov ));
4270 end
4271`endif
4272
4273 assign l1clk = (l2clk & l1en) | se; // se is async and highest priority
4274
4275
4276
4277`endif
4278`endif
4279
4280endmodule
4281module cl_sc1_l1hdr_64x (
4282 l2clk,
4283 se,
4284 pce,
4285 pce_ov,
4286 stop,
4287 l1clk
4288
4289 );
4290
4291
4292
4293
4294 input l2clk; // level 2 clock, from clock grid
4295 input se; // Scan Enable
4296 input pce; // Clock enable for local power savings
4297 input pce_ov; // TCU sourced clock enable override for testing
4298 input stop; // TCU/CCU sourced clock stop for debug
4299 output l1clk;
4300`ifdef FORMAL_TOOL
4301 wire l1en = (~stop & ( pce | pce_ov ));
4302 assign l1clk = (l2clk & l1en) | se;
4303 `else
4304`ifdef LIB
4305 reg l1en;
4306
4307
4308
4309`ifdef SCAN_MODE
4310 always @ (l2clk or stop or pce or pce_ov)
4311 begin
4312 if (~l2clk) l1en <= (~stop & (pce | pce_ov));
4313 end
4314`else
4315 always @ (negedge l2clk )
4316 begin
4317 l1en <= (~stop & ( pce | pce_ov ));
4318 end
4319`endif
4320
4321 assign l1clk = (l2clk & l1en) | se; // se is async and highest priority
4322
4323
4324
4325`endif
4326`endif
4327
4328endmodule
4329
4330`ifdef FPGA
4331`else
4332module cl_sc1_l1hdr_8x (
4333 l2clk,
4334 se,
4335 pce,
4336 pce_ov,
4337 stop,
4338 l1clk
4339 );
4340// RFM 05/21/2004
4341
4342
4343
4344 input l2clk; // level 2 clock, from clock grid
4345 input se; // Scan Enable
4346 input pce; // Clock enable for local power savings
4347 input pce_ov; // TCU sourced clock enable override for testing
4348 input stop; // TCU/CCU sourced clock stop for debug
4349 output l1clk;
4350`ifdef FORMAL_TOOL
4351 wire l1en = (~stop & ( pce | pce_ov ));
4352 assign l1clk = (l2clk & l1en) | se;
4353 `else
4354`ifdef LIB
4355 reg l1en;
4356
4357
4358`ifdef SCAN_MODE
4359 always @ (l2clk or stop or pce or pce_ov)
4360 begin
4361 if (~l2clk) l1en <= (~stop & (pce | pce_ov));
4362 end
4363`else
4364 always @ (negedge l2clk )
4365 begin
4366 l1en <= (~stop & ( pce | pce_ov ));
4367 end
4368`endif
4369
4370 assign l1clk = (l2clk & l1en) | se; // se is async and highest priority
4371
4372
4373
4374`endif
4375`endif
4376
4377endmodule
4378`endif // `ifdef FPGA
4379
4380module cl_sc1_msffmin_16x ( q, so, d, l1clk, si, siclk, soclk );
4381// RFM 05-14-2004
4382// Level sensitive in SCAN_MODE
4383// Edge triggered when not in SCAN_MODE
4384
4385
4386 parameter SIZE = 1;
4387
4388 output q;
4389 output so;
4390
4391 input d;
4392 input l1clk;
4393 input si;
4394 input siclk;
4395 input soclk;
4396
4397 reg q;
4398 wire so;
4399 wire l1clk, siclk, soclk;
4400
4401 `ifdef SCAN_MODE
4402
4403 reg l1;
4404 `ifdef FAST_FLUSH
4405 always @(posedge l1clk or posedge siclk ) begin
4406 if (siclk) begin
4407 q <= 1'b0; //pseudo flush reset
4408 end else begin
4409 q <= d;
4410 end
4411 end
4412 `else
4413 always @(l1clk or siclk or soclk or d or si)
4414 begin
4415 if (!l1clk && !siclk) l1 <= d; // Load master with data
4416 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
4417 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
4418
4419 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
4420 if ( l1clk && siclk && !soclk) q <= si; // Flush
4421 end
4422 `endif
4423 `else
4424 wire si_unused;
4425 wire siclk_unused;
4426 wire soclk_unused;
4427 assign si_unused = si;
4428 assign siclk_unused = siclk;
4429 assign soclk_unused = soclk;
4430
4431
4432 `ifdef INITLATZERO
4433 initial q = 1'b0;
4434 `endif
4435
4436 always @(posedge l1clk)
4437 begin
4438 if (!siclk && !soclk) q <= d;
4439 else q <= 1'bx;
4440 end
4441 `endif
4442
4443 assign so = q;
4444
4445endmodule // dff
4446
4447
4448
4449
4450module cl_sc1_msffmin_8x ( q, so, d, l1clk, si, siclk, soclk );
4451// RFM 05-14-2004
4452// Level sensitive in SCAN_MODE
4453// Edge triggered when not in SCAN_MODE
4454
4455
4456 parameter SIZE = 1;
4457
4458 output q;
4459 output so;
4460
4461 input d;
4462 input l1clk;
4463 input si;
4464 input siclk;
4465 input soclk;
4466
4467 reg q;
4468 wire so;
4469 wire l1clk, siclk, soclk;
4470
4471 `ifdef SCAN_MODE
4472 `ifdef FAST_FLUSH
4473 always @(posedge l1clk or posedge siclk ) begin
4474 if (siclk) begin
4475 q <= 1'b0; //pseudo flush reset
4476 end else begin
4477 q <= d;
4478 end
4479 end
4480 `else
4481 reg l1;
4482
4483 always @(l1clk or siclk or soclk or d or si)
4484 begin
4485 if (!l1clk && !siclk) l1 <= d; // Load master with data
4486 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
4487 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
4488
4489 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
4490 if ( l1clk && siclk && !soclk) q <= si; // Flush
4491 end
4492 `endif
4493 `else
4494 wire si_unused;
4495 wire siclk_unused;
4496 wire soclk_unused;
4497 assign si_unused = si;
4498 assign siclk_unused = siclk;
4499 assign soclk_unused = soclk;
4500
4501
4502 `ifdef INITLATZERO
4503 initial q = 1'b0;
4504 `endif
4505
4506 always @(posedge l1clk)
4507 begin
4508 if (!siclk && !soclk) q <= d;
4509 else q <= 1'bx;
4510 end
4511 `endif
4512
4513 assign so = q;
4514
4515endmodule // dff
4516module cl_sc1_msffmin_4x ( q, so, d, l1clk, si, siclk, soclk );
4517// RFM 05-14-2004
4518// Level sensitive in SCAN_MODE
4519// Edge triggered when not in SCAN_MODE
4520
4521
4522 parameter SIZE = 1;
4523
4524 output q;
4525 output so;
4526
4527 input d;
4528 input l1clk;
4529 input si;
4530 input siclk;
4531 input soclk;
4532
4533 reg q;
4534 wire so;
4535 wire l1clk, siclk, soclk;
4536
4537 `ifdef SCAN_MODE
4538
4539 reg l1;
4540 `ifdef FAST_FLUSH
4541 always @(posedge l1clk or posedge siclk ) begin
4542 if (siclk) begin
4543 q <= 1'b0; //pseudo flush reset
4544 end else begin
4545 q <= d;
4546 end
4547 end
4548 `else
4549 always @(l1clk or siclk or soclk or d or si)
4550 begin
4551 if (!l1clk && !siclk) l1 <= d; // Load master with data
4552 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
4553 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
4554
4555 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
4556 if ( l1clk && siclk && !soclk) q <= si; // Flush
4557 end
4558 `endif
4559 `else
4560 wire si_unused;
4561 wire siclk_unused;
4562 wire soclk_unused;
4563 assign si_unused = si;
4564 assign siclk_unused = siclk;
4565 assign soclk_unused = soclk;
4566
4567
4568 `ifdef INITLATZERO
4569 initial q = 1'b0;
4570 `endif
4571
4572 always @(posedge l1clk)
4573 begin
4574 if (!siclk && !soclk) q <= d;
4575 else q <= 1'bx;
4576 end
4577 `endif
4578
4579 assign so = q;
4580
4581endmodule // dff
4582module cl_sc1_msffmin_32x ( q, so, d, l1clk, si, siclk, soclk );
4583// RFM 05-14-2004
4584// Level sensitive in SCAN_MODE
4585// Edge triggered when not in SCAN_MODE
4586
4587
4588 parameter SIZE = 1;
4589
4590 output q;
4591 output so;
4592
4593 input d;
4594 input l1clk;
4595 input si;
4596 input siclk;
4597 input soclk;
4598
4599 reg q;
4600 wire so;
4601 wire l1clk, siclk, soclk;
4602
4603 `ifdef SCAN_MODE
4604
4605 reg l1;
4606 `ifdef FAST_FLUSH
4607 always @(posedge l1clk or posedge siclk ) begin
4608 if (siclk) begin
4609 q <= 1'b0; //pseudo flush reset
4610 end else begin
4611 q <= d;
4612 end
4613 end
4614 `else
4615 always @(l1clk or siclk or soclk or d or si)
4616 begin
4617 if (!l1clk && !siclk) l1 <= d; // Load master with data
4618 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
4619 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
4620
4621 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
4622 if ( l1clk && siclk && !soclk) q <= si; // Flush
4623 end
4624 `endif
4625 `else
4626 wire si_unused;
4627 wire siclk_unused;
4628 wire soclk_unused;
4629 assign si_unused = si;
4630 assign siclk_unused = siclk;
4631 assign soclk_unused = soclk;
4632
4633
4634 `ifdef INITLATZERO
4635 initial q = 1'b0;
4636 `endif
4637
4638 always @(posedge l1clk)
4639 begin
4640 if (!siclk && !soclk) q <= d;
4641 else q <= 1'bx;
4642 end
4643 `endif
4644
4645 assign so = q;
4646
4647endmodule // dff
4648module cl_sc1_msffmin_1x ( q, so, d, l1clk, si, siclk, soclk );
4649// RFM 05-14-2004
4650// Level sensitive in SCAN_MODE
4651// Edge triggered when not in SCAN_MODE
4652
4653
4654 parameter SIZE = 1;
4655
4656 output q;
4657 output so;
4658
4659 input d;
4660 input l1clk;
4661 input si;
4662 input siclk;
4663 input soclk;
4664
4665 reg q;
4666 wire so;
4667 wire l1clk, siclk, soclk;
4668
4669 `ifdef SCAN_MODE
4670
4671 reg l1;
4672 `ifdef FAST_FLUSH
4673 always @(posedge l1clk or posedge siclk ) begin
4674 if (siclk) begin
4675 q <= 1'b0; //pseudo flush reset
4676 end else begin
4677 q <= d;
4678 end
4679 end
4680 `else
4681 always @(l1clk or siclk or soclk or d or si)
4682 begin
4683 if (!l1clk && !siclk) l1 <= d; // Load master with data
4684 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
4685 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
4686
4687 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
4688 if ( l1clk && siclk && !soclk) q <= si; // Flush
4689 end
4690 `endif
4691 `else
4692 wire si_unused;
4693 wire siclk_unused;
4694 wire soclk_unused;
4695 assign si_unused = si;
4696 assign siclk_unused = siclk;
4697 assign soclk_unused = soclk;
4698
4699
4700 `ifdef INITLATZERO
4701 initial q = 1'b0;
4702 `endif
4703
4704 always @(posedge l1clk)
4705 begin
4706 if (!siclk && !soclk) q <= d;
4707 else q <= 1'bx;
4708 end
4709 `endif
4710
4711 assign so = q;
4712
4713endmodule // dff
4714module cl_sc1_msff_lp_4x ( q, so, d, l1clk, si, siclk, soclk );
4715// RFM 05-14-2004
4716// Level sensitive in SCAN_MODE
4717// Edge triggered when not in SCAN_MODE
4718
4719
4720 parameter SIZE = 1;
4721
4722 output q;
4723 output so;
4724
4725 input d;
4726 input l1clk;
4727 input si;
4728 input siclk;
4729 input soclk;
4730
4731 reg q;
4732 wire so;
4733 wire l1clk, siclk, soclk;
4734
4735 `ifdef SCAN_MODE
4736
4737 reg l1;
4738 `ifdef FAST_FLUSH
4739 always @(posedge l1clk or posedge siclk ) begin
4740 if (siclk) begin
4741 q <= 1'b0; //pseudo flush reset
4742 end else begin
4743 q <= d;
4744 end
4745 end
4746 `else
4747 always @(l1clk or siclk or soclk or d or si)
4748 begin
4749 if (!l1clk && !siclk) l1 <= d; // Load master with data
4750 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
4751 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
4752
4753 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
4754 if ( l1clk && siclk && !soclk) q <= si; // Flush
4755 end
4756 `endif
4757 `else
4758 wire si_unused;
4759 wire siclk_unused;
4760 wire soclk_unused;
4761 assign si_unused = si;
4762 assign siclk_unused = siclk;
4763 assign soclk_unused = soclk;
4764
4765
4766 `ifdef INITLATZERO
4767 initial q = 1'b0;
4768 `endif
4769
4770 always @(posedge l1clk)
4771 begin
4772 if (!siclk && !soclk) q <= d;
4773 else q <= 1'bx;
4774 end
4775 `endif
4776
4777 assign so = q;
4778
4779endmodule // dff
4780
4781
4782 module cl_sc1_msff_16x ( q, so, d, l1clk, si, siclk, soclk );
4783// RFM 05-14-2004
4784// Level sensitive in SCAN_MODE
4785// Edge triggered when not in SCAN_MODE
4786
4787
4788 parameter SIZE = 1;
4789
4790 output q;
4791 output so;
4792
4793 input d;
4794 input l1clk;
4795 input si;
4796 input siclk;
4797 input soclk;
4798
4799 reg q;
4800 wire so;
4801 wire l1clk, siclk, soclk;
4802
4803 `ifdef SCAN_MODE
4804
4805 reg l1;
4806 `ifdef INITLATZERO
4807 initial l1 = 1'b0;
4808 initial q = 1'b0;
4809 `endif
4810
4811 `ifdef FAST_FLUSH
4812 always @(posedge l1clk or posedge siclk ) begin
4813 if (siclk) begin
4814 q <= 1'b0; //pseudo flush reset
4815 end else begin
4816 q <= d;
4817 end
4818 end
4819 `else
4820 always @(l1clk or siclk or soclk or d or si)
4821 begin
4822 if (!l1clk && !siclk) l1 <= d; // Load master with data
4823 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
4824 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
4825
4826 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
4827 if ( l1clk && siclk && !soclk) q <= si; // Flush
4828 end
4829 `endif
4830 `else
4831 wire si_unused;
4832 wire siclk_unused;
4833 wire soclk_unused;
4834 assign si_unused = si;
4835 assign siclk_unused = siclk;
4836 assign soclk_unused = soclk;
4837
4838
4839 `ifdef INITLATZERO
4840 initial q = 1'b0;
4841 `endif
4842
4843 always @(posedge l1clk)
4844 begin
4845 if (!siclk && !soclk) q <= d;
4846 else q <= 1'bx;
4847 end
4848 `endif
4849
4850 assign so = q;
4851
4852endmodule // dff
4853module cl_sc1_msff_1x ( q, so, d, l1clk, si, siclk, soclk );
4854// RFM 05-14-2004
4855// Level sensitive in SCAN_MODE
4856// Edge triggered when not in SCAN_MODE
4857
4858
4859 parameter SIZE = 1;
4860
4861 output q;
4862 output so;
4863
4864 input d;
4865 input l1clk;
4866 input si;
4867 input siclk;
4868 input soclk;
4869
4870 reg q;
4871 wire so;
4872 wire l1clk, siclk, soclk;
4873
4874 `ifdef SCAN_MODE
4875 reg l1;
4876
4877 `ifdef INITLATZERO
4878 initial l1 = 1'b0;
4879 initial q = 1'b0;
4880 `endif
4881 `ifdef FAST_FLUSH
4882 always @(posedge l1clk or posedge siclk ) begin
4883 if (siclk) begin
4884 q <= 1'b0; //pseudo flush reset
4885 end else begin
4886 q <= d;
4887 end
4888 end
4889 `else
4890 always @(l1clk or siclk or soclk or d or si)
4891 begin
4892 if (!l1clk && !siclk) l1 <= d; // Load master with data
4893 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
4894 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
4895
4896 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
4897 if ( l1clk && siclk && !soclk) q <= si; // Flush
4898 end
4899 `endif
4900 `else
4901 wire si_unused;
4902 wire siclk_unused;
4903 wire soclk_unused;
4904 assign si_unused = si;
4905 assign siclk_unused = siclk;
4906 assign soclk_unused = soclk;
4907
4908
4909 `ifdef INITLATZERO
4910 initial q = 1'b0;
4911 `endif
4912
4913 always @(posedge l1clk)
4914 begin
4915 if (!siclk && !soclk) q <= d;
4916 else q <= 1'bx;
4917 end
4918 `endif
4919
4920 assign so = q;
4921
4922endmodule // dff
4923
4924
4925 module cl_sc1_msff_32x ( q, so, d, l1clk, si, siclk, soclk );
4926// RFM 05-14-2004
4927// Level sensitive in SCAN_MODE
4928// Edge triggered when not in SCAN_MODE
4929
4930
4931 parameter SIZE = 1;
4932
4933 output q;
4934 output so;
4935
4936 input d;
4937 input l1clk;
4938 input si;
4939 input siclk;
4940 input soclk;
4941
4942 reg q;
4943 wire so;
4944 wire l1clk, siclk, soclk;
4945
4946 `ifdef SCAN_MODE
4947 reg l1;
4948
4949 `ifdef INITLATZERO
4950 initial l1 = 1'b0;
4951 initial q = 1'b0;
4952 `endif
4953 `ifdef FAST_FLUSH
4954 always @(posedge l1clk or posedge siclk ) begin
4955 if (siclk) begin
4956 q <= 1'b0; //pseudo flush reset
4957 end else begin
4958 q <= d;
4959 end
4960 end
4961 `else
4962
4963 always @(l1clk or siclk or soclk or d or si)
4964 begin
4965 if (!l1clk && !siclk) l1 <= d; // Load master with data
4966 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
4967 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
4968
4969 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
4970 if ( l1clk && siclk && !soclk) q <= si; // Flush
4971 end
4972 `endif
4973 `else
4974 wire si_unused;
4975 wire siclk_unused;
4976 wire soclk_unused;
4977 assign si_unused = si;
4978 assign siclk_unused = siclk;
4979 assign soclk_unused = soclk;
4980
4981
4982 `ifdef INITLATZERO
4983 initial q = 1'b0;
4984 `endif
4985
4986 always @(posedge l1clk)
4987 begin
4988 if (!siclk && !soclk) q <= d;
4989 else q <= 1'bx;
4990 end
4991 `endif
4992
4993 assign so = q;
4994
4995endmodule // dff
4996module cl_sc1_msff_4x ( q, so, d, l1clk, si, siclk, soclk );
4997// RFM 05-14-2004
4998// Level sensitive in SCAN_MODE
4999// Edge triggered when not in SCAN_MODE
5000
5001
5002 parameter SIZE = 1;
5003
5004 output q;
5005 output so;
5006
5007 input d;
5008 input l1clk;
5009 input si;
5010 input siclk;
5011 input soclk;
5012
5013 reg q;
5014 wire so;
5015 wire l1clk, siclk, soclk;
5016
5017 `ifdef SCAN_MODE
5018
5019 reg l1;
5020
5021 `ifdef INITLATZERO
5022 initial l1 = 1'b0;
5023 initial q = 1'b0;
5024 `endif
5025 `ifdef FAST_FLUSH
5026 always @(posedge l1clk or posedge siclk ) begin
5027 if (siclk) begin
5028 q <= 1'b0; //pseudo flush reset
5029 end else begin
5030 q <= d;
5031 end
5032 end
5033 `else
5034 always @(l1clk or siclk or soclk or d or si)
5035 begin
5036 if (!l1clk && !siclk) l1 <= d; // Load master with data
5037 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
5038 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
5039
5040 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
5041 if ( l1clk && siclk && !soclk) q <= si; // Flush
5042 end
5043 `endif
5044 `else
5045 wire si_unused;
5046 wire siclk_unused;
5047 wire soclk_unused;
5048 assign si_unused = si;
5049 assign siclk_unused = siclk;
5050 assign soclk_unused = soclk;
5051
5052
5053 `ifdef INITLATZERO
5054 initial q = 1'b0;
5055 `endif
5056
5057 always @(posedge l1clk)
5058 begin
5059 if (!siclk && !soclk) q <= d;
5060 else q <= 1'bx;
5061 end
5062 `endif
5063
5064 assign so = q;
5065
5066endmodule // dff
5067
5068`ifdef FPGA
5069`else
5070
5071 module cl_sc1_msff_8x ( q, so, d, l1clk, si, siclk, soclk );
5072// RFM 05-14-2004
5073// Level sensitive in SCAN_MODE
5074// Edge triggered when not in SCAN_MODE
5075
5076
5077 parameter SIZE = 1;
5078
5079 output q;
5080 output so;
5081
5082 input d;
5083 input l1clk;
5084 input si;
5085 input siclk;
5086 input soclk;
5087
5088 reg q;
5089 wire so;
5090 wire l1clk, siclk, soclk;
5091
5092 `ifdef SCAN_MODE
5093 reg l1;
5094
5095 `ifdef INITLATZERO
5096 initial l1 = 1'b0;
5097 initial q = 1'b0;
5098 `endif
5099 `ifdef FAST_FLUSH
5100 always @(posedge l1clk or posedge siclk ) begin
5101 if (siclk) begin
5102 q <= 1'b0; //pseudo flush reset
5103 end else begin
5104 q <= d;
5105 end
5106 end
5107 `else
5108
5109 always @(l1clk or siclk or soclk or d or si)
5110 begin
5111 if (!l1clk && !siclk) l1 <= d; // Load master with data
5112 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
5113 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
5114
5115 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
5116 if ( l1clk && siclk && !soclk) q <= si; // Flush
5117 end
5118 `endif
5119 `else
5120 wire si_unused;
5121 wire siclk_unused;
5122 wire soclk_unused;
5123 assign si_unused = si;
5124 assign siclk_unused = siclk;
5125 assign soclk_unused = soclk;
5126
5127
5128 `ifdef INITLATZERO
5129 initial q = 1'b0;
5130 `endif
5131
5132 always @(posedge l1clk)
5133 begin
5134 if (!siclk && !soclk) q <= d;
5135 else q <= 1'bx;
5136 end
5137 `endif
5138
5139 assign so = q;
5140
5141endmodule // dff
5142`endif // `ifdef FPGA
5143
5144module cl_sc1_msff_syrst_1x ( q, so, d, l1clk, si, siclk, soclk,reset );
5145// RFM 05-14-2004
5146// Level sensitive in SCAN_MODE
5147// Edge triggered when not in SCAN_MODE
5148
5149
5150 parameter SIZE = 1;
5151
5152 output q;
5153 output so;
5154
5155 input d;
5156 input l1clk;
5157 input si;
5158 input siclk;
5159 input soclk;
5160 input reset;
5161 reg q;
5162 wire so;
5163 wire l1clk, siclk, soclk;
5164
5165 `ifdef SCAN_MODE
5166 reg l1;
5167`ifdef FAST_FLUSH
5168 always @(l1clk or siclk or d ) // vcs optimized code
5169 begin
5170 if (!l1clk && !siclk) l1 <= (d&reset); // Load master with data
5171 else if ( l1clk && !siclk) q <= l1; // Load slave with master data
5172 else if ( l1clk && siclk) begin // Conflict between data and scan
5173 l1 <= 1'b0;
5174 q <= 1'b0;
5175 end
5176 end
5177 `else
5178 always @(l1clk or siclk or soclk or d or si)
5179 begin
5180 if (!l1clk && !siclk) l1 <= (d&reset); // Load master with data
5181 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
5182 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
5183
5184 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
5185 if ( l1clk && siclk && !soclk) q <= si; // Flush
5186 end
5187 `endif
5188 `else
5189 wire si_unused;
5190 wire siclk_unused;
5191 wire soclk_unused;
5192 assign si_unused = si;
5193 assign siclk_unused = siclk;
5194 assign soclk_unused = soclk;
5195
5196
5197 `ifdef INITLATZERO
5198 initial q = 1'b0;
5199 `endif
5200
5201 always @(posedge l1clk)
5202 begin
5203 if (!siclk && !soclk) q <= (d&reset);
5204 else q <= 1'bx;
5205 end
5206 `endif
5207
5208 assign so = q;
5209
5210endmodule // dff
5211module cl_sc1_msff_syrst_4x ( q, so, d, l1clk, si, siclk, soclk,reset );
5212// RFM 05-14-2004
5213// Level sensitive in SCAN_MODE
5214// Edge triggered when not in SCAN_MODE
5215
5216
5217 parameter SIZE = 1;
5218
5219 output q;
5220 output so;
5221
5222 input d;
5223 input l1clk;
5224 input si;
5225 input siclk;
5226 input soclk;
5227 input reset;
5228 reg q;
5229 wire so;
5230 wire l1clk, siclk, soclk;
5231
5232 `ifdef SCAN_MODE
5233
5234 reg l1;
5235`ifdef FAST_FLUSH
5236 always @(l1clk or siclk or d ) // vcs optimized code
5237 begin
5238 if (!l1clk && !siclk) l1 <= (d&reset); // Load master with data
5239 else if ( l1clk && !siclk) q <= l1; // Load slave with master data
5240 else if ( l1clk && siclk) begin // Conflict between data and scan
5241 l1 <= 1'b0;
5242 q <= 1'b0;
5243 end
5244 end
5245 `else
5246 always @(l1clk or siclk or soclk or d or si)
5247 begin
5248 if (!l1clk && !siclk) l1 <= (d&reset); // Load master with data
5249 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
5250 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
5251
5252 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
5253 if ( l1clk && siclk && !soclk) q <= si; // Flush
5254 end
5255 `endif
5256 `else
5257 wire si_unused;
5258 wire siclk_unused;
5259 wire soclk_unused;
5260 assign si_unused = si;
5261 assign siclk_unused = siclk;
5262 assign soclk_unused = soclk;
5263
5264
5265 `ifdef INITLATZERO
5266 initial q = 1'b0;
5267 `endif
5268
5269 always @(posedge l1clk)
5270 begin
5271 if (!siclk && !soclk) q <= (d&reset);
5272 else q <= 1'bx;
5273 end
5274 `endif
5275
5276 assign so = q;
5277
5278endmodule // dff
5279module cl_sc1_msff_syrst_8x ( q, so, d, l1clk, si, siclk, soclk,reset );
5280// RFM 05-14-2004
5281// Level sensitive in SCAN_MODE
5282// Edge triggered when not in SCAN_MODE
5283
5284
5285 parameter SIZE = 1;
5286
5287 output q;
5288 output so;
5289
5290 input d;
5291 input l1clk;
5292 input si;
5293 input siclk;
5294 input soclk;
5295 input reset;
5296 reg q;
5297 wire so;
5298 wire l1clk, siclk, soclk;
5299
5300 `ifdef SCAN_MODE
5301
5302 reg l1;
5303`ifdef FAST_FLUSH
5304 always @(l1clk or siclk or d ) // vcs optimized code
5305 begin
5306 if (!l1clk && !siclk) l1 <= (d&reset); // Load master with data
5307 else if ( l1clk && !siclk) q <= l1; // Load slave with master data
5308 else if ( l1clk && siclk) begin // Conflict between data and scan
5309 l1 <= 1'b0;
5310 q <= 1'b0;
5311 end
5312 end
5313 `else
5314 always @(l1clk or siclk or soclk or d or si)
5315 begin
5316 if (!l1clk && !siclk) l1 <= (d&reset); // Load master with data
5317 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
5318 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
5319
5320 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
5321 if ( l1clk && siclk && !soclk) q <= si; // Flush
5322 end
5323 `endif
5324 `else
5325 wire si_unused;
5326 wire siclk_unused;
5327 wire soclk_unused;
5328 assign si_unused = si;
5329 assign siclk_unused = siclk;
5330 assign soclk_unused = soclk;
5331
5332
5333 `ifdef INITLATZERO
5334 initial q = 1'b0;
5335 `endif
5336
5337 always @(posedge l1clk)
5338 begin
5339 if (!siclk && !soclk) q <= (d&reset);
5340 else q <= 1'bx;
5341 end
5342 `endif
5343
5344 assign so = q;
5345
5346endmodule // dff
5347module cl_sc1_msff_syrst_16x ( q, so, d, l1clk, si, siclk, soclk,reset );
5348// RFM 05-14-2004
5349// Level sensitive in SCAN_MODE
5350// Edge triggered when not in SCAN_MODE
5351
5352
5353 parameter SIZE = 1;
5354
5355 output q;
5356 output so;
5357
5358 input d;
5359 input l1clk;
5360 input si;
5361 input siclk;
5362 input soclk;
5363 input reset;
5364 reg q;
5365 wire so;
5366 wire l1clk, siclk, soclk;
5367
5368 `ifdef SCAN_MODE
5369
5370 reg l1;
5371`ifdef FAST_FLUSH
5372 always @(l1clk or siclk or d ) // vcs optimized code
5373 begin
5374 if (!l1clk && !siclk) l1 <= (d&reset); // Load master with data
5375 else if ( l1clk && !siclk) q <= l1; // Load slave with master data
5376 else if ( l1clk && siclk) begin // Conflict between data and scan
5377 l1 <= 1'b0;
5378 q <= 1'b0;
5379 end
5380 end
5381 `else
5382 always @(l1clk or siclk or soclk or d or si)
5383 begin
5384 if (!l1clk && !siclk) l1 <= (d&reset); // Load master with data
5385 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
5386 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
5387
5388 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
5389 if ( l1clk && siclk && !soclk) q <= si; // Flush
5390 end
5391 `endif
5392 `else
5393 wire si_unused;
5394 wire siclk_unused;
5395 wire soclk_unused;
5396 assign si_unused = si;
5397 assign siclk_unused = siclk;
5398 assign soclk_unused = soclk;
5399
5400
5401 `ifdef INITLATZERO
5402 initial q = 1'b0;
5403 `endif
5404
5405 always @(posedge l1clk)
5406 begin
5407 if (!siclk && !soclk) q <= (d&reset);
5408 else q <= 1'bx;
5409 end
5410 `endif
5411
5412 assign so = q;
5413
5414endmodule // dff
5415module cl_sc1_msff_syrst_32x ( q, so, d, l1clk, si, siclk, soclk,reset );
5416// RFM 05-14-2004
5417// Level sensitive in SCAN_MODE
5418// Edge triggered when not in SCAN_MODE
5419
5420
5421 parameter SIZE = 1;
5422
5423 output q;
5424 output so;
5425
5426 input d;
5427 input l1clk;
5428 input si;
5429 input siclk;
5430 input soclk;
5431 input reset;
5432 reg q;
5433 wire so;
5434 wire l1clk, siclk, soclk;
5435
5436 `ifdef SCAN_MODE
5437
5438 reg l1;
5439`ifdef FAST_FLUSH
5440 always @(l1clk or siclk or d ) // vcs optimized code
5441 begin
5442 if (!l1clk && !siclk) l1 <= (d&reset); // Load master with data
5443 else if ( l1clk && !siclk) q <= l1; // Load slave with master data
5444 else if ( l1clk && siclk) begin // Conflict between data and scan
5445 l1 <= 1'b0;
5446 q <= 1'b0;
5447 end
5448 end
5449 `else
5450 always @(l1clk or siclk or soclk or d or si)
5451 begin
5452 if (!l1clk && !siclk) l1 <= (d&reset); // Load master with data
5453 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
5454 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
5455
5456 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
5457 if ( l1clk && siclk && !soclk) q <= si; // Flush
5458 end
5459 `endif
5460 `else
5461 wire si_unused;
5462 wire siclk_unused;
5463 wire soclk_unused;
5464 assign si_unused = si;
5465 assign siclk_unused = siclk;
5466 assign soclk_unused = soclk;
5467
5468
5469 `ifdef INITLATZERO
5470 initial q = 1'b0;
5471 `endif
5472
5473 always @(posedge l1clk)
5474 begin
5475 if (!siclk && !soclk) q <= (d&reset);
5476 else q <= 1'bx;
5477 end
5478 `endif
5479
5480 assign so = q;
5481
5482endmodule // dff
5483
5484
5485module cl_sc1_msffi_16x ( q_l, so, d, l1clk, si, siclk, soclk );
5486// RFM 05-14-2004
5487// Level sensitive in SCAN_MODE
5488// Edge triggered when not in SCAN_MODE
5489
5490
5491 parameter SIZE = 1;
5492
5493 output q_l;
5494 output so;
5495
5496 input d;
5497 input l1clk;
5498 input si;
5499 input siclk;
5500 input soclk;
5501
5502 reg q_l;
5503 reg q;
5504 wire so;
5505 wire l1clk, siclk, soclk;
5506
5507 `ifdef SCAN_MODE
5508 reg l1;
5509 `ifdef FAST_FLUSH
5510 always @(posedge l1clk or posedge siclk ) begin
5511 if (siclk) begin
5512 q <= 1'b0; //pseudo flush reset
5513 end else begin
5514 q <= d;
5515 end
5516 end
5517 `else
5518
5519 always @(l1clk or siclk or soclk or d or si)
5520 begin
5521 if (!l1clk && !siclk) l1 <= d; // Load master with data
5522 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
5523 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
5524
5525 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
5526 if ( l1clk && siclk && !soclk) q <= si; // Flush
5527 end
5528 `endif
5529 `else
5530 wire si_unused;
5531 wire siclk_unused;
5532 wire soclk_unused;
5533 assign si_unused = si;
5534 assign siclk_unused = siclk;
5535 assign soclk_unused = soclk;
5536
5537
5538 `ifdef INITLATZERO
5539 initial q_l = 1'b1;
5540 initial q = 1'b0;
5541 `endif
5542
5543 always @(posedge l1clk)
5544 begin
5545 if (!siclk && !soclk) q <= d;
5546 else q <= 1'bx;
5547 end
5548 `endif
5549
5550
5551 always @ (q)
5552begin
5553 q_l=~q;
5554end
5555
5556
5557
5558 assign so = q;
5559
5560endmodule // dff
5561
5562module cl_sc1_msffi_1x ( q_l, so, d, l1clk, si, siclk, soclk );
5563// RFM 05-14-2004
5564// Level sensitive in SCAN_MODE
5565// Edge triggered when not in SCAN_MODE
5566
5567
5568 parameter SIZE = 1;
5569
5570 output q_l;
5571 output so;
5572
5573 input d;
5574 input l1clk;
5575 input si;
5576 input siclk;
5577 input soclk;
5578
5579 reg q_l;
5580 reg q;
5581 wire so;
5582 wire l1clk, siclk, soclk;
5583
5584 `ifdef SCAN_MODE
5585
5586 reg l1;
5587 `ifdef FAST_FLUSH
5588 always @(posedge l1clk or posedge siclk ) begin
5589 if (siclk) begin
5590 q <= 1'b0; //pseudo flush reset
5591 end else begin
5592 q <= d;
5593 end
5594 end
5595 `else
5596 always @(l1clk or siclk or soclk or d or si)
5597 begin
5598 if (!l1clk && !siclk) l1 <= d; // Load master with data
5599 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
5600 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
5601
5602 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
5603 if ( l1clk && siclk && !soclk) q <= si; // Flush
5604 end
5605 `endif
5606 `else
5607 wire si_unused;
5608 wire siclk_unused;
5609 wire soclk_unused;
5610 assign si_unused = si;
5611 assign siclk_unused = siclk;
5612 assign soclk_unused = soclk;
5613
5614
5615 `ifdef INITLATZERO
5616 initial q_l = 1'b1;
5617 initial q = 1'b0;
5618 `endif
5619
5620 always @(posedge l1clk)
5621 begin
5622 if (!siclk && !soclk) q <= d;
5623 else q <= 1'bx;
5624 end
5625 `endif
5626
5627
5628 always @ (q)
5629begin
5630 q_l=~q;
5631end
5632
5633
5634
5635 assign so = q;
5636
5637endmodule // dff
5638
5639
5640module cl_sc1_msffi_32x ( q_l, so, d, l1clk, si, siclk, soclk );
5641// RFM 05-14-2004
5642// Level sensitive in SCAN_MODE
5643// Edge triggered when not in SCAN_MODE
5644
5645
5646 parameter SIZE = 1;
5647
5648 output q_l;
5649 output so;
5650
5651 input d;
5652 input l1clk;
5653 input si;
5654 input siclk;
5655 input soclk;
5656
5657 reg q_l;
5658 reg q;
5659 wire so;
5660 wire l1clk, siclk, soclk;
5661
5662 `ifdef SCAN_MODE
5663 reg l1;
5664 `ifdef FAST_FLUSH
5665 always @(posedge l1clk or posedge siclk ) begin
5666 if (siclk) begin
5667 q <= 1'b0; //pseudo flush reset
5668 end else begin
5669 q <= d;
5670 end
5671 end
5672 `else
5673
5674 always @(l1clk or siclk or soclk or d or si)
5675 begin
5676 if (!l1clk && !siclk) l1 <= d; // Load master with data
5677 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
5678 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
5679
5680 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
5681 if ( l1clk && siclk && !soclk) q <= si; // Flush
5682 end
5683 `endif
5684 `else
5685 wire si_unused;
5686 wire siclk_unused;
5687 wire soclk_unused;
5688 assign si_unused = si;
5689 assign siclk_unused = siclk;
5690 assign soclk_unused = soclk;
5691
5692
5693 `ifdef INITLATZERO
5694 initial q_l = 1'b1;
5695 initial q = 1'b0;
5696 `endif
5697
5698 always @(posedge l1clk)
5699 begin
5700 if (!siclk && !soclk) q <= d;
5701 else q <= 1'bx;
5702 end
5703 `endif
5704
5705
5706 always @ (q)
5707begin
5708 q_l=~q;
5709end
5710
5711
5712
5713 assign so = q;
5714
5715endmodule // dff
5716
5717
5718module cl_sc1_msffi_4x ( q_l, so, d, l1clk, si, siclk, soclk );
5719// RFM 05-14-2004
5720// Level sensitive in SCAN_MODE
5721// Edge triggered when not in SCAN_MODE
5722
5723
5724 parameter SIZE = 1;
5725
5726 output q_l;
5727 output so;
5728
5729 input d;
5730 input l1clk;
5731 input si;
5732 input siclk;
5733 input soclk;
5734
5735 reg q_l;
5736 reg q;
5737 wire so;
5738 wire l1clk, siclk, soclk;
5739
5740 `ifdef SCAN_MODE
5741 reg l1;
5742 `ifdef FAST_FLUSH
5743 always @(posedge l1clk or posedge siclk ) begin
5744 if (siclk) begin
5745 q <= 1'b0; //pseudo flush reset
5746 end else begin
5747 q <= d;
5748 end
5749 end
5750 `else
5751
5752 always @(l1clk or siclk or soclk or d or si)
5753 begin
5754 if (!l1clk && !siclk) l1 <= d; // Load master with data
5755 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
5756 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
5757
5758 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
5759 if ( l1clk && siclk && !soclk) q <= si; // Flush
5760 end
5761 `endif
5762 `else
5763 wire si_unused;
5764 wire siclk_unused;
5765 wire soclk_unused;
5766 assign si_unused = si;
5767 assign siclk_unused = siclk;
5768 assign soclk_unused = soclk;
5769
5770
5771 `ifdef INITLATZERO
5772 initial q_l = 1'b1;
5773 initial q = 1'b0;
5774 `endif
5775
5776 always @(posedge l1clk)
5777 begin
5778 if (!siclk && !soclk) q <= d;
5779 else q <= 1'bx;
5780 end
5781 `endif
5782
5783
5784 always @ (q)
5785begin
5786 q_l=~q;
5787end
5788
5789
5790
5791 assign so = q;
5792
5793endmodule // dff
5794
5795module cl_sc1_msffi_8x ( q_l, so, d, l1clk, si, siclk, soclk );
5796// RFM 05-14-2004
5797// Level sensitive in SCAN_MODE
5798// Edge triggered when not in SCAN_MODE
5799
5800
5801 parameter SIZE = 1;
5802
5803 output q_l;
5804 output so;
5805
5806 input d;
5807 input l1clk;
5808 input si;
5809 input siclk;
5810 input soclk;
5811
5812 reg q_l;
5813 reg q;
5814 wire so;
5815 wire l1clk, siclk, soclk;
5816
5817 `ifdef SCAN_MODE
5818 reg l1;
5819 `ifdef FAST_FLUSH
5820 always @(posedge l1clk or posedge siclk ) begin
5821 if (siclk) begin
5822 q <= 1'b0; //pseudo flush reset
5823 end else begin
5824 q <= d;
5825 end
5826 end
5827 `else
5828
5829 always @(l1clk or siclk or soclk or d or si)
5830 begin
5831 if (!l1clk && !siclk) l1 <= d; // Load master with data
5832 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
5833 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
5834
5835 else if ( l1clk && !siclk && !soclk) q <= l1; // Load slave with master data
5836 if ( l1clk && siclk && !soclk) q <= si; // Flush
5837 end
5838 `endif
5839 `else
5840 wire si_unused;
5841 wire siclk_unused;
5842 wire soclk_unused;
5843 assign si_unused = si;
5844 assign siclk_unused = siclk;
5845 assign soclk_unused = soclk;
5846
5847
5848 `ifdef INITLATZERO
5849 initial q_l = 1'b1;
5850 initial q = 1'b0;
5851 `endif
5852
5853 always @(posedge l1clk)
5854 begin
5855 if (!siclk && !soclk) q <= d;
5856 else q <= 1'bx;
5857 end
5858 `endif
5859
5860
5861 always @ (q)
5862begin
5863 q_l=~q;
5864end
5865
5866
5867
5868 assign so = q;
5869
5870endmodule // dff
5871
5872module cl_sc1_msffjtag_4x ( q, so, d, l1clk, si, siclk, soclk, reset, updateclk );
5873
5874 output q;
5875 output so;
5876
5877 input d;
5878 input l1clk;
5879 input si;
5880 input siclk;
5881 input soclk;
5882 input reset;
5883 input updateclk;
5884`ifdef LIB
5885 reg q;
5886 reg so;
5887 wire l1clk, siclk, soclk, updateclk;
5888
5889 reg l1;
5890
5891 always @(l1clk or siclk or soclk or d or si or reset)
5892 begin
5893 if (!l1clk && !siclk) l1 <= d; // Load master with data
5894 else if ( l1clk && siclk) l1 <= si; // Load master with scan or flush
5895 else if (!l1clk && siclk) l1 <= 1'bx; // Conflict between data and scan
5896 if (reset) so <=1'b0;
5897 if ( l1clk && !siclk && !soclk && !reset) so <= l1; // Load slave with master data
5898 if ( l1clk && siclk && !soclk && !reset) so <= si; // Flush
5899 end
5900
5901 `ifdef INITLATZERO
5902 initial q = 1'b0;
5903 `endif
5904
5905
5906
5907 always@(updateclk or reset or l1)
5908 begin
5909 if(reset) q <=1'b0;
5910 else if(updateclk) q <=l1;
5911
5912
5913
5914 end
5915 `endif
5916endmodule
5917
5918
5919
5920
5921
5922
5923
5924
5925module cl_sc1_clksyncff_4x(l1clk, d, si, siclk, soclk, q, so);
5926input l1clk, d, si, siclk, soclk;
5927output q, so;
5928wire q1o, slo;
5929
5930cl_sc1_msff_4x xx0 ( .l1clk(l1clk), .d(d), .si(si), .siclk(siclk), .soclk(soclk), .q(q1o), .so(slo));
5931cl_sc1_msff_4x xx1 ( .l1clk(l1clk), .d(q1o), .si(slo), .siclk(siclk), .soclk(soclk), .q(q), .so(so));
5932endmodule
5933module cl_sc1_bs_cell2_4x(q, so, d, l1clk, si, siclk, soclk, updateclk, mode,
5934muxd, highz_n);
5935
5936 output q;
5937 output so;
5938
5939 input d, highz_n;
5940 input l1clk;
5941 input si;
5942 input siclk;
5943 input soclk;
5944
5945 input updateclk, mode, muxd;
5946
5947 reg q;
5948 reg so;
5949 wire l1clk, siclk, soclk, updateclk;
5950
5951
5952 reg l1, qm;
5953
5954 always @(l1clk or siclk or soclk or d or si)
5955 begin
5956 if (!l1clk && !siclk) l1 <= d;
5957 if ( l1clk && siclk) l1 <= si;
5958 if (!l1clk && siclk) l1 <= 1'bx;
5959 if ( l1clk && !soclk) so <= l1;
5960 if ( l1clk && siclk && !soclk) so <= si; // Flush
5961 end
5962 `ifdef INITLATZERO
5963 initial qm = 1'b0;
5964 `endif
5965 always@(updateclk or l1)
5966 begin
5967 if(updateclk) qm <=l1;
5968 end
5969always@(mode or muxd or qm or highz_n)
5970 begin
5971 if(mode==0) q=(qm && highz_n);
5972 else q=muxd;
5973 end
5974endmodule
5975
5976module cl_sc1_clk_buf_16x (
5977in,
5978out
5979);
5980input in;
5981output out;
5982
5983`ifdef LIB
5984//assign out = in;
5985buf (out, in);
5986`endif
5987
5988endmodule
5989module cl_sc1_clk_buf_20x (
5990in,
5991out
5992);
5993input in;
5994output out;
5995
5996`ifdef LIB
5997//assign out = in;
5998buf (out, in);
5999`endif
6000
6001endmodule
6002module cl_sc1_clk_buf_24x (
6003in,
6004out
6005);
6006input in;
6007output out;
6008
6009`ifdef LIB
6010//assign out = in;
6011buf (out, in);
6012`endif
6013
6014endmodule
6015module cl_sc1_clk_buf_32x (
6016in,
6017out
6018);
6019input in;
6020output out;
6021
6022`ifdef LIB
6023//assign out = in;
6024buf (out, in);
6025`endif
6026
6027endmodule
6028module cl_sc1_clk_buf_48x (
6029in,
6030out
6031);
6032input in;
6033output out;
6034
6035`ifdef LIB
6036//assign out = in;
6037buf (out, in);
6038`endif
6039
6040endmodule
6041module cl_sc1_clk_buf_64x (
6042in,
6043out
6044);
6045input in;
6046output out;
6047
6048`ifdef LIB
6049//assign out = in;
6050buf (out, in);
6051`endif
6052
6053endmodule
6054module cl_sc1_clk_buf_8x (
6055in,
6056out
6057);
6058input in;
6059output out;
6060
6061`ifdef LIB
6062//assign out = in;
6063buf (out, in);
6064`endif
6065
6066endmodule
6067module cl_sc1_clk_inv_16x (
6068in,
6069out
6070);
6071input in;
6072output out;
6073
6074`ifdef LIB
6075//assign out = ~in;
6076not (out, in);
6077`endif
6078
6079endmodule
6080module cl_sc1_clk_inv_20x (
6081clkin,
6082clkout
6083);
6084input clkin;
6085output clkout;
6086
6087`ifdef LIB
6088//assign clkout = ~clkin;
6089not (clkout, clkin);
6090`endif
6091
6092endmodule
6093module cl_sc1_clk_inv_24x (
6094in,
6095out
6096);
6097input in;
6098output out;
6099
6100`ifdef LIB
6101//assign out = ~in;
6102not (out, in);
6103`endif
6104
6105endmodule
6106module cl_sc1_clk_inv_32x (
6107in,
6108out
6109);
6110input in;
6111output out;
6112
6113`ifdef LIB
6114//assign out = ~in;
6115not (out, in);
6116`endif
6117
6118endmodule
6119module cl_sc1_clk_inv_48x (
6120in,
6121out
6122);
6123input in;
6124output out;
6125
6126`ifdef LIB
6127//assign out = ~in;
6128not (out, in);
6129`endif
6130
6131endmodule
6132module cl_sc1_clk_inv_64x (
6133in,
6134out
6135);
6136input in;
6137output out;
6138
6139`ifdef LIB
6140//assign out = ~in;
6141not (out, in);
6142`endif
6143
6144endmodule
6145module cl_sc1_clk_inv_8x (
6146clkin,
6147clkout
6148);
6149input clkin;
6150output clkout;
6151
6152`ifdef LIB
6153//assign clkout = ~clkin;
6154not (clkout, clkin);
6155`endif
6156
6157endmodule
6158module cl_sc1_clk_mux2_16x (
6159in0,
6160in1,
6161sel0,
6162out
6163);
6164input in0;
6165input in1;
6166input sel0;
6167output out;
6168
6169`ifdef LIB
6170reg out;
6171 always @ ( sel0 or in0 or in1)
6172 case ( sel0 )
6173 1'b1: out = in0;
6174 1'b0: out = in1;
6175
6176 default: out = 1'bx;
6177
6178 endcase
6179`endif
6180
6181endmodule
6182
6183module cl_sc1_clk_mux2_24x (
6184in0,
6185in1,
6186sel0,
6187out
6188);
6189input in0;
6190input in1;
6191input sel0;
6192output out;
6193
6194`ifdef LIB
6195reg out;
6196 always @ ( sel0 or in0 or in1)
6197 case ( sel0 )
6198 1'b1: out = in0;
6199 1'b0: out = in1;
6200
6201 default: out = 1'bx;
6202
6203 endcase
6204`endif
6205
6206endmodule
6207
6208module cl_sc1_clk_mux2_32x (
6209in0,
6210in1,
6211sel0,
6212out
6213);
6214input in0;
6215input in1;
6216input sel0;
6217output out;
6218
6219`ifdef LIB
6220reg out;
6221 always @ ( sel0 or in0 or in1)
6222 case ( sel0 )
6223 1'b1: out = in0;
6224 1'b0: out = in1;
6225
6226 default: out = 1'bx;
6227
6228 endcase
6229`endif
6230
6231endmodule
6232
6233module cl_sc1_clk_mux2_8x (
6234in0,
6235in1,
6236sel0,
6237out
6238);
6239input in0;
6240input in1;
6241input sel0;
6242output out;
6243
6244`ifdef LIB
6245reg out;
6246 always @ ( sel0 or in0 or in1)
6247 case ( sel0 )
6248 1'b1: out = in0;
6249 1'b0: out = in1;
6250
6251 default: out = 1'bx;
6252
6253 endcase
6254`endif
6255
6256endmodule
6257
6258
6259
6260
6261
6262
6263
6264
6265