Commit | Line | Data |
---|---|---|
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" | |
48 | module 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 | |
78 | mcu_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 | |
121 | wire PWRON_RST_L; | |
122 | reg jtpor_trig; | |
123 | reg [7:0] ram_cnt; | |
124 | initial ram_cnt = 0; | |
125 | initial jtpor_trig = 0; | |
126 | ||
127 | reg serdes_trig1; | |
128 | reg serdes_trig2; | |
129 | reg serdes_trig3; | |
130 | reg serdes_trig4; | |
131 | reg serdes_trig5; | |
132 | always @(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 | |
148 | end | |
149 | ||
150 | reg saw_trig4 ; | |
151 | reg [8:0] trig4_cntr ; | |
152 | ||
153 | always @(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; | |
160 | end | |
161 | ||
162 | always @(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 ; | |
171 | end | |
172 | ||
173 | wire trigger4 = saw_trig4 & (trig4_cntr == 9'b101111101) ; | |
174 | ||
175 | ||
176 | reg saw_trig2 ; | |
177 | always @(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 ; | |
184 | end | |
185 | ||
186 | wire trigger2 = !serdes_trig2 & (`TCU.mbist_ctl.bisx_counter == 32'h2_29c3) & ~saw_trig2; | |
187 | reg [2:0] cclk_cntr ; | |
188 | reg hold_trig2_cclk ; | |
189 | ||
190 | always @(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; | |
200 | end | |
201 | ||
202 | ||
203 | reg saw_trig5 ; | |
204 | always @(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 ; | |
211 | end | |
212 | ||
213 | wire trigger5 = !serdes_trig5 & (tb_top.cpu.ncu.rst_ncu_unpark_thread) & ~saw_trig5 ; | |
214 | reg [2:0] cclk_cntr2 ; | |
215 | reg hold_trig5_cclk ; | |
216 | ||
217 | always @(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; | |
227 | end | |
228 | ||
229 | initial begin | |
230 | hold_trig5_cclk = 0; | |
231 | cclk_cntr2 = 0; | |
232 | serdes_trig5 = 0; | |
233 | saw_trig5 = 0; | |
234 | hold_trig2_cclk = 0; | |
235 | cclk_cntr = 0; | |
236 | serdes_trig2 = 0; | |
237 | saw_trig2 = 0; | |
238 | serdes_trig4 = 0; | |
239 | saw_trig4 = 0; | |
240 | end | |
241 | ||
242 | wire trigger1 = !serdes_trig1 & (tb_top.cpu.tcu.tcu_rst_flush_stop_ack && (tb_top.cpu.rst.rst_mio_rst_state == 6'b000110)); | |
243 | wire trigger3 = !serdes_trig3 & (tb_top.cpu.tcu.tcu_rst_flush_stop_ack && (tb_top.cpu.rst.rst_mio_rst_state == 6'b001010)); | |
244 | ||
245 | reg [11:0] axis_jtag_count1; | |
246 | reg [11:0] axis_jtag_count2; | |
247 | reg [11:0] axis_jtag_count3; | |
248 | reg [11:0] axis_jtag_count4; | |
249 | reg [11:0] axis_jtag_count5; | |
250 | reg hold_trigger1; | |
251 | reg hold_trigger2; | |
252 | reg hold_trigger3; | |
253 | reg hold_trigger4; | |
254 | reg hold_trigger5; | |
255 | reg hold_trigger1_d ; | |
256 | reg hold_trigger2_d ; | |
257 | reg hold_trigger3_d ; | |
258 | reg hold_trigger4_d ; | |
259 | reg hold_trigger5_d ; | |
260 | ||
261 | wire [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 | ||
268 | always @(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) | |
363 | end | |
364 | ||
365 | wire [2:0] axis_dout_jtpor; | |
366 | axis_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 | ||
375 | wire [2:0] axis_dout1; | |
376 | axis_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 | ||
385 | wire [2:0] axis_dout2; | |
386 | axis_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 | ); | |
394 | wire [2:0] axis_dout3; | |
395 | axis_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 | ); | |
403 | wire [2:0] axis_dout4; | |
404 | axis_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 | ); | |
412 | wire [2:0] axis_dout5; | |
413 | axis_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 | ||
422 | wire hold_trigger1_or_d = hold_trigger1 | hold_trigger1_d ; | |
423 | wire hold_trigger2_or_d = hold_trigger2 | hold_trigger2_d ; | |
424 | wire hold_trigger3_or_d = hold_trigger3 | hold_trigger3_d ; | |
425 | wire hold_trigger4_or_d = hold_trigger4 | hold_trigger4_d ; | |
426 | wire hold_trigger5_or_d = hold_trigger5 | hold_trigger5_d ; | |
427 | ||
428 | reg [2:0] neg_axis_dout1 ; | |
429 | reg [2:0] neg_axis_dout2 ; | |
430 | reg [2:0] neg_axis_dout3 ; | |
431 | reg [2:0] neg_axis_dout4 ; | |
432 | reg [2:0] neg_axis_dout5 ; | |
433 | reg pbrst_testpin ; | |
434 | reg [16:0] pbrst_counter ; | |
435 | reg PB_RST_L ; | |
436 | reg TDI ; | |
437 | reg TMS ; | |
438 | reg TRST_L ; | |
439 | reg [6:0] stop_counter ; | |
440 | reg stop_flag ; | |
441 | reg pbrst_stop_flag ; | |
442 | ||
443 | always @(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 | |
458 | end | |
459 | ||
460 | always @(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 ; | |
471 | end | |
472 | ||
473 | ||
474 | initial PB_RST_L = 1'b1 ; | |
475 | always @(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 | |
482 | end | |
483 | ||
484 | always @(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 | |
499 | end | |
500 | ||
501 | ||
502 | always @(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 | |
534 | end | |
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 | |
592 | mcusat_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 | ||
928 | initial 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 | |
934 | end | |
935 | ||
936 | ||
937 | initial 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 | |
944 | m_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 | |
946 | m_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 | |
962 | end | |
963 | ||
964 | ||
965 | `ifdef FULL_RESET | |
966 | reg vector_quick_reset; | |
967 | initial 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 | |
977 | end | |
978 | ||
979 | reg [14:0] efu_wait_count; | |
980 | initial 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); | |
987 | end | |
988 | ||
989 | always @(vector_quick_reset or `TCU.sigmux_ctl.efcnt_dout) | |
990 | begin | |
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 | ||
1001 | end | |
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 | |
1030 | wire PWRON_RST_L; | |
1031 | `ifndef FULL_RESET | |
1032 | ||
1033 | always @(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 | ||
1113 | end // always @( | |
1114 | ||
1115 | always @(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 | |
1130 | end // 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 | |
1168 | trig_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 | ||
1348 | wire dmu_ncu_vld_pb; | |
1349 | wire[31:0] dmu_ncu_data_pb; | |
1350 | wire dmu_ncu_wrack_vld_pb; | |
1351 | wire[3:0] dmu_ncu_wrack_tag_pb; | |
1352 | wire dmu_ncu_stall_pb; | |
1353 | wire dmu_sii_hdr_vld_pb; | |
1354 | wire dmu_sii_reqbypass_pb; | |
1355 | wire dmu_sii_datareq_pb; | |
1356 | wire dmu_sii_datareq16_pb; | |
1357 | wire[15:0] dmu_sii_be_pb; | |
1358 | wire[127:0] dmu_sii_data_pb; | |
1359 | wire niu_ncu_vld_pb; | |
1360 | wire[31:0] niu_ncu_data_pb; | |
1361 | wire niu_ncu_stall_pb; | |
1362 | wire niu_sii_hdr_vld_pb; | |
1363 | wire niu_sii_datareq_pb; | |
1364 | wire niu_sii_reqbypass_pb; | |
1365 | wire[127:0] niu_sii_data_pb; | |
1366 | wire 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 | ||
1394 | n2_int n2_int ( ); | |
1395 | n2_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; | |
1930 | ssi_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 | |
2166 | nb_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 | |
2207 | always @(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 | |
2211 | end | |
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 | |
2330 | initial 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 | |
2340 | initial 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 | |
2456 | end | |
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 | |
2483 | fc8_top_shell vera_shell( | |
2484 | `else | |
2485 | fc1_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 | ||
2553 | reg[7:0] spc7_pcx_req; | |
2554 | reg[7:0] spc7_pcx_req_d1; | |
2555 | reg[7:0] spc7_pcx_req_d2; | |
2556 | reg[7:0] spc7_pcx_req_d3; | |
2557 | reg[7:0] spc7_pcx_req_d4; | |
2558 | reg[7:0] spc7_pcx_req_d5; | |
2559 | reg[7:0] spc7_pcx_req_d6; | |
2560 | reg[7:0] spc7_pcx_req_d7; | |
2561 | reg[7:0] spc7_pcx_req_d8; | |
2562 | reg[7:0] spc7_pcx_req_d9; | |
2563 | reg[7:0] spc7_pcx_req_d10; | |
2564 | reg[7:0] spc6_pcx_req; | |
2565 | reg[7:0] spc6_pcx_req_d1; | |
2566 | reg[7:0] spc6_pcx_req_d2; | |
2567 | reg[7:0] spc6_pcx_req_d3; | |
2568 | reg[7:0] spc6_pcx_req_d4; | |
2569 | reg[7:0] spc6_pcx_req_d5; | |
2570 | reg[7:0] spc6_pcx_req_d6; | |
2571 | reg[7:0] spc6_pcx_req_d7; | |
2572 | reg[7:0] spc6_pcx_req_d8; | |
2573 | reg[7:0] spc6_pcx_req_d9; | |
2574 | reg[7:0] spc6_pcx_req_d10; | |
2575 | reg[7:0] spc5_pcx_req; | |
2576 | reg[7:0] spc5_pcx_req_d1; | |
2577 | reg[7:0] spc5_pcx_req_d2; | |
2578 | reg[7:0] spc5_pcx_req_d3; | |
2579 | reg[7:0] spc5_pcx_req_d4; | |
2580 | reg[7:0] spc5_pcx_req_d5; | |
2581 | reg[7:0] spc5_pcx_req_d6; | |
2582 | reg[7:0] spc5_pcx_req_d7; | |
2583 | reg[7:0] spc5_pcx_req_d8; | |
2584 | reg[7:0] spc5_pcx_req_d9; | |
2585 | reg[7:0] spc5_pcx_req_d10; | |
2586 | reg[7:0] spc4_pcx_req; | |
2587 | reg[7:0] spc4_pcx_req_d1; | |
2588 | reg[7:0] spc4_pcx_req_d2; | |
2589 | reg[7:0] spc4_pcx_req_d3; | |
2590 | reg[7:0] spc4_pcx_req_d4; | |
2591 | reg[7:0] spc4_pcx_req_d5; | |
2592 | reg[7:0] spc4_pcx_req_d6; | |
2593 | reg[7:0] spc4_pcx_req_d7; | |
2594 | reg[7:0] spc4_pcx_req_d8; | |
2595 | reg[7:0] spc4_pcx_req_d9; | |
2596 | reg[7:0] spc4_pcx_req_d10; | |
2597 | reg[7:0] spc3_pcx_req; | |
2598 | reg[7:0] spc3_pcx_req_d1; | |
2599 | reg[7:0] spc3_pcx_req_d2; | |
2600 | reg[7:0] spc3_pcx_req_d3; | |
2601 | reg[7:0] spc3_pcx_req_d4; | |
2602 | reg[7:0] spc3_pcx_req_d5; | |
2603 | reg[7:0] spc3_pcx_req_d6; | |
2604 | reg[7:0] spc3_pcx_req_d7; | |
2605 | reg[7:0] spc3_pcx_req_d8; | |
2606 | reg[7:0] spc3_pcx_req_d9; | |
2607 | reg[7:0] spc3_pcx_req_d10; | |
2608 | reg[7:0] spc2_pcx_req; | |
2609 | reg[7:0] spc2_pcx_req_d1; | |
2610 | reg[7:0] spc2_pcx_req_d2; | |
2611 | reg[7:0] spc2_pcx_req_d3; | |
2612 | reg[7:0] spc2_pcx_req_d4; | |
2613 | reg[7:0] spc2_pcx_req_d5; | |
2614 | reg[7:0] spc2_pcx_req_d6; | |
2615 | reg[7:0] spc2_pcx_req_d7; | |
2616 | reg[7:0] spc2_pcx_req_d8; | |
2617 | reg[7:0] spc2_pcx_req_d9; | |
2618 | reg[7:0] spc2_pcx_req_d10; | |
2619 | reg[7:0] spc1_pcx_req; | |
2620 | reg[7:0] spc1_pcx_req_d1; | |
2621 | reg[7:0] spc1_pcx_req_d2; | |
2622 | reg[7:0] spc1_pcx_req_d3; | |
2623 | reg[7:0] spc1_pcx_req_d4; | |
2624 | reg[7:0] spc1_pcx_req_d5; | |
2625 | reg[7:0] spc1_pcx_req_d6; | |
2626 | reg[7:0] spc1_pcx_req_d7; | |
2627 | reg[7:0] spc1_pcx_req_d8; | |
2628 | reg[7:0] spc1_pcx_req_d9; | |
2629 | reg[7:0] spc1_pcx_req_d10; | |
2630 | reg[7:0] spc0_pcx_req; | |
2631 | reg[7:0] spc0_pcx_req_d1; | |
2632 | reg[7:0] spc0_pcx_req_d2; | |
2633 | reg[7:0] spc0_pcx_req_d3; | |
2634 | reg[7:0] spc0_pcx_req_d4; | |
2635 | reg[7:0] spc0_pcx_req_d5; | |
2636 | reg[7:0] spc0_pcx_req_d6; | |
2637 | reg[7:0] spc0_pcx_req_d7; | |
2638 | reg[7:0] spc0_pcx_req_d8; | |
2639 | reg[7:0] spc0_pcx_req_d9; | |
2640 | reg[7:0] spc0_pcx_req_d10; | |
2641 | ||
2642 | reg[7:0] spc7_pcx_atm; | |
2643 | reg[7:0] spc7_pcx_atm_d1; | |
2644 | reg[7:0] spc7_pcx_atm_d2; | |
2645 | reg[7:0] spc7_pcx_atm_d3; | |
2646 | reg[7:0] spc7_pcx_atm_d4; | |
2647 | reg[7:0] spc7_pcx_atm_d5; | |
2648 | reg[7:0] spc7_pcx_atm_d6; | |
2649 | reg[7:0] spc7_pcx_atm_d7; | |
2650 | reg[7:0] spc7_pcx_atm_d8; | |
2651 | reg[7:0] spc7_pcx_atm_d9; | |
2652 | reg[7:0] spc7_pcx_atm_d10; | |
2653 | reg[7:0] spc6_pcx_atm; | |
2654 | reg[7:0] spc6_pcx_atm_d1; | |
2655 | reg[7:0] spc6_pcx_atm_d2; | |
2656 | reg[7:0] spc6_pcx_atm_d3; | |
2657 | reg[7:0] spc6_pcx_atm_d4; | |
2658 | reg[7:0] spc6_pcx_atm_d5; | |
2659 | reg[7:0] spc6_pcx_atm_d6; | |
2660 | reg[7:0] spc6_pcx_atm_d7; | |
2661 | reg[7:0] spc6_pcx_atm_d8; | |
2662 | reg[7:0] spc6_pcx_atm_d9; | |
2663 | reg[7:0] spc6_pcx_atm_d10; | |
2664 | reg[7:0] spc5_pcx_atm; | |
2665 | reg[7:0] spc5_pcx_atm_d1; | |
2666 | reg[7:0] spc5_pcx_atm_d2; | |
2667 | reg[7:0] spc5_pcx_atm_d3; | |
2668 | reg[7:0] spc5_pcx_atm_d4; | |
2669 | reg[7:0] spc5_pcx_atm_d5; | |
2670 | reg[7:0] spc5_pcx_atm_d6; | |
2671 | reg[7:0] spc5_pcx_atm_d7; | |
2672 | reg[7:0] spc5_pcx_atm_d8; | |
2673 | reg[7:0] spc5_pcx_atm_d9; | |
2674 | reg[7:0] spc5_pcx_atm_d10; | |
2675 | reg[7:0] spc4_pcx_atm; | |
2676 | reg[7:0] spc4_pcx_atm_d1; | |
2677 | reg[7:0] spc4_pcx_atm_d2; | |
2678 | reg[7:0] spc4_pcx_atm_d3; | |
2679 | reg[7:0] spc4_pcx_atm_d4; | |
2680 | reg[7:0] spc4_pcx_atm_d5; | |
2681 | reg[7:0] spc4_pcx_atm_d6; | |
2682 | reg[7:0] spc4_pcx_atm_d7; | |
2683 | reg[7:0] spc4_pcx_atm_d8; | |
2684 | reg[7:0] spc4_pcx_atm_d9; | |
2685 | reg[7:0] spc4_pcx_atm_d10; | |
2686 | reg[7:0] spc3_pcx_atm; | |
2687 | reg[7:0] spc3_pcx_atm_d1; | |
2688 | reg[7:0] spc3_pcx_atm_d2; | |
2689 | reg[7:0] spc3_pcx_atm_d3; | |
2690 | reg[7:0] spc3_pcx_atm_d4; | |
2691 | reg[7:0] spc3_pcx_atm_d5; | |
2692 | reg[7:0] spc3_pcx_atm_d6; | |
2693 | reg[7:0] spc3_pcx_atm_d7; | |
2694 | reg[7:0] spc3_pcx_atm_d8; | |
2695 | reg[7:0] spc3_pcx_atm_d9; | |
2696 | reg[7:0] spc3_pcx_atm_d10; | |
2697 | reg[7:0] spc2_pcx_atm; | |
2698 | reg[7:0] spc2_pcx_atm_d1; | |
2699 | reg[7:0] spc2_pcx_atm_d2; | |
2700 | reg[7:0] spc2_pcx_atm_d3; | |
2701 | reg[7:0] spc2_pcx_atm_d4; | |
2702 | reg[7:0] spc2_pcx_atm_d5; | |
2703 | reg[7:0] spc2_pcx_atm_d6; | |
2704 | reg[7:0] spc2_pcx_atm_d7; | |
2705 | reg[7:0] spc2_pcx_atm_d8; | |
2706 | reg[7:0] spc2_pcx_atm_d9; | |
2707 | reg[7:0] spc2_pcx_atm_d10; | |
2708 | reg[7:0] spc1_pcx_atm; | |
2709 | reg[7:0] spc1_pcx_atm_d1; | |
2710 | reg[7:0] spc1_pcx_atm_d2; | |
2711 | reg[7:0] spc1_pcx_atm_d3; | |
2712 | reg[7:0] spc1_pcx_atm_d4; | |
2713 | reg[7:0] spc1_pcx_atm_d5; | |
2714 | reg[7:0] spc1_pcx_atm_d6; | |
2715 | reg[7:0] spc1_pcx_atm_d7; | |
2716 | reg[7:0] spc1_pcx_atm_d8; | |
2717 | reg[7:0] spc1_pcx_atm_d9; | |
2718 | reg[7:0] spc1_pcx_atm_d10; | |
2719 | reg[7:0] spc0_pcx_atm; | |
2720 | reg[7:0] spc0_pcx_atm_d1; | |
2721 | reg[7:0] spc0_pcx_atm_d2; | |
2722 | reg[7:0] spc0_pcx_atm_d3; | |
2723 | reg[7:0] spc0_pcx_atm_d4; | |
2724 | reg[7:0] spc0_pcx_atm_d5; | |
2725 | reg[7:0] spc0_pcx_atm_d6; | |
2726 | reg[7:0] spc0_pcx_atm_d7; | |
2727 | reg[7:0] spc0_pcx_atm_d8; | |
2728 | reg[7:0] spc0_pcx_atm_d9; | |
2729 | reg[7:0] spc0_pcx_atm_d10; | |
2730 | ||
2731 | reg[7:0] l2t7_cpx_req_d1; | |
2732 | reg[7:0] l2t7_cpx_req_d2; | |
2733 | reg[7:0] l2t7_cpx_req_d3; | |
2734 | reg[7:0] l2t7_cpx_req_d4; | |
2735 | reg[7:0] l2t6_cpx_req_d1; | |
2736 | reg[7:0] l2t6_cpx_req_d2; | |
2737 | reg[7:0] l2t6_cpx_req_d3; | |
2738 | reg[7:0] l2t6_cpx_req_d4; | |
2739 | reg[7:0] l2t5_cpx_req_d1; | |
2740 | reg[7:0] l2t5_cpx_req_d2; | |
2741 | reg[7:0] l2t5_cpx_req_d3; | |
2742 | reg[7:0] l2t5_cpx_req_d4; | |
2743 | reg[7:0] l2t4_cpx_req_d1; | |
2744 | reg[7:0] l2t4_cpx_req_d2; | |
2745 | reg[7:0] l2t4_cpx_req_d3; | |
2746 | reg[7:0] l2t4_cpx_req_d4; | |
2747 | reg[7:0] l2t3_cpx_req_d1; | |
2748 | reg[7:0] l2t3_cpx_req_d2; | |
2749 | reg[7:0] l2t3_cpx_req_d3; | |
2750 | reg[7:0] l2t3_cpx_req_d4; | |
2751 | reg[7:0] l2t2_cpx_req_d1; | |
2752 | reg[7:0] l2t2_cpx_req_d2; | |
2753 | reg[7:0] l2t2_cpx_req_d3; | |
2754 | reg[7:0] l2t2_cpx_req_d4; | |
2755 | reg[7:0] l2t1_cpx_req_d1; | |
2756 | reg[7:0] l2t1_cpx_req_d2; | |
2757 | reg[7:0] l2t1_cpx_req_d3; | |
2758 | reg[7:0] l2t1_cpx_req_d4; | |
2759 | reg[7:0] l2t0_cpx_req_d1; | |
2760 | reg[7:0] l2t0_cpx_req_d2; | |
2761 | reg[7:0] l2t0_cpx_req_d3; | |
2762 | reg[7:0] l2t0_cpx_req_d4; | |
2763 | ||
2764 | reg[7:0] l2t7_cpx_atom_d1; | |
2765 | reg[7:0] l2t7_cpx_atom_d2; | |
2766 | reg[7:0] l2t7_cpx_atom_d3; | |
2767 | reg[7:0] l2t7_cpx_atom_d4; | |
2768 | reg[7:0] l2t6_cpx_atom_d1; | |
2769 | reg[7:0] l2t6_cpx_atom_d2; | |
2770 | reg[7:0] l2t6_cpx_atom_d3; | |
2771 | reg[7:0] l2t6_cpx_atom_d4; | |
2772 | reg[7:0] l2t5_cpx_atom_d1; | |
2773 | reg[7:0] l2t5_cpx_atom_d2; | |
2774 | reg[7:0] l2t5_cpx_atom_d3; | |
2775 | reg[7:0] l2t5_cpx_atom_d4; | |
2776 | reg[7:0] l2t4_cpx_atom_d1; | |
2777 | reg[7:0] l2t4_cpx_atom_d2; | |
2778 | reg[7:0] l2t4_cpx_atom_d3; | |
2779 | reg[7:0] l2t4_cpx_atom_d4; | |
2780 | reg[7:0] l2t3_cpx_atom_d1; | |
2781 | reg[7:0] l2t3_cpx_atom_d2; | |
2782 | reg[7:0] l2t3_cpx_atom_d3; | |
2783 | reg[7:0] l2t3_cpx_atom_d4; | |
2784 | reg[7:0] l2t2_cpx_atom_d1; | |
2785 | reg[7:0] l2t2_cpx_atom_d2; | |
2786 | reg[7:0] l2t2_cpx_atom_d3; | |
2787 | reg[7:0] l2t2_cpx_atom_d4; | |
2788 | reg[7:0] l2t1_cpx_atom_d1; | |
2789 | reg[7:0] l2t1_cpx_atom_d2; | |
2790 | reg[7:0] l2t1_cpx_atom_d3; | |
2791 | reg[7:0] l2t1_cpx_atom_d4; | |
2792 | reg[7:0] l2t0_cpx_atom_d1; | |
2793 | reg[7:0] l2t0_cpx_atom_d2; | |
2794 | reg[7:0] l2t0_cpx_atom_d3; | |
2795 | reg[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 | ||
2830 | initial begin | |
2831 | assign spc7_pcx_req = `CCX.spc7_pcx_req_pq; | |
2832 | assign spc6_pcx_req = `CCX.spc6_pcx_req_pq; | |
2833 | assign spc5_pcx_req = `CCX.spc5_pcx_req_pq; | |
2834 | assign spc4_pcx_req = `CCX.spc4_pcx_req_pq; | |
2835 | assign spc3_pcx_req = `CCX.spc3_pcx_req_pq; | |
2836 | assign spc2_pcx_req = `CCX.spc2_pcx_req_pq; | |
2837 | assign spc1_pcx_req = `CCX.spc1_pcx_req_pq; | |
2838 | assign spc0_pcx_req = `CCX.spc0_pcx_req_pq; | |
2839 | ||
2840 | ||
2841 | assign spc0_pcx_atm = `CCX.spc0_pcx_atm_pq; | |
2842 | assign spc1_pcx_atm = `CCX.spc1_pcx_atm_pq; | |
2843 | assign spc2_pcx_atm = `CCX.spc2_pcx_atm_pq; | |
2844 | assign spc3_pcx_atm = `CCX.spc3_pcx_atm_pq; | |
2845 | assign spc4_pcx_atm = `CCX.spc4_pcx_atm_pq; | |
2846 | assign spc5_pcx_atm = `CCX.spc5_pcx_atm_pq; | |
2847 | assign spc6_pcx_atm = `CCX.spc6_pcx_atm_pq; | |
2848 | assign spc7_pcx_atm = `CCX.spc7_pcx_atm_pq; | |
2849 | end | |
2850 | ||
2851 | always @(posedge clock) | |
2852 | begin | |
2853 | spc0_pcx_req_d1[7:0] <= spc0_pcx_req[7:0] ; | |
2854 | spc0_pcx_req_d2[7:0] <= spc0_pcx_req_d1[7:0] ; | |
2855 | spc0_pcx_req_d3[7:0] <= spc0_pcx_req_d2[7:0] ; | |
2856 | spc0_pcx_req_d4[7:0] <= spc0_pcx_req_d3[7:0] ; | |
2857 | spc0_pcx_req_d5[7:0] <= spc0_pcx_req_d4[7:0] ; | |
2858 | spc0_pcx_req_d6[7:0] <= spc0_pcx_req_d5[7:0] ; | |
2859 | spc0_pcx_req_d7[7:0] <= spc0_pcx_req_d6[7:0] ; | |
2860 | spc0_pcx_req_d8[7:0] <= spc0_pcx_req_d7[7:0] ; | |
2861 | spc0_pcx_req_d9[7:0] <= spc0_pcx_req_d8[7:0] ; | |
2862 | spc0_pcx_req_d10[7:0] <= spc0_pcx_req_d9[7:0] ; | |
2863 | spc1_pcx_req_d1[7:0] <= spc1_pcx_req[7:0] ; | |
2864 | spc1_pcx_req_d2[7:0] <= spc1_pcx_req_d1[7:0] ; | |
2865 | spc1_pcx_req_d3[7:0] <= spc1_pcx_req_d2[7:0] ; | |
2866 | spc1_pcx_req_d4[7:0] <= spc1_pcx_req_d3[7:0] ; | |
2867 | spc1_pcx_req_d5[7:0] <= spc1_pcx_req_d4[7:0] ; | |
2868 | spc1_pcx_req_d6[7:0] <= spc1_pcx_req_d5[7:0] ; | |
2869 | spc1_pcx_req_d7[7:0] <= spc1_pcx_req_d6[7:0] ; | |
2870 | spc1_pcx_req_d8[7:0] <= spc1_pcx_req_d7[7:0] ; | |
2871 | spc1_pcx_req_d9[7:0] <= spc1_pcx_req_d8[7:0] ; | |
2872 | spc1_pcx_req_d10[7:0] <= spc1_pcx_req_d9[7:0] ; | |
2873 | spc2_pcx_req_d1[7:0] <= spc2_pcx_req[7:0] ; | |
2874 | spc2_pcx_req_d2[7:0] <= spc2_pcx_req_d1[7:0] ; | |
2875 | spc2_pcx_req_d3[7:0] <= spc2_pcx_req_d2[7:0] ; | |
2876 | spc2_pcx_req_d4[7:0] <= spc2_pcx_req_d3[7:0] ; | |
2877 | spc2_pcx_req_d5[7:0] <= spc2_pcx_req_d4[7:0] ; | |
2878 | spc2_pcx_req_d6[7:0] <= spc2_pcx_req_d5[7:0] ; | |
2879 | spc2_pcx_req_d7[7:0] <= spc2_pcx_req_d6[7:0] ; | |
2880 | spc2_pcx_req_d8[7:0] <= spc2_pcx_req_d7[7:0] ; | |
2881 | spc2_pcx_req_d9[7:0] <= spc2_pcx_req_d8[7:0] ; | |
2882 | spc2_pcx_req_d10[7:0] <= spc2_pcx_req_d9[7:0] ; | |
2883 | spc3_pcx_req_d1[7:0] <= spc3_pcx_req[7:0] ; | |
2884 | spc3_pcx_req_d2[7:0] <= spc3_pcx_req_d1[7:0] ; | |
2885 | spc3_pcx_req_d3[7:0] <= spc3_pcx_req_d2[7:0] ; | |
2886 | spc3_pcx_req_d4[7:0] <= spc3_pcx_req_d3[7:0] ; | |
2887 | spc3_pcx_req_d5[7:0] <= spc3_pcx_req_d4[7:0] ; | |
2888 | spc3_pcx_req_d6[7:0] <= spc3_pcx_req_d5[7:0] ; | |
2889 | spc3_pcx_req_d7[7:0] <= spc3_pcx_req_d6[7:0] ; | |
2890 | spc3_pcx_req_d8[7:0] <= spc3_pcx_req_d7[7:0] ; | |
2891 | spc3_pcx_req_d9[7:0] <= spc3_pcx_req_d8[7:0] ; | |
2892 | spc3_pcx_req_d10[7:0] <= spc3_pcx_req_d9[7:0] ; | |
2893 | spc4_pcx_req_d1[7:0] <= spc4_pcx_req[7:0] ; | |
2894 | spc4_pcx_req_d2[7:0] <= spc4_pcx_req_d1[7:0] ; | |
2895 | spc4_pcx_req_d3[7:0] <= spc4_pcx_req_d2[7:0] ; | |
2896 | spc4_pcx_req_d4[7:0] <= spc4_pcx_req_d3[7:0] ; | |
2897 | spc4_pcx_req_d5[7:0] <= spc4_pcx_req_d4[7:0] ; | |
2898 | spc4_pcx_req_d6[7:0] <= spc4_pcx_req_d5[7:0] ; | |
2899 | spc4_pcx_req_d7[7:0] <= spc4_pcx_req_d6[7:0] ; | |
2900 | spc4_pcx_req_d8[7:0] <= spc4_pcx_req_d7[7:0] ; | |
2901 | spc4_pcx_req_d9[7:0] <= spc4_pcx_req_d8[7:0] ; | |
2902 | spc4_pcx_req_d10[7:0] <= spc4_pcx_req_d9[7:0] ; | |
2903 | spc5_pcx_req_d1[7:0] <= spc5_pcx_req[7:0] ; | |
2904 | spc5_pcx_req_d2[7:0] <= spc5_pcx_req_d1[7:0] ; | |
2905 | spc5_pcx_req_d3[7:0] <= spc5_pcx_req_d2[7:0] ; | |
2906 | spc5_pcx_req_d4[7:0] <= spc5_pcx_req_d3[7:0] ; | |
2907 | spc5_pcx_req_d5[7:0] <= spc5_pcx_req_d4[7:0] ; | |
2908 | spc5_pcx_req_d6[7:0] <= spc5_pcx_req_d5[7:0] ; | |
2909 | spc5_pcx_req_d7[7:0] <= spc5_pcx_req_d6[7:0] ; | |
2910 | spc5_pcx_req_d8[7:0] <= spc5_pcx_req_d7[7:0] ; | |
2911 | spc5_pcx_req_d9[7:0] <= spc5_pcx_req_d8[7:0] ; | |
2912 | spc5_pcx_req_d10[7:0] <= spc5_pcx_req_d9[7:0] ; | |
2913 | spc6_pcx_req_d1[7:0] <= spc6_pcx_req[7:0] ; | |
2914 | spc6_pcx_req_d2[7:0] <= spc6_pcx_req_d1[7:0] ; | |
2915 | spc6_pcx_req_d3[7:0] <= spc6_pcx_req_d2[7:0] ; | |
2916 | spc6_pcx_req_d4[7:0] <= spc6_pcx_req_d3[7:0] ; | |
2917 | spc6_pcx_req_d5[7:0] <= spc6_pcx_req_d4[7:0] ; | |
2918 | spc6_pcx_req_d6[7:0] <= spc6_pcx_req_d5[7:0] ; | |
2919 | spc6_pcx_req_d7[7:0] <= spc6_pcx_req_d6[7:0] ; | |
2920 | spc6_pcx_req_d8[7:0] <= spc6_pcx_req_d7[7:0] ; | |
2921 | spc6_pcx_req_d9[7:0] <= spc6_pcx_req_d8[7:0] ; | |
2922 | spc6_pcx_req_d10[7:0] <= spc6_pcx_req_d9[7:0] ; | |
2923 | spc7_pcx_req_d1[7:0] <= spc7_pcx_req[7:0] ; | |
2924 | spc7_pcx_req_d2[7:0] <= spc7_pcx_req_d1[7:0] ; | |
2925 | spc7_pcx_req_d3[7:0] <= spc7_pcx_req_d2[7:0] ; | |
2926 | spc7_pcx_req_d4[7:0] <= spc7_pcx_req_d3[7:0] ; | |
2927 | spc7_pcx_req_d5[7:0] <= spc7_pcx_req_d4[7:0] ; | |
2928 | spc7_pcx_req_d6[7:0] <= spc7_pcx_req_d5[7:0] ; | |
2929 | spc7_pcx_req_d7[7:0] <= spc7_pcx_req_d6[7:0] ; | |
2930 | spc7_pcx_req_d8[7:0] <= spc7_pcx_req_d7[7:0] ; | |
2931 | spc7_pcx_req_d9[7:0] <= spc7_pcx_req_d8[7:0] ; | |
2932 | spc7_pcx_req_d10[7:0] <= spc7_pcx_req_d9[7:0] ; | |
2933 | spc0_pcx_atm_d1[7:0] <= spc0_pcx_atm[7:0] ; | |
2934 | spc0_pcx_atm_d2[7:0] <= spc0_pcx_atm_d1[7:0] ; | |
2935 | spc0_pcx_atm_d3[7:0] <= spc0_pcx_atm_d2[7:0] ; | |
2936 | spc0_pcx_atm_d4[7:0] <= spc0_pcx_atm_d3[7:0] ; | |
2937 | spc0_pcx_atm_d5[7:0] <= spc0_pcx_atm_d4[7:0] ; | |
2938 | spc0_pcx_atm_d6[7:0] <= spc0_pcx_atm_d5[7:0] ; | |
2939 | spc0_pcx_atm_d7[7:0] <= spc0_pcx_atm_d6[7:0] ; | |
2940 | spc0_pcx_atm_d8[7:0] <= spc0_pcx_atm_d7[7:0] ; | |
2941 | spc0_pcx_atm_d9[7:0] <= spc0_pcx_atm_d8[7:0] ; | |
2942 | spc0_pcx_atm_d10[7:0] <= spc0_pcx_atm_d9[7:0] ; | |
2943 | spc1_pcx_atm_d1[7:0] <= spc1_pcx_atm[7:0] ; | |
2944 | spc1_pcx_atm_d2[7:0] <= spc1_pcx_atm_d1[7:0] ; | |
2945 | spc1_pcx_atm_d3[7:0] <= spc1_pcx_atm_d2[7:0] ; | |
2946 | spc1_pcx_atm_d4[7:0] <= spc1_pcx_atm_d3[7:0] ; | |
2947 | spc1_pcx_atm_d5[7:0] <= spc1_pcx_atm_d4[7:0] ; | |
2948 | spc1_pcx_atm_d6[7:0] <= spc1_pcx_atm_d5[7:0] ; | |
2949 | spc1_pcx_atm_d7[7:0] <= spc1_pcx_atm_d6[7:0] ; | |
2950 | spc1_pcx_atm_d8[7:0] <= spc1_pcx_atm_d7[7:0] ; | |
2951 | spc1_pcx_atm_d9[7:0] <= spc1_pcx_atm_d8[7:0] ; | |
2952 | spc1_pcx_atm_d10[7:0] <= spc1_pcx_atm_d9[7:0] ; | |
2953 | spc2_pcx_atm_d1[7:0] <= spc2_pcx_atm[7:0] ; | |
2954 | spc2_pcx_atm_d2[7:0] <= spc2_pcx_atm_d1[7:0] ; | |
2955 | spc2_pcx_atm_d3[7:0] <= spc2_pcx_atm_d2[7:0] ; | |
2956 | spc2_pcx_atm_d4[7:0] <= spc2_pcx_atm_d3[7:0] ; | |
2957 | spc2_pcx_atm_d5[7:0] <= spc2_pcx_atm_d4[7:0] ; | |
2958 | spc2_pcx_atm_d6[7:0] <= spc2_pcx_atm_d5[7:0] ; | |
2959 | spc2_pcx_atm_d7[7:0] <= spc2_pcx_atm_d6[7:0] ; | |
2960 | spc2_pcx_atm_d8[7:0] <= spc2_pcx_atm_d7[7:0] ; | |
2961 | spc2_pcx_atm_d9[7:0] <= spc2_pcx_atm_d8[7:0] ; | |
2962 | spc2_pcx_atm_d10[7:0] <= spc2_pcx_atm_d9[7:0] ; | |
2963 | spc3_pcx_atm_d1[7:0] <= spc3_pcx_atm[7:0] ; | |
2964 | spc3_pcx_atm_d2[7:0] <= spc3_pcx_atm_d1[7:0] ; | |
2965 | spc3_pcx_atm_d3[7:0] <= spc3_pcx_atm_d2[7:0] ; | |
2966 | spc3_pcx_atm_d4[7:0] <= spc3_pcx_atm_d3[7:0] ; | |
2967 | spc3_pcx_atm_d5[7:0] <= spc3_pcx_atm_d4[7:0] ; | |
2968 | spc3_pcx_atm_d6[7:0] <= spc3_pcx_atm_d5[7:0] ; | |
2969 | spc3_pcx_atm_d7[7:0] <= spc3_pcx_atm_d6[7:0] ; | |
2970 | spc3_pcx_atm_d8[7:0] <= spc3_pcx_atm_d7[7:0] ; | |
2971 | spc3_pcx_atm_d9[7:0] <= spc3_pcx_atm_d8[7:0] ; | |
2972 | spc3_pcx_atm_d10[7:0] <= spc3_pcx_atm_d9[7:0] ; | |
2973 | spc4_pcx_atm_d1[7:0] <= spc4_pcx_atm[7:0] ; | |
2974 | spc4_pcx_atm_d2[7:0] <= spc4_pcx_atm_d1[7:0] ; | |
2975 | spc4_pcx_atm_d3[7:0] <= spc4_pcx_atm_d2[7:0] ; | |
2976 | spc4_pcx_atm_d4[7:0] <= spc4_pcx_atm_d3[7:0] ; | |
2977 | spc4_pcx_atm_d5[7:0] <= spc4_pcx_atm_d4[7:0] ; | |
2978 | spc4_pcx_atm_d6[7:0] <= spc4_pcx_atm_d5[7:0] ; | |
2979 | spc4_pcx_atm_d7[7:0] <= spc4_pcx_atm_d6[7:0] ; | |
2980 | spc4_pcx_atm_d8[7:0] <= spc4_pcx_atm_d7[7:0] ; | |
2981 | spc4_pcx_atm_d9[7:0] <= spc4_pcx_atm_d8[7:0] ; | |
2982 | spc4_pcx_atm_d10[7:0] <= spc4_pcx_atm_d9[7:0] ; | |
2983 | spc5_pcx_atm_d1[7:0] <= spc5_pcx_atm[7:0] ; | |
2984 | spc5_pcx_atm_d2[7:0] <= spc5_pcx_atm_d1[7:0] ; | |
2985 | spc5_pcx_atm_d3[7:0] <= spc5_pcx_atm_d2[7:0] ; | |
2986 | spc5_pcx_atm_d4[7:0] <= spc5_pcx_atm_d3[7:0] ; | |
2987 | spc5_pcx_atm_d5[7:0] <= spc5_pcx_atm_d4[7:0] ; | |
2988 | spc5_pcx_atm_d6[7:0] <= spc5_pcx_atm_d5[7:0] ; | |
2989 | spc5_pcx_atm_d7[7:0] <= spc5_pcx_atm_d6[7:0] ; | |
2990 | spc5_pcx_atm_d8[7:0] <= spc5_pcx_atm_d7[7:0] ; | |
2991 | spc5_pcx_atm_d9[7:0] <= spc5_pcx_atm_d8[7:0] ; | |
2992 | spc5_pcx_atm_d10[7:0] <= spc5_pcx_atm_d9[7:0] ; | |
2993 | spc6_pcx_atm_d1[7:0] <= spc6_pcx_atm[7:0] ; | |
2994 | spc6_pcx_atm_d2[7:0] <= spc6_pcx_atm_d1[7:0] ; | |
2995 | spc6_pcx_atm_d3[7:0] <= spc6_pcx_atm_d2[7:0] ; | |
2996 | spc6_pcx_atm_d4[7:0] <= spc6_pcx_atm_d3[7:0] ; | |
2997 | spc6_pcx_atm_d5[7:0] <= spc6_pcx_atm_d4[7:0] ; | |
2998 | spc6_pcx_atm_d6[7:0] <= spc6_pcx_atm_d5[7:0] ; | |
2999 | spc6_pcx_atm_d7[7:0] <= spc6_pcx_atm_d6[7:0] ; | |
3000 | spc6_pcx_atm_d8[7:0] <= spc6_pcx_atm_d7[7:0] ; | |
3001 | spc6_pcx_atm_d9[7:0] <= spc6_pcx_atm_d8[7:0] ; | |
3002 | spc6_pcx_atm_d10[7:0] <= spc6_pcx_atm_d9[7:0] ; | |
3003 | spc7_pcx_atm_d1[7:0] <= spc7_pcx_atm[7:0] ; | |
3004 | spc7_pcx_atm_d2[7:0] <= spc7_pcx_atm_d1[7:0] ; | |
3005 | spc7_pcx_atm_d3[7:0] <= spc7_pcx_atm_d2[7:0] ; | |
3006 | spc7_pcx_atm_d4[7:0] <= spc7_pcx_atm_d3[7:0] ; | |
3007 | spc7_pcx_atm_d5[7:0] <= spc7_pcx_atm_d4[7:0] ; | |
3008 | spc7_pcx_atm_d6[7:0] <= spc7_pcx_atm_d5[7:0] ; | |
3009 | spc7_pcx_atm_d7[7:0] <= spc7_pcx_atm_d6[7:0] ; | |
3010 | spc7_pcx_atm_d8[7:0] <= spc7_pcx_atm_d7[7:0] ; | |
3011 | spc7_pcx_atm_d9[7:0] <= spc7_pcx_atm_d8[7:0] ; | |
3012 | spc7_pcx_atm_d10[7:0] <= spc7_pcx_atm_d9[7:0] ; | |
3013 | ||
3014 | l2t0_cpx_req_d2[7:0] <= l2t0_cpx_req_d1[7:0] ; | |
3015 | l2t0_cpx_req_d3[7:0] <= l2t0_cpx_req_d2[7:0] ; | |
3016 | l2t0_cpx_req_d4[7:0] <= l2t0_cpx_req_d3[7:0] ; | |
3017 | l2t1_cpx_req_d2[7:0] <= l2t1_cpx_req_d1[7:0] ; | |
3018 | l2t1_cpx_req_d3[7:0] <= l2t1_cpx_req_d2[7:0] ; | |
3019 | l2t1_cpx_req_d4[7:0] <= l2t1_cpx_req_d3[7:0] ; | |
3020 | l2t2_cpx_req_d2[7:0] <= l2t2_cpx_req_d1[7:0] ; | |
3021 | l2t2_cpx_req_d3[7:0] <= l2t2_cpx_req_d2[7:0] ; | |
3022 | l2t2_cpx_req_d4[7:0] <= l2t2_cpx_req_d3[7:0] ; | |
3023 | l2t3_cpx_req_d2[7:0] <= l2t3_cpx_req_d1[7:0] ; | |
3024 | l2t3_cpx_req_d3[7:0] <= l2t3_cpx_req_d2[7:0] ; | |
3025 | l2t3_cpx_req_d4[7:0] <= l2t3_cpx_req_d3[7:0] ; | |
3026 | l2t4_cpx_req_d2[7:0] <= l2t4_cpx_req_d1[7:0] ; | |
3027 | l2t4_cpx_req_d3[7:0] <= l2t4_cpx_req_d2[7:0] ; | |
3028 | l2t4_cpx_req_d4[7:0] <= l2t4_cpx_req_d3[7:0] ; | |
3029 | l2t5_cpx_req_d2[7:0] <= l2t5_cpx_req_d1[7:0] ; | |
3030 | l2t5_cpx_req_d3[7:0] <= l2t5_cpx_req_d2[7:0] ; | |
3031 | l2t5_cpx_req_d4[7:0] <= l2t5_cpx_req_d3[7:0] ; | |
3032 | l2t6_cpx_req_d2[7:0] <= l2t6_cpx_req_d1[7:0] ; | |
3033 | l2t6_cpx_req_d3[7:0] <= l2t6_cpx_req_d2[7:0] ; | |
3034 | l2t6_cpx_req_d4[7:0] <= l2t6_cpx_req_d3[7:0] ; | |
3035 | l2t7_cpx_req_d2[7:0] <= l2t7_cpx_req_d1[7:0] ; | |
3036 | l2t7_cpx_req_d3[7:0] <= l2t7_cpx_req_d2[7:0] ; | |
3037 | l2t7_cpx_req_d4[7:0] <= l2t7_cpx_req_d3[7:0] ; | |
3038 | l2t0_cpx_atom_d2[7:0] <= l2t0_cpx_atom_d1[7:0] ; | |
3039 | l2t0_cpx_atom_d3[7:0] <= l2t0_cpx_atom_d2[7:0] ; | |
3040 | l2t0_cpx_atom_d4[7:0] <= l2t0_cpx_atom_d3[7:0] ; | |
3041 | l2t1_cpx_atom_d2[7:0] <= l2t1_cpx_atom_d1[7:0] ; | |
3042 | l2t1_cpx_atom_d3[7:0] <= l2t1_cpx_atom_d2[7:0] ; | |
3043 | l2t1_cpx_atom_d4[7:0] <= l2t1_cpx_atom_d3[7:0] ; | |
3044 | l2t2_cpx_atom_d2[7:0] <= l2t2_cpx_atom_d1[7:0] ; | |
3045 | l2t2_cpx_atom_d3[7:0] <= l2t2_cpx_atom_d2[7:0] ; | |
3046 | l2t2_cpx_atom_d4[7:0] <= l2t2_cpx_atom_d3[7:0] ; | |
3047 | l2t3_cpx_atom_d2[7:0] <= l2t3_cpx_atom_d1[7:0] ; | |
3048 | l2t3_cpx_atom_d3[7:0] <= l2t3_cpx_atom_d2[7:0] ; | |
3049 | l2t3_cpx_atom_d4[7:0] <= l2t3_cpx_atom_d3[7:0] ; | |
3050 | l2t4_cpx_atom_d2[7:0] <= l2t4_cpx_atom_d1[7:0] ; | |
3051 | l2t4_cpx_atom_d3[7:0] <= l2t4_cpx_atom_d2[7:0] ; | |
3052 | l2t4_cpx_atom_d4[7:0] <= l2t4_cpx_atom_d3[7:0] ; | |
3053 | l2t5_cpx_atom_d2[7:0] <= l2t5_cpx_atom_d1[7:0] ; | |
3054 | l2t5_cpx_atom_d3[7:0] <= l2t5_cpx_atom_d2[7:0] ; | |
3055 | l2t5_cpx_atom_d4[7:0] <= l2t5_cpx_atom_d3[7:0] ; | |
3056 | l2t6_cpx_atom_d2[7:0] <= l2t6_cpx_atom_d1[7:0] ; | |
3057 | l2t6_cpx_atom_d3[7:0] <= l2t6_cpx_atom_d2[7:0] ; | |
3058 | l2t6_cpx_atom_d4[7:0] <= l2t6_cpx_atom_d3[7:0] ; | |
3059 | l2t7_cpx_atom_d2[7:0] <= l2t7_cpx_atom_d1[7:0] ; | |
3060 | l2t7_cpx_atom_d3[7:0] <= l2t7_cpx_atom_d2[7:0] ; | |
3061 | l2t7_cpx_atom_d4[7:0] <= l2t7_cpx_atom_d3[7:0] ; | |
3062 | mcu0_l2t0_data_vld_d1 <= mcu0_l2t0_data_vld_r0 ; | |
3063 | mcu0_l2t0_data_vld_d2 <= mcu0_l2t0_data_vld_d1 ; | |
3064 | mcu0_l2t0_data_vld_d3 <= mcu0_l2t0_data_vld_d2 ; | |
3065 | mcu1_l2t0_data_vld_d1 <= mcu1_l2t0_data_vld_r0 ; | |
3066 | mcu1_l2t0_data_vld_d2 <= mcu1_l2t0_data_vld_d1 ; | |
3067 | mcu1_l2t0_data_vld_d3 <= mcu1_l2t0_data_vld_d2 ; | |
3068 | mcu2_l2t0_data_vld_d1 <= mcu2_l2t0_data_vld_r0 ; | |
3069 | mcu2_l2t0_data_vld_d2 <= mcu2_l2t0_data_vld_d1 ; | |
3070 | mcu2_l2t0_data_vld_d3 <= mcu2_l2t0_data_vld_d2 ; | |
3071 | mcu3_l2t0_data_vld_d1 <= mcu3_l2t0_data_vld_r0 ; | |
3072 | mcu3_l2t0_data_vld_d2 <= mcu3_l2t0_data_vld_d1 ; | |
3073 | mcu3_l2t0_data_vld_d3 <= mcu3_l2t0_data_vld_d2 ; | |
3074 | mcu0_l2t1_data_vld_d1 <= mcu0_l2t1_data_vld_r0 ; | |
3075 | mcu0_l2t1_data_vld_d2 <= mcu0_l2t1_data_vld_d1 ; | |
3076 | mcu0_l2t1_data_vld_d3 <= mcu0_l2t1_data_vld_d2 ; | |
3077 | mcu1_l2t1_data_vld_d1 <= mcu1_l2t1_data_vld_r0 ; | |
3078 | mcu1_l2t1_data_vld_d2 <= mcu1_l2t1_data_vld_d1 ; | |
3079 | mcu1_l2t1_data_vld_d3 <= mcu1_l2t1_data_vld_d2 ; | |
3080 | mcu2_l2t1_data_vld_d1 <= mcu2_l2t1_data_vld_r0 ; | |
3081 | mcu2_l2t1_data_vld_d2 <= mcu2_l2t1_data_vld_d1 ; | |
3082 | mcu2_l2t1_data_vld_d3 <= mcu2_l2t1_data_vld_d2 ; | |
3083 | mcu3_l2t1_data_vld_d1 <= mcu3_l2t1_data_vld_r0 ; | |
3084 | mcu3_l2t1_data_vld_d2 <= mcu3_l2t1_data_vld_d1 ; | |
3085 | mcu3_l2t1_data_vld_d3 <= mcu3_l2t1_data_vld_d2 ; | |
3086 | end | |
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" | |
3103 | initial begin | |
3104 | if ($test$plusargs("testing_pll_char_out")) | |
3105 | dft_testing_pll_char_out(); | |
3106 | end | |
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 | ||
3114 | task read_cmp_reg; | |
3115 | input [31:0] addr; | |
3116 | output [63:0] rd_data; | |
3117 | input [5:0] tid; | |
3118 | ||
3119 | begin | |
3120 | end | |
3121 | endtask | |
3122 | ||
3123 | task write_cmp_reg; | |
3124 | input [31:0] addr; | |
3125 | input [63:0] wr_data; | |
3126 | input [5:0] tid; | |
3127 | ||
3128 | begin | |
3129 | end | |
3130 | endtask | |
3131 | ||
3132 | task 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 | |
3198 | endtask | |
3199 | ||
3200 | // 64 bits data, 64 bits address | |
3201 | task 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 | ||
3230 | wire [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 | ||
3278 | initial 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 | ||
3300 | end | |
3301 | ||
3302 | initial begin | |
3303 | if(!$test$plusargs("FULL_EFU")) begin | |
3304 | full_efu = 1'b1; | |
3305 | end | |
3306 | end | |
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 | |
3331 | initial 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; | |
3475 | end | |
3476 | ||
3477 | `endif // FLUSH_RESET | |
3478 | ||
3479 | `endif // AXIS_TL | |
3480 | ||
3481 | function [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 | ||
3529 | endfunction | |
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 | ||
3545 | reg sysCLK; | |
3546 | wire 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 | |
3552 | initial | |
3553 | begin | |
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 | ||
3577 | end | |
3578 | ||
3579 | // ALWAYS RUNNING CLOCK. THIS GOES TO VERA. | |
3580 | // VERA NEEDS A CONTINUOUS CLOCK FROM TIME ZERO. | |
3581 | initial 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 | |
3592 | end | |
3593 | ||
3594 | assign sysclk = sysCLK; // who uses this? axis_*.v | |
3595 | assign SYSCLK = sysCLK; | |
3596 | assign 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 | ||
3603 | assign core_clk = `CCU.cmp_pll_clk; //BS | |
3604 | assign iol2clk = `CCU.ccu_io_out; | |
3605 | assign 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 | |
3611 | ccu_pll_config ccu_pll_config (); | |
3612 | ||
3613 | reg ref_dram_6x_clk_reg; | |
3614 | integer ref_dram_6x_clk_period; | |
3615 | integer time1_r, time2_r; | |
3616 | ||
3617 | initial | |
3618 | begin | |
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 | |
3631 | end | |
3632 | ||
3633 | assign dram_6x_clk = ref_dram_6x_clk_reg ; | |
3634 | ||
3635 | reg ref_dram_12x_clk_reg; | |
3636 | integer ref_dram_12x_clk_period; | |
3637 | integer time1_r1, time2_r1; | |
3638 | ||
3639 | // ---- Clock Generator for FBD Channel clock ; dr_clk X 12 (linkclk) ----- | |
3640 | ||
3641 | initial | |
3642 | begin | |
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 | |
3655 | end | |
3656 | ||
3657 | assign dram_12x_clk = ref_dram_12x_clk_reg ; | |
3658 | ||
3659 | ||
3660 | // --- DTM CCU Slam --- | |
3661 | reg serdes_dtm1, serdes_dtm2; | |
3662 | reg [2:0] dbg_port_config; | |
3663 | ||
3664 | initial | |
3665 | begin | |
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 | |
3726 | end // 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 | |
3744 | wire fc_mdio_in, fc_mdio_out, fc_mdio_en; | |
3745 | ||
3746 | assign fc_mdio_in = XAUI_MDIO; | |
3747 | assign XAUI_MDIO = fc_mdio_en ? 1'bz : fc_mdio_out; | |
3748 | ||
3749 | mdio_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 | |
3761 | fc_csr_cabinet csr_cabinet(); | |
3762 | `endif // GATESIM | |
3763 | ||
3764 | `ifdef SLAM_VECTORS | |
3765 | ////////////////////////////////////////////// | |
3766 | //Code for PEU SLAM for DTM | |
3767 | ////////////////////////////////////////////// | |
3768 | initial 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 | ||
3803 | end // initial | |
3804 | `endif // SLAM_VECTORS | |
3805 | ||
3806 | `endif //ndef AXIS_TL - make sure all non synthesizeable code goes above this line | |
3807 | ||
3808 | endmodule | |
3809 | //---------------------------------------------------------- | |
3810 | `ifdef AXIS_TL | |
3811 | module axis_top; | |
3812 | reg rcc_off; | |
3813 | reg start_dumps; | |
3814 | reg freq_change; | |
3815 | reg in_hw; | |
3816 | initial start_dumps <= 0; | |
3817 | initial rcc_off <= 0; | |
3818 | initial freq_change <= 0; | |
3819 | initial in_hw <= 0; | |
3820 | task task_dump_mem; | |
3821 | begin // 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 | |
3829 | end | |
3830 | endtask | |
3831 | ||
3832 | ||
3833 | task task_rcc_off; | |
3834 | begin // 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 | |
3845 | end | |
3846 | endtask | |
3847 | ||
3848 | task task_change_clk; | |
3849 | begin | |
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; | |
3857 | end | |
3858 | endtask | |
3859 | ||
3860 | always @(posedge rcc_off) begin | |
3861 | begin // 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 | |
3869 | end | |
3870 | end | |
3871 | `ifndef FAST_AXIS | |
3872 | always @(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(".;"); | |
3945 | end | |
3946 | ||
3947 | ||
3948 | always @(posedge freq_change) begin | |
3949 | freq_change <= #1 0; | |
3950 | end | |
3951 | ||
3952 | always @(posedge rcc_off) begin | |
3953 | rcc_off <= #1 0; | |
3954 | end | |
3955 | always @(posedge start_dumps) begin | |
3956 | start_dumps <= #1 0; | |
3957 | end | |
3958 | `endif // `ifndef FAST_AXIS | |
3959 | ||
3960 | endmodule // axis_top | |
3961 | `endif // `ifdef AXIS_TL |