Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / design / sys / iop / dmu / rtl / dmu_imu.v
CommitLineData
86530b38
AT
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T2 Processor File: dmu_imu.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_imu (
36 clk,
37 rst_l,
38 por_l,
39
40 // Outputs to LRM (INT OUT RECORD QUEUE)
41
42 im2rm_rcd,
43 im2rm_rcd_enq,
44
45
46 // Inputs from Record Header Queue (INT IN RECORD QUEUE)
47
48 rm2im_rcd,
49 rm2im_rcd_enq,
50
51
52
53 // Inputs from Record Header Queue ( MSI DATA RECORD QUEUE)
54
55 tm2im_data,
56 tm2im_data_enq,
57
58
59 // Static Jbus ID Sel
60
61 j2d_jid,
62 j2d_instance_id,
63
64 // Mondo Reply status interface
65
66 rm2im_rply,
67 rm2im_rply_enq,
68
69 // Block Level Int Signals
70
71 mm2im_int,
72
73 // Core Level Int Signals
74
75 y2k_int_l,
76
77// j2d_ext_int_l,
78
79// j2d_i2c0_int_l,
80// j2d_i2c1_int_l,
81// j2d_jbc_int_l,
82
83 // MONDO REC QUEUE INTERAFCE
84
85 im2rm_mdo_enq,
86 im2rm_mdo,
87
88
89 // DIU INTERFACE
90 im2di_wr,
91 im2di_addr,
92 im2di_data,
93 im2di_dpar,
94 im2di_bmask,
95
96 // TMU Static CSR Signals
97
98 im2tm_msi32_addr_reg,
99 im2tm_msi64_addr_reg,
100 im2rm_mem64_offset_reg,
101
102
103
104 // CSRBUS Interface
105
106 cr2im_csrbus_valid,
107 im2cr_csrbus_done,
108 im2cr_csrbus_mapped,
109 cr2im_csrbus_wr_data,
110 cr2im_csrbus_wr,
111 im2cr_csrbus_read_data,
112 cr2im_csrbus_addr,
113 cr2im_csrbus_src_bus,
114 im2cr_csrbus_acc_vio,
115
116 cr2im_dbg_sel_a,
117 cr2im_dbg_sel_b,
118
119 im2cr_dbg_a,
120 im2cr_dbg_b,
121
122 dmu_dbg_err_event,
123
124 csr_sun4v_en,
125 im2tm_eqs_adr_63,
126
127 im2crm_bc_stall_en,
128 im2crm_ilu_stall_en
129 );
130
131
132
133//############################################################################
134// PORT DECLARATIONS
135//############################################################################
136
137 //------------------------------------------------------------------------
138 // Clock and Reset Signals
139 //------------------------------------------------------------------------
140 input clk;
141 input rst_l;
142 input por_l;
143
144 //------------------------------------------------------------------------
145 // Outputs to LRM
146 //------------------------------------------------------------------------
147
148 output [`FIRE_DLC_IOT_REC_WDTH-1:0] im2rm_rcd;
149 output im2rm_rcd_enq;
150
151 //------------------------------------------------------------------------
152 // Inputs from LRM for Command Headers
153 //------------------------------------------------------------------------
154
155 input [`FIRE_DLC_IIN_REC_WDTH-1:0] rm2im_rcd;
156 input rm2im_rcd_enq;
157
158
159 //------------------------------------------------------------------------
160 // Inputs from DIM for Data Headers
161 //------------------------------------------------------------------------
162
163 input [`FIRE_DLC_MDF_REC_WDTH-1:0] tm2im_data;
164 input tm2im_data_enq;
165
166
167 //------------------------------------------------------------------------
168 // Static JBUS signal Select
169 //------------------------------------------------------------------------
170 input [`FIRE_J2D_JID_WDTH-1:0] j2d_jid;
171 input [`FIRE_J2D_INSTANCE_ID_WDTH-1:0] j2d_instance_id;
172
173
174 //------------------------------------------------------------------------
175 // Input Signals from RRM Block Signals
176 //------------------------------------------------------------------------
177
178 input rm2im_rply_enq;
179 input [`FIRE_DLC_MRR_REC_WDTH-1:0] rm2im_rply;
180
181
182 //------------------------------------------------------------------------
183 // DMC Block Interrupt Signals
184 //------------------------------------------------------------------------
185
186 input mm2im_int;
187
188
189 //------------------------------------------------------------------------
190 // PEC Core Interrupt Signals
191 //------------------------------------------------------------------------
192 input y2k_int_l;
193
194 //------------------------------------------------------------------------
195 // External Interrupt Signals
196 //------------------------------------------------------------------------
197// input [19:0] j2d_ext_int_l;
198
199
200 //------------------------------------------------------------------------
201 // Onboard Interrupt Signals
202 //------------------------------------------------------------------------
203// input j2d_i2c0_int_l;
204// input j2d_i2c1_int_l;
205
206 //------------------------------------------------------------------------
207 // Internal Interrupt Signals
208 //------------------------------------------------------------------------
209// input j2d_jbc_int_l;
210
211 //-----------------------------------------------------
212 // Interface for to LRM for Mondo Records
213 //-----------------------------------------------------
214
215 output im2rm_mdo_enq;
216 output [`FIRE_DLC_MQR_REC_WDTH-1:0] im2rm_mdo;
217
218
219
220 //------------------------------------------------------------------------
221 // Outputs to DIU Block Signals
222 //------------------------------------------------------------------------
223
224 output im2di_wr;
225 output [`FIRE_DLC_IRD_ADDR_WDTH-1:0] im2di_addr;
226 output [`FIRE_DLC_IRD_DATA_WDTH-1:0] im2di_data;
227 output [`FIRE_DLC_IRD_DPAR_WDTH-1:0] im2di_dpar;
228 output [`FIRE_DLC_IRD_BMASK_WDTH-1:0] im2di_bmask;
229
230 //------------------------------------------------------------------------
231 // TMU Static CSR Signals
232 //------------------------------------------------------------------------
233
234 output [15:0] im2tm_msi32_addr_reg;
235 output [47:0] im2tm_msi64_addr_reg;
236 output [39:0] im2rm_mem64_offset_reg;
237
238 //------------------------------------------------------------------------
239 // PIO INTERFACE
240 //------------------------------------------------------------------------
241 input cr2im_csrbus_valid;
242 output im2cr_csrbus_done;
243 output im2cr_csrbus_mapped;
244
245 input [`FIRE_CSR_DATA_WIDTH-1:0] cr2im_csrbus_wr_data;
246 input cr2im_csrbus_wr;
247
248 output [`FIRE_CSR_DATA_WIDTH-1:0] im2cr_csrbus_read_data;
249
250 input [`FIRE_CSR_ADDR_MAX_WIDTH-1:0] cr2im_csrbus_addr;
251
252 input [`FIRE_CSR_SRC_BUS_ID_WIDTH-1:0]cr2im_csrbus_src_bus;
253 output im2cr_csrbus_acc_vio;
254
255 //------------------------------------------------------------------------
256 // Block Debug Level Selects and Output Ports
257 //------------------------------------------------------------------------
258
259 input [`FIRE_DLC_DEBUG_SEL_WDTH-1:0] cr2im_dbg_sel_a;
260 input [`FIRE_DLC_DEBUG_SEL_WDTH-1:0] cr2im_dbg_sel_b;
261
262 output [`FIRE_DEBUG_WDTH-1:0] im2cr_dbg_a;
263 output [`FIRE_DEBUG_WDTH-1:0] im2cr_dbg_b;
264
265//############################################################################
266// for N2 debug
267//############################################################################
268 output dmu_dbg_err_event;
269
270//############################################################################
271// for msi addr compare in sun4v, don't use bit 63
272//############################################################################
273 input csr_sun4v_en;
274 output im2tm_eqs_adr_63;
275
276//############################################################################
277// enables for bug fix 107207, lockup
278//############################################################################
279 output im2crm_bc_stall_en;
280 output im2crm_ilu_stall_en;
281
282//############################################################################
283// PARAMETERS
284//############################################################################
285
286
287//############################################################################
288// SIGNAL DECLARATIONS
289//############################################################################
290
291
292//**************************************************
293// Wire
294//**************************************************
295
296 //------------------------------------------------------------------------
297 // Outputs for Command Headers to RDS
298 //------------------------------------------------------------------------
299
300 wire [`FIRE_DLC_IIN_REC_WDTH-1:0] irs2rds_rcd;
301 wire rds2irs_rcd_deq;
302 wire irs2rds_rcd_empty;
303
304
305 //------------------------------------------------------------------------
306 // wires for Data Headers to RDS
307 //------------------------------------------------------------------------
308
309 wire [`FIRE_DLC_MDF_REC_WDTH-1:0] irs2rds_data;
310 wire rds2irs_data_deq;
311 wire irs2rds_data_empty;
312
313 //------------------------------------------------------------------------
314 // Output Interrupt Signals
315 //------------------------------------------------------------------------
316 wire [3:0] rds2iss_intx_int_l;
317
318
319 //------------------------------------------------------------------------
320 // Output to State Check Sub-block Signals
321 //------------------------------------------------------------------------
322
323 wire [`FIRE_DLC_IOT_REC_WDTH-1:0] rds2scs_rcd;
324 wire rds2scs_rcd_sel;
325 wire [5:0] rds2scs_eq;
326
327
328 //------------------------------------------------------------------------
329 // Output to EQ State Sub-block Signals
330 //------------------------------------------------------------------------
331 wire [5:0] rds2eqs_eq;
332 wire rds2eqs_eq_sel;
333
334
335 //------------------------------------------------------------------------
336 // Input from Decoder sub-block
337 //------------------------------------------------------------------------
338 wire eqs2scs_eq_ok;
339 wire eqs2scs_eq_not_en;
340
341 //------------------------------------------------------------------------
342 // Output to Out Record Sub-block
343 //------------------------------------------------------------------------
344
345 wire [`FIRE_DLC_IOT_REC_WDTH-1:0] scs2ors_rcd;
346 wire scs2ors_rcd_sel;
347
348 //------------------------------------------------------------------------
349 // Output to EQS
350 //------------------------------------------------------------------------
351
352 wire [61:0] eqs2ors_eq_addr;
353 wire eqs2ors_sel;
354
355 //------------------------------------------------------------------------
356 // EQ Interrupt Signals
357 //------------------------------------------------------------------------
358 wire [35:0] eqs2iss_eq_int_l;
359
360 //------------------------------------------------------------------------
361 // Error Signals
362 //------------------------------------------------------------------------
363 wire eqs2ics_eq_over_error;
364 wire scs2ics_eq_not_en_error;
365 wire rds2ics_msi_mal_error;
366 wire rds2ics_msi_par_error;
367 wire rds2ics_pmeack_mes_not_en_error;
368 wire rds2ics_pmpme_mes_not_en_error;
369 wire rds2ics_fatal_mes_not_en_error;
370 wire rds2ics_nonfatal_mes_not_en_error;
371 wire rds2ics_cor_mes_not_en_error;
372 wire rds2ics_msi_not_en_error;
373 wire [63:0] rds2ics_error_data;
374 wire [63:0] scs2ics_error_data;
375 wire [63:0] eqs2ics_error_data;
376
377
378
379 //-----------------------------------------------------
380 // Interface for Group Controller Arbiter
381 //-----------------------------------------------------
382
383 wire rss2gcs_rply; // Reply type from RSS ack =1 nack =0
384 wire [1:0] rss2gcs_id; // Group controller ID for response
385 wire rss2gcs_valid; // Valid signal to validate respose
386
387 //------------------------------------------------------------------------
388 // Mondo Requests Going to each of the 4 group controllers
389 //------------------------------------------------------------------------
390
391 wire ics2iss_mondo_62_int_l; //Requests to issue and interrupt from GC 0
392 wire ics2iss_mondo_63_int_l; //Requests to issue and interrupt from GC 0
393
394 //------------------------------------------------------------------------
395 // Mondo Requests Going to each of the 4 group controllers
396 //------------------------------------------------------------------------
397
398 wire [63:0] iss2gcs_gc_0_mdo_needed; //Requests to issue and interrupt from GC 0
399 wire [63:0] iss2gcs_gc_1_mdo_needed; //Requests to issue and interrupt from GC 1
400 wire [63:0] iss2gcs_gc_2_mdo_needed; //Requests to issue and interrupt from GC 2
401 wire [63:0] iss2gcs_gc_3_mdo_needed; //Requests to issue and interrupt from GC 3
402
403 //------------------------------------------------------------------------
404 // Requests to INT state for TID and to move winner to PENDING
405 //------------------------------------------------------------------------
406
407 wire gcs2iss_tid_req; // Request to ISS for TID for accepted mondo
408 wire [5:0] gcs2iss_tid_sel; // Select for the TID wire mux
409 wire [63:0] gcs2iss_mdo_pending; // ID of mondo that was accecpted
410
411 wire iss2gcs_tid_ack; // ACK Qualifier for tid of mondo
412 wire [5:0] iss2gcs_tid; // TID of mondo
413 wire iss2gcs_mondo_mode; // Mondo Mode of the Mondo
414
415 //-----------------------------------------------------
416 // Interface for Interrupt Retry Timer
417 //-----------------------------------------------------
418
419 wire [24:0] iss2gcs_counter_limit; // COunter Limit fo rthe retry counter
420
421 //------------------------------------------------------------------------
422 // Inputs from RDS Sub-block Signals
423 //------------------------------------------------------------------------
424 wire rds2dms_data_sel;
425 wire [127:0] rds2dms_data;
426 wire [3:0] rds2dms_d_ptr;
427
428
429//--------------------------------------------------------
430// Wires FOr Muxing PIO Output Paths
431//--------------------------------------------------------
432
433 wire rds_done;
434 wire eqs_done;
435 wire ics_done;
436 wire iss_done;
437
438 wire rds_mapped;
439 wire eqs_mapped;
440 wire ics_mapped;
441 wire iss_mapped;
442
443 wire rds_acc_vio;
444 wire eqs_acc_vio;
445 wire ics_acc_vio;
446 wire iss_acc_vio;
447
448 wire [`FIRE_CSR_DATA_WIDTH-1:0] rds_read_data;
449 wire [`FIRE_CSR_DATA_WIDTH-1:0] eqs_read_data;
450 wire [`FIRE_CSR_DATA_WIDTH-1:0] ics_read_data;
451 wire [`FIRE_CSR_DATA_WIDTH-1:0] iss_read_data;
452
453 wire csrbus_valid;
454 wire [`FIRE_CSR_DATA_WIDTH-1:0] csrbus_wr_data;
455 wire csrbus_wr;
456 wire [`FIRE_CSR_ADDR_MAX_WIDTH-1:0] csrbus_addr;
457 wire [`FIRE_CSR_SRC_BUS_ID_WIDTH-1:0] csrbus_src_bus;
458
459//--------------------------------------------------------
460// Wires For Debugging
461//--------------------------------------------------------
462
463 wire [2:0] dbg2eqs_dbg_sel_a;
464 wire [2:0] dbg2eqs_dbg_sel_b;
465
466 wire [`FIRE_DEBUG_WDTH-1:0] eqs2dbg_dbg_a;
467 wire [`FIRE_DEBUG_WDTH-1:0] eqs2dbg_dbg_b;
468
469 wire [2:0] dbg2gcs_dbg_sel_a;
470 wire [2:0] dbg2gcs_dbg_sel_b;
471 wire [`FIRE_DEBUG_WDTH-1:0] gcs2dbg_dbg_a;
472 wire [`FIRE_DEBUG_WDTH-1:0] gcs2dbg_dbg_b;
473
474 wire [2:0] dbg2irs_dbg_sel_a;
475 wire [2:0] dbg2irs_dbg_sel_b;
476 wire [`FIRE_DEBUG_WDTH-1:0] irs2dbg_dbg_a;
477 wire [`FIRE_DEBUG_WDTH-1:0] irs2dbg_dbg_b;
478
479 wire [2:0] dbg2iss_dbg_sel_a;
480 wire [2:0] dbg2iss_dbg_sel_b;
481 wire [`FIRE_DEBUG_WDTH-1:0] iss2dbg_dbg_a;
482 wire [`FIRE_DEBUG_WDTH-1:0] iss2dbg_dbg_b;
483
484 wire [2:0] dbg2ors_dbg_sel_a;
485 wire [2:0] dbg2ors_dbg_sel_b;
486 wire [`FIRE_DEBUG_WDTH-1:0] ors2dbg_dbg_a;
487 wire [`FIRE_DEBUG_WDTH-1:0] ors2dbg_dbg_b;
488
489 wire [2:0] dbg2rds_dbg_sel_a;
490 wire [2:0] dbg2rds_dbg_sel_b;
491 wire [`FIRE_DEBUG_WDTH-1:0] rds2dbg_dbg_a;
492 wire [`FIRE_DEBUG_WDTH-1:0] rds2dbg_dbg_b;
493
494
495 wire [`FIRE_DEBUG_WDTH-1:0] rss2dbg_dbg_a;
496 wire [`FIRE_DEBUG_WDTH-1:0] rss2dbg_dbg_b;
497
498 wire [2:0] dbg2scs_dbg_sel_a;
499 wire [2:0] dbg2scs_dbg_sel_b;
500 wire [`FIRE_DEBUG_WDTH-1:0] scs2dbg_dbg_a;
501 wire [`FIRE_DEBUG_WDTH-1:0] scs2dbg_dbg_b;
502
503 wire ors2ics_perf_eq_mondos;
504 wire ors2ics_perf_mondos;
505 wire ors2ics_perf_msi;
506 wire ors2ics_perf_eq_wr;
507
508 wire rss2ics_perf_mondo_nacks;
509
510//------------------------------------------------------------------------
511// Idle Checkers
512//------------------------------------------------------------------------
513
514 wire rds2dbg_idle;
515 wire ors2dbg_idle;
516 wire gcs2dbg_idle;
517
518//**************************************************
519// Registers that Are Not Flops
520//**************************************************
521 reg [`FIRE_CSR_DATA_WIDTH-1:0] im2cr_csrbus_read_data;
522
523
524//**************************************************
525// Registers that Are Flops
526//**************************************************
527
528
529//############################################################################
530// ZERO IN CHECKERS
531//############################################################################
532
533 //---------------------------------------------------------------------
534 // One Hot / Bits On Checkers
535 //---------------------------------------------------------------------
536
537 //0in bits_on -var {eqs_done,rds_done,ics_done,iss_done} -max 1
538 //0in bits_on -var {eqs_mapped,rds_mapped,ics_mapped,iss_mapped} -max 1
539
540
541
542//############################################################################
543// COMBINATIONAL LOGIC
544//############################################################################
545
546//-----------------------------------------------------------------------------
547// Muxing Logic for PIO Path
548//
549//-----------------------------------------------------------------------------
550
551assign im2cr_csrbus_done = eqs_done | rds_done | ics_done | iss_done;
552assign im2cr_csrbus_mapped = eqs_mapped | rds_mapped | ics_mapped | iss_mapped;
553assign im2cr_csrbus_acc_vio = eqs_acc_vio | rds_acc_vio | ics_acc_vio | iss_acc_vio;
554
555always @ (eqs_done or rds_done or ics_done or iss_done or
556 eqs_read_data or rds_read_data or ics_read_data or iss_read_data)
557
558 case ({eqs_done, rds_done, ics_done, iss_done})
559 4'b1000 : im2cr_csrbus_read_data = eqs_read_data;
560 4'b0100 : im2cr_csrbus_read_data = rds_read_data;
561 4'b0010 : im2cr_csrbus_read_data = ics_read_data;
562 4'b0001 : im2cr_csrbus_read_data = iss_read_data;
563 default: im2cr_csrbus_read_data = 64'h0;
564 endcase
565
566 assign csrbus_valid = cr2im_csrbus_valid;
567 assign csrbus_wr_data = cr2im_csrbus_wr_data;
568 assign csrbus_wr = cr2im_csrbus_wr;
569 assign csrbus_addr = cr2im_csrbus_addr;
570 assign csrbus_src_bus = cr2im_csrbus_src_bus;
571
572wire eq_base_address_63;
573 assign im2tm_eqs_adr_63 = eq_base_address_63; //BP 12-12-05 to tm for msi_64 compare
574//############################################################################
575// SEQUENTIAL LOGIC
576//############################################################################
577
578
579
580//############################################################################
581// MODULE INSTANTIATIONS
582//############################################################################
583
584
585 dmu_imu_irs irs(
586 .clk (clk),
587 .rst_l (rst_l),
588
589 // Inputs to Record Header Queue
590
591 .rm2im_rcd (rm2im_rcd),
592 .rm2im_rcd_enq (rm2im_rcd_enq),
593
594
595 //Outputs from Record Header Queue
596
597 .irs2rds_rcd (irs2rds_rcd),
598 .rds2irs_rcd_deq (rds2irs_rcd_deq),
599 .irs2rds_rcd_empty (irs2rds_rcd_empty),
600
601
602
603 // Inputs to Record Header Queue
604
605 .tm2im_data (tm2im_data),
606 .tm2im_data_enq (tm2im_data_enq),
607
608
609 //Outputs from Record Header Queue
610
611 .irs2rds_data (irs2rds_data),
612 .rds2irs_data_deq (rds2irs_data_deq),
613 .irs2rds_data_empty (irs2rds_data_empty),
614
615 .dbg2irs_dbg_sel_a (dbg2irs_dbg_sel_a),
616 .dbg2irs_dbg_sel_b (dbg2irs_dbg_sel_b),
617 .irs2dbg_dbg_a (irs2dbg_dbg_a),
618 .irs2dbg_dbg_b (irs2dbg_dbg_b)
619
620 );
621
622
623
624 dmu_imu_rds rds(
625 .clk (clk),
626 .rst_l (rst_l),
627
628 // Inputs from the Header Queue
629
630 .irs2rds_rcd (irs2rds_rcd),
631 .rds2irs_rcd_deq (rds2irs_rcd_deq),
632 .irs2rds_rcd_empty (irs2rds_rcd_empty),
633
634
635 // Inputs and Outputs from the MSI Data Queue
636
637
638 .irs2rds_data (irs2rds_data),
639 .rds2irs_data_deq (rds2irs_data_deq),
640 .irs2rds_data_empty (irs2rds_data_empty),
641
642 // Static Jbus ID Sel
643
644 .j2d_jid (j2d_jid),
645 .j2d_instance_id (j2d_instance_id),
646
647 // INTX Interrupt Notifcation Mechanism
648
649 .rds2iss_intx_int_l (rds2iss_intx_int_l),
650
651 // Outputs to State Check Sub-block
652
653 .rds2scs_rcd (rds2scs_rcd),
654 .rds2scs_rcd_sel (rds2scs_rcd_sel),
655 .rds2scs_eq (rds2scs_eq),
656
657 // Outputs to EQ state Sub-block
658
659 .rds2eqs_eq (rds2eqs_eq),
660 .rds2eqs_eq_sel (rds2eqs_eq_sel),
661
662 // Outputs to Data Move Sub-block
663
664 .rds2dms_data_sel (rds2dms_data_sel),
665 .rds2dms_data (rds2dms_data),
666 .rds2dms_d_ptr (rds2dms_d_ptr),
667
668 .rds2ics_msi_mal_error (rds2ics_msi_mal_error),
669 .rds2ics_msi_par_error (rds2ics_msi_par_error),
670 .rds2ics_pmeack_mes_not_en_error (rds2ics_pmeack_mes_not_en_error),
671 .rds2ics_pmpme_mes_not_en_error (rds2ics_pmpme_mes_not_en_error),
672 .rds2ics_fatal_mes_not_en_error (rds2ics_fatal_mes_not_en_error),
673 .rds2ics_nonfatal_mes_not_en_error (rds2ics_nonfatal_mes_not_en_error),
674 .rds2ics_cor_mes_not_en_error (rds2ics_cor_mes_not_en_error),
675 .rds2ics_msi_not_en_error (rds2ics_msi_not_en_error),
676 .rds2ics_error_data (rds2ics_error_data),
677
678 // CSRBUS Interface
679
680 .csrbus_valid (csrbus_valid),
681 .csrbus_done (rds_done),
682 .csrbus_mapped (rds_mapped),
683 .csrbus_wr_data (csrbus_wr_data),
684 .csrbus_wr (csrbus_wr),
685 .csrbus_read_data (rds_read_data),
686 .csrbus_addr (csrbus_addr),
687 .csrbus_src_bus (csrbus_src_bus),
688 .csrbus_acc_vio (rds_acc_vio),
689
690 .dbg2rds_dbg_sel_a (dbg2rds_dbg_sel_a),
691 .dbg2rds_dbg_sel_b (dbg2rds_dbg_sel_b),
692 .rds2dbg_dbg_a (rds2dbg_dbg_a),
693 .rds2dbg_dbg_b (rds2dbg_dbg_b),
694
695 .rds2dbg_idle (rds2dbg_idle)
696
697 );
698
699
700 dmu_imu_scs scs(
701 .clk (clk),
702 .rst_l (rst_l),
703
704 // Inputs to State Check Sub-block
705
706 .rds2scs_rcd (rds2scs_rcd),
707 .rds2scs_rcd_sel (rds2scs_rcd_sel),
708 .rds2scs_eq (rds2scs_eq),
709
710 // Inputs from the EQS Block
711
712 .eqs2scs_eq_ok (eqs2scs_eq_ok),
713 .eqs2scs_eq_not_en (eqs2scs_eq_not_en),
714
715
716 // Outputs to ORS state Sub-block
717
718 .scs2ors_rcd (scs2ors_rcd),
719 .scs2ors_rcd_sel (scs2ors_rcd_sel),
720
721 .scs2ics_eq_not_en_error (scs2ics_eq_not_en_error),
722 .scs2ics_error_data (scs2ics_error_data),
723
724 .dbg2scs_dbg_sel_a (dbg2scs_dbg_sel_a),
725 .dbg2scs_dbg_sel_b (dbg2scs_dbg_sel_b),
726 .scs2dbg_dbg_a (scs2dbg_dbg_a),
727 .scs2dbg_dbg_b (scs2dbg_dbg_b)
728
729
730 );
731
732
733
734 dmu_imu_ors ors(
735 .clk (clk),
736 .rst_l (rst_l),
737
738
739 .scs2ors_rcd (scs2ors_rcd),
740 .scs2ors_rcd_sel (scs2ors_rcd_sel),
741
742
743 .eqs2ors_eq_addr (eqs2ors_eq_addr),
744 .eqs2ors_sel (eqs2ors_sel),
745
746 .im2rm_rcd (im2rm_rcd),
747 .im2rm_rcd_enq (im2rm_rcd_enq),
748
749 .dbg2ors_dbg_sel_a (dbg2ors_dbg_sel_a),
750 .dbg2ors_dbg_sel_b (dbg2ors_dbg_sel_b),
751 .ors2dbg_dbg_a (ors2dbg_dbg_a),
752 .ors2dbg_dbg_b (ors2dbg_dbg_b),
753
754 .ors2ics_perf_eq_mondos (ors2ics_perf_eq_mondos),
755 .ors2ics_perf_mondos (ors2ics_perf_mondos),
756 .ors2ics_perf_msi (ors2ics_perf_msi),
757 .ors2ics_perf_eq_wr (ors2ics_perf_eq_wr),
758
759 .ors2dbg_idle (ors2dbg_idle),
760 .csr_sun4v_en (csr_sun4v_en)
761
762
763 );
764
765
766 dmu_imu_eqs eqs(
767 .clk (clk),
768 .rst_l (rst_l),
769
770 .eqs2iss_eq_int_l (eqs2iss_eq_int_l),
771
772 .rds2eqs_eq_sel (rds2eqs_eq_sel),
773 .rds2eqs_eq (rds2eqs_eq),
774
775 .eqs2scs_eq_ok (eqs2scs_eq_ok),
776 .eqs2scs_eq_not_en (eqs2scs_eq_not_en),
777
778 .eqs2ors_eq_addr (eqs2ors_eq_addr),
779 .eqs2ors_sel (eqs2ors_sel),
780
781 .eq_base_address_63 (eq_base_address_63),
782
783 .eqs2ics_eq_over_error (eqs2ics_eq_over_error),
784 .eqs2ics_error_data (eqs2ics_error_data),
785
786 .csrbus_valid (csrbus_valid),
787 .csrbus_done (eqs_done),
788 .csrbus_mapped (eqs_mapped),
789 .csrbus_wr_data (csrbus_wr_data),
790 .csrbus_wr (csrbus_wr),
791 .csrbus_read_data (eqs_read_data),
792 .csrbus_addr (csrbus_addr),
793 .csrbus_src_bus (csrbus_src_bus),
794 .csrbus_acc_vio (eqs_acc_vio),
795
796 .j2d_instance_id (j2d_instance_id),
797
798 .dbg2eqs_dbg_sel_a (dbg2eqs_dbg_sel_a),
799 .dbg2eqs_dbg_sel_b (dbg2eqs_dbg_sel_b),
800 .eqs2dbg_dbg_a (eqs2dbg_dbg_a),
801 .eqs2dbg_dbg_b (eqs2dbg_dbg_b)
802
803
804 );
805
806
807 dmu_imu_rss rss(
808 .clk (clk),
809 .rst_l (rst_l),
810
811
812 .rm2im_rply (rm2im_rply),
813 .rm2im_rply_enq (rm2im_rply_enq),
814
815
816 .rss2gcs_rply (rss2gcs_rply),
817 .rss2gcs_id (rss2gcs_id),
818 .rss2gcs_valid (rss2gcs_valid),
819
820 .rss2dbg_dbg_a (rss2dbg_dbg_a),
821 .rss2dbg_dbg_b (rss2dbg_dbg_b),
822
823 .rss2ics_perf_mondo_nacks (rss2ics_perf_mondo_nacks)
824
825
826
827 );
828
829 dmu_imu_ics ics(
830 .clk (clk),
831 .rst_l (rst_l),
832 .por_l (por_l),
833
834 .mm2im_int (mm2im_int),
835
836 .y2k_int_l (y2k_int_l), // pec interrupt
837
838
839 .rds2ics_msi_mal_error (rds2ics_msi_mal_error),
840 .rds2ics_msi_par_error (rds2ics_msi_par_error),
841 .rds2ics_pmeack_mes_not_en_error (rds2ics_pmeack_mes_not_en_error),
842 .rds2ics_pmpme_mes_not_en_error (rds2ics_pmpme_mes_not_en_error),
843 .rds2ics_fatal_mes_not_en_error (rds2ics_fatal_mes_not_en_error),
844 .rds2ics_nonfatal_mes_not_en_error (rds2ics_nonfatal_mes_not_en_error),
845 .rds2ics_cor_mes_not_en_error (rds2ics_cor_mes_not_en_error),
846 .rds2ics_msi_not_en_error (rds2ics_msi_not_en_error),
847 .rds2ics_error_data (rds2ics_error_data),
848
849 .eqs2ics_eq_over_error (eqs2ics_eq_over_error),
850 .eqs2ics_error_data (eqs2ics_error_data),
851
852 .scs2ics_eq_not_en_error (scs2ics_eq_not_en_error),
853 .scs2ics_error_data (scs2ics_error_data),
854
855
856 .ics2iss_mondo_62_int_l (ics2iss_mondo_62_int_l),
857 .ics2iss_mondo_63_int_l (ics2iss_mondo_63_int_l),
858
859 .im2tm_msi32_addr_reg (im2tm_msi32_addr_reg),
860 .im2tm_msi64_addr_reg (im2tm_msi64_addr_reg),
861 .im2rm_mem64_offset_reg (im2rm_mem64_offset_reg),
862
863
864 .csrbus_valid (csrbus_valid),
865 .csrbus_done (ics_done),
866 .csrbus_mapped (ics_mapped),
867 .csrbus_wr_data (csrbus_wr_data),
868 .csrbus_wr (csrbus_wr),
869 .csrbus_read_data (ics_read_data),
870 .csrbus_addr (csrbus_addr),
871 .csrbus_src_bus (csrbus_src_bus),
872 .csrbus_acc_vio (ics_acc_vio),
873
874 .j2d_instance_id (j2d_instance_id),
875
876 .ors2ics_perf_eq_mondos (ors2ics_perf_eq_mondos),
877 .ors2ics_perf_mondos (ors2ics_perf_mondos),
878 .ors2ics_perf_msi (ors2ics_perf_msi),
879 .ors2ics_perf_eq_wr (ors2ics_perf_eq_wr),
880
881 .rss2ics_perf_mondo_nacks (rss2ics_perf_mondo_nacks),
882
883 .dmu_dbg_err_event (dmu_dbg_err_event),
884 .im2crm_bc_stall_en (im2crm_bc_stall_en),
885 .im2crm_ilu_stall_en (im2crm_ilu_stall_en)
886 );
887
888
889 dmu_imu_iss iss(
890 .clk (clk),
891 .rst_l (rst_l),
892
893// .j2d_ext_int_l (j2d_ext_int_l),
894
895 .rds2iss_intx_int_l (rds2iss_intx_int_l),
896
897 .eqs2iss_eq_int_l (eqs2iss_eq_int_l),
898
899// .j2d_i2c0_int_l (j2d_i2c0_int_l),
900// .j2d_i2c1_int_l (j2d_i2c1_int_l),
901
902 .ics2iss_mondo_62_int_l (ics2iss_mondo_62_int_l),
903 .ics2iss_mondo_63_int_l (ics2iss_mondo_63_int_l),
904
905// .j2d_jbc_int_l (j2d_jbc_int_l),
906
907 .iss2gcs_gc_0_mdo_needed(iss2gcs_gc_0_mdo_needed),
908 .iss2gcs_gc_1_mdo_needed(iss2gcs_gc_1_mdo_needed),
909 .iss2gcs_gc_2_mdo_needed(iss2gcs_gc_2_mdo_needed),
910 .iss2gcs_gc_3_mdo_needed(iss2gcs_gc_3_mdo_needed),
911
912 .gcs2iss_tid_req (gcs2iss_tid_req),
913 .gcs2iss_tid_sel (gcs2iss_tid_sel),
914 .gcs2iss_mdo_pending (gcs2iss_mdo_pending),
915 .iss2gcs_tid_ack (iss2gcs_tid_ack),
916 .iss2gcs_tid (iss2gcs_tid),
917 .iss2gcs_mondo_mode (iss2gcs_mondo_mode),
918
919 .iss2gcs_counter_limit (iss2gcs_counter_limit),
920
921 .csrbus_valid (csrbus_valid),
922 .csrbus_done (iss_done),
923 .csrbus_mapped (iss_mapped),
924 .csrbus_wr_data (csrbus_wr_data),
925 .csrbus_wr (csrbus_wr),
926 .csrbus_read_data (iss_read_data),
927 .csrbus_addr (csrbus_addr),
928 .csrbus_src_bus (csrbus_src_bus),
929 .csrbus_acc_vio (iss_acc_vio),
930
931 .j2d_instance_id (j2d_instance_id),
932
933 .dbg2iss_dbg_sel_a (dbg2iss_dbg_sel_a),
934 .dbg2iss_dbg_sel_b (dbg2iss_dbg_sel_b),
935 .iss2dbg_dbg_a (iss2dbg_dbg_a),
936 .iss2dbg_dbg_b (iss2dbg_dbg_b)
937
938 );
939
940 dmu_imu_gcs gcs(
941
942 .clk (clk),
943 .rst_l (rst_l),
944
945 .iss2gcs_gc_0_mdo_needed(iss2gcs_gc_0_mdo_needed),
946 .iss2gcs_gc_1_mdo_needed(iss2gcs_gc_1_mdo_needed),
947 .iss2gcs_gc_2_mdo_needed(iss2gcs_gc_2_mdo_needed),
948 .iss2gcs_gc_3_mdo_needed(iss2gcs_gc_3_mdo_needed),
949
950 .gcs2iss_tid_req (gcs2iss_tid_req),
951 .gcs2iss_tid_sel (gcs2iss_tid_sel),
952 .gcs2iss_mdo_pending (gcs2iss_mdo_pending),
953 .iss2gcs_tid_ack (iss2gcs_tid_ack),
954 .iss2gcs_tid (iss2gcs_tid),
955 .iss2gcs_mondo_mode (iss2gcs_mondo_mode),
956
957 .iss2gcs_counter_limit (iss2gcs_counter_limit),
958
959 .rss2gcs_rply (rss2gcs_rply),
960 .rss2gcs_id (rss2gcs_id),
961 .rss2gcs_valid (rss2gcs_valid),
962
963 .im2rm_mdo_enq (im2rm_mdo_enq),
964 .im2rm_mdo (im2rm_mdo),
965
966
967 .dbg2gcs_dbg_sel_a (dbg2gcs_dbg_sel_a),
968 .dbg2gcs_dbg_sel_b (dbg2gcs_dbg_sel_b),
969 .gcs2dbg_dbg_a (gcs2dbg_dbg_a),
970 .gcs2dbg_dbg_b (gcs2dbg_dbg_b),
971
972 .gcs2dbg_idle (gcs2dbg_idle)
973
974 );
975
976
977dmu_imu_dms dms(
978
979 .clk (clk),
980 .rst_l (rst_l),
981
982 // Inputs from RDS
983
984 .rds2dms_data_sel (rds2dms_data_sel),
985 .rds2dms_data (rds2dms_data),
986 .rds2dms_d_ptr (rds2dms_d_ptr),
987
988 // Outputs to the DIU
989
990
991 .im2di_wr (im2di_wr),
992 .im2di_addr (im2di_addr),
993 .im2di_data (im2di_data),
994 .im2di_dpar (im2di_dpar),
995 .im2di_bmask (im2di_bmask)
996
997
998 );
999
1000
1001
1002
1003dmu_imu_dbg dbg (
1004
1005 .clk (clk),
1006 .rst_l (rst_l),
1007 .cr2im_dbg_sel_a (cr2im_dbg_sel_a),
1008 .cr2im_dbg_sel_b (cr2im_dbg_sel_b),
1009 .im2cr_dbg_a (im2cr_dbg_a),
1010 .im2cr_dbg_b (im2cr_dbg_b),
1011
1012 .dbg2eqs_dbg_sel_a (dbg2eqs_dbg_sel_a),
1013 .dbg2eqs_dbg_sel_b (dbg2eqs_dbg_sel_b),
1014 .eqs2dbg_dbg_a (eqs2dbg_dbg_a),
1015 .eqs2dbg_dbg_b (eqs2dbg_dbg_b),
1016
1017 .dbg2gcs_dbg_sel_a (dbg2gcs_dbg_sel_a),
1018 .dbg2gcs_dbg_sel_b (dbg2gcs_dbg_sel_b),
1019 .gcs2dbg_dbg_a (gcs2dbg_dbg_a),
1020 .gcs2dbg_dbg_b (gcs2dbg_dbg_b),
1021
1022 .dbg2irs_dbg_sel_a (dbg2irs_dbg_sel_a),
1023 .dbg2irs_dbg_sel_b (dbg2irs_dbg_sel_b),
1024 .irs2dbg_dbg_a (irs2dbg_dbg_a),
1025 .irs2dbg_dbg_b (irs2dbg_dbg_b),
1026
1027 .dbg2iss_dbg_sel_a (dbg2iss_dbg_sel_a),
1028 .dbg2iss_dbg_sel_b (dbg2iss_dbg_sel_b),
1029 .iss2dbg_dbg_a (iss2dbg_dbg_a),
1030 .iss2dbg_dbg_b (iss2dbg_dbg_b),
1031
1032 .dbg2ors_dbg_sel_a (dbg2ors_dbg_sel_a),
1033 .dbg2ors_dbg_sel_b (dbg2ors_dbg_sel_b),
1034 .ors2dbg_dbg_a (ors2dbg_dbg_a),
1035 .ors2dbg_dbg_b (ors2dbg_dbg_b),
1036
1037 .dbg2rds_dbg_sel_a (dbg2rds_dbg_sel_a),
1038 .dbg2rds_dbg_sel_b (dbg2rds_dbg_sel_b),
1039 .rds2dbg_dbg_a (rds2dbg_dbg_a),
1040 .rds2dbg_dbg_b (rds2dbg_dbg_b),
1041
1042 .rss2dbg_dbg_a (rss2dbg_dbg_a),
1043 .rss2dbg_dbg_b (rss2dbg_dbg_b),
1044
1045 .dbg2scs_dbg_sel_a (dbg2scs_dbg_sel_a),
1046 .dbg2scs_dbg_sel_b (dbg2scs_dbg_sel_b),
1047 .scs2dbg_dbg_a (scs2dbg_dbg_a),
1048 .scs2dbg_dbg_b (scs2dbg_dbg_b),
1049
1050
1051 //Idle Checkers
1052
1053 .rds2dbg_idle (rds2dbg_idle),
1054 .ors2dbg_idle (ors2dbg_idle),
1055 .gcs2dbg_idle (gcs2dbg_idle)
1056
1057 );
1058
1059endmodule