Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / verif / env / fc / fc_top.v
CommitLineData
86530b38
AT
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T2 Processor File: fc_top.v
4// Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved
5// 4150 Network Circle, Santa Clara, California 95054, U.S.A.
6//
7// * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
8//
9// This program is free software; you can redistribute it and/or modify
10// it under the terms of the GNU General Public License as published by
11// the Free Software Foundation; version 2 of the License.
12//
13// This program is distributed in the hope that it will be useful,
14// but WITHOUT ANY WARRANTY; without even the implied warranty of
15// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16// GNU General Public License for more details.
17//
18// You should have received a copy of the GNU General Public License
19// along with this program; if not, write to the Free Software
20// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21//
22// For the avoidance of doubt, and except that if any non-GPL license
23// choice is available it will apply instead, Sun elects to use only
24// the General Public License version 2 (GPLv2) at this time for any
25// software where a choice of GPL license versions is made
26// available with the language indicating that GPLv2 or any later version
27// may be used, or where a choice of which version of the GPL is applied is
28// otherwise unspecified.
29//
30// Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
31// CA 95054 USA or visit www.sun.com if you need additional information or
32// have any questions.
33//
34// ========== Copyright Header End ============================================
35`timescale 1ps/1ps
36
37`ifdef RESET_AXIS_ONLY
38
39`include "axis_ram1.v"
40`include "axis_ram2.v"
41`include "axis_ram3.v"
42`include "axis_ram4.v"
43`include "axis_ram5.v"
44
45`endif
46
47`include "fc_csr_cabinet.v"
48module tb_top;
49 parameter delay_375 = 1330; // = 375MHz
50 parameter delay_250 = 2000; // = 250MHz
51 parameter delay_125 = 4000; // = 125MHz
52 parameter delay_104 = 4800; // = 104MHz //AT 04/12/06: DTM mode only
53 parameter delay_100 = 5000; // = 100MHz
54
55`include "fc.vh" // design hierachical defines
56`include "cpu.h" // design constant defines, such as bus width, etc...
57`include "cross_module.h" // MCU design and monitors define
58
59 reg [165:0] dbg_dq_reg; // use this reg to drive DBG_DQ pkg pin
60 initial dbg_dq_reg = {166 {1'bz} }; // not drive DBG_DQ
61
62 reg pll_testmode_reg, pll_cmp_bypass_reg;
63 initial begin
64 if (! $test$plusargs("pll_bypass")) begin
65 pll_testmode_reg = 1'bz;
66 pll_cmp_bypass_reg = 1'b0;
67 end
68 // if +pll_bypass specified, see file pll_bypass.vh
69 end
70 wire PLL_TESTMODE = pll_testmode_reg;
71 wire PLL_CMP_BYPASS = pll_cmp_bypass_reg;
72
73`include "pll_bypass.vh" // PLL Bypass code
74
75 // Global registers & values, use with core bench
76
77`ifdef PALLADIUM
78mcu_mem_config mcu_mem_config();
79`endif
80
81 reg full_efu = 1'b0;
82 reg [63:0] finished_tids ;
83 integer last_act_cycle ;
84 integer th_last_act_cycle[63:0];
85 integer pm_shift;
86 integer sys_half_period;
87 integer tck_period, tck_half_period;
88 reg jtpor_init_on;
89 wire [63:0] gOutOfBoot; // Vera Interface signal. Vera drives.
90
91 // for NCU BFM, always present
92 wire [39:0] b8_cpx_pa;
93 wire [145:0] b8_cpx_pkt;
94 wire [2:0] b8_cpx_cid;
95 wire b8_cpx_ctrue;
96 wire b8_cpx_swap = 1'b0;
97
98 // Other signals
99 wire reset; // This is Bench-reset
100`ifdef AXIS_TL
101 wire flush_reset_complete;
102`endif
103`ifdef MCU_GATE
104 wire flush_reset_complete;
105`endif
106
107 reg [31:0] rst_lock_time; // value to be forced into RESET's LOCK_TIME reg for PLL lock time
108
109 // I/O to DUT
110 wire core_clk; //
111 wire iol2clk;
112 wire iol2clk_2x;
113 reg enet_clk;
114 wire SYSCLK, SYSCLKN;
115 wire dram_12x_clk;
116 wire dram_6x_clk;
117 wire fbl2clk; // NOT DRIVEN!!!
118
119//BP 6-07-06 state_machine to drive pb reset and jtag for tester
120`ifdef RESET_AXIS_ONLY
121wire PWRON_RST_L;
122reg jtpor_trig;
123reg [7:0] ram_cnt;
124initial ram_cnt = 0;
125initial jtpor_trig = 0;
126
127reg serdes_trig1;
128reg serdes_trig2;
129reg serdes_trig3;
130reg serdes_trig4;
131reg serdes_trig5;
132always @(posedge SYSCLK ) begin
133 if (!PWRON_RST_L) begin
134 serdes_trig1 <= 1'b0;
135 serdes_trig3 <= 1'b0;
136 end
137 else if (tb_top.cpu.tcu.tcu_rst_flush_stop_ack ||
138 (`TCU.mbist_ctl.bisx_counter == 32'h2_29c3) ||
139 (tb_top.cpu.efu.sbc_efa_word_addr[5:0] == 6'h3f) ||
140 (tb_top.cpu.ncu.rst_ncu_unpark_thread)) begin
141 serdes_trig1 <= tb_top.cpu.tcu.tcu_rst_flush_stop_ack & (tb_top.cpu.tcu.tcu_rst_flush_stop_ack && (tb_top.cpu.rst.rst_mio_rst_state == 6'b000110)) ;
142 serdes_trig3 <= tb_top.cpu.tcu.tcu_rst_flush_stop_ack & (tb_top.cpu.tcu.tcu_rst_flush_stop_ack && (tb_top.cpu.rst.rst_mio_rst_state == 6'b001010));
143 end
144 else begin
145 serdes_trig1 <= 1'b0;
146 serdes_trig3 <= 1'b0;
147 end
148end
149
150reg saw_trig4 ;
151reg [8:0] trig4_cntr ;
152
153always @(posedge SYSCLK ) begin
154 if ((tb_top.cpu.efu.sbc_efa_word_addr[5:0] == 6'h3f) & (tb_top.cpu.rst.rst_mio_rst_state == 6'b001011) & ~saw_trig4) begin
155 serdes_trig4 <= (tb_top.cpu.efu.sbc_efa_word_addr[5:0] == 6'h3f) ;
156 saw_trig4 <= 1'b1 ;
157 end
158 else
159 serdes_trig4 <= 1'b0;
160end
161
162always @(posedge SYSCLK ) begin
163 if (!PWRON_RST_L) begin
164 trig4_cntr <= 9'b0 ;
165 end
166 else if (saw_trig4 & (trig4_cntr != 9'b101111110)) begin
167 trig4_cntr <= trig4_cntr + 1 ;
168 end
169 else
170 trig4_cntr <= trig4_cntr ;
171end
172
173wire trigger4 = saw_trig4 & (trig4_cntr == 9'b101111101) ;
174
175
176reg saw_trig2 ;
177always @(posedge core_clk ) begin
178 if ((`TCU.mbist_ctl.bisx_counter == 32'h2_29c3) & ~saw_trig2) begin
179 serdes_trig2 <= (`TCU.mbist_ctl.bisx_counter == 32'h2_29c3) ;
180 saw_trig2 <= 1'b1;
181 end
182 else
183 serdes_trig2 <= 1'b0 ;
184end
185
186wire trigger2 = !serdes_trig2 & (`TCU.mbist_ctl.bisx_counter == 32'h2_29c3) & ~saw_trig2;
187reg [2:0] cclk_cntr ;
188reg hold_trig2_cclk ;
189
190always @(posedge core_clk ) begin
191 if(trigger2) begin
192 hold_trig2_cclk <= 1'b1;
193 cclk_cntr <= cclk_cntr + 1;
194 end
195 else if (cclk_cntr != 3'b0) begin
196 cclk_cntr <= cclk_cntr + 1;
197 end
198 else
199 hold_trig2_cclk <= 1'b0;
200end
201
202
203reg saw_trig5 ;
204always @(posedge core_clk ) begin
205 if ((tb_top.cpu.ncu.rst_ncu_unpark_thread) & ~saw_trig5) begin
206 serdes_trig5 <= (tb_top.cpu.ncu.rst_ncu_unpark_thread) ;
207 saw_trig5 <= 1'b1;
208 end
209 else
210 serdes_trig5 <= 1'b0 ;
211end
212
213wire trigger5 = !serdes_trig5 & (tb_top.cpu.ncu.rst_ncu_unpark_thread) & ~saw_trig5 ;
214reg [2:0] cclk_cntr2 ;
215reg hold_trig5_cclk ;
216
217always @(posedge core_clk ) begin
218 if(trigger5) begin
219 hold_trig5_cclk <= 1'b1;
220 cclk_cntr2 <= cclk_cntr2 + 1;
221 end
222 else if (cclk_cntr2 != 3'b0) begin
223 cclk_cntr2 <= cclk_cntr2 + 1;
224 end
225 else
226 hold_trig5_cclk <= 1'b0;
227end
228
229initial begin
230hold_trig5_cclk = 0;
231cclk_cntr2 = 0;
232serdes_trig5 = 0;
233saw_trig5 = 0;
234hold_trig2_cclk = 0;
235cclk_cntr = 0;
236serdes_trig2 = 0;
237saw_trig2 = 0;
238serdes_trig4 = 0;
239saw_trig4 = 0;
240end
241
242wire trigger1 = !serdes_trig1 & (tb_top.cpu.tcu.tcu_rst_flush_stop_ack && (tb_top.cpu.rst.rst_mio_rst_state == 6'b000110));
243wire trigger3 = !serdes_trig3 & (tb_top.cpu.tcu.tcu_rst_flush_stop_ack && (tb_top.cpu.rst.rst_mio_rst_state == 6'b001010));
244
245reg [11:0] axis_jtag_count1;
246reg [11:0] axis_jtag_count2;
247reg [11:0] axis_jtag_count3;
248reg [11:0] axis_jtag_count4;
249reg [11:0] axis_jtag_count5;
250reg hold_trigger1;
251reg hold_trigger2;
252reg hold_trigger3;
253reg hold_trigger4;
254reg hold_trigger5;
255reg hold_trigger1_d ;
256reg hold_trigger2_d ;
257reg hold_trigger3_d ;
258reg hold_trigger4_d ;
259reg hold_trigger5_d ;
260
261wire [11:0] max_count = trigger1 ? 12'b000100010101 :
262 trigger2 ? 12'b000000100101 :
263 trigger3 ? 12'b000010110100 :
264 trigger4 ? 12'b001000100000 :
265 trigger5 ? 12'b000011001100 : 12'b000100010101 ;
266
267
268always @(posedge SYSCLK ) begin
269 if (!PWRON_RST_L) begin
270 hold_trigger1 <= 1'b0;
271 axis_jtag_count1[11:0] <= 12'b000000000000;
272 hold_trigger2 <= 1'b0;
273 axis_jtag_count2[11:0] <= 12'b000000000000;
274 hold_trigger3 <= 1'b0;
275 axis_jtag_count3[11:0] <= 12'b000000000000;
276 hold_trigger4 <= 1'b0;
277 axis_jtag_count4[11:0] <= 12'b000000000000;
278 hold_trigger5 <= 1'b0;
279 axis_jtag_count5[11:0] <= 12'b000000000000;
280 end
281 else begin
282 if( trigger1 ) begin
283 hold_trigger1 <= 1'b1;
284 end
285 if( hold_trig2_cclk ) begin
286 hold_trigger2 <= 1'b1;
287 end
288 if( trigger3 ) begin
289 hold_trigger3 <= 1'b1;
290 end
291 if( trigger4 ) begin
292 hold_trigger4 <= 1'b1;
293 end
294 if( hold_trig5_cclk ) begin
295 hold_trigger5 <= 1'b1;
296 end
297 if( !(hold_trigger1 || trigger1) )begin
298 axis_jtag_count1[11:0] <= 12'b000000000000;
299 end
300 else if ( (hold_trigger1 || trigger1) )begin
301 if ( axis_jtag_count1[11:0] == 12'b000100010101)begin
302 axis_jtag_count1[11:0] <= axis_jtag_count1[11:0];
303 hold_trigger1 <= 1'b0;
304 end
305 else begin
306 axis_jtag_count1[11:0] <= axis_jtag_count1[11:0] + 12'b000000000001 ;
307 end
308 end
309 if( !(hold_trigger2 ) )begin
310 axis_jtag_count2[11:0] <= 12'b000000000000;
311 end
312 else if ( (hold_trigger2 ) )begin
313 if ( axis_jtag_count2[11:0] == 12'b000000100101)begin
314 axis_jtag_count2[11:0] <= axis_jtag_count2[11:0];
315 hold_trigger2 <= 1'b0;
316 end
317 else begin
318 axis_jtag_count2[11:0] <= axis_jtag_count2[11:0] + 12'b000000000001 ;
319 end
320 end
321 if( !(hold_trigger3 || trigger3) )begin
322 axis_jtag_count3[11:0] <= 12'b000000000000;
323 end
324 else if ( (hold_trigger3 || trigger3) )begin
325 if ( axis_jtag_count3[11:0] == 12'b000010110100)begin
326 axis_jtag_count3[11:0] <= axis_jtag_count3[11:0];
327 hold_trigger3 <= 1'b0;
328 end
329 else begin
330 axis_jtag_count3[11:0] <= axis_jtag_count3[11:0] + 12'b000000000001 ;
331 end
332 end
333 if( !(hold_trigger4 || trigger4) )begin
334 axis_jtag_count4[11:0] <= 12'b000000000000;
335 end
336 else if ( (hold_trigger4 || trigger4) )begin
337 if ( axis_jtag_count4[11:0] == 12'b001000100000)begin
338 axis_jtag_count4[11:0] <= axis_jtag_count4[11:0];
339 hold_trigger4 <= 1'b0;
340 end
341 else begin
342 axis_jtag_count4[11:0] <= axis_jtag_count4[11:0] + 12'b000000000001 ;
343 end
344 end
345 if( !(hold_trigger5 || trigger5) )begin
346 axis_jtag_count5[11:0] <= 12'b000000000000;
347 end
348 else if ( (hold_trigger5 || trigger5) )begin
349 if ( axis_jtag_count5[11:0] == 12'b000011001100)begin
350 axis_jtag_count5[11:0] <= axis_jtag_count5[11:0];
351 hold_trigger5 <= 1'b0;
352 end
353 else begin
354 axis_jtag_count5[11:0] <= axis_jtag_count5[11:0] + 12'b000000000001 ;
355 end
356 end
357 hold_trigger1_d <= hold_trigger1 ;
358 hold_trigger2_d <= hold_trigger2 ;
359 hold_trigger3_d <= hold_trigger3 ;
360 hold_trigger4_d <= hold_trigger4 ;
361 hold_trigger5_d <= hold_trigger5 ;
362 end // (else PWRON_RST_L)
363end
364
365wire [2:0] axis_dout_jtpor;
366axis_ram1 axis_ram1_jtpor ( .clk(SYSCLK),
367 .rd_addr(ram_cnt[7:0]),
368 .wr_addr(9'b0),
369 .rd_en(1'b1),
370 .wr_en(1'b0),
371 .din(5'b0),
372 .dout(axis_dout_jtpor[2:0])
373 );
374
375wire [2:0] axis_dout1;
376axis_ram1 axis_ram1_r1 ( .clk(SYSCLK),
377 .rd_addr(axis_jtag_count1[8:0]),
378 .wr_addr(9'b0),
379 .rd_en(1'b1),
380 .wr_en(1'b0),
381 .din(5'b0),
382 .dout(axis_dout1[2:0])
383 );
384
385wire [2:0] axis_dout2;
386axis_ram2 axis_ram1_r2 ( .clk(SYSCLK),
387 .rd_addr(axis_jtag_count2[5:0]),
388 .wr_addr(9'b0),
389 .rd_en(1'b1),
390 .wr_en(1'b0),
391 .din(5'b0),
392 .dout(axis_dout2[2:0])
393 );
394wire [2:0] axis_dout3;
395axis_ram3 axis_ram1_r3 ( .clk(SYSCLK),
396 .rd_addr(axis_jtag_count3[7:0]),
397 .wr_addr(9'b0),
398 .rd_en(1'b1),
399 .wr_en(1'b0),
400 .din(5'b0),
401 .dout(axis_dout3[2:0])
402 );
403wire [2:0] axis_dout4;
404axis_ram4 axis_ram1_r4 ( .clk(SYSCLK),
405 .rd_addr(axis_jtag_count4[9:0]),
406 .wr_addr(9'b0),
407 .rd_en(1'b1),
408 .wr_en(1'b0),
409 .din(5'b0),
410 .dout(axis_dout4[2:0])
411 );
412wire [2:0] axis_dout5;
413axis_ram5 axis_ram1_r5 ( .clk(SYSCLK),
414 .rd_addr(axis_jtag_count5[7:0]),
415 .wr_addr(9'b0),
416 .rd_en(1'b1),
417 .wr_en(1'b0),
418 .din(5'b0),
419 .dout(axis_dout5[2:0])
420 );
421
422wire hold_trigger1_or_d = hold_trigger1 | hold_trigger1_d ;
423wire hold_trigger2_or_d = hold_trigger2 | hold_trigger2_d ;
424wire hold_trigger3_or_d = hold_trigger3 | hold_trigger3_d ;
425wire hold_trigger4_or_d = hold_trigger4 | hold_trigger4_d ;
426wire hold_trigger5_or_d = hold_trigger5 | hold_trigger5_d ;
427
428reg [2:0] neg_axis_dout1 ;
429reg [2:0] neg_axis_dout2 ;
430reg [2:0] neg_axis_dout3 ;
431reg [2:0] neg_axis_dout4 ;
432reg [2:0] neg_axis_dout5 ;
433reg pbrst_testpin ;
434reg [16:0] pbrst_counter ;
435reg PB_RST_L ;
436reg TDI ;
437reg TMS ;
438reg TRST_L ;
439reg [6:0] stop_counter ;
440reg stop_flag ;
441reg pbrst_stop_flag ;
442
443always @(negedge SYSCLK ) begin
444 if (!PWRON_RST_L) begin
445 neg_axis_dout1[2:0] <= 3'b0 ;
446 neg_axis_dout2[2:0] <= 3'b0 ;
447 neg_axis_dout3[2:0] <= 3'b0 ;
448 neg_axis_dout4[2:0] <= 3'b0 ;
449 neg_axis_dout5[2:0] <= 3'b0 ;
450 end
451 else begin
452 neg_axis_dout1[2:0] <= axis_dout1[2:0] ;
453 neg_axis_dout2[2:0] <= axis_dout2[2:0] ;
454 neg_axis_dout3[2:0] <= axis_dout3[2:0] ;
455 neg_axis_dout4[2:0] <= axis_dout4[2:0] ;
456 neg_axis_dout5[2:0] <= axis_dout5[2:0] ;
457 end
458end
459
460always @(posedge SYSCLK ) begin
461 if (!PWRON_RST_L) begin
462 pbrst_counter <= 17'b0 ;
463 pbrst_stop_flag <= 1'b0 ;
464 end
465 else if (hold_trig5_cclk & ~pbrst_stop_flag) begin
466 pbrst_counter <= pbrst_counter + 1 ;
467 pbrst_stop_flag <= 1'b1 ;
468 end
469 else if ((pbrst_counter != 17'b10000000001001010) & pbrst_stop_flag)
470 pbrst_counter <= pbrst_counter + 1 ;
471end
472
473
474initial PB_RST_L = 1'b1 ;
475always @(pbrst_counter) begin
476 if (pbrst_counter == 17'b10000000000110100) begin
477 PB_RST_L = 1'b0 ;
478 end
479 else if (pbrst_counter == 17'b10000000001001001) begin
480 PB_RST_L = 1'b1 ;
481 end
482end
483
484always @(posedge SYSCLK ) begin
485 if (!PWRON_RST_L) begin
486 stop_counter <= 7'b0 ;
487 stop_flag <= 1'b0 ;
488 end
489 else if (!PB_RST_L & ~stop_flag) begin
490 stop_counter <= stop_counter + 1 ;
491 stop_flag <= 1'b1 ;
492 end
493 else if (stop_flag && (stop_counter[6:0] != 7'b1100100))
494 stop_counter <= stop_counter + 1 ;
495 else if (stop_flag && (stop_counter[6:0] == 7'b1100100)) begin
496 $display("AXIS: $stop at simulation time %0d \n",$time);
497 $stop ;
498 end
499end
500
501
502always @(hold_trigger1_or_d or hold_trigger2_or_d or hold_trigger3_or_d or hold_trigger4_or_d or
503 hold_trigger5_or_d or SYSCLK) begin
504 if (SYSCLK == 0) begin
505 case ({hold_trigger1_or_d, hold_trigger2_or_d, hold_trigger3_or_d, hold_trigger4_or_d, hold_trigger5_or_d})
506 5'b10000 : begin
507 TDI = axis_dout1[0];
508 TMS = axis_dout1[1];
509 end
510 5'b01000 : begin
511 TDI = axis_dout2[0];
512 TMS = axis_dout2[1];
513 end
514 5'b00100 : begin
515 TDI = axis_dout3[0];
516 TMS = axis_dout3[1];
517 end
518 5'b00010 : begin
519 TDI = axis_dout4[0];
520 TMS = axis_dout4[1];
521 end
522 5'b00001 : begin
523 TDI = axis_dout5[0];
524 TMS = axis_dout5[1];
525 end
526
527 default: begin
528 end
529 endcase
530 end
531 else if (SYSCLK == 1) begin
532 TRST_L = PWRON_RST_L;
533 end
534end
535
536
537
538`endif
539
540
541`ifdef AXIS_TL
542 wire dram_clk;
543 reg [63:0] cycle;
544 wire SystemClock;
545
546 axis_clock_generator axis_clock_generator(.sclk (dram_12x_clk), .fbclk(dram_6x_clk), .sysclk(SYSCLK));
547
548 assign SystemClock = `CCU.cmp_pll_clk; // axis only
549
550 //assign clk=axis_clock_generator.l2clk;
551 assign core_clk=`CCU.cmp_pll_clk;
552 //assign gclk=axis_clock_generator.l2clk;
553 assign iol2clk=`CCU.ccu_io_out;
554 assign iol2clk_2x = `CCU.ccu_io2x_out;
555
556 initial cycle = 0;
557 always @(posedge SystemClock)
558 cycle = cycle + 1;
559
560 assign SYSCLKN=~SYSCLK; //added 6/23/06 --
561
562`else
563 reg SystemClock; // ALWAYS RUNNING CLOCK. THIS GOES TO VERA. VERA NEEDS A CONTINUOUS CLOCK.
564 wire TESTMODE = 1'b0;
565
566 // TO REMOVE
567
568 wire gclk; // NOT DRIVEN
569`endif // !`ifdef AXIS_TL
570
571`ifdef RESET_AXIS_ONLY
572 wire refclk_enet_n = PLL_CMP_CLK_N;
573 wire refclk_enet = PLL_CMP_CLK_P;
574`else
575 wire refclk_enet_n;
576 wire refclk_enet;
577`endif
578 wire m0_rx_clk;
579
580 // needed for FC interface coverage
581`ifdef FC_COVERAGE
582`include "fc_coverage.v"
583`endif
584
585//------------------------------
586// L2$-MCU/DDR2/DRIF_CTL Monitor - NOTE this does coverage AND monitors
587// so don't put it inside coverage ifdef
588//------------------------------
589
590`ifndef AXIS_TL
591`ifndef MCU_GATE
592mcusat_cov_mon mcusat_cov_mon (
593 .clk (core_clk),
594 .rst_l (flush_reset_complete)
595);
596`endif
597`endif
598
599 //-----------------------------------------------------
600 // Chip primary I/O
601 //-----------------------------------------------------
602
603 wire BURNIN = 1'b0;
604 wire PGRM_EN = 1'b0;
605`ifndef TO_1_0_VECTORS
606 wire [7:0] L2T_VNW = 8'b11111111;
607 wire [7:0] SPC_VNW = 8'b11111111;
608 wire [7:0] L2D_VNW0 = 8'b11111111;
609 wire [7:0] L2D_VNW1 = 8'b11111111;
610`endif
611
612 wire [1:0] PMI = 2'b0;
613
614 wire DIVIDER_BYPASS = 1'b0;
615// wire PLL_CMP_BYPASS = 1'b0;
616
617 wire [1:0] STCICFG = 2'b0;
618 wire STCICLK = 1'b0;
619 wire STCID = 1'b0;
620 wire TESTCLKR = 1'b0;
621 wire TESTCLKT = 1'b0;
622 wire TRIGIN = 1'b0;
623 wire [165:0] DBG_DQ;
624
625// Driven from ssi model
626
627 wire SSI_SYNC_L;
628`ifdef RESET_AXIS_ONLY
629 wire SSI_EXT_INT_L=1'b1;
630`else
631 wire SSI_EXT_INT_L;
632`endif
633 wire SSI_SCK;
634 wire SSI_MOSI;
635 wire SSI_MISO;
636
637//FBDIMM AMUX output wires
638 wire [2:0] FBDIMM0A_AMUX;
639 wire [2:0] FBDIMM0B_AMUX;
640
641 wire [2:0] FBDIMM1A_AMUX;
642 wire [2:0] FBDIMM1B_AMUX;
643
644 wire [2:0] FBDIMM2A_AMUX;
645 wire [2:0] FBDIMM2B_AMUX;
646
647 wire [2:0] FBDIMM3A_AMUX;
648 wire [2:0] FBDIMM3B_AMUX;
649
650//PEX AMUX output wires
651`ifdef RESET_AXIS_ONLY
652 wire [1:0] PEX_AMUX = 2'b0;
653`else
654 wire [1:0] PEX_AMUX;
655`endif
656
657`ifndef FC_NO_NIU_T2
658//XAUI AMUX, LINK, ACT wires
659`ifdef RESET_AXIS_ONLY
660 wire [1:0] XAUI0_AMUX=1'b1;
661`else
662 wire XAUI0_AMUX;
663`endif
664 wire XAUI0_LINK_LED;
665 wire XAUI0_ACT_LED;
666
667`ifdef RESET_AXIS_ONLY
668 wire XAUI1_AMUX = 1'b1;
669`else
670 wire XAUI1_AMUX;
671`endif
672 wire XAUI1_LINK_LED;
673 wire XAUI1_ACT_LED;
674 wire XAUI_MDINT0_L;
675 wire XAUI_MDINT1_L;
676`endif
677
678//MISC wires
679`ifdef RESET_AXIS_ONLY
680 wire [2:0] DIODE_TOP = 3'h0;
681 wire [2:0] DIODE_BOT = 3'h0;
682`else
683 wire [2:0] DIODE_TOP;
684 wire [2:0] DIODE_BOT;
685`endif
686 wire [2:0] PWR_THRTTL_0;
687 wire [2:0] PWR_THRTTL_1;
688// wire [1:0] SPARE;
689 wire VREG_SELBG_L = 1'b0; // bandgap select
690 wire VDD_PLL_CMP_REG = 1'b1; // PLL's vdd
691
692//End primary IO wires
693
694 wire zero;
695 wire one;
696 wire [31:0] SCAN_OUT;
697 wire [2:0] status_shdw;
698 wire mcu_selfrsh;
699 wire [2:0] status;
700 wire [31:0] lock_count;
701 wire [31:0] prop_count;
702 wire AC_TEST_MODE;
703 wire [31:0] SCAN_IN;
704 wire SCAN_EN;
705 wire tb_top_TRST_L; // TRST_L: driven by fc bench when USE_JTAG_DRIVER is not defined
706 wire TCK;
707 wire tck2dut; // TCK: driven from Vera when USE_JTAG_DRIVER is defined
708 reg tck_clkgen_reg; // clock generator for TCK (free running clock. Vera uses this clock)
709 reg tck_clkgen_per_PRM; // clock generator for TCK. Toggle TCK as required by PRM.
710`ifdef AXIS_TL_ICE
711 wire tck;
712`else
713`ifdef AXIS_TL
714 `ifdef FAST_AXIS
715 wire tck=`CCU.ccu_pll.tck;
716 `else
717 `ifdef RESET_AXIS_ONLY
718 wire tck=SYSCLK;
719 `else
720 wire tck=`CCU.ccu_pll.x1.imaginary_vco_gen.pll_core.tck;
721 `endif
722 `endif
723`else
724 wire tck = tck_clkgen_reg;
725`endif // AXIS_TL_ICE
726
727 //----- drive pkg pins ----
728 assign `CPU.DBG_DQ = dbg_dq_reg;
729
730
731 // PM shift value determined here for write_dram and read_dram calls
732 initial begin
733 pm_shift = 0;
734 if(`PARGS.bank_set_mask == 4'h3 || `PARGS.bank_set_mask == 4'h5 || `PARGS.bank_set_mask == 4'h6 || `PARGS.bank_set_mask == 4'h9 || `PARGS.bank_set_mask == 4'ha || `PARGS.bank_set_mask == 4'hc)
735 pm_shift = 1;
736 else if(`PARGS.bank_set_mask_csr == 4'h3 || `PARGS.bank_set_mask_csr == 4'h5 || `PARGS.bank_set_mask_csr == 4'h6 || `PARGS.bank_set_mask_csr == 4'h9 || `PARGS.bank_set_mask_csr == 4'ha || `PARGS.bank_set_mask_csr == 4'hc)
737 pm_shift = 1;
738 else if(`PARGS.bank_set_mask == 4'h1 || `PARGS.bank_set_mask == 4'h2 || `PARGS.bank_set_mask == 4'h4 || `PARGS.bank_set_mask == 4'h8)
739 pm_shift = 2;
740 else if(`PARGS.bank_set_mask_csr == 4'h1 || `PARGS.bank_set_mask_csr == 4'h2 || `PARGS.bank_set_mask_csr == 4'h4 || `PARGS.bank_set_mask_csr == 4'h8)
741 pm_shift = 2;
742 end
743`endif // !`ifdef AXIS_TL_ICE
744
745
746`ifdef USE_JTAG_DRIVER
747 `ifdef AXIS_TL
748 assign TCK = tck;
749 `else
750 `ifdef DTM_ENABLED
751 assign TCK = ~tck;
752 `else
753 assign TCK = tck2dut;
754 `endif
755 `endif
756`else
757 assign TCK = tck_clkgen_per_PRM;
758 assign TRST_L = tb_top_TRST_L;
759`endif // !`ifdef USE_JTAG_DRIVER
760
761`ifdef AXIS_TL
762 // clock is generated in axis_hacks.v
763`else
764 //--- generate TCK clock
765 initial begin
766 #0; // Wait for sys_half_period to be set
767 if ($value$plusargs("TCK_PERIOD=%d", tck_period)) begin
768`ifndef DTM_ENABLED
769 if (tck_period < 4*sys_half_period) begin
770 `PR_ERROR("fc_top", `ERROR, "+TCK_PERIOD=%d is less than twice the SYSCLK period (%d)", tck_period, 2*sys_half_period);
771 end
772`endif
773 end
774 else begin
775 tck_period = 6*sys_half_period; // default is 1/3 SYSCLK frequency
776 end
777 `PR_NORMAL("fc_top", `NORMAL, "TCK period set to %d ps", tck_period);
778 tck_half_period = tck_period/2;
779 tck_clkgen_reg = 1'bx;
780 #1 tck_clkgen_reg = 0;
781`ifdef PALLADIUM
782`else
783 forever begin
784 // 200Mhz, #5000, timescale 1ps
785 #(tck_half_period) tck_clkgen_reg = ~tck_clkgen_reg;
786 end
787`endif
788 end
789
790 //--- generate/toggle TCK clock per section 13.9.1 of PRM -- POR reset seq
791 //--- (toggle TCK once while TRS_L is low and toggle 5 times after TRST_L deasserted)
792 always begin
793 #1 tck_clkgen_per_PRM = 1'b0;
794 // Make sure TRST_L is asserted
795 while (`CPU.TRST_L !== 1'b0) @(negedge `CPU.TRST_L);
796 #(tck_half_period); // Wait a little bit
797 // toggle TCK once when TRST_L is low/asserted
798 tck_clkgen_per_PRM = 1'b1;
799 #(tck_half_period);
800 tck_clkgen_per_PRM = 1'b0;
801 @(posedge `CPU.TRST_L); // wait for TRST_L deasserted
802 repeat (10) begin // toggle TCK five times and hold TMS high. Note: TMS has pull-up.
803 #(tck_half_period) tck_clkgen_per_PRM = ~tck_clkgen_per_PRM;
804 end
805 // Wait for next power-on reset
806 @(negedge `CPU.PWRON_RST_L);
807 end
808
809`endif //AXIS_TL
810
811 assign zero = 1'b0;
812 assign one = 1'b1;
813 assign SCAN_OUT = {`CPU.DBG_DQ[159], `CPU.DBG_DQ[73:43]};
814`ifndef AXIS_TL
815 tcu_mon tcu_mon(); // Test control unit monitor
816 ccu_mon ccu_mon(); // Clock control unit monitor
817`endif
818 reg [23:0] asi_power_throttle; // referenced from plus_args.v. not used in FC. PWR_THROTTLE pins driven // later in this file
819
820 // MCU SAT references, should remove
821
822 reg fail_flag;
823 reg mcusat_fbdimm_gclk;
824
825 // MCU FSR to DRAM connections
826 wire [9:0] fbdimm0a_tx_p_top;
827 wire [9:0] fbdimm0a_tx_n_top;
828 wire [13:0] fbdimm0a_rx_p_top;
829 wire [13:0] fbdimm0a_rx_n_top;
830
831 wire [9:0] fbdimm0b_tx_p_top;
832 wire [9:0] fbdimm0b_tx_n_top;
833 wire [13:0] fbdimm0b_rx_p_top;
834 wire [13:0] fbdimm0b_rx_n_top;
835
836 wire [9:0] fbdimm1a_tx_p_top;
837 wire [9:0] fbdimm1a_tx_n_top;
838 wire [13:0] fbdimm1a_rx_p_top;
839 wire [13:0] fbdimm1a_rx_n_top;
840
841 wire [9:0] fbdimm1b_tx_p_top;
842 wire [9:0] fbdimm1b_tx_n_top;
843 wire [13:0] fbdimm1b_rx_p_top;
844 wire [13:0] fbdimm1b_rx_n_top;
845
846 wire [9:0] fbdimm2a_tx_p_top;
847 wire [9:0] fbdimm2a_tx_n_top;
848 wire [13:0] fbdimm2a_rx_p_top;
849 wire [13:0] fbdimm2a_rx_n_top;
850
851 wire [9:0] fbdimm2b_tx_p_top;
852 wire [9:0] fbdimm2b_tx_n_top;
853 wire [13:0] fbdimm2b_rx_p_top;
854 wire [13:0] fbdimm2b_rx_n_top;
855
856 wire [9:0] fbdimm3a_tx_p_top;
857 wire [9:0] fbdimm3a_tx_n_top;
858 wire [13:0] fbdimm3a_rx_p_top;
859 wire [13:0] fbdimm3a_rx_n_top;
860
861 wire [9:0] fbdimm3b_tx_p_top;
862 wire [9:0] fbdimm3b_tx_n_top;
863 wire [13:0] fbdimm3b_rx_p_top;
864 wire [13:0] fbdimm3b_rx_n_top;
865
866 wire pcl2clk; // referenced from PEU SAT
867
868 // Other signals
869
870`include "errorCountTasks.v"
871`ifndef AXIS_TL
872`include "flush_prop.v" // Option to simulate the real flush reset behaviour
873`endif
874
875 // handle thread enables and all CMP register details
876
877 // initial values
878 initial begin
879 finished_tids = 0;
880 last_act_cycle = 0;
881
882 // UD : added for csr dispmon support
883 // 03/10/05 : Wait for the slowest reset deassertion
884
885 force dispmon_disable = 0;
886`ifndef AXIS_TL
887 if ($test$plusargs("dispmon_disable")) force dispmon_disable = 1;
888 if ($test$plusargs("nodispmon_disable")) force dispmon_disable = 0;
889 @(posedge flush_reset_complete);
890 `PR_ALWAYS ("top", `ALWAYS, "flush_reset_complete has asserted!\n");
891 force dispmon_disable = 0;
892`endif
893 end
894
895 //----------------------------------------------------------
896 // Clock Generator
897 //
898
899`ifdef PALLADIUM
900// No such clock in Axis as well.
901
902 initial begin
903 enet_clk = 1;
904 end
905
906`else
907
908`ifdef AXIS_TL
909 initial begin
910 enet_clk = 1;
911 end
912
913`else
914
915 initial begin
916 enet_clk = 1'bx;
917 #1 enet_clk = 0;
918 #2000 enet_clk = 1;
919 forever begin
920 #1600 enet_clk = ~enet_clk;
921 end
922 end
923`endif //AXIS_TL
924`endif //PALLADIUM
925
926
927
928initial begin
929 if ($value$plusargs("rst_lock_time=%h", rst_lock_time)) begin
930 end
931 else begin
932 rst_lock_time = 32'h00000010;
933 end
934end
935
936
937initial begin
938`ifdef FULL_RESET
939 if($test$plusargs("QUICK_RESET")) begin
940 // Only Counters will be forced, POR execution not compromising any functionality
941 `PR_NORMAL ("top",`NORMAL,"QUICK_RESET plusarg detected");
942`ifdef RST_GATE
943 force {`RST.rst_fsm_ctl__lock_time_q_phy_15_,`RST.rst_fsm_ctl__lock_time_q_phy_14_,`RST.rst_fsm_ctl__lock_time_q_phy_13_,`RST.rst_fsm_ctl__lock_time_q_phy_12_,`RST.rst_fsm_ctl__lock_time_q_phy_11_,`RST.rst_fsm_ctl__lock_time_q_phy_10_,`RST.rst_fsm_ctl__lock_time_q_phy_9_,`RST.rst_fsm_ctl__lock_time_q_phy_8_,`RST.rst_fsm_ctl__lock_time_q_phy_7_,`RST.rst_fsm_ctl__lock_time_q_phy_6_,`RST.rst_fsm_ctl__lock_time_q_phy_5_,`RST.rst_fsm_ctl__lock_time_q_phy_4_,`RST.rst_fsm_ctl__lock_time_q_phy_3_,`RST.rst_fs
944m_ctl__lock_time_q_phy_2_,`RST.rst_fsm_ctl__lock_time_q_phy_1_,`RST.rst_fsm_ctl__lock_time_q_phy_0_ } = 16'd1616;
945 force {`RST.rst_fsm_ctl__prop_time_q_phy_15_,`RST.rst_fsm_ctl__prop_time_q_phy_14_,`RST.rst_fsm_ctl__prop_time_q_phy_13_,`RST.rst_fsm_ctl__prop_time_q_phy_12_,`RST.rst_fsm_ctl__prop_time_q_phy_11_,`RST.rst_fsm_ctl__prop_time_q_phy_10_,`RST.rst_fsm_ctl__prop_time_q_phy_9_,`RST.rst_fsm_ctl__prop_time_q_phy_8_,`RST.rst_fsm_ctl__prop_time_q_phy_7_,`RST.rst_fsm_ctl__prop_time_q_phy_6_,`RST.rst_fsm_ctl__prop_time_q_phy_5_,`RST.rst_fsm_ctl__prop_time_q_phy_4_,`RST.rst_fsm_ctl__prop_time_q_phy_3_,`RST.rst_fs
946m_ctl__prop_time_q_phy_2_,`RST.rst_fsm_ctl__prop_time_q_phy_1_,`RST.rst_fsm_ctl__prop_time_q_phy_0_ } = 16'd1616;
947`else
948 force `RST.rst_fsm_ctl.lock_time_q = 32'd16; //Clock lock_time delay
949 force `RST.rst_fsm_ctl.prop_time_q = 32'd16; //Flush propogation delay
950`endif //end of ifdef RST_GATE
951
952`ifdef TCU_GATE
953 force { `TCU.sigmux_ctl__cntdly_dout_l_6_,`TCU.sigmux_ctl__cntdly_dout_l_5_,`TCU.sigmux_ctl__cntdly_dout_l_4_,`TCU.sigmux_ctl__cntdly_dout_l_3_,`TCU.sigmux_ctl__cntdly_dout_l_2_,`TCU.sigmux_ctl__cntdly_dout_l_1_,`TCU.sigmux_ctl__cntdly_dout_l_0_ } = 7'b1110000;
954 force { `TCU.mbist_ctl__bisx_counter_31_,`TCU.mbist_ctl__bisx_counter_30_,`TCU.mbist_ctl__bisx_counter_29_,`TCU.mbist_ctl__bisx_counter_28_,`TCU.mbist_ctl__bisx_counter_27_,`TCU.mbist_ctl__bisx_counter_26_,`TCU.mbist_ctl__bisx_counter_25_,`TCU.mbist_ctl__bisx_counter_24_,`TCU.mbist_ctl__bisx_counter_23_,`TCU.mbist_ctl__bisx_counter_22_,`TCU.mbist_ctl__bisx_counter_21_,`TCU.mbist_ctl__bisx_counter_20_,`TCU.mbist_ctl__bisx_counter_19_} = 13'h1FFF;
955`else
956 force `TCU.sigmux_ctl.cntdly_dout_l = 7'b1110000; //Register to set delay between clk start/stop(di/dt)
957 force `TCU.mbist_ctl.bisx_counter[31:19] = 13'h1FFF; //BISI timeout counter
958`endif //end of ifdef TCU_GATE
959 force `CPU.tcu_sck_bypass = 1'b1; //Bypass sck counter
960 end
961`endif //end of ifdef FULL_RESET
962end
963
964
965`ifdef FULL_RESET
966reg vector_quick_reset;
967initial begin
968 // This option need to be enhanced for GATESIM. Will be done on need to basis
969 vector_quick_reset = 0;
970 if($test$plusargs("VECTOR_QUICK_RESET")) begin
971 `PR_NORMAL ("top",`NORMAL,"VECTOR_QUICK_RESET plusarg detected");
972 #1 vector_quick_reset = 1'b1;
973 force `RST.rst_fsm_ctl.lock_time_q = 32'h20; //Clock lock_time delay
974 force `RST.rst_fsm_ctl.prop_time_q = 32'h20; //Flush propogation delay
975 force `RST.rst_fsm_ctl.niu_time_q = 32'h10; //NIU lock time delay
976 end
977end
978
979reg [14:0] efu_wait_count;
980initial begin
981 if ($value$plusargs("efu_wait_count=%h", efu_wait_count)) begin
982 end
983 else begin
984 efu_wait_count = 15'h500;
985 end
986 `PR_NORMAL ("top",`NORMAL,"efu_wait_count set to %h ", efu_wait_count);
987end
988
989always @(vector_quick_reset or `TCU.sigmux_ctl.efcnt_dout)
990begin
991 if(vector_quick_reset) begin
992 if( `TCU.sigmux_ctl.efcnt_dout >= efu_wait_count) begin
993 force `TCU.sigmux_ctl.efcnt_din = 15'h4800;
994 repeat (2) @(posedge `CPU.l2clk);
995 release `TCU.sigmux_ctl.efcnt_din ;
996 wait(`TCU.tcu_rst_efu_done == 1'b1);
997 @ (negedge `TCU.tcu_rst_efu_done);
998 end
999 end
1000
1001end
1002`endif //end of ifdef FULL_RESET
1003
1004
1005`ifndef AXIS_TL
1006`ifndef AXIS
1007`ifndef GATESIM
1008 // force an init state
1009 initial begin
1010// AT 04/12/06: Cause VCS 7.2.1R26 sim to hang at time 0. #0;
1011 if ($test$plusargs("forcePORstate")) begin
1012 repeat (100) @(posedge core_clk);
1013 // wait for the specific time
1014 @(posedge `CPU.tcu_rst_efu_done);
1015 `PR_ALWAYS ("top", `ALWAYS, "Initial flop state, first tcu_rst_efu_done (+forcePORstate).");
1016 @(posedge `CPU.tcu_rst_efu_done);
1017 `PR_ALWAYS ("top", `ALWAYS, "Initial flop state, second tcu_rst_efu_done (+forcePORstate).");
1018 `include "forcePORstate.vh"
1019 `PR_ALWAYS ("top", `ALWAYS, "Initial flop state, now set (+forcePORstate).");
1020 end
1021 end
1022`endif // `ifndef GATESIM
1023`endif // `ifndef AXIS
1024`endif // `ifndef AXIS_TL
1025
1026
1027
1028
1029`ifndef AXIS_TL
1030wire PWRON_RST_L;
1031`ifndef FULL_RESET
1032
1033always @(posedge PWRON_RST_L or posedge `CPU.rst_wmr_protect ) begin
1034`ifdef RST_GATE
1035 force {`RST.rst_fsm_ctl__lock_time_q_phy_15_,`RST.rst_fsm_ctl__lock_time_q_phy_14_,`RST.rst_fsm_ctl__lock_time_q_phy_13_,`RST.rst_fsm_ctl__lock_time_q_phy_12_,`RST.rst_fsm_ctl__lock_time_q_phy_11_,`RST.rst_fsm_ctl__lock_time_q_phy_10_,`RST.rst_fsm_ctl__lock_time_q_phy_9_,`RST.rst_fsm_ctl__lock_time_q_phy_8_,`RST.rst_fsm_ctl__lock_time_q_phy_7_,`RST.rst_fsm_ctl__lock_time_q_phy_6_,`RST.rst_fsm_ctl__lock_time_q_phy_5_,`RST.rst_fsm_ctl__lock_time_q_phy_4_,`RST.rst_fsm_ctl__lock_time_q_phy_3_,`RST.rst_fsm_ctl__lock_time_q_phy_2_,`RST.rst_fsm_ctl__lock_time_q_phy_1_,`RST.rst_fsm_ctl__lock_time_q_phy_0_ } = 32'h1410;
1036
1037 force {`RST.rst_fsm_ctl__prop_time_q_phy_15_,`RST.rst_fsm_ctl__prop_time_q_phy_14_,`RST.rst_fsm_ctl__prop_time_q_phy_13_,`RST.rst_fsm_ctl__prop_time_q_phy_12_,`RST.rst_fsm_ctl__prop_time_q_phy_11_,`RST.rst_fsm_ctl__prop_time_q_phy_10_,`RST.rst_fsm_ctl__prop_time_q_phy_9_,`RST.rst_fsm_ctl__prop_time_q_phy_8_,`RST.rst_fsm_ctl__prop_time_q_phy_7_,`RST.rst_fsm_ctl__prop_time_q_phy_6_,`RST.rst_fsm_ctl__prop_time_q_phy_5_,`RST.rst_fsm_ctl__prop_time_q_phy_4_,`RST.rst_fsm_ctl__prop_time_q_phy_3_,`RST.rst_fsm_ctl__prop_time_q_phy_2_,`RST.rst_fsm_ctl__prop_time_q_phy_1_,`RST.rst_fsm_ctl__prop_time_q_phy_0_ } = 32'hc10;
1038
1039 force {`RST.rst_fsm_ctl__niu_time_q_phy_15_,`RST.rst_fsm_ctl__niu_time_q_phy_14_,`RST.rst_fsm_ctl__niu_time_q_phy_13_,`RST.rst_fsm_ctl__niu_time_q_phy_12_,`RST.rst_fsm_ctl__niu_time_q_phy_11_,`RST.rst_fsm_ctl__niu_time_q_phy_10_,`RST.rst_fsm_ctl__niu_time_q_phy_9_,`RST.rst_fsm_ctl__niu_time_q_phy_8_,`RST.rst_fsm_ctl__niu_time_q_phy_7_,`RST.rst_fsm_ctl__niu_time_q_phy_6_,`RST.rst_fsm_ctl__niu_time_q_phy_5_,`RST.rst_fsm_ctl__niu_time_q_phy_4_,`RST.rst_fsm_ctl__niu_time_q_phy_3_,`RST.rst_fsm_ctl__niu_time_q_phy_2_,`RST.rst_fsm_ctl__niu_time_q_phy_1_,`RST.rst_fsm_ctl__niu_time_q_phy_0_ } = 32'h650;
1040`else
1041
1042 force `RST.rst_fsm_ctl.lock_time_q = rst_lock_time;
1043 force `RST.rst_fsm_ctl.prop_time_q = 32'h00000010;
1044 force `RST.rst_fsm_ctl.niu_time_q = 32'h00000010;
1045`endif // RST_GATE
1046
1047//@(posedge `CPU.tcu_rst_asicflush_stop_ack) ;
1048`ifdef TCU_GATE
1049 force { `TCU.sigmux_ctl__cntdly_dout_l_6_,`TCU.sigmux_ctl__cntdly_dout_l_5_,
1050 `TCU.sigmux_ctl__cntdly_dout_l_4_,`TCU.sigmux_ctl__cntdly_dout_l_3_,
1051 `TCU.sigmux_ctl__cntdly_dout_l_2_,`TCU.sigmux_ctl__cntdly_dout_l_1_,
1052 `TCU.sigmux_ctl__cntdly_dout_l_0_ } = 7'b1110000;
1053`else
1054 force `TCU.sigmux_ctl.cntdly_dout_l=7'b1110000;
1055`endif // End of TCU_GATE
1056
1057
1058`ifndef AXIS_TL
1059`ifdef TCU_GATE
1060
1061`ifdef SLAM_VECTORS
1062 force {`TCU.mbist_ctl__bisx_counter_31_,`TCU.mbist_ctl__bisx_counter_30_,`TCU.mbist_ctl__bisx_counter_29_,`TCU.mbist_ctl__bisx_counter_28_,`TCU.mbist_ctl__bisx_counter_27_,`TCU.mbist_ctl__bisx_counter_26_,`TCU.mbist_ctl__bisx_counter_25_,`TCU.mbist_ctl__bisx_counter_24_,`TCU.mbist_ctl__bisx_counter_23_,`TCU.mbist_ctl__bisx_counter_22_,`TCU.mbist_ctl__bisx_counter_21_,`TCU.mbist_ctl__bisx_counter_20_,`TCU.mbist_ctl__bisx_counter_19_,`TCU.mbist_ctl__bisx_counter_18_,`TCU.mbist_ctl__bisx_counter_17_,`TCU.mbist_ctl__bisx_counter_16_,`TCU.mbist_ctl__bisx_counter_15_,`TCU.mbist_ctl__bisx_counter_14_,`TCU.mbist_ctl__bisx_counter_13_,`TCU.mbist_ctl__bisx_counter_12_,`TCU.mbist_ctl__bisx_counter_11_,`TCU.mbist_ctl__bisx_counter_10_,`TCU.mbist_ctl__bisx_counter_9_,`TCU.mbist_ctl__bisx_counter_8_,`TCU.mbist_ctl__bisx_counter_7_,`TCU.mbist_ctl__bisx_counter_6_,`TCU.mbist_ctl__bisx_counter_5_,`TCU.mbist_ctl__bisx_counter_4_} = 28'hFFFFFFF;
1063
1064 force {`TCU.mbist_ctl__csr_mbist_bypass_47_,`TCU.mbist_ctl__csr_mbist_bypass_46_,`TCU.mbist_ctl__csr_mbist_bypass_45_,`TCU.mbist_ctl__csr_mbist_bypass_44_,`TCU.mbist_ctl__csr_mbist_bypass_43_,`TCU.mbist_ctl__csr_mbist_bypass_42_,`TCU.mbist_ctl__csr_mbist_bypass_41_,`TCU.mbist_ctl__csr_mbist_bypass_40_,`TCU.mbist_ctl__csr_mbist_bypass_39_,`TCU.mbist_ctl__csr_mbist_bypass_38_,`TCU.mbist_ctl__csr_mbist_bypass_37_,`TCU.mbist_ctl__csr_mbist_bypass_36_,`TCU.mbist_ctl__csr_mbist_bypass_35_,`TCU.mbist_ctl__csr_mbist_bypass_34_,`TCU.mbist_ctl__csr_mbist_bypass_33_,`TCU.mbist_ctl__csr_mbist_bypass_32_,`TCU.mbist_ctl__csr_mbist_bypass_31_,`TCU.mbist_ctl__csr_mbist_bypass_30_,`TCU.mbist_ctl__csr_mbist_bypass_29_,`TCU.mbist_ctl__csr_mbist_bypass_28_,`TCU.mbist_ctl__csr_mbist_bypass_27_,`TCU.mbist_ctl__csr_mbist_bypass_26_,`TCU.mbist_ctl__csr_mbist_bypass_25_,`TCU.mbist_ctl__csr_mbist_bypass_24_,`TCU.mbist_ctl__csr_mbist_bypass_23_,`TCU.mbist_ctl__csr_mbist_bypass_22_,`TCU.mbist_ctl__csr_mbist_bypass_21_,`TCU.mbist_ctl__csr_mbist_bypass_20_,`TCU.mbist_ctl__csr_mbist_bypass_19_,`TCU.mbist_ctl__csr_mbist_bypass_18_,`TCU.mbist_ctl__csr_mbist_bypass_17_,`TCU.mbist_ctl__csr_mbist_bypass_16_,`TCU.mbist_ctl__csr_mbist_bypass_15_,`TCU.mbist_ctl__csr_mbist_bypass_14_,`TCU.mbist_ctl__csr_mbist_bypass_13_,`TCU.mbist_ctl__csr_mbist_bypass_12_,`TCU.mbist_ctl__csr_mbist_bypass_11_,`TCU.mbist_ctl__csr_mbist_bypass_10_,`TCU.mbist_ctl__csr_mbist_bypass_9_,`TCU.mbist_ctl__csr_mbist_bypass_8_,`TCU.mbist_ctl__csr_mbist_bypass_7_,`TCU.mbist_ctl__csr_mbist_bypass_6_,`TCU.mbist_ctl__csr_mbist_bypass_5_,`TCU.mbist_ctl__csr_mbist_bypass_4_,`TCU.mbist_ctl__csr_mbist_bypass_3_,`TCU.mbist_ctl__csr_mbist_bypass_2_,`TCU.mbist_ctl__csr_mbist_bypass_1_,`TCU.mbist_ctl__csr_mbist_bypass_0_} = 48'hFFFFFFFFFFFF;
1065
1066 force `CPU.tcu_sck_bypass = 1'b1;
1067`else
1068 force {`TCU.mbist_ctl__bisx_counter_31_,`TCU.mbist_ctl__bisx_counter_30_,`TCU.mbist_ctl__bisx_counter_29_,`TCU.mbist_ctl__bisx_counter_28_,`TCU.mbist_ctl__bisx_counter_27_,`TCU.mbist_ctl__bisx_counter_26_,`TCU.mbist_ctl__bisx_counter_25_,`TCU.mbist_ctl__bisx_counter_24_,`TCU.mbist_ctl__bisx_counter_23_,`TCU.mbist_ctl__bisx_counter_22_,`TCU.mbist_ctl__bisx_counter_21_,`TCU.mbist_ctl__bisx_counter_20_,`TCU.mbist_ctl__bisx_counter_19_,`TCU.mbist_ctl__bisx_counter_18_,`TCU.mbist_ctl__bisx_counter_17_,`TCU.mbist_ctl__bisx_counter_16_,`TCU.mbist_ctl__bisx_counter_15_,`TCU.mbist_ctl__bisx_counter_14_,`TCU.mbist_ctl__bisx_counter_13_,`TCU.mbist_ctl__bisx_counter_12_,`TCU.mbist_ctl__bisx_counter_11_,`TCU.mbist_ctl__bisx_counter_10_,`TCU.mbist_ctl__bisx_counter_9_,`TCU.mbist_ctl__bisx_counter_8_,`TCU.mbist_ctl__bisx_counter_7_,`TCU.mbist_ctl__bisx_counter_6_,`TCU.mbist_ctl__bisx_counter_5_,`TCU.mbist_ctl__bisx_counter_4_} = 28'hFFFFFFF;
1069
1070 force {`TCU.mbist_ctl__csr_mbist_bypass_47_,`TCU.mbist_ctl__csr_mbist_bypass_46_,`TCU.mbist_ctl__csr_mbist_bypass_45_,`TCU.mbist_ctl__csr_mbist_bypass_44_,`TCU.mbist_ctl__csr_mbist_bypass_43_,`TCU.mbist_ctl__csr_mbist_bypass_42_,`TCU.mbist_ctl__csr_mbist_bypass_41_,`TCU.mbist_ctl__csr_mbist_bypass_40_,`TCU.mbist_ctl__csr_mbist_bypass_39_,`TCU.mbist_ctl__csr_mbist_bypass_38_,`TCU.mbist_ctl__csr_mbist_bypass_37_,`TCU.mbist_ctl__csr_mbist_bypass_36_,`TCU.mbist_ctl__csr_mbist_bypass_35_,`TCU.mbist_ctl__csr_mbist_bypass_34_,`TCU.mbist_ctl__csr_mbist_bypass_33_,`TCU.mbist_ctl__csr_mbist_bypass_32_,`TCU.mbist_ctl__csr_mbist_bypass_31_,`TCU.mbist_ctl__csr_mbist_bypass_30_,`TCU.mbist_ctl__csr_mbist_bypass_29_,`TCU.mbist_ctl__csr_mbist_bypass_28_,`TCU.mbist_ctl__csr_mbist_bypass_27_,`TCU.mbist_ctl__csr_mbist_bypass_26_,`TCU.mbist_ctl__csr_mbist_bypass_25_,`TCU.mbist_ctl__csr_mbist_bypass_24_,`TCU.mbist_ctl__csr_mbist_bypass_23_,`TCU.mbist_ctl__csr_mbist_bypass_22_,`TCU.mbist_ctl__csr_mbist_bypass_21_,`TCU.mbist_ctl__csr_mbist_bypass_20_,`TCU.mbist_ctl__csr_mbist_bypass_19_,`TCU.mbist_ctl__csr_mbist_bypass_18_,`TCU.mbist_ctl__csr_mbist_bypass_17_,`TCU.mbist_ctl__csr_mbist_bypass_16_,`TCU.mbist_ctl__csr_mbist_bypass_15_,`TCU.mbist_ctl__csr_mbist_bypass_14_,`TCU.mbist_ctl__csr_mbist_bypass_13_,`TCU.mbist_ctl__csr_mbist_bypass_12_,`TCU.mbist_ctl__csr_mbist_bypass_11_,`TCU.mbist_ctl__csr_mbist_bypass_10_,`TCU.mbist_ctl__csr_mbist_bypass_9_,`TCU.mbist_ctl__csr_mbist_bypass_8_,`TCU.mbist_ctl__csr_mbist_bypass_7_,`TCU.mbist_ctl__csr_mbist_bypass_6_,`TCU.mbist_ctl__csr_mbist_bypass_5_,`TCU.mbist_ctl__csr_mbist_bypass_4_,`TCU.mbist_ctl__csr_mbist_bypass_3_,`TCU.mbist_ctl__csr_mbist_bypass_2_,`TCU.mbist_ctl__csr_mbist_bypass_1_,`TCU.mbist_ctl__csr_mbist_bypass_0_} = 48'hFFFFFFFFFFFF;
1071
1072 wait({`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_17_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_16_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_15_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_14_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_13_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_12_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_11_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_10_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_9_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_8_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_7_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_6_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_5_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_4_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_3_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_2_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_1_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_0_} == 18'h0000f);
1073 @(negedge `NCU.iol2clk);
1074 force {`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_17_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_16_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_15_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_14_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_13_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_12_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_11_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_10_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_9_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_8_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_7_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_6_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_5_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_4_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_3_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_2_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_1_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_0_} = 18'h3ffef;
1075 @(negedge `NCU.iol2clk);
1076 release {`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_17_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_16_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_15_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_14_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_13_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_12_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_11_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_10_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_9_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_8_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_7_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_6_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_5_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_4_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_3_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_2_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_1_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_0_};
1077
1078 wait({`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_17_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_16_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_15_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_14_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_13_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_12_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_11_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_10_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_9_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_8_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_7_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_6_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_5_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_4_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_3_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_2_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_1_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_0_} == 18'h0000f);
1079 @(negedge `NCU.iol2clk);
1080 force {`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_17_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_16_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_15_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_14_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_13_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_12_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_11_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_10_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_9_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_8_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_7_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_6_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_5_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_4_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_3_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_2_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_1_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_0_} = 18'h3ffef;
1081 @(negedge `NCU.iol2clk);
1082 release {`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_17_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_16_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_15_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_14_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_13_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_12_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_11_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_10_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_9_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_8_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_7_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_6_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_5_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_4_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_3_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_2_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_1_,`NCU.ncu_ssitop_ctl__ncu_ssisif_ctl_sck_cnt_0_};
1083
1084// force `CPU.tcu_sck_bypass = 1'b1;
1085
1086`endif // SLAM_VECTORS
1087
1088`else // TCU_GATE
1089
1090`ifdef SLAM_VECTORS
1091 force `TCU.mbist_ctl.bisx_counter[31:4] = 28'hFFFFFFF;
1092 force `TCU.mbist_ctl.csr_mbist_bypass = 48'hFFFFFFFFFFFF;
1093 force `CPU.tcu_sck_bypass = 1'b1;
1094`else
1095 force `TCU.mbist_ctl.bisx_counter[31:4] = 28'hFFFFFFF;
1096 force `TCU.mbist_ctl.csr_mbist_bypass = 48'hFFFFFFFFFFFF;
1097 wait(`NCU.ncu_ssitop_ctl.ncu_ssisif_ctl.sck_cnt == 18'h0000f);
1098 @(negedge `NCU.ncu_ssitop_ctl.ncu_ssisif_ctl.iol2clk);
1099 force `NCU.ncu_ssitop_ctl.ncu_ssisif_ctl.sck_cnt[17:0] = 18'h3ffef;
1100 @(negedge `NCU.ncu_ssitop_ctl.ncu_ssisif_ctl.iol2clk);
1101 release `NCU.ncu_ssitop_ctl.ncu_ssisif_ctl.sck_cnt[17:0];
1102 wait(`NCU.ncu_ssitop_ctl.ncu_ssisif_ctl.sck_cnt == 18'h0000f);
1103 @(negedge `NCU.ncu_ssitop_ctl.ncu_ssisif_ctl.iol2clk);
1104 force `NCU.ncu_ssitop_ctl.ncu_ssisif_ctl.sck_cnt[17:0] = 18'h3ffef;
1105 @(negedge `NCU.ncu_ssitop_ctl.ncu_ssisif_ctl.iol2clk);
1106 release `NCU.ncu_ssitop_ctl.ncu_ssisif_ctl.sck_cnt[17:0];
1107// force `CPU.tcu_sck_bypass = 1'b1;
1108`endif // SLAM_VECTORS
1109
1110`endif // TCU_GATE
1111`endif // AXIS_TL
1112
1113end // always @(
1114
1115always @(posedge PWRON_RST_L) begin
1116 @(posedge `NCU.rst_ncu_unpark_thread);
1117 release `CPU.tcu_bisx_done;
1118`ifdef TCU_GATE
1119
1120 release {`TCU.mbist_ctl__bisx_counter_31_,`TCU.mbist_ctl__bisx_counter_30_,`TCU.mbist_ctl__bisx_counter_29_,`TCU.mbist_ctl__bisx_counter_28_,`TCU.mbist_ctl__bisx_counter_27_,`TCU.mbist_ctl__bisx_counter_26_,`TCU.mbist_ctl__bisx_counter_25_,`TCU.mbist_ctl__bisx_counter_24_,`TCU.mbist_ctl__bisx_counter_23_,`TCU.mbist_ctl__bisx_counter_22_,`TCU.mbist_ctl__bisx_counter_21_,`TCU.mbist_ctl__bisx_counter_20_,`TCU.mbist_ctl__bisx_counter_19_,`TCU.mbist_ctl__bisx_counter_18_,`TCU.mbist_ctl__bisx_counter_17_,`TCU.mbist_ctl__bisx_counter_16_,`TCU.mbist_ctl__bisx_counter_15_,`TCU.mbist_ctl__bisx_counter_14_,`TCU.mbist_ctl__bisx_counter_13_,`TCU.mbist_ctl__bisx_counter_12_,`TCU.mbist_ctl__bisx_counter_11_,`TCU.mbist_ctl__bisx_counter_10_,`TCU.mbist_ctl__bisx_counter_9_,`TCU.mbist_ctl__bisx_counter_8_,`TCU.mbist_ctl__bisx_counter_7_,`TCU.mbist_ctl__bisx_counter_6_,`TCU.mbist_ctl__bisx_counter_5_,`TCU.mbist_ctl__bisx_counter_4_};
1121
1122 release {`TCU.mbist_ctl__csr_mbist_bypass_47_,`TCU.mbist_ctl__csr_mbist_bypass_46_,`TCU.mbist_ctl__csr_mbist_bypass_45_,`TCU.mbist_ctl__csr_mbist_bypass_44_,`TCU.mbist_ctl__csr_mbist_bypass_43_,`TCU.mbist_ctl__csr_mbist_bypass_42_,`TCU.mbist_ctl__csr_mbist_bypass_41_,`TCU.mbist_ctl__csr_mbist_bypass_40_,`TCU.mbist_ctl__csr_mbist_bypass_39_,`TCU.mbist_ctl__csr_mbist_bypass_38_,`TCU.mbist_ctl__csr_mbist_bypass_37_,`TCU.mbist_ctl__csr_mbist_bypass_36_,`TCU.mbist_ctl__csr_mbist_bypass_35_,`TCU.mbist_ctl__csr_mbist_bypass_34_,`TCU.mbist_ctl__csr_mbist_bypass_33_,`TCU.mbist_ctl__csr_mbist_bypass_32_,`TCU.mbist_ctl__csr_mbist_bypass_31_,`TCU.mbist_ctl__csr_mbist_bypass_30_,`TCU.mbist_ctl__csr_mbist_bypass_29_,`TCU.mbist_ctl__csr_mbist_bypass_28_,`TCU.mbist_ctl__csr_mbist_bypass_27_,`TCU.mbist_ctl__csr_mbist_bypass_26_,`TCU.mbist_ctl__csr_mbist_bypass_25_,`TCU.mbist_ctl__csr_mbist_bypass_24_,`TCU.mbist_ctl__csr_mbist_bypass_23_,`TCU.mbist_ctl__csr_mbist_bypass_22_,`TCU.mbist_ctl__csr_mbist_bypass_21_,`TCU.mbist_ctl__csr_mbist_bypass_20_,`TCU.mbist_ctl__csr_mbist_bypass_19_,`TCU.mbist_ctl__csr_mbist_bypass_18_,`TCU.mbist_ctl__csr_mbist_bypass_17_,`TCU.mbist_ctl__csr_mbist_bypass_16_,`TCU.mbist_ctl__csr_mbist_bypass_15_,`TCU.mbist_ctl__csr_mbist_bypass_14_,`TCU.mbist_ctl__csr_mbist_bypass_13_,`TCU.mbist_ctl__csr_mbist_bypass_12_,`TCU.mbist_ctl__csr_mbist_bypass_11_,`TCU.mbist_ctl__csr_mbist_bypass_10_,`TCU.mbist_ctl__csr_mbist_bypass_9_,`TCU.mbist_ctl__csr_mbist_bypass_8_,`TCU.mbist_ctl__csr_mbist_bypass_7_,`TCU.mbist_ctl__csr_mbist_bypass_6_,`TCU.mbist_ctl__csr_mbist_bypass_5_,`TCU.mbist_ctl__csr_mbist_bypass_4_,`TCU.mbist_ctl__csr_mbist_bypass_3_,`TCU.mbist_ctl__csr_mbist_bypass_2_,`TCU.mbist_ctl__csr_mbist_bypass_1_,`TCU.mbist_ctl__csr_mbist_bypass_0_};
1123
1124`else
1125
1126 release `TCU.mbist_ctl.bisx_counter[31:4];
1127 release `TCU.mbist_ctl.csr_mbist_bypass;
1128
1129`endif // TCU_GATE
1130end // always @(posedge PWRON_RST_L)
1131`endif // ifndef FULL_RESET
1132
1133`endif //match to exclude the whole thing for AXIS_TL
1134
1135 assign `CPU.PLL_CMP_CLK_P = SYSCLK; // TCU SAT driving. Need to change to MCU
1136 assign `CPU.PLL_CMP_CLK_N = SYSCLKN; //
1137
1138// Connect MDIO model to simulation environment and take out 1'b0 assignment.
1139// 01/06/06 pw
1140// assign `CPU.mdc = 1'b0; // top level pin connection not made
1141
1142 // asi_power_throttle is controlled through a few +args.
1143 // Can be set or randomized or cycled. This will slow simulation if used!
1144 assign `CPU.PWR_THRTTL_0[2:0] = asi_power_throttle[2:0]; //3'b0;
1145 assign `CPU.PWR_THRTTL_1[2:0] = asi_power_throttle[5:3]; //3'b0;
1146
1147
1148 //----------------------------------------------------------
1149 // Bench Code Instantiation
1150
1151 // +args and the vars they set.
1152 // use `PARGS.var to get value
1153 verif_args verif_args();
1154 // use -vcs_run_args=+RANDOM_REDUNDANCY_VALUES
1155 // to apply random redundancy values for repairable arrays
1156`ifdef AXIS
1157`include "axis_top.vh"
1158`else
1159`ifdef AXIS_FBDIMM_NO_FSR
1160`include "axis_top.vh"
1161`endif
1162`endif
1163`ifndef AXIS_TL
1164 force_random_redundancy_bits force_random_redundancy_bits();
1165
1166`ifndef AXIS
1167`ifndef GATESIM
1168trig_event trig_event(.clk(`CPU.l2clk));
1169`endif // GATESIM
1170`endif // AXIS
1171
1172 nas_top nas_top ();
1173
1174`ifdef CORE_0 nas_probes0 intf0(); `endif
1175`ifdef CORE_1 nas_probes1 intf1(); `endif
1176`ifdef CORE_2 nas_probes2 intf2(); `endif
1177`ifdef CORE_3 nas_probes3 intf3(); `endif
1178`ifdef CORE_4 nas_probes4 intf4(); `endif
1179`ifdef CORE_5 nas_probes5 intf5(); `endif
1180`ifdef CORE_6 nas_probes6 intf6(); `endif
1181`ifdef CORE_7 nas_probes7 intf7(); `endif
1182
1183 tlb_sync tlb_sync ();
1184
1185 ldst_sync ldst_sync ();
1186
1187 int_sync int_sync ();
1188
1189 err_sync err_sync ();
1190
1191 reg_slam reg_slam ();
1192
1193`ifndef FC_NO_NIU_T2
1194 monitors monitors ();
1195`endif
1196
1197`ifndef GATESIM
1198`ifndef AXIS
1199 l2_scrub l2_scrub ();
1200`endif
1201`endif // GATESIM
1202
1203 // spc debug checker
1204`ifndef GATESIM
1205`ifdef CORE_0 debug0 spc_debug0 (); `endif // 0
1206`ifdef CORE_1 debug1 spc_debug1 (); `endif // 1
1207`ifdef CORE_2 debug2 spc_debug2 (); `endif // 2
1208`ifdef CORE_3 debug3 spc_debug3 (); `endif // 3
1209`ifdef CORE_4 debug4 spc_debug4 (); `endif // 4
1210`ifdef CORE_5 debug5 spc_debug5 (); `endif // 5
1211`ifdef CORE_6 debug6 spc_debug6 (); `endif // 6
1212`ifdef CORE_7 debug7 spc_debug7 (); `endif // 7
1213`endif // GATESIM
1214
1215`endif // `ifndef AXIS_TL
1216
1217 mcu_mem_config mcu_mem_config ();
1218
1219// assign (weak0, weak1) `CPU.DBG_DQ = 166'b0;
1220
1221
1222// do not want!!!
1223// assign (weak0, weak1) `CPU.ncu_cpx_req_cq = 8'b0;
1224// assign (weak0, weak1) `CPU.ncu_cpx_data_ca = 146'b0;
1225// assign (weak0, weak1) `CPU.ncu_pcx_stall_pq = 1'b0;
1226
1227// missing core inputs to CCX. Should be done in cpu.sv but is not.
1228`ifndef CORE_0
1229 assign (weak0, weak1) `CPU.spc0_pcx_req_pq = 9'b0;
1230 assign (weak0, weak1) `CPU.spc0_pcx_data_pa = 130'b0;
1231 assign (weak0, weak1) `CPU.spc0_pcx_atm_pq = 9'b0;
1232`endif
1233`ifndef CORE_1
1234 assign (weak0, weak1) `CPU.spc1_pcx_req_pq = 9'b0;
1235 assign (weak0, weak1) `CPU.spc1_pcx_data_pa = 130'b0;
1236 assign (weak0, weak1) `CPU.spc1_pcx_atm_pq = 9'b0;
1237`endif
1238`ifndef CORE_2
1239 assign (weak0, weak1) `CPU.spc2_pcx_req_pq = 9'b0;
1240 assign (weak0, weak1) `CPU.spc2_pcx_data_pa = 130'b0;
1241 assign (weak0, weak1) `CPU.spc2_pcx_atm_pq = 9'b0;
1242`endif
1243`ifndef CORE_3
1244 assign (weak0, weak1) `CPU.spc3_pcx_req_pq = 9'b0;
1245 assign (weak0, weak1) `CPU.spc3_pcx_data_pa = 130'b0;
1246 assign (weak0, weak1) `CPU.spc3_pcx_atm_pq = 9'b0;
1247`endif
1248`ifndef CORE_4
1249 assign (weak0, weak1) `CPU.spc4_pcx_req_pq = 9'b0;
1250 assign (weak0, weak1) `CPU.spc4_pcx_data_pa = 130'b0;
1251 assign (weak0, weak1) `CPU.spc4_pcx_atm_pq = 9'b0;
1252`endif
1253`ifndef CORE_5
1254 assign (weak0, weak1) `CPU.spc5_pcx_req_pq = 9'b0;
1255 assign (weak0, weak1) `CPU.spc5_pcx_data_pa = 130'b0;
1256 assign (weak0, weak1) `CPU.spc5_pcx_atm_pq = 9'b0;
1257`endif
1258`ifndef CORE_6
1259 assign (weak0, weak1) `CPU.spc6_pcx_req_pq = 9'b0;
1260 assign (weak0, weak1) `CPU.spc6_pcx_data_pa = 130'b0;
1261 assign (weak0, weak1) `CPU.spc6_pcx_atm_pq = 9'b0;
1262`endif
1263`ifndef CORE_7
1264 assign (weak0, weak1) `CPU.spc7_pcx_req_pq = 9'b0;
1265 assign (weak0, weak1) `CPU.spc7_pcx_data_pa = 130'b0;
1266 assign (weak0, weak1) `CPU.spc7_pcx_atm_pq = 9'b0;
1267`endif
1268
1269
1270
1271
1272// PEU Stuff
1273`ifndef NO_VCS_CASCADE_IP_CODE
1274`ifndef FC_NO_PEU_T2
1275`include "fc_pcie_stuff.v"
1276`endif
1277`endif
1278`ifndef FC_NO_NIU_T2
1279 // ********************************************************************************
1280 // Ethernet controller functional model instantiation.
1281 // ********************************************************************************
1282 wire [3:0] m0_rx_config;
1283 wire [7:0] m0_rx_data;
1284 wire m0_rx_dv;
1285 wire m0_rx_err;
1286 wire m0_tx_clk;
1287 wire [3:0] m0_tx_config;
1288 wire [7:0] m0_tx_data;
1289 wire m0_tx_en;
1290 wire m0_tx_err;
1291 wire m1_rx_clk;
1292 wire [3:0] m1_rx_config;
1293 wire [7:0] m1_rx_data;
1294 wire m1_rx_dv;
1295 wire m1_rx_err;
1296 wire m1_tx_clk;
1297 wire [3:0] m1_tx_config;
1298 wire [7:0] m1_tx_data;
1299 wire m1_tx_en;
1300 wire m1_tx_err;
1301 wire m2_rx_clk;
1302 wire [3:0] m2_rx_config;
1303 wire m2_tx_clk;
1304 wire [3:0] m2_tx_config;
1305 wire [7:0] m2_tx_data;
1306 wire m2_tx_en;
1307 wire m2_tx_err;
1308 wire m3_rx_clk;
1309 wire [3:0] m3_rx_config;
1310 wire m3_tx_clk;
1311 wire [3:0] m3_tx_config;
1312 wire [7:0] m3_tx_data;
1313 wire m3_tx_en;
1314 wire m3_tx_err;
1315
1316 wire [7:0] m2_rx_data;
1317 wire [7:0] m3_rx_data;
1318
1319`ifdef RESET_AXIS_ONLY
1320 wire [3:0] xaui0_tx_n =4'h0;
1321 wire [3:0] xaui0_tx_p =4'h0;
1322 wire [3:0] xaui0_rx_n =4'h1;
1323 wire [3:0] xaui0_rx_p =4'h1;
1324
1325 wire [3:0] xaui1_tx_n =4'h0;
1326 wire [3:0] xaui1_tx_p =4'h0;
1327 wire [3:0] xaui1_rx_n = 4'h1;
1328 wire [3:0] xaui1_rx_p = 4'h1;
1329`else
1330 wire [3:0] xaui0_tx_n;
1331 wire [3:0] xaui0_tx_p;
1332 wire [3:0] xaui0_rx_n;
1333 wire [3:0] xaui0_rx_p;
1334
1335 wire [3:0] xaui1_tx_n;
1336 wire [3:0] xaui1_tx_p;
1337 wire [3:0] xaui1_rx_n;
1338 wire [3:0] xaui1_rx_p;
1339`endif
1340`endif //`ifdef FC_NO_NIU_T2
1341
1342/////////Playback Driver/////////////
1343
1344`ifdef REPEAT_PB
1345
1346`include "playback_driver.v"
1347
1348wire dmu_ncu_vld_pb;
1349wire[31:0] dmu_ncu_data_pb;
1350wire dmu_ncu_wrack_vld_pb;
1351wire[3:0] dmu_ncu_wrack_tag_pb;
1352wire dmu_ncu_stall_pb;
1353wire dmu_sii_hdr_vld_pb;
1354wire dmu_sii_reqbypass_pb;
1355wire dmu_sii_datareq_pb;
1356wire dmu_sii_datareq16_pb;
1357wire[15:0] dmu_sii_be_pb;
1358wire[127:0] dmu_sii_data_pb;
1359wire niu_ncu_vld_pb;
1360wire[31:0] niu_ncu_data_pb;
1361wire niu_ncu_stall_pb;
1362wire niu_sii_hdr_vld_pb;
1363wire niu_sii_datareq_pb;
1364wire niu_sii_reqbypass_pb;
1365wire[127:0] niu_sii_data_pb;
1366wire niu_sio_dq_pb;
1367 playback_driver pb (
1368 .niu_ncu_vld_pb(niu_ncu_vld_pb),
1369 .niu_ncu_data_pb(niu_ncu_data_pb[31:0]),
1370 .niu_ncu_stall_pb(niu_ncu_stall_pb),
1371 .niu_sii_hdr_vld_pb(niu_sii_hdr_vld_pb),
1372 .niu_sii_datareq_pb(niu_sii_datareq_pb),
1373 .niu_sii_reqbypass_pb(niu_sii_reqbypass_pb),
1374 .niu_sii_data_pb(niu_sii_data_pb[127:0]),
1375 .niu_sio_dq_pb(niu_sio_dq_pb),
1376 .dmu_ncu_vld_pb(dmu_ncu_vld_pb),
1377 .dmu_ncu_data_pb(dmu_ncu_data_pb[31:0]),
1378 .dmu_ncu_wrack_vld_pb(dmu_ncu_wrack_vld_pb),
1379 .dmu_ncu_wrack_tag_pb(dmu_ncu_wrack_tag_pb[3:0]),
1380 .dmu_ncu_stall_pb(dmu_ncu_stall_pb),
1381 .dmu_sii_hdr_vld_pb(dmu_sii_hdr_vld_pb),
1382 .dmu_sii_reqbypass_pb(dmu_sii_reqbypass_pb),
1383 .dmu_sii_datareq_pb(dmu_sii_datareq_pb),
1384 .dmu_sii_datareq16_pb(dmu_sii_datareq16_pb),
1385 .dmu_sii_be_pb(dmu_sii_be_pb[15:0]),
1386 .dmu_sii_data_pb(dmu_sii_data_pb[127:0]),
1387 .clk_pb(iol2clk),
1388 .l2clk_pb(core_clk),
1389 .io2xclk_pb(iol2clk_2x));
1390`endif //REPEAT_PB
1391
1392`ifndef AXIS_TL
1393
1394n2_int n2_int ( );
1395n2_int_latency n2_int_latency (
1396 .clk (core_clk),
1397 .rst_l (PWRON_RST_L)
1398 );
1399
1400`ifndef FC_NO_NIU_T2
1401 enet_models enet_model (
1402 .BSINITCLK (BSINITCLK), // input (enet_model) <= ()
1403 .REFCLKN (refclk_enet_n), // input (enet_model) <= ()
1404 .REFCLKP (refclk_enet), // input (enet_model) <= ()
1405 .core_clk (core_clk), // input (enet_model) <= ()
1406 .m0_rx_config (m0_rx_config[3:0]), // input (enet_model) <= ()
1407 .m0_rx_data (m0_rx_data[7:0]), // input (enet_model) <= ()
1408 .m0_rx_dv (m0_rx_dv), // input (enet_model) <= ()
1409 .m0_rx_err (m0_rx_err), // input (enet_model) <= ()
1410 .m0_tx_config (m0_tx_config[3:0]), // input (enet_model) <= ()
1411 .m1_rx_config (m1_rx_config[3:0]), // input (enet_model) <= ()
1412 .m1_rx_data (m1_rx_data[7:0]), // input (enet_model) <= ()
1413 .m1_rx_dv (m1_rx_dv), // input (enet_model) <= ()
1414 .m1_rx_err (m1_rx_err), // input (enet_model) <= ()
1415 .m1_tx_config (m1_tx_config[3:0]), // input (enet_model) <= ()
1416 .m2_rx_config (m2_rx_config[3:0]), // input (enet_model) <= ()
1417 .m2_tx_config (m2_tx_config[3:0]), // input (enet_model) <= ()
1418 .m3_rx_config (m3_rx_config[3:0]), // input (enet_model) <= ()
1419 .m3_tx_config (m3_tx_config[3:0]), // input (enet_model) <= ()
1420 .AMUX_p0 (AMUX_p0), // output (enet_model) => ()
1421 .AMUX_p1 (AMUX_p1), // output (enet_model) => ()
1422 .STCIQ_p0 (STCIQ_p0), // output (enet_model) => ()
1423 .STCIQ_p1 (STCIQ_p1), // output (enet_model) => ()
1424 .TXN0_p0 (xaui0_rx_n[0]), // output (enet_model) => (enet_model)
1425 .TXN0_p1 (xaui1_rx_n[0]), // output (enet_model) => (enet_model)
1426 .TXN1_p0 (xaui0_rx_n[1]), // output (enet_model) => (enet_model)
1427 .TXN1_p1 (xaui1_rx_n[1]), // output (enet_model) => (enet_model)
1428 .TXN2_p0 (xaui0_rx_n[2]), // output (enet_model) => (enet_model)
1429 .TXN2_p1 (xaui1_rx_n[2]), // output (enet_model) => (enet_model)
1430 .TXN3_p0 (xaui0_rx_n[3]), // output (enet_model) => (enet_model)
1431 .TXN3_p1 (xaui1_rx_n[3]), // output (enet_model) => (enet_model)
1432 .TXP0_p0 (xaui0_rx_p[0]), // output (enet_model) => (enet_model)
1433 .TXP0_p1 (xaui1_rx_p[0]), // output (enet_model) => (enet_model)
1434 .TXP1_p0 (xaui0_rx_p[1]), // output (enet_model) => (enet_model)
1435 .TXP1_p1 (xaui1_rx_p[1]), // output (enet_model) => (enet_model)
1436 .TXP2_p0 (xaui0_rx_p[2]), // output (enet_model) => (enet_model)
1437 .TXP2_p1 (xaui1_rx_p[2]), // output (enet_model) => (enet_model)
1438 .TXP3_p0 (xaui0_rx_p[3]), // output (enet_model) => (enet_model)
1439 .TXP3_p1 (xaui1_rx_p[3]), // output (enet_model) => (enet_model)
1440 .m0_rx_col (m0_rx_col), // output (enet_model) => ()
1441 .m0_rx_crs (m0_rx_crs), // output (enet_model) => ()
1442 .m0_tx_clk_port (m0_tx_clk_port), // output (enet_model) => ()
1443 .m1_rx_col (m1_rx_col), // output (enet_model) => ()
1444 .m1_rx_crs (m1_rx_crs), // output (enet_model) => ()
1445 .m1_tx_clk_port (m1_tx_clk_port), // output (enet_model) => ()
1446 .m2_tx_clk_port (m2_tx_clk_port), // output (enet_model) => ()
1447 .m3_tx_clk_port (m3_tx_clk_port), // output (enet_model) => ()
1448 .rx_clk_xgmii (rx_clk_xgmii), // output (enet_model) => ()
1449 .ref_clk (refclk_enet), // input (enet_model) <= ()
1450 .reset (niu_reset), // input (enet_model) <= ()
1451 .RGMII_TXCLK0 (RGMII_TXCLK0), // input (enet_model) <= ()
1452 .RGMII_TXCLK1 (RGMII_TXCLK1), // input (enet_model) <= ()
1453 .RGMII_TXCLK2 (RGMII_TXCLK2), // input (enet_model) <= ()
1454 .RGMII_TXCLK3 (RGMII_TXCLK3), // input (enet_model) <= ()
1455 .RXN0_p0 (xaui0_tx_n[0]), // input (enet_model) <= (enet_model)
1456 .RXN1_p0 (xaui0_tx_n[1]), // input (enet_model) <= (enet_model)
1457 .RXN2_p0 (xaui0_tx_n[2]), // input (enet_model) <= (enet_model)
1458 .RXN3_p0 (xaui0_tx_n[3]), // input (enet_model) <= (enet_model)
1459 .RXP0_p0 (xaui0_tx_p[0]), // input (enet_model) <= (enet_model)
1460 .RXP1_p0 (xaui0_tx_p[1]), // input (enet_model) <= (enet_model)
1461 .RXP2_p0 (xaui0_tx_p[2]), // input (enet_model) <= (enet_model)
1462 .RXP3_p0 (xaui0_tx_p[3]), // input (enet_model) <= (enet_model)
1463 .RXN0_p1 (xaui1_tx_n[0]), // input (enet_model) <= (enet_model)
1464 .RXN1_p1 (xaui1_tx_n[1]), // input (enet_model) <= (enet_model)
1465 .RXN2_p1 (xaui1_tx_n[2]), // input (enet_model) <= (enet_model)
1466 .RXN3_p1 (xaui1_tx_n[3]), // input (enet_model) <= (enet_model)
1467 .RXP0_p1 (xaui1_tx_p[0]), // input (enet_model) <= (enet_model)
1468 .RXP1_p1 (xaui1_tx_p[1]), // input (enet_model) <= (enet_model)
1469 .RXP2_p1 (xaui1_tx_p[2]), // input (enet_model) <= (enet_model)
1470 .RXP3_p1 (xaui1_tx_p[3]), // input (enet_model) <= (enet_model)
1471 .m0_rx_clk (m0_rx_clk), // output (enet_model) => ()
1472 .m0_tx_clk (m0_tx_clk), // output (enet_model) => ()
1473 .m0_tx_data (m0_tx_data[7:0]), // output (enet_model) => ()
1474 .m0_tx_en (m0_tx_en), // output (enet_model) => ()
1475 .m0_tx_err (m0_tx_err), // output (enet_model) => ()
1476 .m1_rx_clk (m1_rx_clk), // output (enet_model) => ()
1477 .m1_tx_clk (m1_tx_clk), // output (enet_model) => ()
1478 .m1_tx_data (m1_tx_data[7:0]), // output (enet_model) => ()
1479 .m1_tx_en (m1_tx_en), // output (enet_model) => ()
1480 .m1_tx_err (m1_tx_err), // output (enet_model) => ()
1481 .m2_rx_clk (m2_rx_clk), // output (enet_model) => ()
1482 .m2_tx_clk (m2_tx_clk), // output (enet_model) => ()
1483 .m2_tx_data (m2_tx_data[7:0]), // output (enet_model) => ()
1484 .m2_tx_en (m2_tx_en), // output (enet_model) => ()
1485 .m2_tx_err (m2_tx_err), // output (enet_model) => ()
1486 .m3_rx_clk (m3_rx_clk), // output (enet_model) => ()
1487 .m3_tx_clk (m3_tx_clk), // output (enet_model) => ()
1488 .m3_tx_data (m3_tx_data[7:0]), // output (enet_model) => ()
1489 .m3_tx_en (m3_tx_en), // output (enet_model) => ()
1490 .m3_tx_err (m3_tx_err) // output (enet_model) => ()
1491 );
1492`endif
1493
1494`endif // `ifndef AXIS_TL
1495
1496`ifdef FC_CRC_INJECT
1497 wire [9:0] fbd0a_tx_p_top;
1498 wire [9:0] fbd0a_tx_n_top;
1499 wire [13:0] fbd0a_rx_p_top;
1500 wire [13:0] fbd0a_rx_n_top;
1501
1502 wire [9:0] fbd0b_tx_p_top;
1503 wire [9:0] fbd0b_tx_n_top;
1504 wire [13:0] fbd0b_rx_p_top;
1505 wire [13:0] fbd0b_rx_n_top;
1506
1507 wire [9:0] fbd1a_tx_p_top;
1508 wire [9:0] fbd1a_tx_n_top;
1509 wire [13:0] fbd1a_rx_p_top;
1510 wire [13:0] fbd1a_rx_n_top;
1511
1512 wire [9:0] fbd1b_tx_p_top;
1513 wire [9:0] fbd1b_tx_n_top;
1514 wire [13:0] fbd1b_rx_p_top;
1515 wire [13:0] fbd1b_rx_n_top;
1516
1517 wire [9:0] fbd2a_tx_p_top;
1518 wire [9:0] fbd2a_tx_n_top;
1519 wire [13:0] fbd2a_rx_p_top;
1520 wire [13:0] fbd2a_rx_n_top;
1521
1522 wire [9:0] fbd2b_tx_p_top;
1523 wire [9:0] fbd2b_tx_n_top;
1524 wire [13:0] fbd2b_rx_p_top;
1525 wire [13:0] fbd2b_rx_n_top;
1526
1527 wire [9:0] fbd3a_tx_p_top;
1528 wire [9:0] fbd3a_tx_n_top;
1529 wire [13:0] fbd3a_rx_p_top;
1530 wire [13:0] fbd3a_rx_n_top;
1531
1532 wire [9:0] fbd3b_tx_p_top;
1533 wire [9:0] fbd3b_tx_n_top;
1534 wire [13:0] fbd3b_rx_p_top;
1535 wire [13:0] fbd3b_rx_n_top;
1536`endif // `ifdef FC_CRC_INJECT
1537
1538`ifdef NB_BITLANE_DESKEW
1539 wire [13:0] fbd0a_rx_p_top;
1540 wire [13:0] fbd0a_rx_n_top;
1541
1542 wire [13:0] fbd0b_rx_p_top;
1543 wire [13:0] fbd0b_rx_n_top;
1544
1545 wire [13:0] fbd1a_rx_p_top;
1546 wire [13:0] fbd1a_rx_n_top;
1547
1548 wire [13:0] fbd1b_rx_p_top;
1549 wire [13:0] fbd1b_rx_n_top;
1550
1551 wire [13:0] fbd2a_rx_p_top;
1552 wire [13:0] fbd2a_rx_n_top;
1553
1554 wire [13:0] fbd2b_rx_p_top;
1555 wire [13:0] fbd2b_rx_n_top;
1556
1557 wire [13:0] fbd3a_rx_p_top;
1558 wire [13:0] fbd3a_rx_n_top;
1559
1560 wire [13:0] fbd3b_rx_p_top;
1561 wire [13:0] fbd3b_rx_n_top;
1562`endif // `ifdef NB_BITLANE_DESKEW
1563
1564`ifdef DTM_ENABLED // Used by both SLAM and Non-Slam DTM modes
1565 reg [23:0] fbdimm0a_rx_p_top_d2;
1566 reg [23:0] fbdimm0a_rx_n_top_d2;
1567 reg [23:0] fbdimm0b_rx_p_top_d2;
1568 reg [23:0] fbdimm0b_rx_n_top_d2;
1569 reg [23:0] fbdimm1a_rx_p_top_d2;
1570 reg [23:0] fbdimm1a_rx_n_top_d2;
1571 reg [23:0] fbdimm1b_rx_p_top_d2;
1572 reg [23:0] fbdimm1b_rx_n_top_d2;
1573 reg [23:0] fbdimm2a_rx_p_top_d2;
1574 reg [23:0] fbdimm2a_rx_n_top_d2;
1575 reg [23:0] fbdimm2b_rx_p_top_d2;
1576 reg [23:0] fbdimm2b_rx_n_top_d2;
1577 reg [23:0] fbdimm3a_rx_p_top_d2;
1578 reg [23:0] fbdimm3a_rx_n_top_d2;
1579 reg [23:0] fbdimm3b_rx_p_top_d2;
1580 reg [23:0] fbdimm3b_rx_n_top_d2;
1581
1582 always @(posedge `FBD_CH_PATH0.fbdimm0.link_clk) begin
1583 fbdimm0a_rx_p_top_d2[23:0] <= {fbdimm0a_rx_p_top[0],fbdimm0a_rx_p_top_d2[23:1]};
1584 fbdimm0a_rx_n_top_d2[23:0] <= {fbdimm0a_rx_n_top[0],fbdimm0a_rx_n_top_d2[23:1]};
1585 end
1586 always @(posedge `FBD_CH_PATH1.fbdimm0.link_clk) begin
1587 fbdimm0b_rx_p_top_d2[23:0] <= {fbdimm0b_rx_p_top[0],fbdimm0b_rx_p_top_d2[23:1]};
1588 fbdimm0b_rx_n_top_d2[23:0] <= {fbdimm0b_rx_n_top[0],fbdimm0b_rx_n_top_d2[23:1]};
1589 end
1590 always @(posedge `FBD_CH_PATH2.fbdimm0.link_clk) begin
1591 fbdimm1a_rx_p_top_d2[23:0] <= {fbdimm1a_rx_p_top[0],fbdimm1a_rx_p_top_d2[23:1]};
1592 fbdimm1a_rx_n_top_d2[23:0] <= {fbdimm1a_rx_n_top[0],fbdimm1a_rx_n_top_d2[23:1]};
1593 end
1594 always @(posedge `FBD_CH_PATH3.fbdimm0.link_clk) begin
1595 fbdimm1b_rx_p_top_d2[23:0] <= {fbdimm1b_rx_p_top[0],fbdimm1b_rx_p_top_d2[23:1]};
1596 fbdimm1b_rx_n_top_d2[23:0] <= {fbdimm1b_rx_n_top[0],fbdimm1b_rx_n_top_d2[23:1]};
1597 end
1598 always @(posedge `FBD_CH_PATH4.fbdimm0.link_clk) begin
1599 fbdimm2a_rx_p_top_d2[23:0] <= {fbdimm2a_rx_p_top[0],fbdimm2a_rx_p_top_d2[23:1]};
1600 fbdimm2a_rx_n_top_d2[23:0] <= {fbdimm2a_rx_n_top[0],fbdimm2a_rx_n_top_d2[23:1]};
1601 end
1602 always @(posedge `FBD_CH_PATH5.fbdimm0.link_clk) begin
1603 fbdimm2b_rx_p_top_d2[23:0] <= {fbdimm2b_rx_p_top[0],fbdimm2b_rx_p_top_d2[23:1]};
1604 fbdimm2b_rx_n_top_d2[23:0] <= {fbdimm2b_rx_n_top[0],fbdimm2b_rx_n_top_d2[23:1]};
1605 end
1606 always @(posedge `FBD_CH_PATH6.fbdimm0.link_clk) begin
1607 fbdimm3a_rx_p_top_d2[23:0] <= {fbdimm3a_rx_p_top[0],fbdimm3a_rx_p_top_d2[23:1]};
1608 fbdimm3a_rx_n_top_d2[23:0] <= {fbdimm3a_rx_n_top[0],fbdimm3a_rx_n_top_d2[23:1]};
1609 end
1610 always @(posedge `FBD_CH_PATH7.fbdimm0.link_clk) begin
1611 fbdimm3b_rx_p_top_d2[23:0] <= {fbdimm3b_rx_p_top[0],fbdimm3b_rx_p_top_d2[23:1]};
1612 fbdimm3b_rx_n_top_d2[23:0] <= {fbdimm3b_rx_n_top[0],fbdimm3b_rx_n_top_d2[23:1]};
1613 end // always @ (posedge `FBD_CH_PATH7.fbdimm0.link_clk)
1614`endif // DTM_ENABLED
1615
1616`ifdef RESET_AXIS_ONLY
1617`ifndef FC_NO_PEU_T2
1618 wire PCIE_Ref_Clock = PLL_CMP_CLK_P;
1619 wire [7:0] RX_P = 7'hf;
1620 wire [7:0] RX_N = 7'hf;
1621 wire [7:0] TX_P = 7'hf;
1622 wire [7:0] TX_N = 7'hf;
1623`endif
1624 wire TESTMODE = 1'b0;
1625 assign PLL_TESTMODE = 1'b0;
1626 assign VDD_PLL_CMP_REG = 1'b0;
1627 wire VDD_RNG_HV = 1'b0;
1628 wire VDD = 1'b1;
1629 wire VPP = 1'b0;
1630 assign VREG_SELBG_L = 1'b1;
1631 wire VDDO_PCM = 1'b1;
1632 wire VDD_SENSE = 1'b1;
1633 wire VSS_SENSE = 1'b0;
1634
1635`endif
1636
1637
1638 cpu cpu (
1639`ifdef DTM_ENABLED // Used by both Slam and Non-Slam DTM modes
1640 .FBDIMM0A_TX_P (fbdimm0a_tx_p_top[9:0]),
1641 .FBDIMM0A_TX_N (fbdimm0a_tx_n_top[9:0]),
1642 .FBDIMM0A_RX_P ({fbdimm0a_rx_p_top[13:1],fbdimm0a_rx_p_top_d2[0]}),
1643 .FBDIMM0A_RX_N ({fbdimm0a_rx_n_top[13:1],fbdimm0a_rx_n_top_d2[0]}),
1644 .FBDIMM0B_TX_P (fbdimm0b_tx_p_top[9:0]),
1645 .FBDIMM0B_TX_N (fbdimm0b_tx_n_top[9:0]),
1646 .FBDIMM0B_RX_P ({fbdimm0b_rx_p_top[13:1],fbdimm0b_rx_p_top_d2[0]}),
1647 .FBDIMM0B_RX_N ({fbdimm0b_rx_n_top[13:1],fbdimm0b_rx_n_top_d2[0]}),
1648 .FBDIMM1A_TX_P (fbdimm1a_tx_p_top[9:0]),
1649 .FBDIMM1A_TX_N (fbdimm1a_tx_n_top[9:0]),
1650 .FBDIMM1A_RX_P ({fbdimm1a_rx_p_top[13:1],fbdimm1a_rx_p_top_d2[0]}),
1651 .FBDIMM1A_RX_N ({fbdimm1a_rx_n_top[13:1],fbdimm1a_rx_n_top_d2[0]}),
1652 .FBDIMM1B_TX_P (fbdimm1b_tx_p_top[9:0]),
1653 .FBDIMM1B_TX_N (fbdimm1b_tx_n_top[9:0]),
1654 .FBDIMM1B_RX_P ({fbdimm1b_rx_p_top[13:1],fbdimm1b_rx_p_top_d2[0]}),
1655 .FBDIMM1B_RX_N ({fbdimm1b_rx_n_top[13:1],fbdimm1b_rx_n_top_d2[0]}),
1656 .FBDIMM2A_TX_P (fbdimm2a_tx_p_top[9:0]),
1657 .FBDIMM2A_TX_N (fbdimm2a_tx_n_top[9:0]),
1658 .FBDIMM2A_RX_P ({fbdimm2a_rx_p_top[13:1],fbdimm2a_rx_p_top_d2[0]}),
1659 .FBDIMM2A_RX_N ({fbdimm2a_rx_n_top[13:1],fbdimm2a_rx_n_top_d2[0]}),
1660 .FBDIMM2B_TX_P (fbdimm2b_tx_p_top[9:0]),
1661 .FBDIMM2B_TX_N (fbdimm2b_tx_n_top[9:0]),
1662 .FBDIMM2B_RX_P ({fbdimm2b_rx_p_top[13:1],fbdimm2b_rx_p_top_d2[0]}),
1663 .FBDIMM2B_RX_N ({fbdimm2b_rx_n_top[13:1],fbdimm2b_rx_n_top_d2[0]}),
1664 .FBDIMM3A_TX_P (fbdimm3a_tx_p_top[9:0]),
1665 .FBDIMM3A_TX_N (fbdimm3a_tx_n_top[9:0]),
1666 .FBDIMM3A_RX_P ({fbdimm3a_rx_p_top[13:1],fbdimm3a_rx_p_top_d2[0]}),
1667 .FBDIMM3A_RX_N ({fbdimm3a_rx_n_top[13:1],fbdimm3a_rx_n_top_d2[0]}),
1668 .FBDIMM3B_TX_P (fbdimm3b_tx_p_top[9:0]),
1669 .FBDIMM3B_TX_N (fbdimm3b_tx_n_top[9:0]),
1670 .FBDIMM3B_RX_P ({fbdimm3b_rx_p_top[13:1],fbdimm3b_rx_p_top_d2[0]}),
1671 .FBDIMM3B_RX_N ({fbdimm3b_rx_n_top[13:1],fbdimm3b_rx_n_top_d2[0]}),
1672`else
1673 .FBDIMM0A_TX_P (fbdimm0a_tx_p_top[9:0]),
1674 .FBDIMM0A_TX_N (fbdimm0a_tx_n_top[9:0]),
1675 .FBDIMM0A_RX_P (fbdimm0a_rx_p_top[13:0]),
1676 .FBDIMM0A_RX_N (fbdimm0a_rx_n_top[13:0]),
1677 .FBDIMM0B_TX_P (fbdimm0b_tx_p_top[9:0]),
1678 .FBDIMM0B_TX_N (fbdimm0b_tx_n_top[9:0]),
1679 .FBDIMM0B_RX_P (fbdimm0b_rx_p_top[13:0]),
1680 .FBDIMM0B_RX_N (fbdimm0b_rx_n_top[13:0]),
1681 .FBDIMM1A_TX_P (fbdimm1a_tx_p_top[9:0]),
1682 .FBDIMM1A_TX_N (fbdimm1a_tx_n_top[9:0]),
1683 .FBDIMM1A_RX_P (fbdimm1a_rx_p_top[13:0]),
1684 .FBDIMM1A_RX_N (fbdimm1a_rx_n_top[13:0]),
1685 .FBDIMM1B_TX_P (fbdimm1b_tx_p_top[9:0]),
1686 .FBDIMM1B_TX_N (fbdimm1b_tx_n_top[9:0]),
1687 .FBDIMM1B_RX_P (fbdimm1b_rx_p_top[13:0]),
1688 .FBDIMM1B_RX_N (fbdimm1b_rx_n_top[13:0]),
1689 .FBDIMM2A_TX_P (fbdimm2a_tx_p_top[9:0]),
1690 .FBDIMM2A_TX_N (fbdimm2a_tx_n_top[9:0]),
1691 .FBDIMM2A_RX_P (fbdimm2a_rx_p_top[13:0]),
1692 .FBDIMM2A_RX_N (fbdimm2a_rx_n_top[13:0]),
1693 .FBDIMM2B_TX_P (fbdimm2b_tx_p_top[9:0]),
1694 .FBDIMM2B_TX_N (fbdimm2b_tx_n_top[9:0]),
1695 .FBDIMM2B_RX_P (fbdimm2b_rx_p_top[13:0]),
1696 .FBDIMM2B_RX_N (fbdimm2b_rx_n_top[13:0]),
1697 .FBDIMM3A_TX_P (fbdimm3a_tx_p_top[9:0]),
1698 .FBDIMM3A_TX_N (fbdimm3a_tx_n_top[9:0]),
1699 .FBDIMM3A_RX_P (fbdimm3a_rx_p_top[13:0]),
1700 .FBDIMM3A_RX_N (fbdimm3a_rx_n_top[13:0]),
1701 .FBDIMM3B_TX_P (fbdimm3b_tx_p_top[9:0]),
1702 .FBDIMM3B_TX_N (fbdimm3b_tx_n_top[9:0]),
1703 .FBDIMM3B_RX_P (fbdimm3b_rx_p_top[13:0]),
1704 .FBDIMM3B_RX_N (fbdimm3b_rx_n_top[13:0]),
1705`endif // DTM_ENABLED
1706 `ifdef RESET_AXIS_ONLY
1707 .FBDIMM1_REFCLK_P( PLL_CMP_CLK_P),
1708 .FBDIMM1_REFCLK_N(~ PLL_CMP_CLK_N),
1709 .FBDIMM2_REFCLK_P( PLL_CMP_CLK_P),
1710 .FBDIMM2_REFCLK_N(~ PLL_CMP_CLK_N),
1711 .FBDIMM3_REFCLK_P( PLL_CMP_CLK_P),
1712 .FBDIMM3_REFCLK_N(~ PLL_CMP_CLK_N),
1713 `else
1714 .FBDIMM1_REFCLK_P(dram_6x_clk),
1715 .FBDIMM1_REFCLK_N(~dram_6x_clk),
1716 .FBDIMM2_REFCLK_P(dram_6x_clk),
1717 .FBDIMM2_REFCLK_N(~dram_6x_clk),
1718 .FBDIMM3_REFCLK_P(dram_6x_clk),
1719 .FBDIMM3_REFCLK_N(~dram_6x_clk),
1720 `endif // RESET_AXIS_ONLY
1721
1722 .FBDIMM0A_AMUX(FBDIMM0A_AMUX), //[2:0] output Analog voltage monitoring
1723
1724 .FBDIMM0B_AMUX(FBDIMM0A_AMUX), //[2:0] output Analog voltage monitoring
1725
1726 .FBDIMM1A_AMUX(FBDIMM1A_AMUX), //[2:0] output Analog voltage monitoring
1727
1728 .FBDIMM1B_AMUX(FBDIMM1B_AMUX), //[2:0] output Analog voltage monitoring
1729
1730 .FBDIMM2A_AMUX(FBDIMM2A_AMUX), //[2:0] output Analog voltage monitoring
1731
1732 .FBDIMM2B_AMUX(FBDIMM2B_AMUX), //[2:0] output Analog voltage monitoring
1733
1734 .FBDIMM3A_AMUX(FBDIMM3A_AMUX), //[2:0] output Analog voltage monitoring
1735
1736 .FBDIMM3B_AMUX(FBDIMM3B_AMUX), //[2:0] output Analog voltage monitoring
1737
1738//---------------------------------------
1739// FBDIMM supply nets
1740//---------------------------------------
1741 .VDDA_FSRR(VDD),
1742 .VDDD_FSRR(VDD),
1743 .VDDR_FSRR(VDD),
1744 .VDDT_FSRR(VDD),
1745 .VSSA_FSRR(VSS),
1746
1747 .VDDA_FSRL(VDD),
1748 .VDDD_FSRL(VDD),
1749 .VDDR_FSRL(VDD),
1750 .VDDT_FSRL(VDD),
1751 .VSSA_FSRL(VSS),
1752
1753 .VDDA_FSRB(VDD),
1754 .VDDD_FSRB(VDD),
1755 .VDDR_FSRB(VDD),
1756 .VDDT_FSRB(VDD),
1757 .VSSA_FSRB(VSS),
1758
1759
1760
1761`ifndef FC_NO_PEU_T2
1762`ifndef NO_VCS_CASCADE_IP_CODE
1763 //-----------------
1764 // PCI-e IO
1765 //-----------------
1766
1767 .PEX_REFCLK_P ( PCIE_Ref_Clock ),
1768 .PEX_REFCLK_N ( ~PCIE_Ref_Clock ),
1769
1770 .PEX_RX_P ( RX_P[7:0] ),
1771 .PEX_RX_N ( RX_N[7:0] ),
1772 .PEX_TX_P ( TX_P[7:0] ),
1773 .PEX_TX_N ( TX_N[7:0] ),
1774 .PEX_RESET_L ( PEX_RESET_L ),
1775 .PEX_AMUX (PEX_AMUX), //[1:0] analog monitoring signals outputs
1776`endif // `ifndef NO_VCS_CASCADE_IP_CODE
1777
1778`ifdef RESET_AXIS_ONLY
1779 //-----------------
1780 // PCI-e IO
1781 //-----------------
1782
1783 .PEX_REFCLK_P ( PCIE_Ref_Clock ),
1784 .PEX_REFCLK_N ( ~PCIE_Ref_Clock ),
1785
1786 .PEX_RX_P ( RX_P[7:0] ),
1787 .PEX_RX_N ( RX_N[7:0] ),
1788 .PEX_TX_P ( TX_P[7:0] ),
1789 .PEX_TX_N ( TX_N[7:0] ),
1790 .PEX_RESET_L ( PEX_RESET_L ),
1791 .PEX_AMUX (PEX_AMUX), //[1:0] analog monitoring signals outputs
1792`endif
1793`endif
1794
1795`ifndef FC_NO_NIU_T2
1796 //-----------------
1797 // Ethernet IO
1798 //-----------------
1799 .XAUI0_REFCLK_N(refclk_enet_n),
1800 .XAUI0_REFCLK_P(refclk_enet),
1801
1802
1803 .XAUI0_TX_N(xaui0_tx_n[3:0]), // PAD
1804 .XAUI0_TX_P(xaui0_tx_p[3:0]), // PAD
1805 .XAUI0_RX_N(xaui0_rx_n[3:0]), // PAD
1806 .XAUI0_RX_P(xaui0_rx_p[3:0]), // PAD
1807
1808
1809 .XAUI1_TX_N(xaui1_tx_n[3:0]), // PAD
1810 .XAUI1_TX_P(xaui1_tx_p[3:0]), // PAD
1811 .XAUI1_RX_N(xaui1_rx_n[3:0]), // PAD
1812 .XAUI1_RX_P(xaui1_rx_p[3:0]), // PAD
1813
1814 .XAUI0_AMUX(XAUI0_AMUX),
1815 .XAUI1_AMUX(XAUI1_AMUX),
1816 .XAUI0_LINK_LED(XAUI0_LINK_LED), // PAD
1817 .XAUI1_LINK_LED(XAUI1_LINK_LED), // PAD
1818 .XAUI0_ACT_LED(XAUI0_ACT_LED), // PAD
1819 .XAUI1_ACT_LED(XAUI1_ACT_LED), // PAD
1820 .XAUI_MDC(XAUI_MDC), // PAD
1821 .XAUI_MDIO(XAUI_MDIO), // PAD
1822
1823//XAUI power supply pins
1824 .VDDA_ESR(VDD),
1825 .VDDD_ESR(VDD),
1826 .VDDR_ESR(VDD),
1827 .VDDT_ESR(VDD),
1828 .VSSA_ESR(VSS),
1829
1830`endif
1831
1832
1833 .BUTTON_XIR_L ( BUTTON_XIR_L ),
1834 .PB_RST_L ( PB_RST_L ),
1835 .PWRON_RST_L ( PWRON_RST_L ),
1836
1837 .BURNIN ( BURNIN ),
1838`ifndef TO_1_0_VECTORS
1839 .L2T_VNW (L2T_VNW[7:0]),
1840 .SPC_VNW (SPC_VNW[7:0]),
1841 .L2D_VNW0 (L2D_VNW0[7:0]),
1842 .L2D_VNW1 (L2D_VNW1[7:0]),
1843`endif
1844 .PGRM_EN ( PGRM_EN ),
1845 .PMI ( PMI ),
1846
1847 .DIVIDER_BYPASS ( DIVIDER_BYPASS ),
1848 .PLL_CMP_BYPASS ( PLL_CMP_BYPASS ),
1849//----------------------------
1850// SSI Interface
1851//----------------------------
1852 .SSI_EXT_INT_L ( SSI_EXT_INT_L ),
1853 .SSI_SYNC_L ( SSI_SYNC_L ),
1854`ifdef AXIS_SSI_BRIDGE
1855 .SSI_SCK ( SSI_SCK_N2),
1856 .SSI_MOSI ( SSI_MOSI_N2),
1857 .SSI_MISO ( SSI_MISO_N2),
1858`else
1859 .SSI_SCK ( SSI_SCK),
1860 .SSI_MOSI ( SSI_MOSI),
1861 .SSI_MISO ( SSI_MISO),
1862`endif
1863//--------------------------------
1864//STCI interface for serdes scan
1865//--------------------------------
1866 .STCICFG ( STCICFG ),
1867 .STCICLK ( STCICLK ),
1868 .STCID ( STCID ),
1869 .STCIQ ( STCIQ ),
1870
1871 //-----------------
1872 // TCU IO driven by System TAP interface
1873 //-----------------
1874 .TCK ( TCK ), // Needs to connect to tck
1875 .TMS (TMS),
1876 .TDI (TDI),
1877 .TDO (TDO),
1878 .TRST_L ( TRST_L),
1879 .TESTCLKR ( TESTCLKR ),
1880 .TESTCLKT ( TESTCLKT ),
1881 .TESTMODE ( TESTMODE ),
1882 .PLL_TESTMODE ( PLL_TESTMODE ),
1883
1884//-------------------------------------
1885//Misc pins
1886//-------------------------------------
1887 .VDD_PLL_CMP_REG (VDD_PLL_CMP_REG),
1888 .VDD_RNG_HV (VDD_RNG_HV),
1889 .VREG_SELBG_L (VREG_SELBG_L),
1890 .DIODE_TOP (DIODE_TOP),//[2:0]
1891 .DIODE_BOT (DIODE_BOT),//[2:0]
1892 .VDD_SENSE (VDD_SENSE), //===>
1893 .VSS_SENSE (VSS_SENSE), //===>
1894
1895 .PWR_THRTTL_0 (PWR_THRTTL_0), //<== [2:0]
1896 .PWR_THRTTL_1 (PWR_THRTTL_1), //<== [2:0]
1897
1898 .PLL_CMP_CLK_P (PLL_CMP_CLK_P),
1899 .PLL_CMP_CLK_N (PLL_CMP_CLK_N),
1900`ifndef TO_1_0_VECTORS
1901`ifndef FC_NO_NIU_T2
1902 .XAUI_MDINT1_L (XAUI_MDINT1_L),
1903 .XAUI_MDINT0_L (XAUI_MDINT0_L),
1904`endif
1905`endif
1906// .SPARE (SPARE),
1907//---------------------------------------
1908//High voltage pin for efuse programming
1909//---------------------------------------
1910.VPP (VDD),
1911
1912//-------------------------------------
1913//Debug interface signals
1914//-------------------------------------
1915 .TRIGIN ( TRIGIN ), // <==
1916 .TRIGOUT ( TRIGOUT ), // ===>
1917 .DBG_DQ ( DBG_DQ ), // ===>
1918 .DBG_CK0 ( DBG_CK0) // ===>
1919 );
1920
1921`ifndef AXIS
1922`ifndef GATESIM
1923 fast_bisi fast_bisi();
1924`endif // GATESIM
1925`endif // AXIS
1926
1927`ifdef AXIS_SSI_BRIDGE
1928 assign SSI_SCK=core_clk;
1929 wire null_1, got_rx_packet, PWRON_RST_L_ssi, SSI_MISO_N2_dbg, got_tx_packet;
1930ssi_bridge ssi_bridge (.TCLKXN (1'b0),
1931 .GSCANEN (1'b0),
1932 . LSCANEN (1'b0),
1933 .js1_88_o (SSI_MOSI),
1934 .js1_89_o (null_1),
1935 .js1_138_i (~PWRON_RST_L),
1936 .js1_96_i (SSI_MISO),
1937 .js1_92_i (SSI_SCK),
1938 .js1_93_o (got_rx_packet),
1939 .js1_97_o (SSI_MISO_N2_dbg),
1940 .js1_88_i (SSI_SCK_N2),
1941 .js1_89_i (SSI_MOSI_N2),
1942 .js1_138_o (PWRON_RST_L_ssi),
1943 .js1_96_o (SSI_MISO_N2),
1944 .js1_92_o (got_tx_packet),
1945 .js1_93_i (1'b0),
1946 .js1_97_i (SSI_SYNC_L)
1947 );
1948`endif // `ifdef AXIS_SSI_BRIDGE
1949
1950 system_reset system_reset (
1951 .Sysclk (SYSCLK),
1952 .Core_clk (core_clk),
1953 .Ssi_sync_l (SSI_SYNC_L),
1954 .Tck (tck_clkgen_per_PRM),
1955 .Button_xir_l (BUTTON_XIR_L),
1956`ifndef RESET_AXIS_ONLY
1957 .Pb_rst_l (PB_RST_L),
1958 .Trst_l (tb_top_TRST_L),
1959`endif
1960 .Pwr_on_rst_l (PWRON_RST_L),
1961 .Tb_reset (reset),
1962 .Fbdimm_rst (FBDIMM_RST),
1963 .niu_reset (niu_reset),
1964 .flush_reset_complete (flush_reset_complete)
1965
1966
1967 );
1968
1969
1970 cmp_mem mcusat_mem ();
1971
1972 mcusat_fbdimm mcusat_fbdimm(
1973 `ifdef FC_CRC_INJECT
1974 .fbdimm0_ps (fbd0a_tx_p_top[9:0]),
1975 .fbdimm0_ps_bar (fbd0a_tx_n_top[9:0]),
1976 .fbdimm1_ps (fbd0b_tx_p_top[9:0]),
1977 .fbdimm1_ps_bar (fbd0b_tx_n_top[9:0]),
1978 .fbdimm2_ps (fbd1a_tx_p_top[9:0]),
1979 .fbdimm2_ps_bar (fbd1a_tx_n_top[9:0]),
1980 .fbdimm3_ps (fbd1b_tx_p_top[9:0]),
1981 .fbdimm3_ps_bar (fbd1b_tx_n_top[9:0]),
1982 .fbdimm4_ps (fbd2a_tx_p_top[9:0]),
1983 .fbdimm4_ps_bar (fbd2a_tx_n_top[9:0]),
1984 .fbdimm5_ps (fbd2b_tx_p_top[9:0]),
1985 .fbdimm5_ps_bar (fbd2b_tx_n_top[9:0]),
1986 .fbdimm6_ps (fbd3a_tx_p_top[9:0]),
1987 .fbdimm6_ps_bar (fbd3a_tx_n_top[9:0]),
1988 .fbdimm7_ps (fbd3b_tx_p_top[9:0]),
1989 .fbdimm7_ps_bar (fbd3b_tx_n_top[9:0]),
1990 .fbdimm0_pn (fbd0a_rx_p_top[13:0]),
1991 .fbdimm0_pn_bar (fbd0a_rx_n_top[13:0]),
1992 .fbdimm1_pn (fbd0b_rx_p_top[13:0]),
1993 .fbdimm1_pn_bar (fbd0b_rx_n_top[13:0]),
1994 .fbdimm2_pn (fbd1a_rx_p_top[13:0]),
1995 .fbdimm2_pn_bar (fbd1a_rx_n_top[13:0]),
1996 .fbdimm3_pn (fbd1b_rx_p_top[13:0]),
1997 .fbdimm3_pn_bar (fbd1b_rx_n_top[13:0]),
1998 .fbdimm4_pn (fbd2a_rx_p_top[13:0]),
1999 .fbdimm4_pn_bar (fbd2a_rx_n_top[13:0]),
2000 .fbdimm5_pn (fbd2b_rx_p_top[13:0]),
2001 .fbdimm5_pn_bar (fbd2b_rx_n_top[13:0]),
2002 .fbdimm6_pn (fbd3a_rx_p_top[13:0]),
2003 .fbdimm6_pn_bar (fbd3a_rx_n_top[13:0]),
2004 .fbdimm7_pn (fbd3b_rx_p_top[13:0]),
2005 .fbdimm7_pn_bar (fbd3b_rx_n_top[13:0]),
2006 `else
2007 `ifdef NB_BITLANE_DESKEW
2008 .fbdimm0_ps (fbdimm0a_tx_p_top[9:0]),
2009 .fbdimm0_ps_bar (fbdimm0a_tx_n_top[9:0]),
2010 .fbdimm1_ps (fbdimm0b_tx_p_top[9:0]),
2011 .fbdimm1_ps_bar (fbdimm0b_tx_n_top[9:0]),
2012 .fbdimm2_ps (fbdimm1a_tx_p_top[9:0]),
2013 .fbdimm2_ps_bar (fbdimm1a_tx_n_top[9:0]),
2014 .fbdimm3_ps (fbdimm1b_tx_p_top[9:0]),
2015 .fbdimm3_ps_bar (fbdimm1b_tx_n_top[9:0]),
2016 .fbdimm4_ps (fbdimm2a_tx_p_top[9:0]),
2017 .fbdimm4_ps_bar (fbdimm2a_tx_n_top[9:0]),
2018 .fbdimm5_ps (fbdimm2b_tx_p_top[9:0]),
2019 .fbdimm5_ps_bar (fbdimm2b_tx_n_top[9:0]),
2020 .fbdimm6_ps (fbdimm3a_tx_p_top[9:0]),
2021 .fbdimm6_ps_bar (fbdimm3a_tx_n_top[9:0]),
2022 .fbdimm7_ps (fbdimm3b_tx_p_top[9:0]),
2023 .fbdimm7_ps_bar (fbdimm3b_tx_n_top[9:0]),
2024 .fbdimm0_pn (fbd0a_rx_p_top[13:0]),
2025 .fbdimm0_pn_bar (fbd0a_rx_n_top[13:0]),
2026 .fbdimm1_pn (fbd0b_rx_p_top[13:0]),
2027 .fbdimm1_pn_bar (fbd0b_rx_n_top[13:0]),
2028 .fbdimm2_pn (fbd1a_rx_p_top[13:0]),
2029 .fbdimm2_pn_bar (fbd1a_rx_n_top[13:0]),
2030 .fbdimm3_pn (fbd1b_rx_p_top[13:0]),
2031 .fbdimm3_pn_bar (fbd1b_rx_n_top[13:0]),
2032 .fbdimm4_pn (fbd2a_rx_p_top[13:0]),
2033 .fbdimm4_pn_bar (fbd2a_rx_n_top[13:0]),
2034 .fbdimm5_pn (fbd2b_rx_p_top[13:0]),
2035 .fbdimm5_pn_bar (fbd2b_rx_n_top[13:0]),
2036 .fbdimm6_pn (fbd3a_rx_p_top[13:0]),
2037 .fbdimm6_pn_bar (fbd3a_rx_n_top[13:0]),
2038 .fbdimm7_pn (fbd3b_rx_p_top[13:0]),
2039 .fbdimm7_pn_bar (fbd3b_rx_n_top[13:0]),
2040 `else
2041 .fbdimm0_ps (fbdimm0a_tx_p_top[9:0]),
2042 .fbdimm0_ps_bar (fbdimm0a_tx_n_top[9:0]),
2043 .fbdimm1_ps (fbdimm0b_tx_p_top[9:0]),
2044 .fbdimm1_ps_bar (fbdimm0b_tx_n_top[9:0]),
2045 .fbdimm2_ps (fbdimm1a_tx_p_top[9:0]),
2046 .fbdimm2_ps_bar (fbdimm1a_tx_n_top[9:0]),
2047 .fbdimm3_ps (fbdimm1b_tx_p_top[9:0]),
2048 .fbdimm3_ps_bar (fbdimm1b_tx_n_top[9:0]),
2049 .fbdimm4_ps (fbdimm2a_tx_p_top[9:0]),
2050 .fbdimm4_ps_bar (fbdimm2a_tx_n_top[9:0]),
2051 .fbdimm5_ps (fbdimm2b_tx_p_top[9:0]),
2052 .fbdimm5_ps_bar (fbdimm2b_tx_n_top[9:0]),
2053 .fbdimm6_ps (fbdimm3a_tx_p_top[9:0]),
2054 .fbdimm6_ps_bar (fbdimm3a_tx_n_top[9:0]),
2055 .fbdimm7_ps (fbdimm3b_tx_p_top[9:0]),
2056 .fbdimm7_ps_bar (fbdimm3b_tx_n_top[9:0]),
2057 .fbdimm0_pn (fbdimm0a_rx_p_top[13:0]),
2058 .fbdimm0_pn_bar (fbdimm0a_rx_n_top[13:0]),
2059 .fbdimm1_pn (fbdimm0b_rx_p_top[13:0]),
2060 .fbdimm1_pn_bar (fbdimm0b_rx_n_top[13:0]),
2061 .fbdimm2_pn (fbdimm1a_rx_p_top[13:0]),
2062 .fbdimm2_pn_bar (fbdimm1a_rx_n_top[13:0]),
2063 .fbdimm3_pn (fbdimm1b_rx_p_top[13:0]),
2064 .fbdimm3_pn_bar (fbdimm1b_rx_n_top[13:0]),
2065 .fbdimm4_pn (fbdimm2a_rx_p_top[13:0]),
2066 .fbdimm4_pn_bar (fbdimm2a_rx_n_top[13:0]),
2067 .fbdimm5_pn (fbdimm2b_rx_p_top[13:0]),
2068 .fbdimm5_pn_bar (fbdimm2b_rx_n_top[13:0]),
2069 .fbdimm6_pn (fbdimm3a_rx_p_top[13:0]),
2070 .fbdimm6_pn_bar (fbdimm3a_rx_n_top[13:0]),
2071 .fbdimm7_pn (fbdimm3b_rx_p_top[13:0]),
2072 .fbdimm7_pn_bar (fbdimm3b_rx_n_top[13:0]),
2073 `endif // !`ifdef NB_BITLANE_DESKEW
2074 `endif // !`ifdef FC_CRC_INJECT
2075 `ifdef INPHI_FBDIMM
2076 .fbdimm_sclk (dram_12x_clk),
2077 `else
2078 `ifdef AXIS
2079 `ifdef AXIS_FBDIMM_NO_FSR
2080 .fbdimm_sclk (~dram_3x_clk),
2081 `else
2082 .fbdimm_sclk (~dram_12x_clk),
2083 `endif
2084 `else
2085 `ifdef AXIS_FBDIMM_NO_FSR //this allows no serdes to be run on vcs
2086 .fbdimm_sclk (~dram_3x_clk),
2087 `else
2088 .fbdimm_sclk (SYSCLK), // 2 div dram_clock
2089 `endif
2090 `endif
2091 `endif // !`ifdef INPHI_FBDIMM
2092 .chmon_rst (FBDIMM_RST)
2093);
2094
2095`ifdef FC_CRC_INJECT
2096 crc_errinject_top crc_errinject_top (
2097 .fbd0a_rx_p_top (fbd0a_rx_p_top[13:0]),
2098 .fbdimm0a_rx_p_top (fbdimm0a_rx_p_top[13:0]),
2099 .fbd0a_rx_n_top (fbd0a_rx_n_top[13:0]),
2100 .fbdimm0a_rx_n_top (fbdimm0a_rx_n_top[13:0]),
2101 .fbd0b_rx_p_top (fbd0b_rx_p_top[13:0]),
2102 .fbdimm0b_rx_p_top (fbdimm0b_rx_p_top[13:0]),
2103 .fbd0b_rx_n_top (fbd0b_rx_n_top[13:0]),
2104 .fbdimm0b_rx_n_top (fbdimm0b_rx_n_top[13:0]),
2105 .fbd1a_rx_p_top (fbd1a_rx_p_top[13:0]),
2106 .fbdimm1a_rx_p_top (fbdimm1a_rx_p_top[13:0]),
2107 .fbd1a_rx_n_top (fbd1a_rx_n_top[13:0]),
2108 .fbdimm1a_rx_n_top (fbdimm1a_rx_n_top[13:0]),
2109 .fbd1b_rx_p_top (fbd1b_rx_p_top[13:0]),
2110 .fbdimm1b_rx_p_top (fbdimm1b_rx_p_top[13:0]),
2111 .fbd1b_rx_n_top (fbd1b_rx_n_top[13:0]),
2112 .fbdimm1b_rx_n_top (fbdimm1b_rx_n_top[13:0]),
2113 .fbd2a_rx_p_top (fbd2a_rx_p_top[13:0]),
2114 .fbdimm2a_rx_p_top (fbdimm2a_rx_p_top[13:0]),
2115 .fbd2a_rx_n_top (fbd2a_rx_n_top[13:0]),
2116 .fbdimm2a_rx_n_top (fbdimm2a_rx_n_top[13:0]),
2117 .fbd2b_rx_p_top (fbd2b_rx_p_top[13:0]),
2118 .fbdimm2b_rx_p_top (fbdimm2b_rx_p_top[13:0]),
2119 .fbd2b_rx_n_top (fbd2b_rx_n_top[13:0]),
2120 .fbdimm2b_rx_n_top (fbdimm2b_rx_n_top[13:0]),
2121 .fbd3a_rx_p_top (fbd3a_rx_p_top[13:0]),
2122 .fbdimm3a_rx_p_top (fbdimm3a_rx_p_top[13:0]),
2123 .fbd3a_rx_n_top (fbd3a_rx_n_top[13:0]),
2124 .fbdimm3a_rx_n_top (fbdimm3a_rx_n_top[13:0]),
2125 .fbd3b_rx_p_top (fbd3b_rx_p_top[13:0]),
2126 .fbdimm3b_rx_p_top (fbdimm3b_rx_p_top[13:0]),
2127 .fbd3b_rx_n_top (fbd3b_rx_n_top[13:0]),
2128 .fbdimm3b_rx_n_top (fbdimm3b_rx_n_top[13:0]),
2129 .fbdimm0a_tx_p_top (fbdimm0a_tx_p_top[9:0]),
2130 .fbd0a_tx_p_top (fbd0a_tx_p_top[9:0]),
2131 .fbdimm0b_tx_p_top (fbdimm0b_tx_p_top[9:0]),
2132 .fbd0b_tx_p_top (fbd0b_tx_p_top[9:0]),
2133 .fbdimm0a_tx_n_top (fbdimm0a_tx_n_top[9:0]),
2134 .fbd0a_tx_n_top (fbd0a_tx_n_top[9:0]),
2135 .fbdimm0b_tx_n_top (fbdimm0b_tx_n_top[9:0]),
2136 .fbd0b_tx_n_top (fbd0b_tx_n_top[9:0]),
2137 .fbdimm1a_tx_p_top (fbdimm1a_tx_p_top[9:0]),
2138 .fbd1a_tx_p_top (fbd1a_tx_p_top[9:0]),
2139 .fbdimm1b_tx_p_top (fbdimm1b_tx_p_top[9:0]),
2140 .fbd1b_tx_p_top (fbd1b_tx_p_top[9:0]),
2141 .fbdimm1a_tx_n_top (fbdimm1a_tx_n_top[9:0]),
2142 .fbd1a_tx_n_top (fbd1a_tx_n_top[9:0]),
2143 .fbdimm1b_tx_n_top (fbdimm1b_tx_n_top[9:0]),
2144 .fbd1b_tx_n_top (fbd1b_tx_n_top[9:0]),
2145 .fbdimm2a_tx_p_top (fbdimm2a_tx_p_top[9:0]),
2146 .fbd2a_tx_p_top (fbd2a_tx_p_top[9:0]),
2147 .fbdimm2b_tx_p_top (fbdimm2b_tx_p_top[9:0]),
2148 .fbd2b_tx_p_top (fbd2b_tx_p_top[9:0]),
2149 .fbdimm2a_tx_n_top (fbdimm2a_tx_n_top[9:0]),
2150 .fbd2a_tx_n_top (fbd2a_tx_n_top[9:0]),
2151 .fbdimm2b_tx_n_top (fbdimm2b_tx_n_top[9:0]),
2152 .fbd2b_tx_n_top (fbd2b_tx_n_top[9:0]),
2153 .fbdimm3a_tx_p_top (fbdimm3a_tx_p_top[9:0]),
2154 .fbd3a_tx_p_top (fbd3a_tx_p_top[9:0]),
2155 .fbdimm3b_tx_p_top (fbdimm3b_tx_p_top[9:0]),
2156 .fbd3b_tx_p_top (fbd3b_tx_p_top[9:0]),
2157 .fbdimm3a_tx_n_top (fbdimm3a_tx_n_top[9:0]),
2158 .fbd3a_tx_n_top (fbd3a_tx_n_top[9:0]),
2159 .fbdimm3b_tx_n_top (fbdimm3b_tx_n_top[9:0]),
2160 .fbd3b_tx_n_top (fbd3b_tx_n_top[9:0]),
2161 .sclk (dram_12x_clk)
2162 );
2163`endif // `ifdef FC_CRC_INJECT
2164
2165`ifdef NB_BITLANE_DESKEW
2166nb_bitlane_deskew nb_bitlane_deskew (
2167 .fbdimm0a_rx_p_top (fbd0a_rx_p_top[13:0]),
2168 .FBDIMM0A_RX_P_TOP (fbdimm0a_rx_p_top[13:0]),
2169 .fbdimm0a_rx_n_top (fbd0a_rx_n_top[13:0]),
2170 .FBDIMM0A_RX_N_TOP (fbdimm0a_rx_n_top[13:0]),
2171 .fbdimm0b_rx_p_top (fbd0b_rx_p_top[13:0]),
2172 .FBDIMM0B_RX_P_TOP (fbdimm0b_rx_p_top[13:0]),
2173 .fbdimm0b_rx_n_top (fbd0b_rx_n_top[13:0]),
2174 .FBDIMM0B_RX_N_TOP (fbdimm0b_rx_n_top[13:0]),
2175 .fbdimm1a_rx_p_top (fbd1a_rx_p_top[13:0]),
2176 .FBDIMM1A_RX_P_TOP (fbdimm1a_rx_p_top[13:0]),
2177 .fbdimm1a_rx_n_top (fbd1a_rx_n_top[13:0]),
2178 .FBDIMM1A_RX_N_TOP (fbdimm1a_rx_n_top[13:0]),
2179 .fbdimm1b_rx_p_top (fbd1b_rx_p_top[13:0]),
2180 .FBDIMM1B_RX_P_TOP (fbdimm1b_rx_p_top[13:0]),
2181 .fbdimm1b_rx_n_top (fbd1b_rx_n_top[13:0]),
2182 .FBDIMM1B_RX_N_TOP (fbdimm1b_rx_n_top[13:0]),
2183 .fbdimm2a_rx_p_top (fbd2a_rx_p_top[13:0]),
2184 .FBDIMM2A_RX_P_TOP (fbdimm2a_rx_p_top[13:0]),
2185 .fbdimm2a_rx_n_top (fbd2a_rx_n_top[13:0]),
2186 .FBDIMM2A_RX_N_TOP (fbdimm2a_rx_n_top[13:0]),
2187 .fbdimm2b_rx_p_top (fbd2b_rx_p_top[13:0]),
2188 .FBDIMM2B_RX_P_TOP (fbdimm2b_rx_p_top[13:0]),
2189 .fbdimm2b_rx_n_top (fbd2b_rx_n_top[13:0]),
2190 .FBDIMM2B_RX_N_TOP (fbdimm2b_rx_n_top[13:0]),
2191 .fbdimm3a_rx_p_top (fbd3a_rx_p_top[13:0]),
2192 .FBDIMM3A_RX_P_TOP (fbdimm3a_rx_p_top[13:0]),
2193 .fbdimm3a_rx_n_top (fbd3a_rx_n_top[13:0]),
2194 .FBDIMM3A_RX_N_TOP (fbdimm3a_rx_n_top[13:0]),
2195 .fbdimm3b_rx_p_top (fbd3b_rx_p_top[13:0]),
2196 .FBDIMM3B_RX_P_TOP (fbdimm3b_rx_p_top[13:0]),
2197 .fbdimm3b_rx_n_top (fbd3b_rx_n_top[13:0]),
2198 .FBDIMM3B_RX_N_TOP (fbdimm3b_rx_n_top[13:0]),
2199 .sysclk (SYSCLK)
2200);
2201`endif // `ifdef NB_BITLANE_DESKEW
2202
2203
2204`ifdef DTM_ENABLED
2205
2206//SV 11/15/06 monitor to kill NIU diags in DTM mode
2207always @(posedge (iol2clk)) begin
2208 if (`NCU.niu_ncu_vld | `NCU.ncu_niu_vld | `SII.niu_sii_hdr_vld) begin
2209 `PR_ERROR("DTM_kill_niu" , `ERROR, "In DTM mode Niu transaction has occurred!");
2210 end
2211end
2212
2213`endif
2214
2215
2216//SV 04/26/06 DTM changes
2217
2218 reg start_mcu_dtm_training, start_peu_dtm_training;
2219 reg splice_point, start_dtm_at_ccu_serdes_dtm;
2220
2221`ifdef DTM_ENABLED // Used by both Slam and Non-slam DTM modes
2222 // to achieve bit lock at chip pins .
2223 reg [1:0] fbdimm_link_state;
2224
2225 initial begin
2226 splice_point = 1'b0;
2227 #5;
2228 @(negedge tb_top.cpu.SSI_SYNC_L);
2229 @(negedge tb_top.cpu.SSI_SYNC_L);
2230 @(posedge tb_top.cpu.SSI_SCK);
2231 @(posedge tb_top.cpu.PLL_CMP_CLK_P);
2232 @(posedge tb_top.cpu.PLL_CMP_CLK_P);
2233 @(posedge tb_top.cpu.PLL_CMP_CLK_P);
2234 @(posedge tb_top.cpu.PLL_CMP_CLK_P);
2235 splice_point = 1'b1;
2236 end
2237
2238 initial begin
2239 fbdimm_link_state = 2'h0;
2240 start_mcu_dtm_training = 1'b0;
2241 start_peu_dtm_training = 1'b0;
2242 start_dtm_at_ccu_serdes_dtm = 1'b0;
2243
2244 if($test$plusargs("START_DTM_AT_CCU_SERDES_DTM")) begin
2245 start_dtm_at_ccu_serdes_dtm = 1'b1;
2246 wait (`CPU.ccu_serdes_dtm);
2247 wait (~`CPU.tcu_scan_en);
2248 wait (`CPU.tcu_scan_en);
2249 wait (~`CPU.tcu_scan_en);
2250 wait (~`CPU.rst_wmr_protect);
2251 @(posedge SYSCLK);
2252 start_mcu_dtm_training = 1'b1;
2253 end
2254 else begin
2255 @(negedge tb_top.cpu.SSI_SYNC_L);
2256 @(negedge tb_top.cpu.SSI_SYNC_L);
2257 @(posedge tb_top.cpu.SSI_SCK);
2258 @(posedge tb_top.cpu.SSI_SCK);
2259 start_mcu_dtm_training = 1'b1;
2260 start_peu_dtm_training = 1'b1;
2261 end
2262
2263 release fbdimm0a_rx_p_top[13:0];
2264 release fbdimm0a_rx_n_top[13:0];
2265 release fbdimm0b_rx_p_top[13:0];
2266 release fbdimm0b_rx_n_top[13:0];
2267 release fbdimm1a_rx_p_top[13:0];
2268 release fbdimm1a_rx_n_top[13:0];
2269 release fbdimm1b_rx_p_top[13:0];
2270 release fbdimm1b_rx_n_top[13:0];
2271 release fbdimm2a_rx_p_top[13:0];
2272 release fbdimm2a_rx_n_top[13:0];
2273 release fbdimm2b_rx_p_top[13:0];
2274 release fbdimm2b_rx_n_top[13:0];
2275 release fbdimm3a_rx_p_top[13:0];
2276 release fbdimm3a_rx_n_top[13:0];
2277 release fbdimm3b_rx_p_top[13:0];
2278 release fbdimm3b_rx_n_top[13:0];
2279 end
2280
2281 always @(posedge `FBD_CH_PATH0.fbdimm0.link_clk) begin
2282 if (start_mcu_dtm_training == 1'b0) begin
2283 fbdimm_link_state[1:0] = fbdimm_link_state[1:0] + 2'h1;
2284 if (fbdimm_link_state[0]) begin
2285 force fbdimm0a_rx_p_top[13:0] = 14'h3fff;
2286 force fbdimm0a_rx_n_top[13:0] = 14'h0000;
2287 force fbdimm0b_rx_p_top[13:0] = 14'h3fff;
2288 force fbdimm0b_rx_n_top[13:0] = 14'h0000;
2289 force fbdimm1a_rx_p_top[13:0] = 14'h3fff;
2290 force fbdimm1a_rx_n_top[13:0] = 14'h0000;
2291 force fbdimm1b_rx_p_top[13:0] = 14'h3fff;
2292 force fbdimm1b_rx_n_top[13:0] = 14'h0000;
2293 force fbdimm2a_rx_p_top[13:0] = 14'h3fff;
2294 force fbdimm2a_rx_n_top[13:0] = 14'h0000;
2295 force fbdimm2b_rx_p_top[13:0] = 14'h3fff;
2296 force fbdimm2b_rx_n_top[13:0] = 14'h0000;
2297 force fbdimm3a_rx_p_top[13:0] = 14'h3fff;
2298 force fbdimm3a_rx_n_top[13:0] = 14'h0000;
2299 force fbdimm3b_rx_p_top[13:0] = 14'h3fff;
2300 force fbdimm3b_rx_n_top[13:0] = 14'h0000;
2301 end
2302 else begin
2303 force fbdimm0a_rx_p_top[13:0] = 14'h0000;
2304 force fbdimm0a_rx_n_top[13:0] = 14'h3fff;
2305 force fbdimm0b_rx_p_top[13:0] = 14'h0000;
2306 force fbdimm0b_rx_n_top[13:0] = 14'h3fff;
2307 force fbdimm1a_rx_p_top[13:0] = 14'h0000;
2308 force fbdimm1a_rx_n_top[13:0] = 14'h3fff;
2309 force fbdimm1b_rx_p_top[13:0] = 14'h0000;
2310 force fbdimm1b_rx_n_top[13:0] = 14'h3fff;
2311 force fbdimm2a_rx_p_top[13:0] = 14'h0000;
2312 force fbdimm2a_rx_n_top[13:0] = 14'h3fff;
2313 force fbdimm2b_rx_p_top[13:0] = 14'h0000;
2314 force fbdimm2b_rx_n_top[13:0] = 14'h3fff;
2315 force fbdimm3a_rx_p_top[13:0] = 14'h0000;
2316 force fbdimm3a_rx_n_top[13:0] = 14'h3fff;
2317 force fbdimm3b_rx_p_top[13:0] = 14'h0000;
2318 force fbdimm3b_rx_n_top[13:0] = 14'h3fff;
2319 end
2320 end
2321 end
2322`endif // DTM_ENABLED
2323
2324
2325//END SV changes
2326
2327`ifdef FLUSH_RESET
2328
2329`ifdef PALLADIUM
2330initial begin
2331 if ($test$plusargs("NO_MCU_CSR_SLAM")) begin
2332 `PR_INFO ("mcu_mem_config", `INFO, "MCU CSRs not slammed");
2333 end
2334 else begin
2335 while (flush_reset_complete != 1'b1)
2336 @(posedge dram_clk);
2337`else
2338
2339`ifdef AXIS_TL
2340initial begin
2341 if ($test$plusargs("NO_MCU_CSR_SLAM")) begin
2342 `PR_INFO ("mcu_mem_config", `INFO, "MCU CSRs not slammed");
2343 end
2344 else begin
2345 @(posedge flush_reset_complete);
2346`else
2347 always @(posedge flush_reset_complete) begin
2348`endif //AXIS_TL
2349
2350`endif // `ifdef PALLADIUM
2351
2352`else // FLUSH_RESET
2353 initial
2354 begin
2355 repeat (100) @(posedge iol2clk);
2356`endif // FLUSH_RESET
2357
2358
2359`ifdef MCU_GATE
2360`ifdef SLAM_VECTORS
2361
2362 // force `MCU1.drif__N2397 = 1'b1;
2363 // force `MCU2.drif__N2397 = 1'b1;
2364 // force `MCU3.drif__N2397 = 1'b1;
2365 // force `MCU0.drif__N2397 = 1'b1;
2366
2367`elsif NON_SLAM_VECTORS // SLAM_VECTORS
2368`else
2369 if ($test$plusargs("NO_MCU_CSR_SLAM")) begin
2370 `PR_INFO ("mcu_mem_config", `INFO, "MCU CSRs not slammed");
2371 end
2372 else begin
2373 force `MCU0.drif__N2397 = 1'b1;
2374 force `MCU1.drif__N2397 = 1'b1;
2375 force `MCU2.drif__N2397 = 1'b1;
2376 force `MCU3.drif__N2397 = 1'b1;
2377
2378 force `MCU0.fbdic__pff_chnl_reset0_fdin = 1'b1;
2379 force `MCU1.fbdic__pff_chnl_reset0_fdin = 1'b1;
2380 force `MCU2.fbdic__pff_chnl_reset0_fdin = 1'b1;
2381 force `MCU3.fbdic__pff_chnl_reset0_fdin = 1'b1;
2382
2383 wait (`MCU0.fbdic__fbdic_chnl_reset_0_ == 1'b1);
2384 wait (`MCU1.fbdic__fbdic_chnl_reset_0_ == 1'b1);
2385 wait (`MCU2.fbdic__fbdic_chnl_reset_0_ == 1'b1);
2386 wait (`MCU3.fbdic__fbdic_chnl_reset_0_ == 1'b1);
2387
2388 release `MCU0.fbdic__pff_chnl_reset0_fdin;
2389 release `MCU1.fbdic__pff_chnl_reset0_fdin;
2390 release `MCU2.fbdic__pff_chnl_reset0_fdin;
2391 release `MCU3.fbdic__pff_chnl_reset0_fdin;
2392
2393 end // else NO_MCU_CSR_SLAM
2394`endif // SLAM_VECTORS
2395
2396`else // MCU_GATE
2397`ifdef SLAM_VECTORS
2398
2399 // force `MCU0.drif.drif_init = 1'b0;
2400 // force `MCU1.drif.drif_init = 1'b0;
2401 // force `MCU2.drif.drif_init = 1'b0;
2402 // force `MCU3.drif.drif_init = 1'b0;
2403
2404`elsif NON_SLAM_VECTORS // SLAM_VECTORS
2405`else
2406 if ($test$plusargs("NO_MCU_CSR_SLAM")) begin
2407 `PR_INFO ("mcu_mem_config", `INFO, "MCU CSRs not slammed");
2408 end
2409 else begin
2410 force `MCU0.drif.drif_init = 1'b0;
2411 force `MCU1.drif.drif_init = 1'b0;
2412 force `MCU2.drif.drif_init = 1'b0;
2413 force `MCU3.drif.drif_init = 1'b0;
2414 force `MCU0.fbdic.fbdic_chnl_reset_en = 1'b1;
2415 force `MCU1.fbdic.fbdic_chnl_reset_en = 1'b1;
2416 force `MCU2.fbdic.fbdic_chnl_reset_en = 1'b1;
2417 force `MCU3.fbdic.fbdic_chnl_reset_en = 1'b1;
2418 force `MCU0.fbdic.fbdic_chnl_reset_in[0] = 1'b1;
2419 force `MCU1.fbdic.fbdic_chnl_reset_in[0] = 1'b1;
2420 force `MCU2.fbdic.fbdic_chnl_reset_in[0] = 1'b1;
2421 force `MCU3.fbdic.fbdic_chnl_reset_in[0] = 1'b1;
2422
2423`ifdef PALLADIUM
2424 while ((`MCU0.fbdic.fbdic_chnl_reset[0] != 1'b1))
2425 @(posedge dram_clk);
2426
2427 while ((`MCU1.fbdic.fbdic_chnl_reset[0] != 1'b1))
2428 @(posedge dram_clk);
2429
2430 while ((`MCU2.fbdic.fbdic_chnl_reset[0] != 1'b1))
2431 @(posedge dram_clk);
2432
2433 while ((`MCU3.fbdic.fbdic_chnl_reset[0] != 1'b1))
2434 @(posedge dram_clk);
2435
2436`else
2437 wait (`MCU0.fbdic.fbdic_chnl_reset[0] == 1'b1);
2438 wait (`MCU1.fbdic.fbdic_chnl_reset[0] == 1'b1);
2439 wait (`MCU2.fbdic.fbdic_chnl_reset[0] == 1'b1);
2440 wait (`MCU3.fbdic.fbdic_chnl_reset[0] == 1'b1);
2441`endif //PALLADIUM
2442
2443 release `MCU0.fbdic.fbdic_chnl_reset_en;
2444 release `MCU1.fbdic.fbdic_chnl_reset_en;
2445 release `MCU2.fbdic.fbdic_chnl_reset_en;
2446 release `MCU3.fbdic.fbdic_chnl_reset_en;
2447 release `MCU0.fbdic.fbdic_chnl_reset_in[0];
2448 release `MCU1.fbdic.fbdic_chnl_reset_in[0];
2449 release `MCU2.fbdic.fbdic_chnl_reset_in[0];
2450 release `MCU3.fbdic.fbdic_chnl_reset_in[0];
2451
2452 end // else NO_MCU_CSR_SLAM
2453`endif // SLAM_VECTORS
2454
2455`ifdef AXIS_TL
2456end
2457`endif
2458`endif // MCU_GATE
2459
2460 end
2461
2462`ifndef AXIS_TL
2463 initial
2464 begin
2465 $monInit();
2466 end
2467`endif
2468
2469 ////////////////////////////////////////////////////////
2470 // clocks
2471 ////////////////////////////////////////////////////////
2472
2473// The vera shell. Give it the fastest bench clock, always.
2474// You could pass in all the DUTs top wires, but it is not required.
2475// Vera can still get to any hdl node through interface.if.vrh files.
2476// NTB on the otherhand...
2477
2478`ifdef NTB
2479// nothing
2480`else
2481`ifndef AXIS_TL
2482`ifdef FC8_BENCH
2483fc8_top_shell vera_shell(
2484`else
2485fc1_top_shell vera_shell(
2486`endif
2487`ifndef FC_NO_NIU_T2
2488 .m0_rx_data (m0_rx_data[7:0]), // output (vera_shell) => (enet_model)
2489 .m0_rx_crs (m0_rx_crs), // output (enet_model,vera_shell) => ()
2490 .m0_rx_col (m0_rx_col), // output (enet_model,vera_shell) => ()
2491 .m0_rx_dv (m0_rx_dv), // output (vera_shell) => (enet_model)
2492 .m0_rx_config (m0_rx_config[3:0]), // output (vera_shell) => (enet_model)
2493 .m0_rx_err (m0_rx_err), // output (vera_shell) => (enet_model)
2494 .m0_rx_clk (m0_rx_clk), // input (vera_shell) <= (enet_model)
2495 .m0_tx_data (m0_tx_data[7:0]), // input (vera_shell) <= (enet_model)
2496 .m0_tx_en (m0_tx_en), // input (vera_shell) <= (enet_model)
2497 .m0_tx_config (m0_tx_config[3:0]), // output (vera_shell) => (enet_model)
2498 .m0_tx_err (m0_tx_err), // input (vera_shell) <= (enet_model)
2499 .m0_tx_clk (m0_tx_clk), // input (vera_shell) <= (enet_model)
2500 .m1_rx_data (m1_rx_data[7:0]), // output (vera_shell) => (enet_model)
2501 .m1_rx_crs (m1_rx_crs), // output (enet_model,vera_shell) => ()
2502 .m1_rx_col (m1_rx_col), // output (enet_model,vera_shell) => ()
2503 .m1_rx_dv (m1_rx_dv), // output (vera_shell) => (enet_model)
2504 .m1_rx_config (m1_rx_config[3:0]), // output (vera_shell) => (enet_model)
2505 .m1_rx_err (m1_rx_err), // output (vera_shell) => (enet_model)
2506 .m1_rx_clk (m1_rx_clk), // input (vera_shell) <= (enet_model)
2507 .m1_tx_data (m1_tx_data[7:0]), // input (vera_shell) <= (enet_model)
2508 .m1_tx_en (m1_tx_en), // input (vera_shell) <= (enet_model)
2509 .m1_tx_config (m1_tx_config[3:0]), // output (vera_shell) => (enet_model)
2510 .m1_tx_err (m1_tx_err), // input (vera_shell) <= (enet_model)
2511 .m1_tx_clk (m1_tx_clk), // input (vera_shell) <= (enet_model)
2512 .m2_rx_data (m2_rx_data[7:0]), // output (vera_shell) => ()
2513 .m2_rx_crs (m2_rx_crs), // output (vera_shell) => ()
2514 .m2_rx_col (m2_rx_col), // output (vera_shell) => ()
2515 .m2_rx_dv (m2_rx_dv), // output (vera_shell) => ()
2516 .m2_rx_config (m2_rx_config[3:0]), // output (vera_shell) => (enet_model)
2517 .m2_rx_err (m2_rx_err), // output (vera_shell) => ()
2518 .m2_rx_clk (m2_rx_clk), // input (vera_shell) <= (enet_model)
2519 .m2_tx_data (m2_tx_data[7:0]), // input (vera_shell) <= (enet_model)
2520 .m2_tx_en (m2_tx_en), // input (vera_shell) <= (enet_model)
2521 .m2_tx_config (m2_tx_config[3:0]), // output (vera_shell) => (enet_model)
2522 .m2_tx_err (m2_tx_err), // input (vera_shell) <= (enet_model)
2523 .m2_tx_clk (m2_tx_clk), // input (vera_shell) <= (enet_model)
2524 .m3_rx_data (m3_rx_data[7:0]), // output (vera_shell) => ()
2525 .m3_rx_crs (m3_rx_crs), // output (vera_shell) => ()
2526 .m3_rx_col (m3_rx_col), // output (vera_shell) => ()
2527 .m3_rx_dv (m3_rx_dv), // output (vera_shell) => ()
2528 .m3_rx_config (m3_rx_config[3:0]), // output (vera_shell) => (enet_model)
2529 .m3_rx_err (m3_rx_err), // output (vera_shell) => ()
2530 .m3_rx_clk (m3_rx_clk), // input (vera_shell) <= (enet_model)
2531 .m3_tx_data (m3_tx_data[7:0]), // input (vera_shell) <= (enet_model)
2532 .m3_tx_en (m3_tx_en), // input (vera_shell) <= (enet_model)
2533 .m3_tx_config (m3_tx_config[3:0]), // output (vera_shell) => (enet_model)
2534 .m3_tx_err (m3_tx_err), // input (vera_shell) <= (enet_model)
2535 .m3_tx_clk (m3_tx_clk) // input (vera_shell) <= (enet_model)
2536`endif
2537`ifndef FC_NO_PEUSAT_CODE
2538`ifndef FC_NO_PEU_T2
2539 ,.if_ILU_PEU_PCIE_ELEC_IDLE_LANES(ELEC_IDLE_LANES) // output (vera_shell) => (pcie serdes/denali)
2540`endif
2541`endif
2542);
2543`endif //AXIS_TL
2544`endif // !`ifdef NTB
2545
2546 reg [7:0] efuse_core_avail;
2547 reg [16*8:0] tempstr;
2548 reg [63:0] cmp_core_avail;
2549 reg [63:0] cmp_core_enable;
2550 reg [63:0] threads, threadsf;
2551 reg clock;
2552
2553reg[7:0] spc7_pcx_req;
2554reg[7:0] spc7_pcx_req_d1;
2555reg[7:0] spc7_pcx_req_d2;
2556reg[7:0] spc7_pcx_req_d3;
2557reg[7:0] spc7_pcx_req_d4;
2558reg[7:0] spc7_pcx_req_d5;
2559reg[7:0] spc7_pcx_req_d6;
2560reg[7:0] spc7_pcx_req_d7;
2561reg[7:0] spc7_pcx_req_d8;
2562reg[7:0] spc7_pcx_req_d9;
2563reg[7:0] spc7_pcx_req_d10;
2564reg[7:0] spc6_pcx_req;
2565reg[7:0] spc6_pcx_req_d1;
2566reg[7:0] spc6_pcx_req_d2;
2567reg[7:0] spc6_pcx_req_d3;
2568reg[7:0] spc6_pcx_req_d4;
2569reg[7:0] spc6_pcx_req_d5;
2570reg[7:0] spc6_pcx_req_d6;
2571reg[7:0] spc6_pcx_req_d7;
2572reg[7:0] spc6_pcx_req_d8;
2573reg[7:0] spc6_pcx_req_d9;
2574reg[7:0] spc6_pcx_req_d10;
2575reg[7:0] spc5_pcx_req;
2576reg[7:0] spc5_pcx_req_d1;
2577reg[7:0] spc5_pcx_req_d2;
2578reg[7:0] spc5_pcx_req_d3;
2579reg[7:0] spc5_pcx_req_d4;
2580reg[7:0] spc5_pcx_req_d5;
2581reg[7:0] spc5_pcx_req_d6;
2582reg[7:0] spc5_pcx_req_d7;
2583reg[7:0] spc5_pcx_req_d8;
2584reg[7:0] spc5_pcx_req_d9;
2585reg[7:0] spc5_pcx_req_d10;
2586reg[7:0] spc4_pcx_req;
2587reg[7:0] spc4_pcx_req_d1;
2588reg[7:0] spc4_pcx_req_d2;
2589reg[7:0] spc4_pcx_req_d3;
2590reg[7:0] spc4_pcx_req_d4;
2591reg[7:0] spc4_pcx_req_d5;
2592reg[7:0] spc4_pcx_req_d6;
2593reg[7:0] spc4_pcx_req_d7;
2594reg[7:0] spc4_pcx_req_d8;
2595reg[7:0] spc4_pcx_req_d9;
2596reg[7:0] spc4_pcx_req_d10;
2597reg[7:0] spc3_pcx_req;
2598reg[7:0] spc3_pcx_req_d1;
2599reg[7:0] spc3_pcx_req_d2;
2600reg[7:0] spc3_pcx_req_d3;
2601reg[7:0] spc3_pcx_req_d4;
2602reg[7:0] spc3_pcx_req_d5;
2603reg[7:0] spc3_pcx_req_d6;
2604reg[7:0] spc3_pcx_req_d7;
2605reg[7:0] spc3_pcx_req_d8;
2606reg[7:0] spc3_pcx_req_d9;
2607reg[7:0] spc3_pcx_req_d10;
2608reg[7:0] spc2_pcx_req;
2609reg[7:0] spc2_pcx_req_d1;
2610reg[7:0] spc2_pcx_req_d2;
2611reg[7:0] spc2_pcx_req_d3;
2612reg[7:0] spc2_pcx_req_d4;
2613reg[7:0] spc2_pcx_req_d5;
2614reg[7:0] spc2_pcx_req_d6;
2615reg[7:0] spc2_pcx_req_d7;
2616reg[7:0] spc2_pcx_req_d8;
2617reg[7:0] spc2_pcx_req_d9;
2618reg[7:0] spc2_pcx_req_d10;
2619reg[7:0] spc1_pcx_req;
2620reg[7:0] spc1_pcx_req_d1;
2621reg[7:0] spc1_pcx_req_d2;
2622reg[7:0] spc1_pcx_req_d3;
2623reg[7:0] spc1_pcx_req_d4;
2624reg[7:0] spc1_pcx_req_d5;
2625reg[7:0] spc1_pcx_req_d6;
2626reg[7:0] spc1_pcx_req_d7;
2627reg[7:0] spc1_pcx_req_d8;
2628reg[7:0] spc1_pcx_req_d9;
2629reg[7:0] spc1_pcx_req_d10;
2630reg[7:0] spc0_pcx_req;
2631reg[7:0] spc0_pcx_req_d1;
2632reg[7:0] spc0_pcx_req_d2;
2633reg[7:0] spc0_pcx_req_d3;
2634reg[7:0] spc0_pcx_req_d4;
2635reg[7:0] spc0_pcx_req_d5;
2636reg[7:0] spc0_pcx_req_d6;
2637reg[7:0] spc0_pcx_req_d7;
2638reg[7:0] spc0_pcx_req_d8;
2639reg[7:0] spc0_pcx_req_d9;
2640reg[7:0] spc0_pcx_req_d10;
2641
2642reg[7:0] spc7_pcx_atm;
2643reg[7:0] spc7_pcx_atm_d1;
2644reg[7:0] spc7_pcx_atm_d2;
2645reg[7:0] spc7_pcx_atm_d3;
2646reg[7:0] spc7_pcx_atm_d4;
2647reg[7:0] spc7_pcx_atm_d5;
2648reg[7:0] spc7_pcx_atm_d6;
2649reg[7:0] spc7_pcx_atm_d7;
2650reg[7:0] spc7_pcx_atm_d8;
2651reg[7:0] spc7_pcx_atm_d9;
2652reg[7:0] spc7_pcx_atm_d10;
2653reg[7:0] spc6_pcx_atm;
2654reg[7:0] spc6_pcx_atm_d1;
2655reg[7:0] spc6_pcx_atm_d2;
2656reg[7:0] spc6_pcx_atm_d3;
2657reg[7:0] spc6_pcx_atm_d4;
2658reg[7:0] spc6_pcx_atm_d5;
2659reg[7:0] spc6_pcx_atm_d6;
2660reg[7:0] spc6_pcx_atm_d7;
2661reg[7:0] spc6_pcx_atm_d8;
2662reg[7:0] spc6_pcx_atm_d9;
2663reg[7:0] spc6_pcx_atm_d10;
2664reg[7:0] spc5_pcx_atm;
2665reg[7:0] spc5_pcx_atm_d1;
2666reg[7:0] spc5_pcx_atm_d2;
2667reg[7:0] spc5_pcx_atm_d3;
2668reg[7:0] spc5_pcx_atm_d4;
2669reg[7:0] spc5_pcx_atm_d5;
2670reg[7:0] spc5_pcx_atm_d6;
2671reg[7:0] spc5_pcx_atm_d7;
2672reg[7:0] spc5_pcx_atm_d8;
2673reg[7:0] spc5_pcx_atm_d9;
2674reg[7:0] spc5_pcx_atm_d10;
2675reg[7:0] spc4_pcx_atm;
2676reg[7:0] spc4_pcx_atm_d1;
2677reg[7:0] spc4_pcx_atm_d2;
2678reg[7:0] spc4_pcx_atm_d3;
2679reg[7:0] spc4_pcx_atm_d4;
2680reg[7:0] spc4_pcx_atm_d5;
2681reg[7:0] spc4_pcx_atm_d6;
2682reg[7:0] spc4_pcx_atm_d7;
2683reg[7:0] spc4_pcx_atm_d8;
2684reg[7:0] spc4_pcx_atm_d9;
2685reg[7:0] spc4_pcx_atm_d10;
2686reg[7:0] spc3_pcx_atm;
2687reg[7:0] spc3_pcx_atm_d1;
2688reg[7:0] spc3_pcx_atm_d2;
2689reg[7:0] spc3_pcx_atm_d3;
2690reg[7:0] spc3_pcx_atm_d4;
2691reg[7:0] spc3_pcx_atm_d5;
2692reg[7:0] spc3_pcx_atm_d6;
2693reg[7:0] spc3_pcx_atm_d7;
2694reg[7:0] spc3_pcx_atm_d8;
2695reg[7:0] spc3_pcx_atm_d9;
2696reg[7:0] spc3_pcx_atm_d10;
2697reg[7:0] spc2_pcx_atm;
2698reg[7:0] spc2_pcx_atm_d1;
2699reg[7:0] spc2_pcx_atm_d2;
2700reg[7:0] spc2_pcx_atm_d3;
2701reg[7:0] spc2_pcx_atm_d4;
2702reg[7:0] spc2_pcx_atm_d5;
2703reg[7:0] spc2_pcx_atm_d6;
2704reg[7:0] spc2_pcx_atm_d7;
2705reg[7:0] spc2_pcx_atm_d8;
2706reg[7:0] spc2_pcx_atm_d9;
2707reg[7:0] spc2_pcx_atm_d10;
2708reg[7:0] spc1_pcx_atm;
2709reg[7:0] spc1_pcx_atm_d1;
2710reg[7:0] spc1_pcx_atm_d2;
2711reg[7:0] spc1_pcx_atm_d3;
2712reg[7:0] spc1_pcx_atm_d4;
2713reg[7:0] spc1_pcx_atm_d5;
2714reg[7:0] spc1_pcx_atm_d6;
2715reg[7:0] spc1_pcx_atm_d7;
2716reg[7:0] spc1_pcx_atm_d8;
2717reg[7:0] spc1_pcx_atm_d9;
2718reg[7:0] spc1_pcx_atm_d10;
2719reg[7:0] spc0_pcx_atm;
2720reg[7:0] spc0_pcx_atm_d1;
2721reg[7:0] spc0_pcx_atm_d2;
2722reg[7:0] spc0_pcx_atm_d3;
2723reg[7:0] spc0_pcx_atm_d4;
2724reg[7:0] spc0_pcx_atm_d5;
2725reg[7:0] spc0_pcx_atm_d6;
2726reg[7:0] spc0_pcx_atm_d7;
2727reg[7:0] spc0_pcx_atm_d8;
2728reg[7:0] spc0_pcx_atm_d9;
2729reg[7:0] spc0_pcx_atm_d10;
2730
2731reg[7:0] l2t7_cpx_req_d1;
2732reg[7:0] l2t7_cpx_req_d2;
2733reg[7:0] l2t7_cpx_req_d3;
2734reg[7:0] l2t7_cpx_req_d4;
2735reg[7:0] l2t6_cpx_req_d1;
2736reg[7:0] l2t6_cpx_req_d2;
2737reg[7:0] l2t6_cpx_req_d3;
2738reg[7:0] l2t6_cpx_req_d4;
2739reg[7:0] l2t5_cpx_req_d1;
2740reg[7:0] l2t5_cpx_req_d2;
2741reg[7:0] l2t5_cpx_req_d3;
2742reg[7:0] l2t5_cpx_req_d4;
2743reg[7:0] l2t4_cpx_req_d1;
2744reg[7:0] l2t4_cpx_req_d2;
2745reg[7:0] l2t4_cpx_req_d3;
2746reg[7:0] l2t4_cpx_req_d4;
2747reg[7:0] l2t3_cpx_req_d1;
2748reg[7:0] l2t3_cpx_req_d2;
2749reg[7:0] l2t3_cpx_req_d3;
2750reg[7:0] l2t3_cpx_req_d4;
2751reg[7:0] l2t2_cpx_req_d1;
2752reg[7:0] l2t2_cpx_req_d2;
2753reg[7:0] l2t2_cpx_req_d3;
2754reg[7:0] l2t2_cpx_req_d4;
2755reg[7:0] l2t1_cpx_req_d1;
2756reg[7:0] l2t1_cpx_req_d2;
2757reg[7:0] l2t1_cpx_req_d3;
2758reg[7:0] l2t1_cpx_req_d4;
2759reg[7:0] l2t0_cpx_req_d1;
2760reg[7:0] l2t0_cpx_req_d2;
2761reg[7:0] l2t0_cpx_req_d3;
2762reg[7:0] l2t0_cpx_req_d4;
2763
2764reg[7:0] l2t7_cpx_atom_d1;
2765reg[7:0] l2t7_cpx_atom_d2;
2766reg[7:0] l2t7_cpx_atom_d3;
2767reg[7:0] l2t7_cpx_atom_d4;
2768reg[7:0] l2t6_cpx_atom_d1;
2769reg[7:0] l2t6_cpx_atom_d2;
2770reg[7:0] l2t6_cpx_atom_d3;
2771reg[7:0] l2t6_cpx_atom_d4;
2772reg[7:0] l2t5_cpx_atom_d1;
2773reg[7:0] l2t5_cpx_atom_d2;
2774reg[7:0] l2t5_cpx_atom_d3;
2775reg[7:0] l2t5_cpx_atom_d4;
2776reg[7:0] l2t4_cpx_atom_d1;
2777reg[7:0] l2t4_cpx_atom_d2;
2778reg[7:0] l2t4_cpx_atom_d3;
2779reg[7:0] l2t4_cpx_atom_d4;
2780reg[7:0] l2t3_cpx_atom_d1;
2781reg[7:0] l2t3_cpx_atom_d2;
2782reg[7:0] l2t3_cpx_atom_d3;
2783reg[7:0] l2t3_cpx_atom_d4;
2784reg[7:0] l2t2_cpx_atom_d1;
2785reg[7:0] l2t2_cpx_atom_d2;
2786reg[7:0] l2t2_cpx_atom_d3;
2787reg[7:0] l2t2_cpx_atom_d4;
2788reg[7:0] l2t1_cpx_atom_d1;
2789reg[7:0] l2t1_cpx_atom_d2;
2790reg[7:0] l2t1_cpx_atom_d3;
2791reg[7:0] l2t1_cpx_atom_d4;
2792reg[7:0] l2t0_cpx_atom_d1;
2793reg[7:0] l2t0_cpx_atom_d2;
2794reg[7:0] l2t0_cpx_atom_d3;
2795reg[7:0] l2t0_cpx_atom_d4;
2796
2797 reg mcu0_l2t0_data_vld_r0;
2798 reg mcu0_l2t0_data_vld_d1;
2799 reg mcu0_l2t0_data_vld_d2;
2800 reg mcu0_l2t0_data_vld_d3;
2801 reg mcu1_l2t0_data_vld_r0;
2802 reg mcu1_l2t0_data_vld_d1;
2803 reg mcu1_l2t0_data_vld_d2;
2804 reg mcu1_l2t0_data_vld_d3;
2805 reg mcu2_l2t0_data_vld_r0;
2806 reg mcu2_l2t0_data_vld_d1;
2807 reg mcu2_l2t0_data_vld_d2;
2808 reg mcu2_l2t0_data_vld_d3;
2809 reg mcu3_l2t0_data_vld_r0;
2810 reg mcu3_l2t0_data_vld_d1;
2811 reg mcu3_l2t0_data_vld_d2;
2812 reg mcu3_l2t0_data_vld_d3;
2813 reg mcu0_l2t1_data_vld_r0;
2814 reg mcu0_l2t1_data_vld_d1;
2815 reg mcu0_l2t1_data_vld_d2;
2816 reg mcu0_l2t1_data_vld_d3;
2817 reg mcu1_l2t1_data_vld_r0;
2818 reg mcu1_l2t1_data_vld_d1;
2819 reg mcu1_l2t1_data_vld_d2;
2820 reg mcu1_l2t1_data_vld_d3;
2821 reg mcu2_l2t1_data_vld_r0;
2822 reg mcu2_l2t1_data_vld_d1;
2823 reg mcu2_l2t1_data_vld_d2;
2824 reg mcu2_l2t1_data_vld_d3;
2825 reg mcu3_l2t1_data_vld_r0;
2826 reg mcu3_l2t1_data_vld_d1;
2827 reg mcu3_l2t1_data_vld_d2;
2828 reg mcu3_l2t1_data_vld_d3;
2829
2830initial begin
2831assign spc7_pcx_req = `CCX.spc7_pcx_req_pq;
2832assign spc6_pcx_req = `CCX.spc6_pcx_req_pq;
2833assign spc5_pcx_req = `CCX.spc5_pcx_req_pq;
2834assign spc4_pcx_req = `CCX.spc4_pcx_req_pq;
2835assign spc3_pcx_req = `CCX.spc3_pcx_req_pq;
2836assign spc2_pcx_req = `CCX.spc2_pcx_req_pq;
2837assign spc1_pcx_req = `CCX.spc1_pcx_req_pq;
2838assign spc0_pcx_req = `CCX.spc0_pcx_req_pq;
2839
2840
2841assign spc0_pcx_atm = `CCX.spc0_pcx_atm_pq;
2842assign spc1_pcx_atm = `CCX.spc1_pcx_atm_pq;
2843assign spc2_pcx_atm = `CCX.spc2_pcx_atm_pq;
2844assign spc3_pcx_atm = `CCX.spc3_pcx_atm_pq;
2845assign spc4_pcx_atm = `CCX.spc4_pcx_atm_pq;
2846assign spc5_pcx_atm = `CCX.spc5_pcx_atm_pq;
2847assign spc6_pcx_atm = `CCX.spc6_pcx_atm_pq;
2848assign spc7_pcx_atm = `CCX.spc7_pcx_atm_pq;
2849end
2850
2851always @(posedge clock)
2852begin
2853spc0_pcx_req_d1[7:0] <= spc0_pcx_req[7:0] ;
2854spc0_pcx_req_d2[7:0] <= spc0_pcx_req_d1[7:0] ;
2855spc0_pcx_req_d3[7:0] <= spc0_pcx_req_d2[7:0] ;
2856spc0_pcx_req_d4[7:0] <= spc0_pcx_req_d3[7:0] ;
2857spc0_pcx_req_d5[7:0] <= spc0_pcx_req_d4[7:0] ;
2858spc0_pcx_req_d6[7:0] <= spc0_pcx_req_d5[7:0] ;
2859spc0_pcx_req_d7[7:0] <= spc0_pcx_req_d6[7:0] ;
2860spc0_pcx_req_d8[7:0] <= spc0_pcx_req_d7[7:0] ;
2861spc0_pcx_req_d9[7:0] <= spc0_pcx_req_d8[7:0] ;
2862spc0_pcx_req_d10[7:0] <= spc0_pcx_req_d9[7:0] ;
2863spc1_pcx_req_d1[7:0] <= spc1_pcx_req[7:0] ;
2864spc1_pcx_req_d2[7:0] <= spc1_pcx_req_d1[7:0] ;
2865spc1_pcx_req_d3[7:0] <= spc1_pcx_req_d2[7:0] ;
2866spc1_pcx_req_d4[7:0] <= spc1_pcx_req_d3[7:0] ;
2867spc1_pcx_req_d5[7:0] <= spc1_pcx_req_d4[7:0] ;
2868spc1_pcx_req_d6[7:0] <= spc1_pcx_req_d5[7:0] ;
2869spc1_pcx_req_d7[7:0] <= spc1_pcx_req_d6[7:0] ;
2870spc1_pcx_req_d8[7:0] <= spc1_pcx_req_d7[7:0] ;
2871spc1_pcx_req_d9[7:0] <= spc1_pcx_req_d8[7:0] ;
2872spc1_pcx_req_d10[7:0] <= spc1_pcx_req_d9[7:0] ;
2873spc2_pcx_req_d1[7:0] <= spc2_pcx_req[7:0] ;
2874spc2_pcx_req_d2[7:0] <= spc2_pcx_req_d1[7:0] ;
2875spc2_pcx_req_d3[7:0] <= spc2_pcx_req_d2[7:0] ;
2876spc2_pcx_req_d4[7:0] <= spc2_pcx_req_d3[7:0] ;
2877spc2_pcx_req_d5[7:0] <= spc2_pcx_req_d4[7:0] ;
2878spc2_pcx_req_d6[7:0] <= spc2_pcx_req_d5[7:0] ;
2879spc2_pcx_req_d7[7:0] <= spc2_pcx_req_d6[7:0] ;
2880spc2_pcx_req_d8[7:0] <= spc2_pcx_req_d7[7:0] ;
2881spc2_pcx_req_d9[7:0] <= spc2_pcx_req_d8[7:0] ;
2882spc2_pcx_req_d10[7:0] <= spc2_pcx_req_d9[7:0] ;
2883spc3_pcx_req_d1[7:0] <= spc3_pcx_req[7:0] ;
2884spc3_pcx_req_d2[7:0] <= spc3_pcx_req_d1[7:0] ;
2885spc3_pcx_req_d3[7:0] <= spc3_pcx_req_d2[7:0] ;
2886spc3_pcx_req_d4[7:0] <= spc3_pcx_req_d3[7:0] ;
2887spc3_pcx_req_d5[7:0] <= spc3_pcx_req_d4[7:0] ;
2888spc3_pcx_req_d6[7:0] <= spc3_pcx_req_d5[7:0] ;
2889spc3_pcx_req_d7[7:0] <= spc3_pcx_req_d6[7:0] ;
2890spc3_pcx_req_d8[7:0] <= spc3_pcx_req_d7[7:0] ;
2891spc3_pcx_req_d9[7:0] <= spc3_pcx_req_d8[7:0] ;
2892spc3_pcx_req_d10[7:0] <= spc3_pcx_req_d9[7:0] ;
2893spc4_pcx_req_d1[7:0] <= spc4_pcx_req[7:0] ;
2894spc4_pcx_req_d2[7:0] <= spc4_pcx_req_d1[7:0] ;
2895spc4_pcx_req_d3[7:0] <= spc4_pcx_req_d2[7:0] ;
2896spc4_pcx_req_d4[7:0] <= spc4_pcx_req_d3[7:0] ;
2897spc4_pcx_req_d5[7:0] <= spc4_pcx_req_d4[7:0] ;
2898spc4_pcx_req_d6[7:0] <= spc4_pcx_req_d5[7:0] ;
2899spc4_pcx_req_d7[7:0] <= spc4_pcx_req_d6[7:0] ;
2900spc4_pcx_req_d8[7:0] <= spc4_pcx_req_d7[7:0] ;
2901spc4_pcx_req_d9[7:0] <= spc4_pcx_req_d8[7:0] ;
2902spc4_pcx_req_d10[7:0] <= spc4_pcx_req_d9[7:0] ;
2903spc5_pcx_req_d1[7:0] <= spc5_pcx_req[7:0] ;
2904spc5_pcx_req_d2[7:0] <= spc5_pcx_req_d1[7:0] ;
2905spc5_pcx_req_d3[7:0] <= spc5_pcx_req_d2[7:0] ;
2906spc5_pcx_req_d4[7:0] <= spc5_pcx_req_d3[7:0] ;
2907spc5_pcx_req_d5[7:0] <= spc5_pcx_req_d4[7:0] ;
2908spc5_pcx_req_d6[7:0] <= spc5_pcx_req_d5[7:0] ;
2909spc5_pcx_req_d7[7:0] <= spc5_pcx_req_d6[7:0] ;
2910spc5_pcx_req_d8[7:0] <= spc5_pcx_req_d7[7:0] ;
2911spc5_pcx_req_d9[7:0] <= spc5_pcx_req_d8[7:0] ;
2912spc5_pcx_req_d10[7:0] <= spc5_pcx_req_d9[7:0] ;
2913spc6_pcx_req_d1[7:0] <= spc6_pcx_req[7:0] ;
2914spc6_pcx_req_d2[7:0] <= spc6_pcx_req_d1[7:0] ;
2915spc6_pcx_req_d3[7:0] <= spc6_pcx_req_d2[7:0] ;
2916spc6_pcx_req_d4[7:0] <= spc6_pcx_req_d3[7:0] ;
2917spc6_pcx_req_d5[7:0] <= spc6_pcx_req_d4[7:0] ;
2918spc6_pcx_req_d6[7:0] <= spc6_pcx_req_d5[7:0] ;
2919spc6_pcx_req_d7[7:0] <= spc6_pcx_req_d6[7:0] ;
2920spc6_pcx_req_d8[7:0] <= spc6_pcx_req_d7[7:0] ;
2921spc6_pcx_req_d9[7:0] <= spc6_pcx_req_d8[7:0] ;
2922spc6_pcx_req_d10[7:0] <= spc6_pcx_req_d9[7:0] ;
2923spc7_pcx_req_d1[7:0] <= spc7_pcx_req[7:0] ;
2924spc7_pcx_req_d2[7:0] <= spc7_pcx_req_d1[7:0] ;
2925spc7_pcx_req_d3[7:0] <= spc7_pcx_req_d2[7:0] ;
2926spc7_pcx_req_d4[7:0] <= spc7_pcx_req_d3[7:0] ;
2927spc7_pcx_req_d5[7:0] <= spc7_pcx_req_d4[7:0] ;
2928spc7_pcx_req_d6[7:0] <= spc7_pcx_req_d5[7:0] ;
2929spc7_pcx_req_d7[7:0] <= spc7_pcx_req_d6[7:0] ;
2930spc7_pcx_req_d8[7:0] <= spc7_pcx_req_d7[7:0] ;
2931spc7_pcx_req_d9[7:0] <= spc7_pcx_req_d8[7:0] ;
2932spc7_pcx_req_d10[7:0] <= spc7_pcx_req_d9[7:0] ;
2933spc0_pcx_atm_d1[7:0] <= spc0_pcx_atm[7:0] ;
2934spc0_pcx_atm_d2[7:0] <= spc0_pcx_atm_d1[7:0] ;
2935spc0_pcx_atm_d3[7:0] <= spc0_pcx_atm_d2[7:0] ;
2936spc0_pcx_atm_d4[7:0] <= spc0_pcx_atm_d3[7:0] ;
2937spc0_pcx_atm_d5[7:0] <= spc0_pcx_atm_d4[7:0] ;
2938spc0_pcx_atm_d6[7:0] <= spc0_pcx_atm_d5[7:0] ;
2939spc0_pcx_atm_d7[7:0] <= spc0_pcx_atm_d6[7:0] ;
2940spc0_pcx_atm_d8[7:0] <= spc0_pcx_atm_d7[7:0] ;
2941spc0_pcx_atm_d9[7:0] <= spc0_pcx_atm_d8[7:0] ;
2942spc0_pcx_atm_d10[7:0] <= spc0_pcx_atm_d9[7:0] ;
2943spc1_pcx_atm_d1[7:0] <= spc1_pcx_atm[7:0] ;
2944spc1_pcx_atm_d2[7:0] <= spc1_pcx_atm_d1[7:0] ;
2945spc1_pcx_atm_d3[7:0] <= spc1_pcx_atm_d2[7:0] ;
2946spc1_pcx_atm_d4[7:0] <= spc1_pcx_atm_d3[7:0] ;
2947spc1_pcx_atm_d5[7:0] <= spc1_pcx_atm_d4[7:0] ;
2948spc1_pcx_atm_d6[7:0] <= spc1_pcx_atm_d5[7:0] ;
2949spc1_pcx_atm_d7[7:0] <= spc1_pcx_atm_d6[7:0] ;
2950spc1_pcx_atm_d8[7:0] <= spc1_pcx_atm_d7[7:0] ;
2951spc1_pcx_atm_d9[7:0] <= spc1_pcx_atm_d8[7:0] ;
2952spc1_pcx_atm_d10[7:0] <= spc1_pcx_atm_d9[7:0] ;
2953spc2_pcx_atm_d1[7:0] <= spc2_pcx_atm[7:0] ;
2954spc2_pcx_atm_d2[7:0] <= spc2_pcx_atm_d1[7:0] ;
2955spc2_pcx_atm_d3[7:0] <= spc2_pcx_atm_d2[7:0] ;
2956spc2_pcx_atm_d4[7:0] <= spc2_pcx_atm_d3[7:0] ;
2957spc2_pcx_atm_d5[7:0] <= spc2_pcx_atm_d4[7:0] ;
2958spc2_pcx_atm_d6[7:0] <= spc2_pcx_atm_d5[7:0] ;
2959spc2_pcx_atm_d7[7:0] <= spc2_pcx_atm_d6[7:0] ;
2960spc2_pcx_atm_d8[7:0] <= spc2_pcx_atm_d7[7:0] ;
2961spc2_pcx_atm_d9[7:0] <= spc2_pcx_atm_d8[7:0] ;
2962spc2_pcx_atm_d10[7:0] <= spc2_pcx_atm_d9[7:0] ;
2963spc3_pcx_atm_d1[7:0] <= spc3_pcx_atm[7:0] ;
2964spc3_pcx_atm_d2[7:0] <= spc3_pcx_atm_d1[7:0] ;
2965spc3_pcx_atm_d3[7:0] <= spc3_pcx_atm_d2[7:0] ;
2966spc3_pcx_atm_d4[7:0] <= spc3_pcx_atm_d3[7:0] ;
2967spc3_pcx_atm_d5[7:0] <= spc3_pcx_atm_d4[7:0] ;
2968spc3_pcx_atm_d6[7:0] <= spc3_pcx_atm_d5[7:0] ;
2969spc3_pcx_atm_d7[7:0] <= spc3_pcx_atm_d6[7:0] ;
2970spc3_pcx_atm_d8[7:0] <= spc3_pcx_atm_d7[7:0] ;
2971spc3_pcx_atm_d9[7:0] <= spc3_pcx_atm_d8[7:0] ;
2972spc3_pcx_atm_d10[7:0] <= spc3_pcx_atm_d9[7:0] ;
2973spc4_pcx_atm_d1[7:0] <= spc4_pcx_atm[7:0] ;
2974spc4_pcx_atm_d2[7:0] <= spc4_pcx_atm_d1[7:0] ;
2975spc4_pcx_atm_d3[7:0] <= spc4_pcx_atm_d2[7:0] ;
2976spc4_pcx_atm_d4[7:0] <= spc4_pcx_atm_d3[7:0] ;
2977spc4_pcx_atm_d5[7:0] <= spc4_pcx_atm_d4[7:0] ;
2978spc4_pcx_atm_d6[7:0] <= spc4_pcx_atm_d5[7:0] ;
2979spc4_pcx_atm_d7[7:0] <= spc4_pcx_atm_d6[7:0] ;
2980spc4_pcx_atm_d8[7:0] <= spc4_pcx_atm_d7[7:0] ;
2981spc4_pcx_atm_d9[7:0] <= spc4_pcx_atm_d8[7:0] ;
2982spc4_pcx_atm_d10[7:0] <= spc4_pcx_atm_d9[7:0] ;
2983spc5_pcx_atm_d1[7:0] <= spc5_pcx_atm[7:0] ;
2984spc5_pcx_atm_d2[7:0] <= spc5_pcx_atm_d1[7:0] ;
2985spc5_pcx_atm_d3[7:0] <= spc5_pcx_atm_d2[7:0] ;
2986spc5_pcx_atm_d4[7:0] <= spc5_pcx_atm_d3[7:0] ;
2987spc5_pcx_atm_d5[7:0] <= spc5_pcx_atm_d4[7:0] ;
2988spc5_pcx_atm_d6[7:0] <= spc5_pcx_atm_d5[7:0] ;
2989spc5_pcx_atm_d7[7:0] <= spc5_pcx_atm_d6[7:0] ;
2990spc5_pcx_atm_d8[7:0] <= spc5_pcx_atm_d7[7:0] ;
2991spc5_pcx_atm_d9[7:0] <= spc5_pcx_atm_d8[7:0] ;
2992spc5_pcx_atm_d10[7:0] <= spc5_pcx_atm_d9[7:0] ;
2993spc6_pcx_atm_d1[7:0] <= spc6_pcx_atm[7:0] ;
2994spc6_pcx_atm_d2[7:0] <= spc6_pcx_atm_d1[7:0] ;
2995spc6_pcx_atm_d3[7:0] <= spc6_pcx_atm_d2[7:0] ;
2996spc6_pcx_atm_d4[7:0] <= spc6_pcx_atm_d3[7:0] ;
2997spc6_pcx_atm_d5[7:0] <= spc6_pcx_atm_d4[7:0] ;
2998spc6_pcx_atm_d6[7:0] <= spc6_pcx_atm_d5[7:0] ;
2999spc6_pcx_atm_d7[7:0] <= spc6_pcx_atm_d6[7:0] ;
3000spc6_pcx_atm_d8[7:0] <= spc6_pcx_atm_d7[7:0] ;
3001spc6_pcx_atm_d9[7:0] <= spc6_pcx_atm_d8[7:0] ;
3002spc6_pcx_atm_d10[7:0] <= spc6_pcx_atm_d9[7:0] ;
3003spc7_pcx_atm_d1[7:0] <= spc7_pcx_atm[7:0] ;
3004spc7_pcx_atm_d2[7:0] <= spc7_pcx_atm_d1[7:0] ;
3005spc7_pcx_atm_d3[7:0] <= spc7_pcx_atm_d2[7:0] ;
3006spc7_pcx_atm_d4[7:0] <= spc7_pcx_atm_d3[7:0] ;
3007spc7_pcx_atm_d5[7:0] <= spc7_pcx_atm_d4[7:0] ;
3008spc7_pcx_atm_d6[7:0] <= spc7_pcx_atm_d5[7:0] ;
3009spc7_pcx_atm_d7[7:0] <= spc7_pcx_atm_d6[7:0] ;
3010spc7_pcx_atm_d8[7:0] <= spc7_pcx_atm_d7[7:0] ;
3011spc7_pcx_atm_d9[7:0] <= spc7_pcx_atm_d8[7:0] ;
3012spc7_pcx_atm_d10[7:0] <= spc7_pcx_atm_d9[7:0] ;
3013
3014l2t0_cpx_req_d2[7:0] <= l2t0_cpx_req_d1[7:0] ;
3015l2t0_cpx_req_d3[7:0] <= l2t0_cpx_req_d2[7:0] ;
3016l2t0_cpx_req_d4[7:0] <= l2t0_cpx_req_d3[7:0] ;
3017l2t1_cpx_req_d2[7:0] <= l2t1_cpx_req_d1[7:0] ;
3018l2t1_cpx_req_d3[7:0] <= l2t1_cpx_req_d2[7:0] ;
3019l2t1_cpx_req_d4[7:0] <= l2t1_cpx_req_d3[7:0] ;
3020l2t2_cpx_req_d2[7:0] <= l2t2_cpx_req_d1[7:0] ;
3021l2t2_cpx_req_d3[7:0] <= l2t2_cpx_req_d2[7:0] ;
3022l2t2_cpx_req_d4[7:0] <= l2t2_cpx_req_d3[7:0] ;
3023l2t3_cpx_req_d2[7:0] <= l2t3_cpx_req_d1[7:0] ;
3024l2t3_cpx_req_d3[7:0] <= l2t3_cpx_req_d2[7:0] ;
3025l2t3_cpx_req_d4[7:0] <= l2t3_cpx_req_d3[7:0] ;
3026l2t4_cpx_req_d2[7:0] <= l2t4_cpx_req_d1[7:0] ;
3027l2t4_cpx_req_d3[7:0] <= l2t4_cpx_req_d2[7:0] ;
3028l2t4_cpx_req_d4[7:0] <= l2t4_cpx_req_d3[7:0] ;
3029l2t5_cpx_req_d2[7:0] <= l2t5_cpx_req_d1[7:0] ;
3030l2t5_cpx_req_d3[7:0] <= l2t5_cpx_req_d2[7:0] ;
3031l2t5_cpx_req_d4[7:0] <= l2t5_cpx_req_d3[7:0] ;
3032l2t6_cpx_req_d2[7:0] <= l2t6_cpx_req_d1[7:0] ;
3033l2t6_cpx_req_d3[7:0] <= l2t6_cpx_req_d2[7:0] ;
3034l2t6_cpx_req_d4[7:0] <= l2t6_cpx_req_d3[7:0] ;
3035l2t7_cpx_req_d2[7:0] <= l2t7_cpx_req_d1[7:0] ;
3036l2t7_cpx_req_d3[7:0] <= l2t7_cpx_req_d2[7:0] ;
3037l2t7_cpx_req_d4[7:0] <= l2t7_cpx_req_d3[7:0] ;
3038l2t0_cpx_atom_d2[7:0] <= l2t0_cpx_atom_d1[7:0] ;
3039l2t0_cpx_atom_d3[7:0] <= l2t0_cpx_atom_d2[7:0] ;
3040l2t0_cpx_atom_d4[7:0] <= l2t0_cpx_atom_d3[7:0] ;
3041l2t1_cpx_atom_d2[7:0] <= l2t1_cpx_atom_d1[7:0] ;
3042l2t1_cpx_atom_d3[7:0] <= l2t1_cpx_atom_d2[7:0] ;
3043l2t1_cpx_atom_d4[7:0] <= l2t1_cpx_atom_d3[7:0] ;
3044l2t2_cpx_atom_d2[7:0] <= l2t2_cpx_atom_d1[7:0] ;
3045l2t2_cpx_atom_d3[7:0] <= l2t2_cpx_atom_d2[7:0] ;
3046l2t2_cpx_atom_d4[7:0] <= l2t2_cpx_atom_d3[7:0] ;
3047l2t3_cpx_atom_d2[7:0] <= l2t3_cpx_atom_d1[7:0] ;
3048l2t3_cpx_atom_d3[7:0] <= l2t3_cpx_atom_d2[7:0] ;
3049l2t3_cpx_atom_d4[7:0] <= l2t3_cpx_atom_d3[7:0] ;
3050l2t4_cpx_atom_d2[7:0] <= l2t4_cpx_atom_d1[7:0] ;
3051l2t4_cpx_atom_d3[7:0] <= l2t4_cpx_atom_d2[7:0] ;
3052l2t4_cpx_atom_d4[7:0] <= l2t4_cpx_atom_d3[7:0] ;
3053l2t5_cpx_atom_d2[7:0] <= l2t5_cpx_atom_d1[7:0] ;
3054l2t5_cpx_atom_d3[7:0] <= l2t5_cpx_atom_d2[7:0] ;
3055l2t5_cpx_atom_d4[7:0] <= l2t5_cpx_atom_d3[7:0] ;
3056l2t6_cpx_atom_d2[7:0] <= l2t6_cpx_atom_d1[7:0] ;
3057l2t6_cpx_atom_d3[7:0] <= l2t6_cpx_atom_d2[7:0] ;
3058l2t6_cpx_atom_d4[7:0] <= l2t6_cpx_atom_d3[7:0] ;
3059l2t7_cpx_atom_d2[7:0] <= l2t7_cpx_atom_d1[7:0] ;
3060l2t7_cpx_atom_d3[7:0] <= l2t7_cpx_atom_d2[7:0] ;
3061l2t7_cpx_atom_d4[7:0] <= l2t7_cpx_atom_d3[7:0] ;
3062mcu0_l2t0_data_vld_d1 <= mcu0_l2t0_data_vld_r0 ;
3063mcu0_l2t0_data_vld_d2 <= mcu0_l2t0_data_vld_d1 ;
3064mcu0_l2t0_data_vld_d3 <= mcu0_l2t0_data_vld_d2 ;
3065mcu1_l2t0_data_vld_d1 <= mcu1_l2t0_data_vld_r0 ;
3066mcu1_l2t0_data_vld_d2 <= mcu1_l2t0_data_vld_d1 ;
3067mcu1_l2t0_data_vld_d3 <= mcu1_l2t0_data_vld_d2 ;
3068mcu2_l2t0_data_vld_d1 <= mcu2_l2t0_data_vld_r0 ;
3069mcu2_l2t0_data_vld_d2 <= mcu2_l2t0_data_vld_d1 ;
3070mcu2_l2t0_data_vld_d3 <= mcu2_l2t0_data_vld_d2 ;
3071mcu3_l2t0_data_vld_d1 <= mcu3_l2t0_data_vld_r0 ;
3072mcu3_l2t0_data_vld_d2 <= mcu3_l2t0_data_vld_d1 ;
3073mcu3_l2t0_data_vld_d3 <= mcu3_l2t0_data_vld_d2 ;
3074mcu0_l2t1_data_vld_d1 <= mcu0_l2t1_data_vld_r0 ;
3075mcu0_l2t1_data_vld_d2 <= mcu0_l2t1_data_vld_d1 ;
3076mcu0_l2t1_data_vld_d3 <= mcu0_l2t1_data_vld_d2 ;
3077mcu1_l2t1_data_vld_d1 <= mcu1_l2t1_data_vld_r0 ;
3078mcu1_l2t1_data_vld_d2 <= mcu1_l2t1_data_vld_d1 ;
3079mcu1_l2t1_data_vld_d3 <= mcu1_l2t1_data_vld_d2 ;
3080mcu2_l2t1_data_vld_d1 <= mcu2_l2t1_data_vld_r0 ;
3081mcu2_l2t1_data_vld_d2 <= mcu2_l2t1_data_vld_d1 ;
3082mcu2_l2t1_data_vld_d3 <= mcu2_l2t1_data_vld_d2 ;
3083mcu3_l2t1_data_vld_d1 <= mcu3_l2t1_data_vld_r0 ;
3084mcu3_l2t1_data_vld_d2 <= mcu3_l2t1_data_vld_d1 ;
3085mcu3_l2t1_data_vld_d3 <= mcu3_l2t1_data_vld_d2 ;
3086end
3087
3088
3089
3090
3091
3092
3093 integer i;
3094
3095`ifndef FLUSH_RESET
3096`include "fc_noreset_force.v"
3097`endif
3098
3099
3100//----------------------------------------------------------
3101`include "misc_tasks.v"
3102`include "fc_dft_tasks.v"
3103initial begin
3104 if ($test$plusargs("testing_pll_char_out"))
3105 dft_testing_pll_char_out();
3106end
3107
3108`ifndef AXIS_TL
3109// done elsewhere
3110// always @(sim_status)
3111// `PR_ALWAYS ("top", `ALWAYS, "regreport clock period: 750000 fs\n");
3112
3113
3114task read_cmp_reg;
3115 input [31:0] addr;
3116 output [63:0] rd_data;
3117 input [5:0] tid;
3118
3119begin
3120end
3121endtask
3122
3123task write_cmp_reg;
3124 input [31:0] addr;
3125 input [63:0] wr_data;
3126 input [5:0] tid;
3127
3128begin
3129end
3130endtask
3131
3132task write_sys_mem;
3133 input [63:0] addr;
3134 input [63:0] data;
3135 input [8:0] be;
3136 reg [63:0] addr_l;
3137 reg [63:0] data_l;
3138 reg [63:0] rd_data;
3139 reg [63:0] rd_data_tmp;
3140 reg [63:0] wr_data;
3141 reg [31:0] data_high;
3142 reg [31:0] data_low;
3143 integer mem_sync;
3144
3145 begin
3146
3147 rd_data_tmp = $read_dram({addr[63:3], 3'b000}, data_low, data_high, pm_shift);
3148 rd_data_tmp = {data_high, data_low};
3149
3150 rd_data[7:0] = rd_data_tmp[63:56];
3151 rd_data[15:8] = rd_data_tmp[55:48];
3152 rd_data[23:16] = rd_data_tmp[47:40];
3153 rd_data[31:24] = rd_data_tmp[39:32];
3154 rd_data[39:32] = rd_data_tmp[31:24];
3155 rd_data[47:40] = rd_data_tmp[23:16];
3156 rd_data[55:48] = rd_data_tmp[15:8];
3157 rd_data[63:56] = rd_data_tmp[7:0];
3158
3159
3160 case(addr[2:0])
3161 3'b001 : wr_data[63:0] = {rd_data[63:16], data[7:0], rd_data[7:0] };
3162 3'b011 : wr_data[63:0] = {rd_data[63:32], data[7:0], rd_data[23:0]};
3163 3'b101 : wr_data[63:0] = {rd_data[63:48], data[7:0], rd_data[39:0]};
3164 3'b111 : wr_data[63:0] = { data[7:0], rd_data[55:0]};
3165
3166 3'b010 : wr_data[63:0] = {rd_data[63:32], data[15:0], rd_data[15:0]};
3167 3'b110 : wr_data[63:0] = { data[15:0], rd_data[47:0]};
3168
3169 3'b100 : wr_data[63:0] = {data[31:0], rd_data[31:0]};
3170
3171 3'b000 : wr_data[63:0] = data[63:0];
3172 endcase
3173
3174 `PR_DEBUG ("top", `DEBUG, "write_sys_mem Raw_data = %h, rd_data = %h, wr_data = %h\n", data, rd_data,wr_data);
3175
3176// NIU endianess problem! Make sure this is taken out later!
3177
3178 data_l[7:0] = wr_data[63:56];
3179 data_l[15:8] = wr_data[55:48];
3180 data_l[23:16] = wr_data[47:40];
3181 data_l[31:24] = wr_data[39:32];
3182 data_l[39:32] = wr_data[31:24];
3183 data_l[47:40] = wr_data[23:16];
3184 data_l[55:48] = wr_data[15:8];
3185 data_l[63:56] = wr_data[7:0];
3186
3187 if (!addr[39]) begin
3188 $write_dram({addr[63:3], 3'b000}, data_l, pm_shift);
3189 `PR_DEBUG ("top", `DEBUG, "write_sys_mem @ %0h = %0h\n", addr,data_l);
3190 end
3191
3192 // Send socket message to Riesling
3193`ifndef GATESIM
3194 `TOP.ldst_sync.ldst_l2.mem_slam ({addr[39:3], 3'b000}, data_l,8'hff, "ENET WR");
3195`endif
3196
3197 end
3198endtask
3199
3200 // 64 bits data, 64 bits address
3201task read_sys_mem;
3202 input [63:0] addr;
3203 output [63:0] rd_data;
3204
3205 reg [63:0] rdata64;
3206 reg [31:0] data_h;
3207 reg [31:0] data_l;
3208 reg [63:0] rd_data_tmp;
3209
3210 begin
3211 rd_data_tmp = $read_dram(addr, data_l, data_h, pm_shift);
3212 rd_data_tmp = {data_h, data_l};
3213
3214 rd_data[7:0] = rd_data_tmp[63:56];
3215 rd_data[15:8] = rd_data_tmp[55:48];
3216 rd_data[23:16] = rd_data_tmp[47:40];
3217 rd_data[31:24] = rd_data_tmp[39:32];
3218 rd_data[39:32] = rd_data_tmp[31:24];
3219 rd_data[47:40] = rd_data_tmp[23:16];
3220 rd_data[55:48] = rd_data_tmp[15:8];
3221 rd_data[63:56] = rd_data_tmp[7:0];
3222
3223 `PR_DEBUG ("top", `DEBUG, "read_sys_mem Raw-Data @ %0h = %0h\n", addr,rd_data);
3224 `PR_DEBUG ("top", `DEBUG, "read_sys_mem @ %0h = %0h\n", addr,rd_data);
3225
3226 end
3227 endtask
3228
3229
3230wire [63:0] cmp_core_running_status;
3231`ifdef CORE_0
3232 assign cmp_core_running_status[7:0] = `SPC0.spc_core_running_status[7:0];
3233`else
3234 assign cmp_core_running_status[7:0] = 8'h0;
3235`endif
3236
3237`ifdef CORE_1
3238 assign cmp_core_running_status[15:8] = `SPC1.spc_core_running_status[7:0];
3239`else
3240 assign cmp_core_running_status[15:8] = 8'h0;
3241`endif
3242
3243`ifdef CORE_2
3244 assign cmp_core_running_status[23:16] = `SPC2.spc_core_running_status[7:0];
3245`else
3246 assign cmp_core_running_status[23:16] = 8'h0;
3247`endif
3248`ifdef CORE_3
3249 assign cmp_core_running_status[31:24] = `SPC3.spc_core_running_status[7:0];
3250`else
3251 assign cmp_core_running_status[31:24] = 8'h0;
3252`endif
3253
3254`ifdef CORE_4
3255 assign cmp_core_running_status[39:32] = `SPC4.spc_core_running_status[7:0];
3256`else
3257 assign cmp_core_running_status[39:32] = 8'h0;
3258`endif
3259
3260`ifdef CORE_5
3261 assign cmp_core_running_status[47:40] = `SPC5.spc_core_running_status[7:0];
3262`else
3263 assign cmp_core_running_status[47:40] = 8'h0;
3264`endif
3265
3266`ifdef CORE_6
3267 assign cmp_core_running_status[55:48] = `SPC6.spc_core_running_status[7:0];
3268`else
3269 assign cmp_core_running_status[55:48] = 8'h0;
3270`endif
3271
3272`ifdef CORE_7
3273 assign cmp_core_running_status[63:56] = `SPC7.spc_core_running_status[7:0];
3274`else
3275 assign cmp_core_running_status[63:56] = 8'h0;
3276`endif
3277
3278initial begin
3279
3280 if ($test$plusargs("ASI_CORE_AVILABLE")) begin
3281 if ($value$plusargs("ASI_CORE_AVILABLE=%s", tempstr))
3282 cmp_core_avail = {get_thread_enables(tempstr)};
3283 end
3284 else
3285 cmp_core_avail = 64'hff;
3286
3287 if ($test$plusargs("ASI_CORE_ENABLE")) begin
3288 if ($value$plusargs("ASI_CORE_ENABLE=%s", tempstr))
3289 cmp_core_enable = {get_thread_enables(tempstr)};
3290 end
3291 else
3292 cmp_core_enable = 64'hff;
3293
3294 for (i=7; i>= 0; i=i-1) begin
3295 efuse_core_avail[i] = &{cmp_core_enable[(i+1)*8-1], cmp_core_enable[(i+1)*8-2],cmp_core_enable[(i+1)*8-3],
3296 cmp_core_enable[(i+1)*8-4],cmp_core_enable[(i+1)*8-5],cmp_core_enable[(i+1)*8-6],
3297 cmp_core_enable[(i+1)*8-7],cmp_core_enable[(i+1)*8-8]};
3298 end
3299
3300end
3301
3302initial begin
3303 if(!$test$plusargs("FULL_EFU")) begin
3304 full_efu = 1'b1;
3305 end
3306end
3307
3308`ifdef FLUSH_RESET
3309`ifndef FULL_RESET
3310`ifdef TCU_GATE
3311 always @(posedge `EFU.u_efa_stdc__read_start_sync2) begin
3312 if (full_efu) begin
3313 #1 force {`TCU.sigmux_ctl__tcusig_efcnt_reg_fdin_14_,`TCU.sigmux_ctl__tcusig_efcnt_reg_fdin_13_,`TCU.sigmux_ctl__tcusig_efcnt_reg_fdin_12_,`TCU.sigmux_ctl__tcusig_efcnt_reg_fdin_11_,`TCU.sigmux_ctl__tcusig_efcnt_reg_fdin_10_,`TCU.sigmux_ctl__tcusig_efcnt_reg_fdin_9_,`TCU.sigmux_ctl__tcusig_efcnt_reg_fdin_8_,`TCU.sigmux_ctl__tcusig_efcnt_reg_fdin_7_,`TCU.sigmux_ctl__tcusig_efcnt_reg_fdin_6_,`TCU.sigmux_ctl__tcusig_efcnt_reg_fdin_5_,`TCU.sigmux_ctl__tcusig_efcnt_reg_fdin_4_,`TCU.sigmux_ctl__tcusig_efcnt_reg_fdin_3_,`TCU.sigmux_ctl__tcusig_efcnt_reg_fdin_2_,`TCU.sigmux_ctl__tcusig_efcnt_reg_fdin_1_,`TCU.sigmux_ctl__tcusig_efcnt_reg_fdin_0_} = 15'h4500;
3314 repeat (250) @(posedge iol2clk);
3315
3316 release {`TCU.sigmux_ctl__tcusig_efcnt_reg_fdin_14_,`TCU.sigmux_ctl__tcusig_efcnt_reg_fdin_13_,`TCU.sigmux_ctl__tcusig_efcnt_reg_fdin_12_,`TCU.sigmux_ctl__tcusig_efcnt_reg_fdin_11_,`TCU.sigmux_ctl__tcusig_efcnt_reg_fdin_10_,`TCU.sigmux_ctl__tcusig_efcnt_reg_fdin_9_,`TCU.sigmux_ctl__tcusig_efcnt_reg_fdin_8_,`TCU.sigmux_ctl__tcusig_efcnt_reg_fdin_7_,`TCU.sigmux_ctl__tcusig_efcnt_reg_fdin_6_,`TCU.sigmux_ctl__tcusig_efcnt_reg_fdin_5_,`TCU.sigmux_ctl__tcusig_efcnt_reg_fdin_4_,`TCU.sigmux_ctl__tcusig_efcnt_reg_fdin_3_,`TCU.sigmux_ctl__tcusig_efcnt_reg_fdin_2_,`TCU.sigmux_ctl__tcusig_efcnt_reg_fdin_1_,`TCU.sigmux_ctl__tcusig_efcnt_reg_fdin_0_};
3317 end
3318 end
3319
3320`else // TCU_GATE
3321 always @(posedge `EFU.u_efa_stdc.read_start_sync2) begin
3322 if (full_efu) begin
3323 #1 force `TCU.sigmux_ctl.efcnt_din = 15'h4500;
3324 repeat (250) @(posedge iol2clk);
3325 release `TCU.sigmux_ctl.efcnt_din;
3326 end
3327 end
3328`endif // TCU_GATE
3329`endif // FULL_RESET
3330`else // FLUSH_RESET
3331initial begin
3332 repeat (100) @(posedge iol2clk);
3333 force `CPU.efu_ncu_coreavl_xfer_en = 1'b1;
3334 force `CPU.efu_ncu_fuse_data = 1'b0;
3335 @(posedge iol2clk);
3336 force `CPU.efu_ncu_fuse_data = 1'b0;
3337 @(posedge iol2clk);
3338 force `CPU.efu_ncu_fuse_data = 1'b0;
3339 @(posedge iol2clk);
3340 force `CPU.efu_ncu_fuse_data = 1'b0;
3341 @(posedge iol2clk);
3342 force `CPU.efu_ncu_fuse_data = 1'b0;
3343 @(posedge iol2clk);
3344 force `CPU.efu_ncu_fuse_data = 1'b0;
3345 @(posedge iol2clk);
3346 force `CPU.efu_ncu_fuse_data = 1'b0;
3347 @(posedge iol2clk);
3348 force `CPU.efu_ncu_fuse_data = 1'b0;
3349 @(posedge iol2clk);
3350 force `CPU.efu_ncu_fuse_data = 1'b0;
3351 @(posedge iol2clk);
3352 force `CPU.efu_ncu_fuse_data = 1'b0;
3353 @(posedge iol2clk);
3354 force `CPU.efu_ncu_fuse_data = 1'b0;
3355 @(posedge iol2clk);
3356 force `CPU.efu_ncu_fuse_data = 1'b0;
3357 @(posedge iol2clk);
3358 force `CPU.efu_ncu_fuse_data = 1'b0;
3359 @(posedge iol2clk);
3360 force `CPU.efu_ncu_fuse_data = 1'b0;
3361 @(posedge iol2clk);
3362 force `CPU.efu_ncu_fuse_data = efuse_core_avail[7];
3363 @(posedge iol2clk);
3364 force `CPU.efu_ncu_fuse_data = efuse_core_avail[6];
3365 @(posedge iol2clk);
3366 force `CPU.efu_ncu_fuse_data = efuse_core_avail[5];
3367 @(posedge iol2clk);
3368 force `CPU.efu_ncu_fuse_data = efuse_core_avail[4];
3369 @(posedge iol2clk);
3370 force `CPU.efu_ncu_fuse_data = efuse_core_avail[3];
3371 @(posedge iol2clk);
3372 force `CPU.efu_ncu_fuse_data = efuse_core_avail[2];
3373 @(posedge iol2clk);
3374 force `CPU.efu_ncu_fuse_data = efuse_core_avail[1];
3375 @(posedge iol2clk);
3376 force `CPU.efu_ncu_fuse_data = efuse_core_avail[0];
3377 @(posedge iol2clk);
3378 force `CPU.efu_ncu_coreavl_xfer_en = 1'b0;
3379 force `CPU.efu_ncu_fuse_data = 1'b0;
3380
3381 @(posedge iol2clk);
3382 force `CPU.efu_ncu_bankavl_xfer_en = 1'b1;
3383 force `CPU.efu_ncu_fuse_data = 1'b0;
3384 @(posedge iol2clk);
3385 force `CPU.efu_ncu_fuse_data = 1'b0;
3386 @(posedge iol2clk);
3387 force `CPU.efu_ncu_fuse_data = 1'b0;
3388 @(posedge iol2clk);
3389 force `CPU.efu_ncu_fuse_data = 1'b0;
3390 @(posedge iol2clk);
3391 force `CPU.efu_ncu_fuse_data = 1'b0;
3392 @(posedge iol2clk);
3393 force `CPU.efu_ncu_fuse_data = 1'b0;
3394 @(posedge iol2clk);
3395 force `CPU.efu_ncu_fuse_data = 1'b0;
3396 @(posedge iol2clk);
3397 force `CPU.efu_ncu_fuse_data = 1'b0;
3398 @(posedge iol2clk);
3399 force `CPU.efu_ncu_fuse_data = 1'b0;
3400 @(posedge iol2clk);
3401 force `CPU.efu_ncu_fuse_data = 1'b0;
3402 @(posedge iol2clk);
3403 force `CPU.efu_ncu_fuse_data = 1'b0;
3404 @(posedge iol2clk);
3405 force `CPU.efu_ncu_fuse_data = 1'b0;
3406 @(posedge iol2clk);
3407 force `CPU.efu_ncu_fuse_data = 1'b0;
3408 @(posedge iol2clk);
3409 force `CPU.efu_ncu_fuse_data = 1'b0;
3410 @(posedge iol2clk);
3411 force `CPU.efu_ncu_fuse_data = 1'b1;
3412 @(posedge iol2clk);
3413 force `CPU.efu_ncu_fuse_data = 1'b1;
3414 @(posedge iol2clk);
3415 force `CPU.efu_ncu_fuse_data = 1'b1;
3416 @(posedge iol2clk);
3417 force `CPU.efu_ncu_fuse_data = 1'b1;
3418 @(posedge iol2clk);
3419 force `CPU.efu_ncu_fuse_data = 1'b1;
3420 @(posedge iol2clk);
3421 force `CPU.efu_ncu_fuse_data = 1'b1;
3422 @(posedge iol2clk);
3423 force `CPU.efu_ncu_fuse_data = 1'b1;
3424 @(posedge iol2clk);
3425 force `CPU.efu_ncu_fuse_data = 1'b1;
3426 @(posedge iol2clk);
3427 force `CPU.efu_ncu_bankavl_xfer_en = 1'b0;
3428 force `CPU.efu_ncu_fuse_data = 1'b0;
3429 @(posedge iol2clk);
3430
3431 threads = `TOP.verif_args.th_check_enable & cmp_core_enable;
3432 threadsf = 64'h0;
3433
3434`ifdef NCU_GATE
3435 for (i=0; i<64; i=i+1) begin
3436 threadsf[i] = threads[i];
3437 force `NCU.ncu_spc0_core_running[7:0] = threadsf[7:0] ;
3438 force `NCU.ncu_spc1_core_running[7:0] = threadsf[15:8] ;
3439 force `NCU.ncu_spc2_core_running[7:0] = threadsf[23:16] ;
3440 force `NCU.ncu_spc3_core_running[7:0] = threadsf[31:24] ;
3441 force `NCU.ncu_spc4_core_running[7:0] = threadsf[39:32] ;
3442 force `NCU.ncu_spc5_core_running[7:0] = threadsf[47:40] ;
3443 force `NCU.ncu_spc6_core_running[7:0] = threadsf[55:48] ;
3444 force `NCU.ncu_spc7_core_running[7:0] = threadsf[63:56] ;
3445 repeat (50) @(posedge core_clk);
3446 end
3447`else
3448
3449 for (i=0; i<64; i=i+1) begin
3450 threadsf[i] = threads[i];
3451 force `NCU.core_running = threadsf ;
3452 repeat (50) @(posedge core_clk);
3453 end
3454`endif // NCU_GATE
3455
3456 force `CPU.rst_ncu_unpark_thread = 1'b1;
3457 @(posedge iol2clk);
3458 force `CPU.rst_ncu_unpark_thread = 1'b0;
3459 repeat (10) @(posedge iol2clk);
3460
3461`ifdef MCU_GATE
3462 release `NCU.ncu_spc0_core_running[7:0] ;
3463 release `NCU.ncu_spc1_core_running[7:0] ;
3464 release `NCU.ncu_spc2_core_running[7:0] ;
3465 release `NCU.ncu_spc3_core_running[7:0] ;
3466 release `NCU.ncu_spc4_core_running[7:0] ;
3467 release `NCU.ncu_spc5_core_running[7:0] ;
3468 release `NCU.ncu_spc6_core_running[7:0] ;
3469 release `NCU.ncu_spc7_core_running[7:0] ;
3470`else
3471 release `NCU.core_running ;
3472`endif // MCU_GATE
3473
3474 release `CPU.rst_ncu_unpark_thread;
3475end
3476
3477`endif // FLUSH_RESET
3478
3479`endif // AXIS_TL
3480
3481function [63:0] get_thread_enables ;
3482 input [8*16:0] instring;
3483 reg [7:0] char;
3484 integer i, j;
3485 reg [3:0] nibble;
3486
3487 begin
3488 get_thread_enables = 64'h0;
3489 // if argument is thread=all
3490 if (instring == "all") begin
3491 get_thread_enables = 64'hffffffff_ffffffff;
3492 end
3493 // if argument is thread=none
3494 else if (instring == "none") begin
3495 get_thread_enables = 64'h0;
3496 end
3497 // rest should just be the actual value
3498 else begin
3499 for (i=0; i<16; i=i+1) begin
3500 for (j=0; j<=7; j=j+1) begin
3501 char[j] = instring[8*i+j];
3502 end
3503
3504 case (char)
3505 "0" : nibble = 4'b0000;
3506 "1" : nibble = 4'b0001;
3507 "2" : nibble = 4'b0010;
3508 "3" : nibble = 4'b0011;
3509 "4" : nibble = 4'b0100;
3510 "5" : nibble = 4'b0101;
3511 "6" : nibble = 4'b0110;
3512 "7" : nibble = 4'b0111;
3513 "8" : nibble = 4'b1000;
3514 "9" : nibble = 4'b1001;
3515 "a","A" : nibble = 4'b1010;
3516 "b","B" : nibble = 4'b1011;
3517 "c","C" : nibble = 4'b1100;
3518 "d","D" : nibble = 4'b1101;
3519 "e","E" : nibble = 4'b1110;
3520 "f","F" : nibble = 4'b1111;
3521 default : nibble = 4'b0000;
3522 endcase
3523
3524 get_thread_enables = get_thread_enables | (nibble << (i*4));
3525 end
3526 end
3527 end
3528
3529endfunction
3530
3531`ifndef AXIS_TL
3532`include "../ios/verilog/ios_ras_inj.v"
3533
3534`ifndef FC_NO_NIU_T2
3535`include "niu_tasks.v"
3536`ifndef DTM_ENABLED
3537`include "fc_niu_slam.v"
3538`endif // DTM_ENABLED
3539`endif // FC_NO_NIU_T2
3540`endif // AXIS_TL
3541
3542//---------------Changes for CCU integration---------------
3543//-------- Generate clock and connect to CCU PLL Ref Inputs ------
3544
3545reg sysCLK;
3546wire sysclk; // who uses this? axis_*.v
3547// wire l2clk_veratb;
3548// wire drl2clk_veratb;
3549// wire ccu_io_out_veratb;
3550
3551`ifndef AXIS_TL
3552initial
3553begin
3554`ifdef DTM_ENABLED
3555 sys_half_period = 4800; //9600
3556`else
3557 sys_half_period = 3000; // 166MHz
3558 if( $test$plusargs("SYSCLK_166")) begin
3559 sys_half_period = 3000;//6000
3560 end
3561
3562 if( $test$plusargs("SYSCLK_133")) begin
3563 sys_half_period = 3750;//7500
3564 end
3565
3566 if( $test$plusargs("SYSCLK_200")) begin
3567 sys_half_period = 2500;//5000
3568 end
3569
3570`endif // DTM_ENABLED
3571
3572 `PR_NORMAL("fc_top", `NORMAL, "SYSCLK period set to %d ps", 2*sys_half_period);
3573 #1
3574 sysCLK = 1'b0;
3575 forever #(sys_half_period) sysCLK = ~sysCLK;
3576
3577end
3578
3579// ALWAYS RUNNING CLOCK. THIS GOES TO VERA.
3580// VERA NEEDS A CONTINUOUS CLOCK FROM TIME ZERO.
3581initial begin
3582 #1
3583 SystemClock = 0;
3584 // continue until cmp_pll_clk starts, then follow that clock
3585 while (`CCU.cmp_pll_clk !== 1'b0) begin
3586 @sysCLK SystemClock = ~SystemClock ;
3587 end
3588 SystemClock = 0;
3589 forever begin
3590 @`CCU.cmp_pll_clk SystemClock = ~SystemClock;
3591 end
3592end
3593
3594assign sysclk = sysCLK; // who uses this? axis_*.v
3595assign SYSCLK = sysCLK;
3596assign SYSCLKN = ~sysCLK;
3597
3598// from MCU sat, don't seem to be used
3599// assign l2clk_veratb = `CCU.cmp_pll_clk;
3600// assign drl2clk_veratb = `CCU.dr_pll_clk;
3601// assign ccu_io_out_veratb = `CCU.ccu_io_out ;
3602
3603assign core_clk = `CCU.cmp_pll_clk; //BS
3604assign iol2clk = `CCU.ccu_io_out;
3605assign iol2clk_2x = `CCU.ccu_io2x_out;
3606
3607// gclk used by l2 coverage
3608// assign gclk = `CCU.cmp_pll_clk;
3609
3610//--- CCU PLL programming done in MCU
3611ccu_pll_config ccu_pll_config ();
3612
3613reg ref_dram_6x_clk_reg;
3614integer ref_dram_6x_clk_period;
3615integer time1_r, time2_r;
3616
3617initial
3618begin
3619 ref_dram_6x_clk_reg=0;
3620 @ (posedge `CCU.ccu_rst_sync_stable);
3621 @ (posedge SYSCLK);
3622 time1_r=$realtime;
3623 @ (posedge SYSCLK);
3624 time2_r=$realtime;
3625`ifdef DTM_ENABLED
3626 ref_dram_6x_clk_period=(time2_r-time1_r)/(6);
3627`else
3628 ref_dram_6x_clk_period=(time2_r-time1_r)/(6*2);
3629`endif
3630 forever begin #(ref_dram_6x_clk_period/2) ref_dram_6x_clk_reg = ~ref_dram_6x_clk_reg; end
3631end
3632
3633 assign dram_6x_clk = ref_dram_6x_clk_reg ;
3634
3635reg ref_dram_12x_clk_reg;
3636integer ref_dram_12x_clk_period;
3637integer time1_r1, time2_r1;
3638
3639// ---- Clock Generator for FBD Channel clock ; dr_clk X 12 (linkclk) -----
3640
3641initial
3642begin
3643 ref_dram_12x_clk_reg=0;
3644 @ (posedge `CCU.ccu_rst_sync_stable);
3645 @ (posedge SYSCLK);
3646 time1_r1=$realtime;
3647 @ (posedge SYSCLK);
3648 time2_r1=$realtime;
3649`ifdef DTM_ENABLED
3650 ref_dram_12x_clk_period=(time2_r-time1_r)/(12);
3651`else
3652 ref_dram_12x_clk_period=(time2_r1-time1_r1)/(12*2);
3653`endif
3654 forever begin #(ref_dram_12x_clk_period/2) ref_dram_12x_clk_reg = ~ref_dram_12x_clk_reg; end
3655end
3656
3657 assign dram_12x_clk = ref_dram_12x_clk_reg ;
3658
3659
3660// --- DTM CCU Slam ---
3661reg serdes_dtm1, serdes_dtm2;
3662reg [2:0] dbg_port_config;
3663
3664initial
3665begin
3666 #1;
3667
3668`ifdef GATESIM
3669`ifdef CCU_GATE
3670
3671 force `CCU.ccu_pll.x6.x1.x0.net61 = `CCU.ccu_pll.x6.x1.x0.in8_clk_l;
3672`endif
3673`endif
3674
3675`ifdef SLAM_VECTORS
3676 if ($value$plusargs("serdes_dtm1=%h", serdes_dtm1)) begin
3677 end
3678 else begin
3679 serdes_dtm1 = 0;
3680 end
3681
3682 if ($value$plusargs("serdes_dtm2=%h", serdes_dtm2)) begin
3683 end
3684 else begin
3685 serdes_dtm2 = 1;
3686 end
3687
3688 wait (`CCU.cluster_arst_l == 1'b1);
3689`ifdef CCU_GATE
3690 force `CCU.serdes_dtm1 = serdes_dtm1;
3691 force `CCU.serdes_dtm2 = serdes_dtm2; //SV 04/26/06
3692`else
3693 force `CCU.csr_blk.serdes_dtm1 = serdes_dtm1;
3694 force `CCU.csr_blk.serdes_dtm2 = serdes_dtm2; //SV 04/26/06
3695`endif // CCU_GATE
3696
3697 if ($value$plusargs("dbg_port_config=%b", dbg_port_config)) begin
3698 `ifdef GATESIM
3699 force `DBG1.dbg1_csr__dbg_config_reg_3_ = dbg_port_config[2];
3700 force `DBG1.dbg1_csr__dbg_config_reg_2_ = dbg_port_config[1];
3701 force `DBG1.dbg1_csr__dbg_config_reg_1_ = dbg_port_config[0];
3702 force `DBG1.dbg1_csr__n1031 = 1'b1;
3703 `else
3704 force `DBG1.dbg1_csr.dbg_config_reg[3] = dbg_port_config[2];
3705 force `DBG1.dbg1_csr.dbg_config_reg[2] = dbg_port_config[1];
3706 force `DBG1.dbg1_csr.dbg_config_reg[1] = dbg_port_config[0];
3707 force `DBG1.dbg1_csr.dbg_config_reg[0] = 1'b1;
3708 `endif // GATESIM
3709 end
3710 else begin
3711 `ifdef GATESIM
3712 force `DBG1.dbg1_csr__dbg_config_reg_3_ = 1'b0;
3713 force `DBG1.dbg1_csr__dbg_config_reg_2_ = 1'b0;
3714 force `DBG1.dbg1_csr__dbg_config_reg_1_ = 1'b1;
3715 force `DBG1.dbg1_csr__n1031 = 1'b1;
3716 `else
3717 // Debug port configuration to Tester Characterization
3718 force `DBG1.dbg1_csr.dbg_config_reg[3] = 1'b0;
3719 force `DBG1.dbg1_csr.dbg_config_reg[2] = 1'b0;
3720 force `DBG1.dbg1_csr.dbg_config_reg[1] = 1'b1;
3721 force `DBG1.dbg1_csr.dbg_config_reg[0] = 1'b1;
3722 `endif // GATESIM
3723 end
3724
3725`endif // SLAM_VECTORS
3726end // initial
3727
3728
3729/*
3730 * All vcs tasks related to modes need to be put in this file
3731 * please add comments as u put new vcs_run_args
3732 */
3733
3734`include "fc_modes_tasks.v"
3735
3736`ifndef FC_NO_NIU_T2
3737/*
3738 * MDIO model
3739 */
3740//module mdio_mmd_model (reset, mdc, mdio_in, mdio_out, mdio_en);
3741// .XAUI_MDC(XAUI_MDC), // PAD
3742// .XAUI_MDIO(XAUI_MDIO), // PAD
3743//for some reason the model does not have a build in bidi
3744wire fc_mdio_in, fc_mdio_out, fc_mdio_en;
3745
3746assign fc_mdio_in = XAUI_MDIO;
3747assign XAUI_MDIO = fc_mdio_en ? 1'bz : fc_mdio_out;
3748
3749mdio_mmd_model mdio_device(.reset(PEX_RESET_L),
3750 .mdc (XAUII_MDC),
3751 .mdio_in(fc_mdio_in),
3752 .mdio_en(fc_mdio_en),
3753 .mdio_out(fc_mdio_out)
3754 );
3755`endif
3756
3757 wire signal_to_disable_checker;
3758//-----------------------
3759//Wiring cabinet
3760`ifndef GATESIM
3761fc_csr_cabinet csr_cabinet();
3762`endif // GATESIM
3763
3764`ifdef SLAM_VECTORS
3765//////////////////////////////////////////////
3766//Code for PEU SLAM for DTM
3767//////////////////////////////////////////////
3768initial begin
3769 #1;
3770 //after POR b4 wrm
3771 @(posedge flush_reset_complete);
3772
3773`ifndef GATESIM
3774 `PR_NORMAL("fc_top", `NORMAL, "Forcing program MPY field of PEU Serdes PLL Ctrl Reg to x10 after FIRST FLUSH RESET");
3775 `PR_NORMAL("fc_top", `NORMAL, "Forcing Now switch the PEU rate scale from full to half rate FIRST FLUSH RESET");
3776 force `PEU.peu_ptl.ctb.tlr.csr.ptl_ctb_tlr_default_grp.serdes_pll.serdes_pll_csrbus_read_data[63:0] = 64'h0000000000000005;
3777 force `DMU.ilu.cib.csr.dmu_ilu_cib_default_grp.ilu_diagnos.ilu_diagnos_csrbus_read_data[63:0] = 64'h00000003ffff0004;
3778 //after WRM reset
3779 @(posedge flush_reset_complete);
3780 `PR_NORMAL("fc_top", `NORMAL, "Forcing second set of registers after SECOND FLUSH RESET");
3781 //BP 10-23-06 Mike S changed denali, so now for dtm we can leave symbol timer at the default
3782 //force `PEU.peu_ptl.ctb.tlr.csr.ptl_ctb_tlr_default_grp.symbol_timer.symbol_timer_csrbus_read_data[63:0] = 64'h020;
3783 force `PEU.peu_ptl.ctb.tlr.csr.ptl_ctb_tlr_default_grp.link_ctl.link_ctl_csrbus_read_data[1] = 1'b1;
3784`endif // GATESIM
3785
3786`ifdef PEU_GATE
3787 `PR_NORMAL("fc_top", `NORMAL, "Forcing program MPY field of PEU Serdes PLL Ctrl Reg to x10 after FIRST FLUSH RESET");
3788 `PR_NORMAL("fc_top", `NORMAL, "Forcing Now switch the PEU rate scale from full to half rate FIRST FLUSH RESET");
3789
3790 force {`PEU.peu_ptl_ctb_tlr_csr_ptl_ctb_tlr_default_grp_serdes_pll_csrbus_read_data_7_,`PEU.peu_ptl_ctb_tlr_csr_ptl_ctb_tlr_default_grp_serdes_pll_csrbus_read_data_6_,`PEU.peu_ptl_ctb_tlr_csr_ptl_ctb_tlr_default_grp_serdes_pll_csrbus_read_data_5_,`PEU.peu_ptl_ctb_tlr_csr_ptl_ctb_tlr_default_grp_serdes_pll_csrbus_read_data_4_,`PEU.peu_ptl_ctb_tlr_csr_ptl_ctb_tlr_default_grp_serdes_pll_csrbus_read_data_3_,`PEU.peu_ptl_ctb_tlr_csr_ptl_ctb_tlr_default_grp_serdes_pll_csrbus_read_data_2_,`PEU.peu_ptl_ctb_tlr_csr_ptl_ctb_tlr_default_grp_serdes_pll_csrbus_read_data_1_,`PEU.peu_ptl_ctb_tlr_csr_ptl_ctb_tlr_default_grp_serdes_pll_csrbus_read_data_0_} = 64'h0000000000000005;
3791 force {`DMU.ilu_cib_csr_dmu_ilu_cib_default_grp_ilu_diagnos_csrbus_read_data_33_,`DMU.ilu_cib_csr_dmu_ilu_cib_default_grp_ilu_diagnos_csrbus_read_data_32_,`DMU.ilu_cib_csr_dmu_ilu_cib_default_grp_ilu_diagnos_csrbus_read_data_31_,`DMU.ilu_cib_csr_dmu_ilu_cib_default_grp_ilu_diagnos_csrbus_read_data_30_,`DMU.ilu_cib_csr_dmu_ilu_cib_default_grp_ilu_diagnos_csrbus_read_data_29_,`DMU.ilu_cib_csr_dmu_ilu_cib_default_grp_ilu_diagnos_csrbus_read_data_28_,`DMU.ilu_cib_csr_dmu_ilu_cib_default_grp_ilu_diagnos_csrbus_read_data_27_,`DMU.ilu_cib_csr_dmu_ilu_cib_default_grp_ilu_diagnos_csrbus_read_data_26_,`DMU.ilu_cib_csr_dmu_ilu_cib_default_grp_ilu_diagnos_csrbus_read_data_25_,`DMU.ilu_cib_csr_dmu_ilu_cib_default_grp_ilu_diagnos_csrbus_read_data_24_,`DMU.ilu_cib_csr_dmu_ilu_cib_default_grp_ilu_diagnos_csrbus_read_data_23_,`DMU.ilu_cib_csr_dmu_ilu_cib_default_grp_ilu_diagnos_csrbus_read_data_22_,`DMU.ilu_cib_csr_dmu_ilu_cib_default_grp_ilu_diagnos_csrbus_read_data_21_,`DMU.ilu_cib_csr_dmu_ilu_cib_default_grp_ilu_diagnos_csrbus_read_data_20_,`DMU.ilu_cib_csr_dmu_ilu_cib_default_grp_ilu_diagnos_csrbus_read_data_19_,`DMU.ilu_cib_csr_dmu_ilu_cib_default_grp_ilu_diagnos_csrbus_read_data_18_,`DMU.ilu_cib_csr_dmu_ilu_cib_default_grp_ilu_diagnos_csrbus_read_data_17_,`DMU.ilu_cib_csr_dmu_ilu_cib_default_grp_ilu_diagnos_csrbus_read_data_16_,`DMU.ilu_cib_csr_dmu_ilu_cib_default_grp_ilu_diagnos_csrbus_read_data_3_,`DMU.ilu_cib_csr_dmu_ilu_cib_default_grp_ilu_diagnos_csrbus_read_data_2_} = 64'h0000000ffffd;
3792
3793 //after WRM reset
3794 @(posedge flush_reset_complete);
3795 `PR_NORMAL("fc_top", `NORMAL, "Forcing second set of registers after SECOND FLUSH RESET");
3796 force {`PEU.peu_ptl_ctb_tlr_csr_ptl_ctb_tlr_default_grp_symbol_timer_symbol_timer_0_csr_sw_10_n25,`PEU.peu_ptl_ctb_tlr_csr_ptl_ctb_tlr_default_grp_symbol_timer_symbol_timer_0_csr_sw_9_n25,`PEU.peu_ptl_ctb_tlr_csr_ptl_ctb_tlr_default_grp_symbol_timer_symbol_timer_0_csr_sw_8_n25,`PEU.peu_ptl_ctb_tlr_csr_ptl_ctb_tlr_default_grp_symbol_timer_symbol_timer_0_csr_sw_7_n25,`PEU.peu_ptl_ctb_tlr_csr_ptl_ctb_tlr_default_grp_symbol_timer_symbol_timer_0_csr_sw_6_n25,`PEU.peu_ptl_ctb_tlr_csr_ptl_ctb_tlr_default_grp_symbol_timer_symbol_timer_0_csr_sw_5_n25,`PEU.peu_ptl_ctb_tlr_csr_ptl_ctb_tlr_default_grp_symbol_timer_symbol_timer_0_csr_sw_4_n25,`PEU.peu_ptl_ctb_tlr_csr_ptl_ctb_tlr_default_grp_symbol_timer_symbol_timer_0_csr_sw_3_n25,`PEU.peu_ptl_ctb_tlr_csr_ptl_ctb_tlr_default_grp_symbol_timer_symbol_timer_0_csr_sw_2_n25,`PEU.peu_ptl_ctb_tlr_csr_ptl_ctb_tlr_default_grp_symbol_timer_symbol_timer_0_csr_sw_1_n25,`PEU.peu_ptl_ctb_tlr_csr_ptl_ctb_tlr_default_grp_symbol_timer_symbol_timer_0_csr_sw_0_n25,`PEU.peu_ptl_ctb_tlr_csr_ptl_ctb_tlr_default_grp_symbol_timer_symbol_timer_0_csr_sw_0_n38} = 64'h020;
3797
3798 // think this is already set to 1 in dtm mode
3799 //force {`PEU.peu_ptl_ctb_tlr_csr_ptl_ctb_tlr_default_grp_link_ctl_csrbus_read_data_13_,`PEU.peu_ptl_ctb_tlr_csr_ptl_ctb_tlr_default_grp_link_ctl_csrbus_read_data_12_,`PEU.peu_ptl_ctb_tlr_csr_ptl_ctb_tlr_default_grp_link_ctl_csrbus_read_data_3_} = 1'b1;
3800
3801`endif // PEU_GATE
3802
3803end // initial
3804`endif // SLAM_VECTORS
3805
3806`endif //ndef AXIS_TL - make sure all non synthesizeable code goes above this line
3807
3808endmodule
3809//----------------------------------------------------------
3810`ifdef AXIS_TL
3811module axis_top;
3812reg rcc_off;
3813reg start_dumps;
3814reg freq_change;
3815reg in_hw;
3816initial start_dumps <= 0;
3817initial rcc_off <= 0;
3818initial freq_change <= 0;
3819initial in_hw <= 0;
3820task task_dump_mem;
3821begin // axis tbcall_region
3822`ifdef AXIS_TL
3823 if (~($axis_rccoff))
3824 begin
3825 $axis_exec("$rcc(off);");
3826 end
3827 start_dumps <= #1 1;
3828`endif // AXIS_TL
3829end
3830endtask
3831
3832
3833task task_rcc_off;
3834begin // axis tbcall_region
3835`ifdef PALLADIUM
3836`else
3837`ifdef AXIS_TL
3838 if (~($axis_rccoff))
3839 begin
3840 $axis_exec("$rcc(off);");
3841 end
3842 rcc_off <= #2 1;
3843`endif // AXIS_TL
3844`endif // PALLADIUM
3845end
3846endtask
3847
3848task task_change_clk;
3849begin
3850 if (~($axis_rccoff))
3851 begin
3852 $axis_exec("$rcc(off);");
3853 in_hw <= 1;
3854 end
3855 else in_hw <= 0;
3856 freq_change<= #1 1;
3857end
3858endtask
3859
3860always @(posedge rcc_off) begin
3861begin // axis tbcall_region
3862`ifdef AXIS_TL
3863 $axis_exec("$rcc(free);");
3864 $display("AXIS: $stop at simulation time %0d, returning to cli\n",$time);
3865 // #2 $finish();
3866 //rcc_off <= 0;
3867 $stop;
3868`endif // AXIS_TL
3869end
3870end
3871`ifndef FAST_AXIS
3872always @(posedge freq_change) begin // axis tbcall_region
3873 if ($test$plusargs("SYSCLK_166")) begin
3874 $display("Setting pll div 2 = %h, sysclock = 166MHz",`CCU.ccu_pll.x1.imaginary_vco_gen
3875.pll_core.div);
3876 case(`CCU.ccu_pll.x1.imaginary_vco_gen.pll_core.div)
3877 6'hf: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,375, 750, 750); // div2 = 8
3878 //6'h11: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,333, 666 , 666); // div2 = 9
3879 6'h13: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,300, 600 , 600); // div2 = a
3880 //6'h15: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,272, 545 , 545); // div2 = b
3881 6'h17: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,250, 500 , 500); // div2 = c
3882 //6'h19: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,230, 461 , 461); // div2 = d
3883 //6'h1b: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,214, 428 , 428); // div2 = e
3884 6'h1d: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,200, 400 , 400); // div2 = f
3885 6'h1f: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,187, 375 , 375); // div2 = 10
3886 //6'h21: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,176, 352 , 352); // div2 = 11
3887 //6'h23: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,166, 333 , 333); // div2 = 12
3888 6'h27: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,150, 300 , 300); // div2 = 14
3889 default: begin // axis tbcall_region
3890 $display("Unrecognized/Unsupported pll div 2 setting = %h",`CCU.ccu_pll.x1.imaginary_vco_gen.pll_core.div);
3891 end
3892 endcase
3893 end
3894 else
3895 if ($test$plusargs("SYSCLK_133")) begin
3896 $display("Setting pll div 2 = %h, sysclock = 133MHz",`CCU.ccu_pll.x1.imaginary_vco_gen.pll_core.div);
3897 case(`CCU.ccu_pll.x1.imaginary_vco_gen.pll_core.div)
3898 6'hf: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,468, 937, 937); // div2 = 8
3899 6'h11: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,416, 833 , 833); // div2 = 9
3900 6'h13: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,375, 750 , 750); // div2 = a
3901 6'h15: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,340, 681 , 681); // div2 = b
3902 6'h17: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,312, 625 , 625); // div2 = c
3903 6'h19: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,288, 577 , 577); // div2 = d
3904 6'h1b: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,267, 536 , 536); // div2 = e
3905 6'h1d: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,250, 500 , 500); // div2 = f
3906 6'h1f: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,231, 461 , 461); // div2 = 10
3907 6'h21: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,220, 441 , 441); // div2 = 11
3908 6'h23: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,214, 428 , 428); // div2 = 12
3909 6'h25: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,197, 394 , 394); // div2 = 12
3910 6'h27: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,187, 375 , 375); // div2 = 12
3911 6'h29: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,178, 357 , 357); // div2 = 12
3912 default: begin // axis tbcall_region
3913 $display("Unrecognized pll div 2 setting = %h",`CCU.ccu_pll.x1.imaginary_vco_gen.pll_core.div);
3914 end
3915 endcase
3916 end
3917 if ($test$plusargs("SYSCLK_DTM_94")) begin
3918 $display("Setting pll div 2 = %h, sysclock = 94MHz DTM ",`CCU.ccu_pll.x1.imaginary_vco_gen.pll_core.div);
3919 case(`CCU.ccu_pll.x1.imaginary_vco_gen.pll_core.div)
3920 6'hf: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,330, 660, 660); // div2 = 7
3921 6'h15: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,240, 480, 480); // div2 = 10
3922 6'h1d: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,176, 352, 352); // div2 = 14
3923 default: begin // axis tbcall_region
3924 $display("Unrecognized pll div 2 setting = %h",`CCU.ccu_pll.x1.imaginary_vco_gen.pll_core.div);
3925 end
3926 endcase
3927 end
3928 else
3929 begin
3930 $display("Setting pll div 2 = %h, Default sysclock = 166MHz",`CCU.ccu_pll.x1.imaginary_vco_gen.pll_core.div);
3931 case(`CCU.ccu_pll.x1.imaginary_vco_gen.pll_core.div)
3932 6'hf: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,375, 750, 750); // div2 = 8
3933 6'h13: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,300, 600 , 600); // div2 = a
3934 6'h17: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,250, 500 , 500); // div2 = c
3935 6'h1d: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,200, 400 , 400); // div2 = f
3936 6'h1f: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,187, 375 , 375); // div2 = 10
3937 6'h27: $axis_set_clkgen("tb_top.cpu.ccu.ccu_pll.x1.imaginary_vco_gen.pll_core.clk2",0,150, 300 , 300); // div2 = 14
3938 default: begin // axis tbcall_region
3939 $display("Unrecognized pll div 2 setting = %h",`CCU.ccu_pll.x1.imaginary_vco_gen.pll_core.div);
3940 end
3941 endcase
3942 end
3943 if (in_hw) $axis_exec("$rcc(autorun);.;");
3944 else $axis_exec(".;");
3945end
3946
3947
3948always @(posedge freq_change) begin
3949 freq_change <= #1 0;
3950end
3951
3952always @(posedge rcc_off) begin
3953 rcc_off <= #1 0;
3954end
3955always @(posedge start_dumps) begin
3956 start_dumps <= #1 0;
3957end
3958`endif // `ifndef FAST_AXIS
3959
3960endmodule // axis_top
3961`endif // `ifdef AXIS_TL