Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / design / sys / iop / dmu / rtl / dmu_ilu.v
CommitLineData
86530b38
AT
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T2 Processor File: dmu_ilu.v
4// Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved
5// 4150 Network Circle, Santa Clara, California 95054, U.S.A.
6//
7// * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
8//
9// This program is free software; you can redistribute it and/or modify
10// it under the terms of the GNU General Public License as published by
11// the Free Software Foundation; version 2 of the License.
12//
13// This program is distributed in the hope that it will be useful,
14// but WITHOUT ANY WARRANTY; without even the implied warranty of
15// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16// GNU General Public License for more details.
17//
18// You should have received a copy of the GNU General Public License
19// along with this program; if not, write to the Free Software
20// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21//
22// For the avoidance of doubt, and except that if any non-GPL license
23// choice is available it will apply instead, Sun elects to use only
24// the General Public License version 2 (GPLv2) at this time for any
25// software where a choice of GPL license versions is made
26// available with the language indicating that GPLv2 or any later version
27// may be used, or where a choice of which version of the GPL is applied is
28// otherwise unspecified.
29//
30// Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
31// CA 95054 USA or visit www.sun.com if you need additional information or
32// have any questions.
33//
34// ========== Copyright Header End ============================================
35module dmu_ilu (
36
37 // ilu <-> dmu-tmu
38 // ilu <-> dmu misc
39 // data path
40 // CSR ring
41 // clocks to IHB, IDB, EHB, EDB
42 // spares
43 // ilu <-> tlu
44 d2p_csr_ack,
45 d2p_csr_req,
46 d2p_csr_rcd,
47 d2p_cto_ack,
48// d2p_drain,
49 d2p_ech_wptr,
50 d2p_edb_data,
51 d2p_edb_dpar,
52 d2p_edb_we,
53 d2p_edb_addr,
54 d2p_ehb_data,
55 d2p_ehb_dpar,
56 d2p_ehb_we,
57 d2p_ehb_addr,
58 d2p_erh_wptr,
59 d2p_ibc_nhc,
60 d2p_ibc_pdc,
61 d2p_ibc_phc,
62 d2p_ibc_req,
63 d2p_idb_addr,
64 d2p_ihb_addr,
65 d2p_spare,
66
67 l1clk,
68 rst_wmr_,
69 j2d_rst_l,
70 j2d_por_l,
71 rst_dmu_async_por_,
72
73 j2d_instance_id,
74
75 k2y_buf_addr,
76 k2y_buf_addr_vld_monitor,
77 k2y_buf_data,
78 k2y_buf_dpar,
79 k2y_csr_ring_out,
80 k2y_dbg_sel_a,
81 k2y_dbg_sel_b,
82 k2y_dou_dptr,
83 k2y_dou_err,
84 k2y_dou_vld,
85 k2y_rcd,
86 k2y_rcd_deq,
87 k2y_rcd_enq,
88 k2y_rel_enq,
89 k2y_rel_rcd,
90
91 p2d_ce_int,
92 p2d_csr_ack,
93 p2d_csr_req,
94 p2d_csr_rcd,
95 p2d_cto_req,
96 p2d_cto_tag,
97 p2d_drain,
98 p2d_ecd_rptr,
99 p2d_ech_rptr,
100 p2d_erd_rptr,
101 p2d_erh_rptr,
102 p2d_ibc_ack,
103 p2d_idb_data,
104 p2d_idb_dpar,
105 p2d_ihb_data,
106 p2d_ihb_dpar,
107 d2p_ihb_rd,
108 p2d_ihb_wptr,
109 p2d_mps,
110 p2d_oe_int,
111 p2d_spare,
112 p2d_ue_int,
113
114 y2k_buf_addr,
115 y2k_buf_addr_vld_monitor,
116 y2k_buf_data,
117 y2k_buf_dpar,
118 y2k_csr_ring_in,
119 y2k_dbg_a,
120 y2k_dbg_b,
121 y2k_int_l,
122 y2k_mps,
123
124 y2k_rcd,
125 y2k_rcd_deq,
126 y2k_rcd_enq,
127 y2k_rel_enq,
128 y2k_rel_rcd,
129 dmu_psr_rate_scale,
130 dmu_psr_pll_en_sds0,
131 dmu_psr_pll_en_sds1,
132 dmu_psr_rx_en_b0_sds0,
133 dmu_psr_rx_en_b1_sds0,
134 dmu_psr_rx_en_b2_sds0,
135 dmu_psr_rx_en_b3_sds0,
136 dmu_psr_rx_en_b0_sds1,
137 dmu_psr_rx_en_b1_sds1,
138 dmu_psr_rx_en_b2_sds1,
139 dmu_psr_rx_en_b3_sds1,
140 dmu_psr_tx_en_b0_sds0,
141 dmu_psr_tx_en_b1_sds0,
142 dmu_psr_tx_en_b2_sds0,
143 dmu_psr_tx_en_b3_sds0,
144 dmu_psr_tx_en_b0_sds1,
145 dmu_psr_tx_en_b1_sds1,
146 dmu_psr_tx_en_b2_sds1,
147 dmu_psr_tx_en_b3_sds1,
148 tcu_test_protect,
149 il2cl_gr_16
150
151 );
152
153
154
155 //synopsys sync_set_reset "j2d_por_l"
156
157 // >>>>>>>>>>>>>>>>>>>>>>>>> Port Declarations <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
158
159 //------------------------------------------------------------------------
160 // Clock and Reset Signals
161 //------------------------------------------------------------------------
162 input l1clk; // input clock
163 input rst_wmr_; // raw warm reset for serdes rate logic 11/10/05
164 input j2d_por_l; // input soft reset
165 input j2d_rst_l; // input hard reset
166 input rst_dmu_async_por_; // non_clocked async assertion, cmp clk deassertion
167
168 input [`FIRE_J2D_INSTANCE_ID_WDTH-1:0] j2d_instance_id;
169
170
171 //------------------------------------------------------------------------
172 // IHB and IHB management interface
173 //------------------------------------------------------------------------
174 input [`FIRE_P2D_IHB_WPTR_WDTH-1:0] p2d_ihb_wptr; // gray-coded IHB write pointer
175 input [`FIRE_IHB_REC_WDTH-1:0] p2d_ihb_data; // TLP header record
176 output [`FIRE_D2P_IHB_ADDR_WDTH-1:0] d2p_ihb_addr; // binary read pointer to IHB
177 input [`FIRE_P2D_IHB_DPAR_WDTH-1:0] p2d_ihb_dpar; // TLP header record parity
178 output d2p_ihb_rd; // rd ihb header ram in peu,
179 // requested by circuits
180
181 //------------------------------------------------------------------------
182 // IDB interface
183 //------------------------------------------------------------------------
184 output [`FIRE_D2P_IDB_ADDR_WDTH-1:0] d2p_idb_addr; // binary read pointer to IDB
185 input [`FIRE_P2D_IDB_DATA_WDTH-1:0] p2d_idb_data; // 16-byte data
186 input [`FIRE_P2D_IDB_DPAR_WDTH-1:0] p2d_idb_dpar; // data parity
187
188 //------------------------------------------------------------------------
189 // PCIE FC credits interface to TLU
190 //------------------------------------------------------------------------
191 output d2p_ibc_req; // request for ingress buffer credits
192 input p2d_ibc_ack; // ack for ingress buffer credits
193 output [`FIRE_D2P_IBC_NHC_WDTH-1:0] d2p_ibc_nhc; // PCIE FC NPH credits
194 output [`FIRE_D2P_IBC_PHC_WDTH-1:0] d2p_ibc_phc; // PCIE FC PH credits
195 output [`FIRE_D2P_IBC_PDC_WDTH-1:0] d2p_ibc_pdc; // PCIE FC PD credits
196
197 //------------------------------------------------------------------------
198 // cto interface - PIO completion time out
199 //------------------------------------------------------------------------
200 input p2d_cto_req; // cto request from TLU
201 input [`FIRE_P2D_CTO_TAG_WDTH-1:0] p2d_cto_tag; // cto tag
202 output d2p_cto_ack; // cto ack back
203
204 //------------------------------------------------------------------------
205 // buffer management interface
206 //------------------------------------------------------------------------
207 output [`FIRE_D2P_ECH_WPTR_WDTH-1:0] d2p_ech_wptr; // gray-coded cpl-buffer in EHB write pointer
208 input [`FIRE_P2D_ECH_RPTR_WDTH-1:0] p2d_ech_rptr; // gray-coded cpl-buffer in EHB read pointer
209 output [`FIRE_D2P_ERH_WPTR_WDTH-1:0] d2p_erh_wptr; // gray-coded req-buffer in EHB write pointer
210 input [`FIRE_P2D_ERH_RPTR_WDTH-1:0] p2d_erh_rptr; // gray-coded req-buffer in EHB read pointer
211 input [`FIRE_P2D_ECD_RPTR_WDTH-1:0] p2d_ecd_rptr; // gray-coded EDB DMA Cpl buffer read pointer
212 input [`FIRE_P2D_ERD_RPTR_WDTH-1:0] p2d_erd_rptr; // gray-coded EDB PIO Wr buffer read pointer
213
214 //------------------------------------------------------------------------
215 // EHB interface
216 //------------------------------------------------------------------------
217
218 output d2p_ehb_we; // EHB write stroke
219 output [`FIRE_D2P_EHB_ADDR_WDTH-1:0] d2p_ehb_addr; // EHB write pointer
220 output [`FIRE_EHB_REC_WDTH-1:0] d2p_ehb_data; // EHB record
221 output [`FIRE_D2P_EHB_DPAR_WDTH-1:0] d2p_ehb_dpar; // EHB word parity for header rcd
222
223 //------------------------------------------------------------------------
224 // EDB interface
225 //------------------------------------------------------------------------
226 output d2p_edb_we; // EDB write stroke
227 output [`FIRE_D2P_EDB_ADDR_WDTH-1:0] d2p_edb_addr; // EDB write pointer
228 output [`FIRE_D2P_EDB_DATA_WDTH-1:0] d2p_edb_data; // EDB payload
229 output [`FIRE_D2P_EDB_DPAR_WDTH-1:0] d2p_edb_dpar; // EDB word parity for payload
230
231 //------------------------------------------------------------------------
232 // drain and misc. interface
233 //------------------------------------------------------------------------
234// output d2p_drain; // drain signal to TLU
235 input p2d_drain; // drain signal from TLU
236 input [`FIRE_P2D_MPS_WDTH-1:0] p2d_mps; // max. payld size
237 input p2d_ue_int; // uncorrectable error
238 input p2d_ce_int; // correctable error
239 input p2d_oe_int; // other error
240
241 //------------------------------------------------------------------------
242 // data path -
243 // note: k2y_buf_addr_vld_monitor & y2k_buf_addr_vld_monitor are added
244 // for the use in DMU-ILU monitor only
245 //------------------------------------------------------------------------
246 input k2y_buf_addr_vld_monitor;
247 input [`FIRE_DLC_ITI_ADDR_WDTH-1:0] k2y_buf_addr; // read pointer to IDB
248 output [`FIRE_DLC_ITI_DATA_WDTH-1:0] y2k_buf_data; // 16-byte data
249 output [`FIRE_DLC_ITI_DPAR_WDTH-1:0] y2k_buf_dpar; // data parity
250 output y2k_buf_addr_vld_monitor;
251 output [`FIRE_DLC_ERD_ADDR_WDTH-1:0] y2k_buf_addr; // read address to DOU
252 input [`FIRE_DLC_ERD_DATA_WDTH-1:0] k2y_buf_data; // payload
253 input [`FIRE_DLC_ERD_DPAR_WDTH-1:0] k2y_buf_dpar; // word parity for the payload
254 //
255 //------------------------------------------------------------------------
256 // record interface to TMU
257 //------------------------------------------------------------------------
258 input k2y_rcd_deq; // ingress record fifo dequeue
259 output [`FIRE_DLC_IPE_REC_WDTH-1:0] y2k_rcd; // ingress PEC record
260 output y2k_rcd_enq; // ingress PEC record enqueue
261 input [`FIRE_DLC_EPE_REC_WDTH-1:0] k2y_rcd; // egress PEC rcd
262 input k2y_rcd_enq; // egress enqueue for PEC rcd
263 output y2k_rcd_deq; // egress rcd fifo dequeue
264
265 //------------------------------------------------------------------------
266 // release interface with TMU
267 //------------------------------------------------------------------------
268 input [`FIRE_DLC_URR_REC_WDTH-1:0] k2y_rel_rcd; // ingress 1 PCIE FC data credit (16-byte data) w/ d_ptr
269 input k2y_rel_enq; // ingress enqueue for release record
270 output [`FIRE_DLC_DRR_REC_WDTH-1:0] y2k_rel_rcd; // egress release rcd
271 output y2k_rel_enq; // egress enqueue for release rcd
272
273 //------------------------------------------------------------------------
274 // DOU DMA Rd Cpl Buffer status rcd interface with CLU
275 //------------------------------------------------------------------------
276 input [`FIRE_DLC_DOU_DPTR_WDTH-1:0] k2y_dou_dptr;
277 input k2y_dou_err;
278 input k2y_dou_vld;
279
280 //------------------------------------------------------------------------
281 // DMU misc. interface
282 //------------------------------------------------------------------------
283 output [`FIRE_DLC_MPS-1:0] y2k_mps; // max. payld size to CMU
284 output y2k_int_l; // interrupt req to IMU
285
286 //------------------------------------------------------------------------
287 // CSR ring to DMU
288 //------------------------------------------------------------------------
289 input [`FIRE_CSR_RING_WIDTH-1:0] k2y_csr_ring_out;
290 output [`FIRE_CSR_RING_WIDTH-1:0] y2k_csr_ring_in;
291
292 //------------------------------------------------------------------------
293 // CSR ring to TLU
294 //------------------------------------------------------------------------
295 output d2p_csr_req;
296 input p2d_csr_ack;
297 output [`FIRE_D2P_CSR_RING_WDTH-1:0] d2p_csr_rcd;
298 input p2d_csr_req;
299 output d2p_csr_ack;
300 input [`FIRE_P2D_CSR_RING_WDTH-1:0] p2d_csr_rcd;
301
302 //------------------------------------------------------------------------
303 // clocks to IHB, IDB, EHB, EDB
304 //------------------------------------------------------------------------
305
306 //------------------------------------------------------------------------
307 // debug ports
308 //------------------------------------------------------------------------
309 input [`FIRE_DLC_DEBUG_SEL_WDTH-1:0] k2y_dbg_sel_a;
310 input [`FIRE_DLC_DEBUG_SEL_WDTH-1:0] k2y_dbg_sel_b;
311 output [`FIRE_DEBUG_WDTH-1:0] y2k_dbg_a;
312 output [`FIRE_DEBUG_WDTH-1:0] y2k_dbg_b;
313
314 //------------------------------------------------------------------------
315 // spares
316 //------------------------------------------------------------------------
317 input [`FIRE_P2D_SPARE_WDTH-1:0] p2d_spare;
318 output [`FIRE_D2P_SPARE_WDTH-1:0] d2p_spare;
319
320 //------------------------------------------------------------------------
321 // to PEU for pll-enable, tx-lane-enable and rx-lane-enables
322 //------------------------------------------------------------------------
323 output dmu_psr_pll_en_sds0;
324 output dmu_psr_pll_en_sds1;
325 output dmu_psr_rx_en_b0_sds0;
326 output dmu_psr_rx_en_b1_sds0;
327 output dmu_psr_rx_en_b2_sds0;
328 output dmu_psr_rx_en_b3_sds0;
329 output dmu_psr_rx_en_b0_sds1;
330 output dmu_psr_rx_en_b1_sds1;
331 output dmu_psr_rx_en_b2_sds1;
332 output dmu_psr_rx_en_b3_sds1;
333 output dmu_psr_tx_en_b0_sds0;
334 output dmu_psr_tx_en_b1_sds0;
335 output dmu_psr_tx_en_b2_sds0;
336 output dmu_psr_tx_en_b3_sds0;
337 output dmu_psr_tx_en_b0_sds1;
338 output dmu_psr_tx_en_b1_sds1;
339 output dmu_psr_tx_en_b2_sds1;
340 output dmu_psr_tx_en_b3_sds1;
341 input tcu_test_protect;
342
343 output [1:0] dmu_psr_rate_scale;
344 output il2cl_gr_16;
345
346 // >>>>>>>>>>>>>>>>>>>>>>>>> Data Type Declarations <<<<<<<<<<<<<<<<<<<<<<<<<
347
348 //---------------------------------------------------------------------
349 // debug
350 //---------------------------------------------------------------------
351 reg [`FIRE_DBG_DATA_BITS] dbg_bus_a;
352 reg [`FIRE_DBG_DATA_BITS] dbg_bus_b;
353 reg [`FIRE_DBG_DATA_BITS] nxt_dbg_bus_a;
354 reg [`FIRE_DBG_DATA_BITS] nxt_dbg_bus_b;
355
356 //------------------------------------------------------------------------
357 // ISB sub-block interface
358 //------------------------------------------------------------------------
359 wire eil2isb_log; // log eil2isb_tag on ISB
360 wire [4:0] eil2isb_tag; // tlp_tag[4:0] to ISB
361 wire iil2isb_clr; // clear ISB with iil2isb_tag
362 wire [4:0] iil2isb_tag; // tlp_tag[4:0] to ISB to clear
363 wire isb2iil_vld; // valid entry status with iil2isb_tag
364 wire [3:2] eil2isb_low_addr;
365 wire [3:2] isb2iil_low_addr;
366 wire [`FIRE_DBG_DATA_BITS] isb_dbg_a;
367 wire [`FIRE_DBG_DATA_BITS] isb_dbg_b;
368
369 //------------------------------------------------------------------------
370 // CIB sub-block interface
371 //------------------------------------------------------------------------
372 wire iil2cib_ihb_pe; // ingress header parity error
373 wire cib2iil_ihb_pe_drain;
374 wire cib2iil_pec_drain;
375 wire cib2eil_ihb_pe_drain;
376 wire cib2eil_pec_drain;
377 wire [`FIRE_DBG_DATA_BITS] cib_dbg_a;
378 wire [`FIRE_DBG_DATA_BITS] cib_dbg_b;
379
380 //------------------------------------------------------------------------
381 // IIL sub-block interface
382 //------------------------------------------------------------------------
383 wire [`FIRE_DBG_DATA_BITS] iil_dbg_a;
384 wire [`FIRE_DBG_DATA_BITS] iil_dbg_b;
385
386 //------------------------------------------------------------------------
387 // EIL sub-block interface
388 //------------------------------------------------------------------------
389 wire [`FIRE_DBG_DATA_BITS] eil_dbg_0_a;
390 wire [`FIRE_DBG_DATA_BITS] eil_dbg_0_b;
391 wire [`FIRE_DBG_DATA_BITS] eil_dbg_1_a;
392 wire [`FIRE_DBG_DATA_BITS] eil_dbg_1_b;
393
394 //------------------------------------------------------------------------
395 // CIB sub-block interface
396 //------------------------------------------------------------------------
397 wire rst_l;
398 wire por_l;
399
400 //------------------------------------------------------------------------
401 // idle check
402 //------------------------------------------------------------------------
403 wire iil_is_idle;
404 wire eil_is_idle;
405 wire isb_is_idle;
406
407 wire [3:0] ilu_diagnos_edi_par_hw_read;
408 // This signal provides the current value of ilu_diagnos_edi_par.
409 wire [3:0] ilu_diagnos_ehi_par_hw_read;
410 // This signal provides the current value of ilu_diagnos_ehi_par.
411 wire ilu_diagnos_edi_trig_hw_clr; // Hardware clear signal for
412 // ilu_diagnos_edi_trig. When set
413 // ilu_diagnos will be set to zero.
414 wire ilu_diagnos_edi_trig_hw_read; // This signal provides the current value
415 // of ilu_diagnos_edi_trig.
416 wire ilu_diagnos_ehi_trig_hw_clr; // Hardware clear signal for
417 // ilu_diagnos_ehi_trig. When set
418 // ilu_diagnos will be set to zero.
419 wire ilu_diagnos_ehi_trig_hw_read; // This signal provides the current value
420 // of ilu_diagnos_ehi_trig.
421
422 reg ilu_is_idle; // flop
423
424 // >>>>>>>>>>>>>>>>>>>>>>>>> Zero In Checkers <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
425
426 /* 0in scoreboard -rx_id eil2isb_tag -rx eil2isb_log
427 -tx_id iil2isb_tag -tx iil2isb_clr
428 -max_ids 16 -max_count_per_id 1 */
429
430 // >>>>>>>>>>>>>>>>>>>>>>>>> RTL/Behavioral Model <<<<<<<<<<<<<<<<<<<<<<<<<<<
431
432 //---------------------------------------------------------------------
433 // tie spare to zero
434 //---------------------------------------------------------------------
435 assign d2p_spare = {`FIRE_D2P_SPARE_WDTH{1'b0}};
436
437 //---------------------------------------------------------------------
438 // debug
439 //---------------------------------------------------------------------
440 always @ (k2y_dbg_sel_a[5:3]
441 or iil_dbg_a or eil_dbg_0_a or eil_dbg_1_a or
442 cib_dbg_a or isb_dbg_a) begin
443 case (k2y_dbg_sel_a[5:3]) // synopsys infer_mux
444 3'b000: nxt_dbg_bus_a = iil_dbg_a;
445 3'b001: nxt_dbg_bus_a = eil_dbg_0_a;
446 3'b010: nxt_dbg_bus_a = eil_dbg_1_a;
447 3'b011: nxt_dbg_bus_a = cib_dbg_a;
448 3'b100: nxt_dbg_bus_a = isb_dbg_a;
449 3'b101: nxt_dbg_bus_a = 8'b0;
450 3'b110: nxt_dbg_bus_a = 8'b0;
451 3'b111: nxt_dbg_bus_a = 8'b0;
452 endcase
453 end
454
455 always @ (k2y_dbg_sel_b[5:3]
456 or iil_dbg_b or eil_dbg_0_b or eil_dbg_1_b or
457 cib_dbg_b or isb_dbg_b) begin
458 case (k2y_dbg_sel_b[5:3]) // synopsys infer_mux
459 3'b000: nxt_dbg_bus_b = iil_dbg_b;
460 3'b001: nxt_dbg_bus_b = eil_dbg_0_b;
461 3'b010: nxt_dbg_bus_b = eil_dbg_1_b;
462 3'b011: nxt_dbg_bus_b = cib_dbg_b;
463 3'b100: nxt_dbg_bus_b = isb_dbg_b;
464 3'b101: nxt_dbg_bus_b = 8'b0;
465 3'b110: nxt_dbg_bus_b = 8'b0;
466 3'b111: nxt_dbg_bus_b = 8'b0;
467 endcase
468 end
469
470 assign y2k_dbg_a = dbg_bus_a;
471 assign y2k_dbg_b = dbg_bus_b;
472
473 always @ (posedge l1clk)
474 if(~rst_l) begin
475 dbg_bus_a <= {8{1'b0}};
476 dbg_bus_b <= {8{1'b0}};
477 end
478 else begin
479 dbg_bus_a <= nxt_dbg_bus_a;
480 dbg_bus_b <= nxt_dbg_bus_b;
481 end
482
483 //---------------------------------------------------------------------
484 // idle check
485 //---------------------------------------------------------------------
486//BP N2 set to 1, because the other idles are 1
487 always @ (posedge l1clk)
488 if(~rst_l) begin
489 ilu_is_idle <= 1'b1;
490 end
491 else begin
492 ilu_is_idle <= iil_is_idle & eil_is_idle & isb_is_idle;
493 end
494
495 // >>>>>>>>>>>>>>>>>>>>>>>>> Instantiations <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
496
497 // LBIST Rest Circuits
498// n2 controls reset in rst block, so removed these synchronizers
499assign rst_l = j2d_rst_l;
500// lbist_rst_cct rst_cct (
501//
502// .rst_l_in (j2d_rst_l),
503// .clk (l1clk),
504// .bist_en (1'b0),
505// .rst_l_out (rst_l)
506// );
507
508assign por_l = j2d_por_l;
509// lbist_rst_cct por_cct (
510//
511// .rst_l_in (j2d_por_l),
512// .clk (l1clk),
513// .bist_en (1'b0),
514// .rst_l_out (por_l)
515// );
516
517 // IIL sub-block
518 dmu_ilu_iil iil (
519 .clk (l1clk),
520 .rst_l (rst_l),
521 .p2d_ihb_wptr (p2d_ihb_wptr),
522 .d2p_ihb_addr (d2p_ihb_addr),
523 .p2d_ihb_data (p2d_ihb_data),
524 .p2d_ihb_dpar (p2d_ihb_dpar),
525 .d2p_ihb_rd (d2p_ihb_rd),
526 .d2p_ibc_req (d2p_ibc_req),
527 .d2p_ibc_nhc (d2p_ibc_nhc),
528 .d2p_ibc_phc (d2p_ibc_phc),
529 .d2p_ibc_pdc (d2p_ibc_pdc),
530 .p2d_ibc_ack (p2d_ibc_ack),
531 .d2p_idb_addr (d2p_idb_addr),
532 .p2d_idb_data (p2d_idb_data),
533 .p2d_idb_dpar (p2d_idb_dpar),
534 .p2d_cto_req (p2d_cto_req),
535 .p2d_cto_tag (p2d_cto_tag),
536 .d2p_cto_ack (d2p_cto_ack),
537 .y2k_rcd (y2k_rcd),
538 .y2k_rcd_enq (y2k_rcd_enq),
539 .k2y_rcd_deq (k2y_rcd_deq),
540 .k2y_rel_rcd (k2y_rel_rcd),
541 .k2y_rel_enq (k2y_rel_enq),
542 .k2y_buf_addr (k2y_buf_addr),
543 .y2k_buf_data (y2k_buf_data),
544 .y2k_buf_dpar (y2k_buf_dpar),
545 .cib2iil_ihb_pe_drain (cib2iil_ihb_pe_drain),
546 .cib2iil_pec_drain (cib2iil_pec_drain),
547 .iil2cib_ihb_pe (iil2cib_ihb_pe),
548 .iil2isb_clr (iil2isb_clr),
549 .iil2isb_tag (iil2isb_tag),
550 .isb2iil_vld (isb2iil_vld),
551 .isb2iil_low_addr (isb2iil_low_addr),
552 .low_dbg_sel_a (k2y_dbg_sel_a[2:0]),
553 .low_dbg_sel_b (k2y_dbg_sel_b[2:0]),
554 .iil_dbg_a (iil_dbg_a),
555 .iil_dbg_b (iil_dbg_b),
556 .iil_is_idle (iil_is_idle),
557 .ilu_is_idle (ilu_is_idle) );
558
559 // EIL sub-block
560 dmu_ilu_eil eil (
561 .clk (l1clk),
562 .rst_l (rst_l),
563 .d2p_edb_we (d2p_edb_we),
564 .d2p_edb_data (d2p_edb_data),
565 .d2p_edb_dpar (d2p_edb_dpar),
566 .d2p_edb_addr (d2p_edb_addr),
567 .d2p_ehb_we (d2p_ehb_we),
568 .d2p_ehb_data (d2p_ehb_data),
569 .d2p_ehb_dpar (d2p_ehb_dpar),
570 .d2p_ehb_addr (d2p_ehb_addr),
571 .d2p_ech_wptr (d2p_ech_wptr),
572 .d2p_erh_wptr (d2p_erh_wptr),
573 .p2d_ech_rptr (p2d_ech_rptr),
574 .p2d_erh_rptr (p2d_erh_rptr),
575 .p2d_ecd_rptr (p2d_ecd_rptr),
576 .p2d_erd_rptr (p2d_erd_rptr),
577 .k2y_rcd (k2y_rcd),
578 .k2y_rcd_enq (k2y_rcd_enq),
579 .y2k_rcd_deq (y2k_rcd_deq),
580 .y2k_rel_rcd (y2k_rel_rcd),
581 .y2k_rel_enq (y2k_rel_enq),
582 .k2y_dou_dptr (k2y_dou_dptr),
583 .k2y_dou_err (k2y_dou_err),
584 .k2y_dou_vld (k2y_dou_vld),
585 .k2y_buf_addr_vld_monitor (k2y_buf_addr_vld_monitor),
586 .y2k_buf_addr_vld_monitor (y2k_buf_addr_vld_monitor),
587 .y2k_buf_addr (y2k_buf_addr),
588 .k2y_buf_data (k2y_buf_data),
589 .k2y_buf_dpar (k2y_buf_dpar),
590 .ilu_diagnos_ehi_par_hw_read (ilu_diagnos_ehi_par_hw_read),
591 .ilu_diagnos_ehi_trig_hw_clr (ilu_diagnos_ehi_trig_hw_clr),
592 .ilu_diagnos_ehi_trig_hw_read (ilu_diagnos_ehi_trig_hw_read),
593 .ilu_diagnos_edi_par_hw_read (ilu_diagnos_edi_par_hw_read),
594 .ilu_diagnos_edi_trig_hw_clr (ilu_diagnos_edi_trig_hw_clr),
595 .ilu_diagnos_edi_trig_hw_read (ilu_diagnos_edi_trig_hw_read),
596 .cib2eil_ihb_pe_drain (cib2eil_ihb_pe_drain),
597 .cib2eil_pec_drain (cib2eil_pec_drain),
598 .eil2isb_log (eil2isb_log),
599 .eil2isb_tag (eil2isb_tag),
600 .eil2isb_low_addr (eil2isb_low_addr),
601 .low_dbg_sel_a (k2y_dbg_sel_a[2:0]),
602 .low_dbg_sel_b (k2y_dbg_sel_b[2:0]),
603 .eil_dbg_0_a (eil_dbg_0_a),
604 .eil_dbg_0_b (eil_dbg_0_b),
605 .eil_dbg_1_a (eil_dbg_1_a),
606 .eil_dbg_1_b (eil_dbg_1_b),
607 .eil_is_idle (eil_is_idle),
608 .il2cl_gr_16 (il2cl_gr_16)
609 );
610
611 // CIB sub-block
612 dmu_ilu_cib cib (
613 .clk (l1clk),
614 .rst_dmu_async_por_ (rst_dmu_async_por_), // drives async reset ff for serdes enables
615 .rst_wmr_ (rst_wmr_), // raw warm reset for serdes rate
616 .por_l (por_l),
617 .rst_l (rst_l),
618 .j2d_instance_id (j2d_instance_id),
619 .p2d_mps (p2d_mps),
620 .p2d_ue_int (p2d_ue_int),
621 .p2d_ce_int (p2d_ce_int),
622 .p2d_oe_int (p2d_oe_int),
623// .d2p_drain (d2p_drain),
624 .p2d_drain (p2d_drain),
625 .y2k_mps (y2k_mps),
626 .y2k_int_l (y2k_int_l),
627 .k2y_csr_ring_out (k2y_csr_ring_out),
628 .y2k_csr_ring_in (y2k_csr_ring_in),
629 .d2p_csr_req (d2p_csr_req),
630 .p2d_csr_ack (p2d_csr_ack),
631 .d2p_csr_rcd (d2p_csr_rcd),
632 .p2d_csr_req (p2d_csr_req),
633 .d2p_csr_ack (d2p_csr_ack),
634 .p2d_csr_rcd (p2d_csr_rcd),
635 // SV 05/31/05
636 .ilu_diagnos_rate_scale_hw_read (dmu_psr_rate_scale),
637 // SV 04/06/05
638 .ilu_diagnos_edi_par_hw_read (ilu_diagnos_edi_par_hw_read),
639 .ilu_diagnos_ehi_par_hw_read (ilu_diagnos_ehi_par_hw_read),
640 .ilu_diagnos_edi_trig_hw_clr (ilu_diagnos_edi_trig_hw_clr),
641 .ilu_diagnos_edi_trig_hw_read (ilu_diagnos_edi_trig_hw_read),
642 .ilu_diagnos_ehi_trig_hw_clr (ilu_diagnos_ehi_trig_hw_clr),
643 .ilu_diagnos_ehi_trig_hw_read (ilu_diagnos_ehi_trig_hw_read),
644 .iil2cib_ihb_pe (iil2cib_ihb_pe),
645 .cib2iil_ihb_pe_drain (cib2iil_ihb_pe_drain),
646 .cib2iil_pec_drain (cib2iil_pec_drain),
647 .cib2eil_ihb_pe_drain (cib2eil_ihb_pe_drain),
648 .cib2eil_pec_drain (cib2eil_pec_drain),
649 .low_dbg_sel_a (k2y_dbg_sel_a[2:0]),
650 .low_dbg_sel_b (k2y_dbg_sel_b[2:0]),
651 .cib_dbg_a (cib_dbg_a),
652 .cib_dbg_b (cib_dbg_b),
653 .dmu_psr_pll_en_sds0 (dmu_psr_pll_en_sds0),
654 .dmu_psr_pll_en_sds1 (dmu_psr_pll_en_sds1),
655 .dmu_psr_rx_en_b0_sds0 (dmu_psr_rx_en_b0_sds0),
656 .dmu_psr_rx_en_b1_sds0 (dmu_psr_rx_en_b1_sds0),
657 .dmu_psr_rx_en_b2_sds0 (dmu_psr_rx_en_b2_sds0),
658 .dmu_psr_rx_en_b3_sds0 (dmu_psr_rx_en_b3_sds0),
659 .dmu_psr_rx_en_b0_sds1 (dmu_psr_rx_en_b0_sds1),
660 .dmu_psr_rx_en_b1_sds1 (dmu_psr_rx_en_b1_sds1),
661 .dmu_psr_rx_en_b2_sds1 (dmu_psr_rx_en_b2_sds1),
662 .dmu_psr_rx_en_b3_sds1 (dmu_psr_rx_en_b3_sds1),
663 .dmu_psr_tx_en_b0_sds0 (dmu_psr_tx_en_b0_sds0),
664 .dmu_psr_tx_en_b1_sds0 (dmu_psr_tx_en_b1_sds0),
665 .dmu_psr_tx_en_b2_sds0 (dmu_psr_tx_en_b2_sds0),
666 .dmu_psr_tx_en_b3_sds0 (dmu_psr_tx_en_b3_sds0),
667 .dmu_psr_tx_en_b0_sds1 (dmu_psr_tx_en_b0_sds1),
668 .dmu_psr_tx_en_b1_sds1 (dmu_psr_tx_en_b1_sds1),
669 .dmu_psr_tx_en_b2_sds1 (dmu_psr_tx_en_b2_sds1),
670 .dmu_psr_tx_en_b3_sds1 (dmu_psr_tx_en_b3_sds1),
671 .tcu_test_protect (tcu_test_protect)
672
673 );
674
675 // ISB sub-block
676 dmu_ilu_isb isb (
677 .clk (l1clk),
678 .rst_l (rst_l),
679 .eil2isb_log (eil2isb_log),
680 .eil2isb_tag (eil2isb_tag),
681 .eil2isb_low_addr (eil2isb_low_addr),
682 .iil2isb_clr (iil2isb_clr),
683 .iil2isb_tag (iil2isb_tag),
684 .isb2iil_vld (isb2iil_vld),
685 .isb2iil_low_addr (isb2iil_low_addr),
686 .low_dbg_sel_a (k2y_dbg_sel_a[2:0]),
687 .low_dbg_sel_b (k2y_dbg_sel_b[2:0]),
688 .isb_dbg_a (isb_dbg_a),
689 .isb_dbg_b (isb_dbg_b),
690 .isb_is_idle (isb_is_idle) );
691
692endmodule // dmu_ilu
693
694
695