Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / design / sys / iop / dmu / rtl / dmu_imu_rds_mess_csr.v
CommitLineData
86530b38
AT
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T2 Processor File: dmu_imu_rds_mess_csr.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_rds_mess_csr
36 (
37 clk,
38 csrbus_addr,
39 csrbus_wr_data,
40 csrbus_wr,
41 csrbus_valid,
42 csrbus_mapped,
43 csrbus_done,
44 csrbus_read_data,
45 rst_l,
46 csrbus_src_bus,
47 csrbus_acc_vio,
48 instance_id,
49 err_cor_mapping_v_hw_read,
50 err_cor_mapping_eqnum_hw_read,
51 err_nonfatal_mapping_v_hw_read,
52 err_nonfatal_mapping_eqnum_hw_read,
53 err_fatal_mapping_v_hw_read,
54 err_fatal_mapping_eqnum_hw_read,
55 pm_pme_mapping_v_hw_read,
56 pm_pme_mapping_eqnum_hw_read,
57 pme_to_ack_mapping_v_hw_read,
58 pme_to_ack_mapping_eqnum_hw_read
59 );
60
61//====================================================
62// Polarity declarations
63//====================================================
64input clk; // Clock signal
65input [`FIRE_CSRBUS_ADDR_WIDTH-1:0] csrbus_addr; // Address bus
66input [`FIRE_CSRBUS_DATA_WIDTH-1:0] csrbus_wr_data; // SW write data
67input csrbus_wr; // Read/Write signal
68input csrbus_valid; // Valid address
69output csrbus_mapped; // Address is mapped
70output csrbus_done; // Operation is done
71output [`FIRE_CSRBUS_DATA_WIDTH-1:0] csrbus_read_data; // SW read data bus
72input rst_l; // Reset signal
73input [1:0] csrbus_src_bus; // Source bus
74output csrbus_acc_vio; // Violation signal
75input instance_id; // Instance ID
76output err_cor_mapping_v_hw_read; // This signal provides the current value of
77 // err_cor_mapping_v.
78output [`FIRE_DLC_IMU_RDS_MESS_CSR_ERR_COR_MAPPING_EQNUM_INT_SLC] err_cor_mapping_eqnum_hw_read;
79 // This signal provides the current value of err_cor_mapping_eqnum.
80output err_nonfatal_mapping_v_hw_read; // This signal provides the current
81 // value of err_nonfatal_mapping_v.
82output [`FIRE_DLC_IMU_RDS_MESS_CSR_ERR_NONFATAL_MAPPING_EQNUM_INT_SLC] err_nonfatal_mapping_eqnum_hw_read;
83 // This signal provides the current value of err_nonfatal_mapping_eqnum.
84output err_fatal_mapping_v_hw_read; // This signal provides the current value
85 // of err_fatal_mapping_v.
86output [`FIRE_DLC_IMU_RDS_MESS_CSR_ERR_FATAL_MAPPING_EQNUM_INT_SLC] err_fatal_mapping_eqnum_hw_read;
87 // This signal provides the current value of err_fatal_mapping_eqnum.
88output pm_pme_mapping_v_hw_read; // This signal provides the current value of
89 // pm_pme_mapping_v.
90output [`FIRE_DLC_IMU_RDS_MESS_CSR_PM_PME_MAPPING_EQNUM_INT_SLC] pm_pme_mapping_eqnum_hw_read;
91 // This signal provides the current value of pm_pme_mapping_eqnum.
92output pme_to_ack_mapping_v_hw_read; // This signal provides the current value
93 // of pme_to_ack_mapping_v.
94output [`FIRE_DLC_IMU_RDS_MESS_CSR_PME_TO_ACK_MAPPING_EQNUM_INT_SLC] pme_to_ack_mapping_eqnum_hw_read;
95 // This signal provides the current value of pme_to_ack_mapping_eqnum.
96
97//====================================================
98// Type declarations
99//====================================================
100wire clk; // Clock signal
101wire [`FIRE_CSRBUS_ADDR_WIDTH-1:0] csrbus_addr; // Address bus
102wire [`FIRE_CSRBUS_DATA_WIDTH-1:0] csrbus_wr_data; // SW write data
103wire csrbus_wr; // Read/Write signal
104wire csrbus_valid; // Valid address
105wire csrbus_mapped; // Address is mapped
106wire csrbus_done; // Operation is done
107wire [`FIRE_CSRBUS_DATA_WIDTH-1:0] csrbus_read_data; // SW read data bus
108wire rst_l; // Reset signal
109wire [1:0] csrbus_src_bus; // Source bus
110wire csrbus_acc_vio; // Violation signal
111wire instance_id; // Instance ID
112wire err_cor_mapping_v_hw_read; // This signal provides the current value of
113 // err_cor_mapping_v.
114wire [`FIRE_DLC_IMU_RDS_MESS_CSR_ERR_COR_MAPPING_EQNUM_INT_SLC] err_cor_mapping_eqnum_hw_read;
115 // This signal provides the current value of err_cor_mapping_eqnum.
116wire err_nonfatal_mapping_v_hw_read; // This signal provides the current value
117 // of err_nonfatal_mapping_v.
118wire [`FIRE_DLC_IMU_RDS_MESS_CSR_ERR_NONFATAL_MAPPING_EQNUM_INT_SLC] err_nonfatal_mapping_eqnum_hw_read;
119 // This signal provides the current value of err_nonfatal_mapping_eqnum.
120wire err_fatal_mapping_v_hw_read; // This signal provides the current value of
121 // err_fatal_mapping_v.
122wire [`FIRE_DLC_IMU_RDS_MESS_CSR_ERR_FATAL_MAPPING_EQNUM_INT_SLC] err_fatal_mapping_eqnum_hw_read;
123 // This signal provides the current value of err_fatal_mapping_eqnum.
124wire pm_pme_mapping_v_hw_read; // This signal provides the current value of
125 // pm_pme_mapping_v.
126wire [`FIRE_DLC_IMU_RDS_MESS_CSR_PM_PME_MAPPING_EQNUM_INT_SLC] pm_pme_mapping_eqnum_hw_read;
127 // This signal provides the current value of pm_pme_mapping_eqnum.
128wire pme_to_ack_mapping_v_hw_read; // This signal provides the current value of
129 // pme_to_ack_mapping_v.
130wire [`FIRE_DLC_IMU_RDS_MESS_CSR_PME_TO_ACK_MAPPING_EQNUM_INT_SLC] pme_to_ack_mapping_eqnum_hw_read;
131 // This signal provides the current value of pme_to_ack_mapping_eqnum.
132
133//====================================================
134// Logic
135//====================================================
136wire daemon_transaction_in_progress;
137wire daemon_csrbus_mapped;
138wire daemon_csrbus_valid;
139// vlint flag_dangling_net_within_module off
140// vlint flag_net_has_no_load off
141wire [`FIRE_CSRBUS_DATA_WIDTH-1:0] daemon_csrbus_wr_data_tmp;
142wire [`FIRE_CSRBUS_DATA_WIDTH-1:0] daemon_csrbus_wr_data;
143// vlint flag_dangling_net_within_module on
144// vlint flag_net_has_no_load on
145wire daemon_csrbus_done;
146wire [`FIRE_CSRBUS_ADDR_WIDTH-1:0] daemon_csrbus_addr;
147wire daemon_csrbus_wr_tmp;
148wire daemon_csrbus_wr;
149
150//summit modcovoff -bepgnv
151pcie_dcm_daemon #(`FIRE_CSRBUS_ADDR_WIDTH,`FIRE_CSRBUS_DATA_WIDTH) pcie_dcm_daemon (
152 .daemon_csrbus_valid (daemon_csrbus_valid),
153 .daemon_csrbus_mapped (daemon_csrbus_mapped),
154 .daemon_csrbus_wr_data (daemon_csrbus_wr_data_tmp),
155 .daemon_csrbus_done (daemon_csrbus_done),
156 .daemon_csrbus_addr (daemon_csrbus_addr),
157 .daemon_csrbus_wr (daemon_csrbus_wr_tmp),
158 .daemon_transaction_in_progress (daemon_transaction_in_progress),
159// synopsys translate_off
160 .clk(clk),
161 .rst_l(rst_l),
162 .csrbus_read_data (csrbus_read_data),
163// synopsys translate_on
164 .csrbus_valid (csrbus_valid),
165 .csrbus_mapped (csrbus_mapped),
166 .csrbus_wr_data (csrbus_wr_data),
167 .csrbus_done (csrbus_done),
168 .csrbus_addr (csrbus_addr),
169 .csrbus_wr (csrbus_wr)
170 );
171//summit modcovon -bepgnv
172
173//====================================================================
174// Address decode
175//====================================================================
176wire err_cor_mapping_select_pulse;
177wire err_nonfatal_mapping_select_pulse;
178wire err_fatal_mapping_select_pulse;
179wire pm_pme_mapping_select_pulse;
180wire pme_to_ack_mapping_select_pulse;
181
182dmu_imu_rds_mess_addr_decode dmu_imu_rds_mess_addr_decode
183 (
184 .clk (clk),
185 .rst_l (rst_l),
186 .daemon_csrbus_valid (daemon_csrbus_valid),
187 .daemon_csrbus_addr (daemon_csrbus_addr),
188 .csrbus_src_bus (csrbus_src_bus),
189 .daemon_csrbus_wr (daemon_csrbus_wr_tmp),
190 .daemon_csrbus_wr_out (daemon_csrbus_wr),
191 .daemon_csrbus_wr_data (daemon_csrbus_wr_data_tmp),
192 .daemon_csrbus_wr_data_out (daemon_csrbus_wr_data),
193 .daemon_csrbus_mapped (daemon_csrbus_mapped),
194 .csrbus_acc_vio (csrbus_acc_vio),
195 .daemon_transaction_in_progress (daemon_transaction_in_progress),
196 .instance_id (instance_id),
197 .daemon_csrbus_done (daemon_csrbus_done),
198 .err_cor_mapping_select_pulse (err_cor_mapping_select_pulse),
199 .err_nonfatal_mapping_select_pulse (err_nonfatal_mapping_select_pulse),
200 .err_fatal_mapping_select_pulse (err_fatal_mapping_select_pulse),
201 .pm_pme_mapping_select_pulse (pm_pme_mapping_select_pulse),
202 .pme_to_ack_mapping_select_pulse (pme_to_ack_mapping_select_pulse)
203 );
204
205//====================================================================
206// OUTPUT: csrbus_read_data (pipelining)
207//====================================================================
208//----- connecting wires
209wire stage_mux_only_rst_l;
210wire stage_mux_only_daemon_csrbus_wr;
211wire [`FIRE_CSRBUS_DATA_WIDTH-1:0] stage_mux_only_daemon_csrbus_wr_data;
212
213//----- Stage: 1 / Grp: default_grp (5 inputs / 1 outputs)
214wire [`FIRE_CSRBUS_DATA_WIDTH-1:0] default_grp_read_data_0_out;
215wire default_grp_err_cor_mapping_select_pulse;
216wire default_grp_err_nonfatal_mapping_select_pulse;
217wire default_grp_err_fatal_mapping_select_pulse;
218wire default_grp_pm_pme_mapping_select_pulse;
219wire default_grp_pme_to_ack_mapping_select_pulse;
220
221dmu_imu_rds_mess_default_grp dmu_imu_rds_mess_default_grp
222 (
223 .clk (clk),
224 .err_cor_mapping_v_hw_read (err_cor_mapping_v_hw_read),
225 .err_cor_mapping_eqnum_hw_read (err_cor_mapping_eqnum_hw_read),
226 .err_cor_mapping_select_pulse (default_grp_err_cor_mapping_select_pulse),
227 .err_nonfatal_mapping_v_hw_read (err_nonfatal_mapping_v_hw_read),
228 .err_nonfatal_mapping_eqnum_hw_read (err_nonfatal_mapping_eqnum_hw_read),
229 .err_nonfatal_mapping_select_pulse (default_grp_err_nonfatal_mapping_select_pulse),
230 .err_fatal_mapping_v_hw_read (err_fatal_mapping_v_hw_read),
231 .err_fatal_mapping_eqnum_hw_read (err_fatal_mapping_eqnum_hw_read),
232 .err_fatal_mapping_select_pulse (default_grp_err_fatal_mapping_select_pulse),
233 .pm_pme_mapping_v_hw_read (pm_pme_mapping_v_hw_read),
234 .pm_pme_mapping_eqnum_hw_read (pm_pme_mapping_eqnum_hw_read),
235 .pm_pme_mapping_select_pulse (default_grp_pm_pme_mapping_select_pulse),
236 .pme_to_ack_mapping_v_hw_read (pme_to_ack_mapping_v_hw_read),
237 .pme_to_ack_mapping_eqnum_hw_read (pme_to_ack_mapping_eqnum_hw_read),
238 .pme_to_ack_mapping_select_pulse (default_grp_pme_to_ack_mapping_select_pulse),
239 .rst_l (stage_mux_only_rst_l),
240 .daemon_csrbus_wr_in (stage_mux_only_daemon_csrbus_wr),
241 .daemon_csrbus_wr_data_in (stage_mux_only_daemon_csrbus_wr_data),
242 .read_data_0_out (default_grp_read_data_0_out)
243 );
244
245//----- Stage: 2 / Grp: stage_mux_only (1 inputs / 1 outputs) (Mux only)
246wire [`FIRE_CSRBUS_DATA_WIDTH-1:0] stage_mux_only_read_data_0_out;
247
248dmu_imu_rds_mess_stage_mux_only dmu_imu_rds_mess_stage_mux_only
249 (
250 .clk (clk),
251 .read_data_0 (default_grp_read_data_0_out),
252 .err_cor_mapping_select_pulse (err_cor_mapping_select_pulse),
253 .err_cor_mapping_select_pulse_out (default_grp_err_cor_mapping_select_pulse),
254 .err_nonfatal_mapping_select_pulse (err_nonfatal_mapping_select_pulse),
255 .err_nonfatal_mapping_select_pulse_out (default_grp_err_nonfatal_mapping_select_pulse),
256 .err_fatal_mapping_select_pulse (err_fatal_mapping_select_pulse),
257 .err_fatal_mapping_select_pulse_out (default_grp_err_fatal_mapping_select_pulse),
258 .pm_pme_mapping_select_pulse (pm_pme_mapping_select_pulse),
259 .pm_pme_mapping_select_pulse_out (default_grp_pm_pme_mapping_select_pulse),
260 .pme_to_ack_mapping_select_pulse (pme_to_ack_mapping_select_pulse),
261 .pme_to_ack_mapping_select_pulse_out (default_grp_pme_to_ack_mapping_select_pulse),
262 .daemon_csrbus_wr_in (daemon_csrbus_wr),
263 .daemon_csrbus_wr_out (stage_mux_only_daemon_csrbus_wr),
264 .daemon_csrbus_wr_data_in (daemon_csrbus_wr_data),
265 .daemon_csrbus_wr_data_out (stage_mux_only_daemon_csrbus_wr_data),
266 .read_data_0_out (stage_mux_only_read_data_0_out),
267 .rst_l (rst_l),
268 .rst_l_out (stage_mux_only_rst_l)
269 );
270
271//----- OUTPUT: csrbus_read_data
272assign csrbus_read_data = stage_mux_only_read_data_0_out;
273
274endmodule // dmu_imu_rds_mess_csr