Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / design / sys / iop / sii / rtl / sii_stgsio_dp.v
CommitLineData
86530b38
AT
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T2 Processor File: sii_stgsio_dp.v
4// Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved
5// 4150 Network Circle, Santa Clara, California 95054, U.S.A.
6//
7// * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
8//
9// This program is free software; you can redistribute it and/or modify
10// it under the terms of the GNU General Public License as published by
11// the Free Software Foundation; version 2 of the License.
12//
13// This program is distributed in the hope that it will be useful,
14// but WITHOUT ANY WARRANTY; without even the implied warranty of
15// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16// GNU General Public License for more details.
17//
18// You should have received a copy of the GNU General Public License
19// along with this program; if not, write to the Free Software
20// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21//
22// For the avoidance of doubt, and except that if any non-GPL license
23// choice is available it will apply instead, Sun elects to use only
24// the General Public License version 2 (GPLv2) at this time for any
25// software where a choice of GPL license versions is made
26// available with the language indicating that GPLv2 or any later version
27// may be used, or where a choice of which version of the GPL is applied is
28// otherwise unspecified.
29//
30// Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
31// CA 95054 USA or visit www.sun.com if you need additional information or
32// have any questions.
33//
34// ========== Copyright Header End ============================================
35module sii_stgsio_dp (
36 l2clk,
37 sio_sii_opcc_ipcc_dmu_or_deq,
38 sio_sii_opcc_ipcc_dmu_by_deq,
39 sio_sii_opcc_ipcc_niu_or_deq,
40 sio_sii_opcc_ipcc_niu_by_deq,
41 sio_sii_opcc_ipcc_dmu_by_cnt,
42 sio_sii_opcc_ipcc_niu_by_cnt,
43 sio_sii_opcc_ipcc_dmu_or_deq_r,
44 sio_sii_opcc_ipcc_dmu_by_deq_r,
45 sio_sii_opcc_ipcc_niu_or_deq_r,
46 sio_sii_opcc_ipcc_niu_by_deq_r,
47 sio_sii_opcc_ipcc_dmu_by_cnt_r,
48 sio_sii_opcc_ipcc_niu_by_cnt_r,
49 sio_sii_olc0_ilc0_dequeue,
50 sio_sii_olc1_ilc1_dequeue,
51 sio_sii_olc2_ilc2_dequeue,
52 sio_sii_olc3_ilc3_dequeue,
53 sio_sii_olc4_ilc4_dequeue,
54 sio_sii_olc5_ilc5_dequeue,
55 sio_sii_olc6_ilc6_dequeue,
56 sio_sii_olc7_ilc7_dequeue,
57 sio_sii_olc0_ilc0_dequeue_r,
58 sio_sii_olc1_ilc1_dequeue_r,
59 sio_sii_olc2_ilc2_dequeue_r,
60 sio_sii_olc3_ilc3_dequeue_r,
61 sio_sii_olc4_ilc4_dequeue_r,
62 sio_sii_olc5_ilc5_dequeue_r,
63 sio_sii_olc6_ilc6_dequeue_r,
64 sio_sii_olc7_ilc7_dequeue_r,
65 tcu_muxtest,
66 tcu_dectest,
67 tcu_scan_en,
68 scan_in,
69 tcu_aclk,
70 tcu_bclk,
71 tcu_pce_ov,
72 tcu_clk_stop,
73 scan_out);
74wire muxtst;
75wire test;
76wire se;
77wire siclk;
78wire soclk;
79wire pce_ov;
80wire stop;
81wire dff_sio_sii_opcc_ipcc_dmu_deq_scanin;
82wire dff_sio_sii_opcc_ipcc_dmu_deq_scanout;
83wire dff_sio_sii_opcc_ipcc_niu_deq_scanin;
84wire dff_sio_sii_opcc_ipcc_niu_deq_scanout;
85wire dff_sio_sii_opcc_ipcc_dmu_by_cnt_scanin;
86wire dff_sio_sii_opcc_ipcc_dmu_by_cnt_scanout;
87wire dff_sio_sii_opcc_ipcc_niu_by_cnt_scanin;
88wire dff_sio_sii_opcc_ipcc_niu_by_cnt_scanout;
89wire dff_sio_sii_olc_ilc_dequeue_scanin;
90wire dff_sio_sii_olc_ilc_dequeue_scanout;
91
92
93 input l2clk;
94input sio_sii_opcc_ipcc_dmu_or_deq;
95input sio_sii_opcc_ipcc_dmu_by_deq;
96input sio_sii_opcc_ipcc_niu_or_deq;
97input sio_sii_opcc_ipcc_niu_by_deq;
98input [3:0] sio_sii_opcc_ipcc_dmu_by_cnt;
99input [3:0] sio_sii_opcc_ipcc_niu_by_cnt;
100
101output sio_sii_opcc_ipcc_dmu_or_deq_r;
102output sio_sii_opcc_ipcc_dmu_by_deq_r;
103output sio_sii_opcc_ipcc_niu_or_deq_r;
104output sio_sii_opcc_ipcc_niu_by_deq_r;
105output [3:0] sio_sii_opcc_ipcc_dmu_by_cnt_r;
106output [3:0] sio_sii_opcc_ipcc_niu_by_cnt_r;
107
108input sio_sii_olc0_ilc0_dequeue;
109input sio_sii_olc1_ilc1_dequeue;
110input sio_sii_olc2_ilc2_dequeue;
111input sio_sii_olc3_ilc3_dequeue;
112input sio_sii_olc4_ilc4_dequeue;
113input sio_sii_olc5_ilc5_dequeue;
114input sio_sii_olc6_ilc6_dequeue;
115input sio_sii_olc7_ilc7_dequeue;
116
117output sio_sii_olc0_ilc0_dequeue_r;
118output sio_sii_olc1_ilc1_dequeue_r;
119output sio_sii_olc2_ilc2_dequeue_r;
120output sio_sii_olc3_ilc3_dequeue_r;
121output sio_sii_olc4_ilc4_dequeue_r;
122output sio_sii_olc5_ilc5_dequeue_r;
123output sio_sii_olc6_ilc6_dequeue_r;
124output sio_sii_olc7_ilc7_dequeue_r;
125
126 input tcu_muxtest;
127 input tcu_dectest;
128 input tcu_scan_en;
129
130 input scan_in;
131 input tcu_aclk;
132 input tcu_bclk;
133 input tcu_pce_ov;
134 input tcu_clk_stop;
135 output scan_out;
136
137 ///////////////////////////////////////
138 // Scan chain connections
139 ///////////////////////////////////////
140 // scan renames
141 assign muxtst = tcu_muxtest;
142 assign test = tcu_dectest;
143 assign se = tcu_scan_en;
144
145 assign siclk = tcu_aclk;
146 assign soclk = tcu_bclk;
147 assign pce_ov = tcu_pce_ov;
148 assign stop = tcu_clk_stop;
149 // end scan
150
151
152 ///////////////////////////////////////
153 //
154 // CAPTURE FLOPS for parity, ue and din
155 // -- sol0 cycle
156 //
157 ///////////////////////////////////////
158
159
160 sii_stgsio_dpmsff_macro__stack_2c__width_2 dff_sio_sii_opcc_ipcc_dmu_deq (
161 .scan_in(dff_sio_sii_opcc_ipcc_dmu_deq_scanin),
162 .scan_out(dff_sio_sii_opcc_ipcc_dmu_deq_scanout),
163 .clk (l2clk),
164 .din ({sio_sii_opcc_ipcc_dmu_or_deq, sio_sii_opcc_ipcc_dmu_by_deq}),
165 .dout ({sio_sii_opcc_ipcc_dmu_or_deq_r, sio_sii_opcc_ipcc_dmu_by_deq_r}),
166 .en (1'b1),
167 .se(se),
168 .siclk(siclk),
169 .soclk(soclk),
170 .pce_ov(pce_ov),
171 .stop(stop)
172 );
173
174 sii_stgsio_dpmsff_macro__stack_2c__width_2 dff_sio_sii_opcc_ipcc_niu_deq (
175 .scan_in(dff_sio_sii_opcc_ipcc_niu_deq_scanin),
176 .scan_out(dff_sio_sii_opcc_ipcc_niu_deq_scanout),
177 .clk (l2clk),
178 .din ({sio_sii_opcc_ipcc_niu_or_deq, sio_sii_opcc_ipcc_niu_by_deq}),
179 .dout ({sio_sii_opcc_ipcc_niu_or_deq_r, sio_sii_opcc_ipcc_niu_by_deq_r}),
180 .en (1'b1),
181 .se(se),
182 .siclk(siclk),
183 .soclk(soclk),
184 .pce_ov(pce_ov),
185 .stop(stop)
186 );
187
188 sii_stgsio_dpmsff_macro__stack_4c__width_4 dff_sio_sii_opcc_ipcc_dmu_by_cnt (
189 .scan_in(dff_sio_sii_opcc_ipcc_dmu_by_cnt_scanin),
190 .scan_out(dff_sio_sii_opcc_ipcc_dmu_by_cnt_scanout),
191 .clk (l2clk),
192 .din (sio_sii_opcc_ipcc_dmu_by_cnt[3:0]),
193 .dout (sio_sii_opcc_ipcc_dmu_by_cnt_r[3:0]),
194 .en (1'b1),
195 .se(se),
196 .siclk(siclk),
197 .soclk(soclk),
198 .pce_ov(pce_ov),
199 .stop(stop)
200 );
201
202 sii_stgsio_dpmsff_macro__stack_4c__width_4 dff_sio_sii_opcc_ipcc_niu_by_cnt (
203 .scan_in(dff_sio_sii_opcc_ipcc_niu_by_cnt_scanin),
204 .scan_out(dff_sio_sii_opcc_ipcc_niu_by_cnt_scanout),
205 .clk (l2clk),
206 .din (sio_sii_opcc_ipcc_niu_by_cnt[3:0]),
207 .dout (sio_sii_opcc_ipcc_niu_by_cnt_r[3:0]),
208 .en (1'b1),
209 .se(se),
210 .siclk(siclk),
211 .soclk(soclk),
212 .pce_ov(pce_ov),
213 .stop(stop)
214 );
215
216 sii_stgsio_dpmsff_macro__stack_8c__width_8 dff_sio_sii_olc_ilc_dequeue (
217 .scan_in(dff_sio_sii_olc_ilc_dequeue_scanin),
218 .scan_out(dff_sio_sii_olc_ilc_dequeue_scanout),
219 .clk (l2clk),
220 .din ({sio_sii_olc7_ilc7_dequeue,
221 sio_sii_olc6_ilc6_dequeue,
222 sio_sii_olc5_ilc5_dequeue,
223 sio_sii_olc4_ilc4_dequeue,
224 sio_sii_olc3_ilc3_dequeue,
225 sio_sii_olc2_ilc2_dequeue,
226 sio_sii_olc1_ilc1_dequeue,
227 sio_sii_olc0_ilc0_dequeue }),
228 .dout ({sio_sii_olc7_ilc7_dequeue_r,
229 sio_sii_olc6_ilc6_dequeue_r,
230 sio_sii_olc5_ilc5_dequeue_r,
231 sio_sii_olc4_ilc4_dequeue_r,
232 sio_sii_olc3_ilc3_dequeue_r,
233 sio_sii_olc2_ilc2_dequeue_r,
234 sio_sii_olc1_ilc1_dequeue_r,
235 sio_sii_olc0_ilc0_dequeue_r }),
236 .en (1'b1),
237 .se(se),
238 .siclk(siclk),
239 .soclk(soclk),
240 .pce_ov(pce_ov),
241 .stop(stop)
242 );
243
244// fixscan start:
245assign dff_sio_sii_opcc_ipcc_dmu_deq_scanin = scan_in ;
246assign dff_sio_sii_opcc_ipcc_niu_deq_scanin = dff_sio_sii_opcc_ipcc_dmu_deq_scanout;
247assign dff_sio_sii_opcc_ipcc_dmu_by_cnt_scanin = dff_sio_sii_opcc_ipcc_niu_deq_scanout;
248assign dff_sio_sii_opcc_ipcc_niu_by_cnt_scanin = dff_sio_sii_opcc_ipcc_dmu_by_cnt_scanout;
249assign dff_sio_sii_olc_ilc_dequeue_scanin = dff_sio_sii_opcc_ipcc_niu_by_cnt_scanout;
250assign scan_out = dff_sio_sii_olc_ilc_dequeue_scanout;
251// fixscan end:
252endmodule // sio_old_dp
253
254
255
256
257
258
259
260
261// any PARAMS parms go into naming of macro
262
263module sii_stgsio_dpmsff_macro__stack_2c__width_2 (
264 din,
265 clk,
266 en,
267 se,
268 scan_in,
269 siclk,
270 soclk,
271 pce_ov,
272 stop,
273 dout,
274 scan_out);
275wire l1clk;
276wire siclk_out;
277wire soclk_out;
278wire [0:0] so;
279
280 input [1:0] din;
281
282
283 input clk;
284 input en;
285 input se;
286 input scan_in;
287 input siclk;
288 input soclk;
289 input pce_ov;
290 input stop;
291
292
293
294 output [1:0] dout;
295
296
297 output scan_out;
298
299
300
301
302cl_dp1_l1hdr_8x c0_0 (
303.l2clk(clk),
304.pce(en),
305.aclk(siclk),
306.bclk(soclk),
307.l1clk(l1clk),
308 .se(se),
309 .pce_ov(pce_ov),
310 .stop(stop),
311 .siclk_out(siclk_out),
312 .soclk_out(soclk_out)
313);
314dff #(2) d0_0 (
315.l1clk(l1clk),
316.siclk(siclk_out),
317.soclk(soclk_out),
318.d(din[1:0]),
319.si({scan_in,so[0:0]}),
320.so({so[0:0],scan_out}),
321.q(dout[1:0])
322);
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343endmodule
344
345
346
347
348
349
350
351
352
353
354
355
356
357// any PARAMS parms go into naming of macro
358
359module sii_stgsio_dpmsff_macro__stack_4c__width_4 (
360 din,
361 clk,
362 en,
363 se,
364 scan_in,
365 siclk,
366 soclk,
367 pce_ov,
368 stop,
369 dout,
370 scan_out);
371wire l1clk;
372wire siclk_out;
373wire soclk_out;
374wire [2:0] so;
375
376 input [3:0] din;
377
378
379 input clk;
380 input en;
381 input se;
382 input scan_in;
383 input siclk;
384 input soclk;
385 input pce_ov;
386 input stop;
387
388
389
390 output [3:0] dout;
391
392
393 output scan_out;
394
395
396
397
398cl_dp1_l1hdr_8x c0_0 (
399.l2clk(clk),
400.pce(en),
401.aclk(siclk),
402.bclk(soclk),
403.l1clk(l1clk),
404 .se(se),
405 .pce_ov(pce_ov),
406 .stop(stop),
407 .siclk_out(siclk_out),
408 .soclk_out(soclk_out)
409);
410dff #(4) d0_0 (
411.l1clk(l1clk),
412.siclk(siclk_out),
413.soclk(soclk_out),
414.d(din[3:0]),
415.si({scan_in,so[2:0]}),
416.so({so[2:0],scan_out}),
417.q(dout[3:0])
418);
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439endmodule
440
441
442
443
444
445
446
447
448
449
450
451
452
453// any PARAMS parms go into naming of macro
454
455module sii_stgsio_dpmsff_macro__stack_8c__width_8 (
456 din,
457 clk,
458 en,
459 se,
460 scan_in,
461 siclk,
462 soclk,
463 pce_ov,
464 stop,
465 dout,
466 scan_out);
467wire l1clk;
468wire siclk_out;
469wire soclk_out;
470wire [6:0] so;
471
472 input [7:0] din;
473
474
475 input clk;
476 input en;
477 input se;
478 input scan_in;
479 input siclk;
480 input soclk;
481 input pce_ov;
482 input stop;
483
484
485
486 output [7:0] dout;
487
488
489 output scan_out;
490
491
492
493
494cl_dp1_l1hdr_8x c0_0 (
495.l2clk(clk),
496.pce(en),
497.aclk(siclk),
498.bclk(soclk),
499.l1clk(l1clk),
500 .se(se),
501 .pce_ov(pce_ov),
502 .stop(stop),
503 .siclk_out(siclk_out),
504 .soclk_out(soclk_out)
505);
506dff #(8) d0_0 (
507.l1clk(l1clk),
508.siclk(siclk_out),
509.soclk(soclk_out),
510.d(din[7:0]),
511.si({scan_in,so[6:0]}),
512.so({so[6:0],scan_out}),
513.q(dout[7:0])
514);
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535endmodule
536
537
538
539
540
541
542
543