Commit | Line | Data |
---|---|---|
86530b38 AT |
1 | // ========== Copyright Header Begin ========================================== |
2 | // | |
3 | // OpenSPARC T2 Processor File: niu_tdmc_dmaregs.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 | ||
36 | /********************************************************************* | |
37 | * | |
38 | * NIU TDMC - PIO Interface and Control regs for 4 DMAs | |
39 | * | |
40 | * Orignal Author(s): Arvind Srinivasan | |
41 | * Modifier(s): | |
42 | * Project(s): Neptune | |
43 | * | |
44 | * Copyright (c) 2004 Sun Microsystems, Inc. | |
45 | * | |
46 | * All Rights Reserved. | |
47 | * | |
48 | * This verilog model is the confidential and proprietary property of | |
49 | * Sun Microsystems, Inc., and the possession or use of this model | |
50 | * requires a written license from Sun Microsystems, Inc. | |
51 | * | |
52 | **********************************************************************/ | |
53 | ||
54 | `include "niu_dmc_reg_defines.h" | |
55 | `include "txc_defines.h" | |
56 | ||
57 | ||
58 | ||
59 | module niu_tdmc_dmaregs(/*AUTOARG*/ | |
60 | // Outputs | |
61 | tx_dma_cfg_dma0_stop, page0_mask_dma0, page0_value_dma0, | |
62 | page0_reloc_dma0, page0_valid_dma0, page1_mask_dma0, | |
63 | page1_value_dma0, page1_reloc_dma0, page1_valid_dma0, | |
64 | dmc_txc_dma0_page_handle, dmc_txc_dma0_func_num, | |
65 | tx_rng_cfg_dma0_len, tx_rng_cfg_dma0_staddr, tx_rng_tail_dma0, | |
66 | tx_dma_cfg_dma0_rst, tx_dma_cfg_dma0_stall, | |
67 | tx_dma_cfg_dma0_mbaddr, tx_cfg_dma0_enable_mb, tx_cfg_dma0_mk, | |
68 | tx_cfg_dma0_mmk, tx_cs_dma0, tx_dma0_pre_st, tx_dma0_rng_err_logh, | |
69 | tx_dma0_rng_err_logl, tx_dma_cfg_dma1_stop, page0_mask_dma1, | |
70 | page0_value_dma1, page0_reloc_dma1, page0_valid_dma1, | |
71 | page1_mask_dma1, page1_value_dma1, page1_reloc_dma1, | |
72 | page1_valid_dma1, dmc_txc_dma1_page_handle, dmc_txc_dma1_func_num, | |
73 | tx_rng_cfg_dma1_len, tx_rng_cfg_dma1_staddr, tx_rng_tail_dma1, | |
74 | tx_dma_cfg_dma1_rst, tx_dma_cfg_dma1_stall, | |
75 | tx_dma_cfg_dma1_mbaddr, tx_cfg_dma1_enable_mb, tx_cfg_dma1_mk, | |
76 | tx_cfg_dma1_mmk, tx_cs_dma1, tx_dma1_pre_st, tx_dma1_rng_err_logh, | |
77 | tx_dma1_rng_err_logl, tx_dma_cfg_dma2_stop, page0_mask_dma2, | |
78 | page0_value_dma2, page0_reloc_dma2, page0_valid_dma2, | |
79 | page1_mask_dma2, page1_value_dma2, page1_reloc_dma2, | |
80 | page1_valid_dma2, dmc_txc_dma2_page_handle, dmc_txc_dma2_func_num, | |
81 | tx_rng_cfg_dma2_len, tx_rng_cfg_dma2_staddr, tx_rng_tail_dma2, | |
82 | tx_dma_cfg_dma2_rst, tx_dma_cfg_dma2_stall, | |
83 | tx_dma_cfg_dma2_mbaddr, tx_cfg_dma2_enable_mb, tx_cfg_dma2_mk, | |
84 | tx_cfg_dma2_mmk, tx_cs_dma2, tx_dma2_pre_st, tx_dma2_rng_err_logh, | |
85 | tx_dma2_rng_err_logl, tx_dma_cfg_dma3_stop, page0_mask_dma3, | |
86 | page0_value_dma3, page0_reloc_dma3, page0_valid_dma3, | |
87 | page1_mask_dma3, page1_value_dma3, page1_reloc_dma3, | |
88 | page1_valid_dma3, dmc_txc_dma3_page_handle, dmc_txc_dma3_func_num, | |
89 | tx_rng_cfg_dma3_len, tx_rng_cfg_dma3_staddr, tx_rng_tail_dma3, | |
90 | tx_dma_cfg_dma3_rst, tx_dma_cfg_dma3_stall, | |
91 | tx_dma_cfg_dma3_mbaddr, tx_cfg_dma3_enable_mb, tx_cfg_dma3_mk, | |
92 | tx_cfg_dma3_mmk, tx_cs_dma3, tx_dma3_pre_st, tx_dma3_rng_err_logh, | |
93 | tx_dma3_rng_err_logl, dma_0_3_sl_data, read_decode_invalid_dma0_3, | |
94 | intr_ldf0_dma0, intr_ldf1_dma0, intr_ldf0_dma1, intr_ldf1_dma1, | |
95 | intr_ldf0_dma2, intr_ldf1_dma2, intr_ldf0_dma3, intr_ldf1_dma3, | |
96 | dmc_txc_dma0_error, dmc_txc_dma1_error, dmc_txc_dma2_error, | |
97 | dmc_txc_dma3_error, | |
98 | // Inputs | |
99 | SysClk, Reset_L, Slave_Read, Slave_Sel, Slave_Addr, Slave_DataIn, | |
100 | slaveStrobe, pio_clients_32b, write_DMA0_Register, | |
101 | write_DMA1_Register, write_DMA2_Register, write_DMA3_Register, | |
102 | write_FZC_DMA0_Register, write_FZC_DMA1_Register, | |
103 | write_FZC_DMA2_Register, write_FZC_DMA3_Register, | |
104 | read_DMA_0_3_Regsister, tx_rng_head_dma0, dma0_clear_reset, | |
105 | set_cfg_dma0_mmk, clear_cfg_dma0_mb, tx_dma_cfg_dma0_stop_state, | |
106 | tx_rng_head_dma1, dma1_clear_reset, set_cfg_dma1_mmk, | |
107 | clear_cfg_dma1_mb, tx_dma_cfg_dma1_stop_state, tx_rng_head_dma2, | |
108 | dma2_clear_reset, set_cfg_dma2_mmk, clear_cfg_dma2_mb, | |
109 | tx_dma_cfg_dma2_stop_state, tx_rng_head_dma3, dma3_clear_reset, | |
110 | set_cfg_dma3_mmk, clear_cfg_dma3_mb, tx_dma_cfg_dma3_stop_state, | |
111 | txc_dmc_dma0_inc_pkt_cnt, txc_dmc_dma1_inc_pkt_cnt, | |
112 | txc_dmc_dma2_inc_pkt_cnt, txc_dmc_dma3_inc_pkt_cnt, | |
113 | txc_dmc_dma0_mark_bit, txc_dmc_dma1_mark_bit, | |
114 | txc_dmc_dma2_mark_bit, txc_dmc_dma3_mark_bit, | |
115 | set_pref_buf_par_err_dma0, set_pkt_part_err_dma0, | |
116 | pkt_part_error_address_dma0, set_conf_part_error_dma0, | |
117 | set_tx_ring_oflow_dma0, set_mbox_part_error_dma0, | |
118 | txc_dmc_p0_dma0_pkt_size_err, txc_dmc_dma0_nack_pkt_rd, | |
119 | txc_dmc_p1_dma0_pkt_size_err, txc_dmc_p2_dma0_pkt_size_err, | |
120 | txc_dmc_p3_dma0_pkt_size_err, set_pref_buf_par_err_dma1, | |
121 | set_pkt_part_err_dma1, pkt_part_error_address_dma1, | |
122 | set_conf_part_error_dma1, set_tx_ring_oflow_dma1, | |
123 | set_mbox_part_error_dma1, txc_dmc_p0_dma1_pkt_size_err, | |
124 | txc_dmc_dma1_nack_pkt_rd, txc_dmc_p1_dma1_pkt_size_err, | |
125 | txc_dmc_p2_dma1_pkt_size_err, txc_dmc_p3_dma1_pkt_size_err, | |
126 | set_pref_buf_par_err_dma2, set_pkt_part_err_dma2, | |
127 | pkt_part_error_address_dma2, set_conf_part_error_dma2, | |
128 | set_tx_ring_oflow_dma2, set_mbox_part_error_dma2, | |
129 | txc_dmc_p0_dma2_pkt_size_err, txc_dmc_dma2_nack_pkt_rd, | |
130 | txc_dmc_p1_dma2_pkt_size_err, txc_dmc_p2_dma2_pkt_size_err, | |
131 | txc_dmc_p3_dma2_pkt_size_err, set_pref_buf_par_err_dma3, | |
132 | set_pkt_part_err_dma3, pkt_part_error_address_dma3, | |
133 | set_conf_part_error_dma3, set_tx_ring_oflow_dma3, | |
134 | set_mbox_part_error_dma3, txc_dmc_p0_dma3_pkt_size_err, | |
135 | txc_dmc_dma3_nack_pkt_rd, txc_dmc_p1_dma3_pkt_size_err, | |
136 | txc_dmc_p2_dma3_pkt_size_err, txc_dmc_p3_dma3_pkt_size_err, | |
137 | txc_dmc_nack_pkt_rd_addr, txc_dmc_p0_pkt_size_err_addr, | |
138 | txc_dmc_p0_pkt_size_err, txc_dmc_nack_pkt_rd, | |
139 | txc_dmc_p1_pkt_size_err_addr, txc_dmc_p1_pkt_size_err, | |
140 | txc_dmc_p2_pkt_size_err_addr, txc_dmc_p2_pkt_size_err, | |
141 | txc_dmc_p3_pkt_size_err_addr, txc_dmc_p3_pkt_size_err, | |
142 | txpref_dma0_nack_resp, txpref_dma1_nack_resp, | |
143 | txpref_dma2_nack_resp, txpref_dma3_nack_resp, txpref_nack_resp, | |
144 | txpref_nack_rd_addr, mbox_ack_dma0_err_received, | |
145 | mbox_ack_dma1_err_received, mbox_ack_dma2_err_received, | |
146 | mbox_ack_dma3_err_received, mbox_err_received, | |
147 | ShadowRingCurrentPtr_DMA0, ShadowRingCurrentPtr_DMA1, | |
148 | ShadowRingCurrentPtr_DMA2, ShadowRingCurrentPtr_DMA3, | |
149 | set_cfg_dma0_mk, set_cfg_dma1_mk, set_cfg_dma2_mk, | |
150 | set_cfg_dma3_mk); | |
151 | ||
152 | ||
153 | // Global Signals | |
154 | input SysClk; | |
155 | input Reset_L; | |
156 | ||
157 | ||
158 | // Slave Interface | |
159 | input Slave_Read; | |
160 | input Slave_Sel; | |
161 | input [19:0] Slave_Addr; | |
162 | input [63:0] Slave_DataIn; | |
163 | input slaveStrobe; | |
164 | input pio_clients_32b; | |
165 | ||
166 | // Decode signals | |
167 | input write_DMA0_Register; | |
168 | input write_DMA1_Register; | |
169 | input write_DMA2_Register; | |
170 | input write_DMA3_Register; | |
171 | input write_FZC_DMA0_Register ; | |
172 | input write_FZC_DMA1_Register ; | |
173 | input write_FZC_DMA2_Register ; | |
174 | input write_FZC_DMA3_Register ; | |
175 | input [7:0] read_DMA_0_3_Regsister; | |
176 | ||
177 | ||
178 | // pios registers related signals | |
179 | ||
180 | input [`PTR_WIDTH:0] tx_rng_head_dma0 ; | |
181 | input dma0_clear_reset; | |
182 | input set_cfg_dma0_mmk; // from mailbox | |
183 | input clear_cfg_dma0_mb; // from mailbox | |
184 | input tx_dma_cfg_dma0_stop_state; | |
185 | output tx_dma_cfg_dma0_stop; | |
186 | output [31:0] page0_mask_dma0; | |
187 | output [31:0] page0_value_dma0; | |
188 | output [31:0] page0_reloc_dma0; | |
189 | output page0_valid_dma0; | |
190 | output [31:0] page1_mask_dma0; | |
191 | output [31:0] page1_value_dma0; | |
192 | output [31:0] page1_reloc_dma0; | |
193 | output page1_valid_dma0; | |
194 | output [19:0] dmc_txc_dma0_page_handle; | |
195 | output [1:0] dmc_txc_dma0_func_num; | |
196 | ||
197 | output [`RNG_LENGTH_WIDTH - 1:0] tx_rng_cfg_dma0_len; | |
198 | output [37:0] tx_rng_cfg_dma0_staddr; | |
199 | output [`PTR_WIDTH:0] tx_rng_tail_dma0 ; | |
200 | output tx_dma_cfg_dma0_rst; | |
201 | output tx_dma_cfg_dma0_stall; | |
202 | output [37:0] tx_dma_cfg_dma0_mbaddr ; | |
203 | output tx_cfg_dma0_enable_mb; // to mailbox | |
204 | output tx_cfg_dma0_mk; // to mailbox | |
205 | output tx_cfg_dma0_mmk; // to mailbox | |
206 | output [63:0] tx_cs_dma0; // to mailbox | |
207 | output [63:0] tx_dma0_pre_st; // to mailbox | |
208 | output [63:0] tx_dma0_rng_err_logh; // to mailbox | |
209 | output [63:0] tx_dma0_rng_err_logl; // to mailbox | |
210 | ||
211 | input [`PTR_WIDTH:0] tx_rng_head_dma1 ; | |
212 | input dma1_clear_reset; | |
213 | input set_cfg_dma1_mmk; // from mailbox | |
214 | input clear_cfg_dma1_mb; // from mailbox | |
215 | ||
216 | ||
217 | input tx_dma_cfg_dma1_stop_state; | |
218 | output tx_dma_cfg_dma1_stop; | |
219 | output [31:0] page0_mask_dma1; | |
220 | output [31:0] page0_value_dma1; | |
221 | output [31:0] page0_reloc_dma1; | |
222 | output page0_valid_dma1; | |
223 | output [31:0] page1_mask_dma1; | |
224 | output [31:0] page1_value_dma1; | |
225 | output [31:0] page1_reloc_dma1; | |
226 | output page1_valid_dma1; | |
227 | output [19:0] dmc_txc_dma1_page_handle; | |
228 | output [1:0] dmc_txc_dma1_func_num; | |
229 | ||
230 | output [`RNG_LENGTH_WIDTH - 1:0] tx_rng_cfg_dma1_len; | |
231 | output [37:0] tx_rng_cfg_dma1_staddr; | |
232 | output [`PTR_WIDTH:0] tx_rng_tail_dma1 ; | |
233 | output tx_dma_cfg_dma1_rst; | |
234 | output tx_dma_cfg_dma1_stall; | |
235 | output [37:0] tx_dma_cfg_dma1_mbaddr ; | |
236 | output tx_cfg_dma1_enable_mb; // to mailbox | |
237 | output tx_cfg_dma1_mk; // to mailbox | |
238 | output tx_cfg_dma1_mmk; // to mailbox | |
239 | output [63:0] tx_cs_dma1; // to mailbox | |
240 | output [63:0] tx_dma1_pre_st; // to mailbox | |
241 | output [63:0] tx_dma1_rng_err_logh; // to mailbox | |
242 | output [63:0] tx_dma1_rng_err_logl; // to mailbox | |
243 | ||
244 | input [`PTR_WIDTH:0] tx_rng_head_dma2 ; | |
245 | input dma2_clear_reset; | |
246 | input set_cfg_dma2_mmk; // from mailbox | |
247 | input clear_cfg_dma2_mb; // from mailbox | |
248 | ||
249 | ||
250 | input tx_dma_cfg_dma2_stop_state; | |
251 | output tx_dma_cfg_dma2_stop; | |
252 | output [31:0] page0_mask_dma2; | |
253 | output [31:0] page0_value_dma2; | |
254 | output [31:0] page0_reloc_dma2; | |
255 | output page0_valid_dma2; | |
256 | output [31:0] page1_mask_dma2; | |
257 | output [31:0] page1_value_dma2; | |
258 | output [31:0] page1_reloc_dma2; | |
259 | output page1_valid_dma2; | |
260 | output [19:0] dmc_txc_dma2_page_handle; | |
261 | output [1:0] dmc_txc_dma2_func_num; | |
262 | ||
263 | output [`RNG_LENGTH_WIDTH - 1:0] tx_rng_cfg_dma2_len; | |
264 | output [37:0] tx_rng_cfg_dma2_staddr; | |
265 | output [`PTR_WIDTH:0] tx_rng_tail_dma2 ; | |
266 | output tx_dma_cfg_dma2_rst; | |
267 | output tx_dma_cfg_dma2_stall; | |
268 | output [37:0] tx_dma_cfg_dma2_mbaddr ; | |
269 | output tx_cfg_dma2_enable_mb; // to mailbox | |
270 | output tx_cfg_dma2_mk; // to mailbox | |
271 | output tx_cfg_dma2_mmk; // to mailbox | |
272 | output [63:0] tx_cs_dma2; // to mailbox | |
273 | output [63:0] tx_dma2_pre_st; // to mailbox | |
274 | output [63:0] tx_dma2_rng_err_logh; // to mailbox | |
275 | output [63:0] tx_dma2_rng_err_logl; // to mailbox | |
276 | ||
277 | input [`PTR_WIDTH:0] tx_rng_head_dma3 ; | |
278 | input dma3_clear_reset; | |
279 | input set_cfg_dma3_mmk; // from mailbox | |
280 | input clear_cfg_dma3_mb; // from mailbox | |
281 | ||
282 | ||
283 | input tx_dma_cfg_dma3_stop_state; | |
284 | output tx_dma_cfg_dma3_stop; | |
285 | output [31:0] page0_mask_dma3; | |
286 | output [31:0] page0_value_dma3; | |
287 | output [31:0] page0_reloc_dma3; | |
288 | output page0_valid_dma3; | |
289 | output [31:0] page1_mask_dma3; | |
290 | output [31:0] page1_value_dma3; | |
291 | output [31:0] page1_reloc_dma3; | |
292 | output page1_valid_dma3; | |
293 | output [19:0] dmc_txc_dma3_page_handle; | |
294 | output [1:0] dmc_txc_dma3_func_num; | |
295 | ||
296 | output [`RNG_LENGTH_WIDTH - 1:0] tx_rng_cfg_dma3_len; | |
297 | output [37:0] tx_rng_cfg_dma3_staddr; | |
298 | output [`PTR_WIDTH:0] tx_rng_tail_dma3 ; | |
299 | output tx_dma_cfg_dma3_rst; | |
300 | output tx_dma_cfg_dma3_stall; | |
301 | output [37:0] tx_dma_cfg_dma3_mbaddr ; | |
302 | output tx_cfg_dma3_enable_mb; // to mailbox | |
303 | output tx_cfg_dma3_mk; // to mailbox | |
304 | output tx_cfg_dma3_mmk; // to mailbox | |
305 | output [63:0] tx_cs_dma3; // to mailbox | |
306 | output [63:0] tx_dma3_pre_st; // to mailbox | |
307 | output [63:0] tx_dma3_rng_err_logh; // to mailbox | |
308 | output [63:0] tx_dma3_rng_err_logl; // to mailbox | |
309 | output [63:0] dma_0_3_sl_data; | |
310 | output read_decode_invalid_dma0_3; | |
311 | ||
312 | ||
313 | input txc_dmc_dma0_inc_pkt_cnt; | |
314 | input txc_dmc_dma1_inc_pkt_cnt; | |
315 | input txc_dmc_dma2_inc_pkt_cnt; | |
316 | input txc_dmc_dma3_inc_pkt_cnt; | |
317 | ||
318 | input txc_dmc_dma0_mark_bit; | |
319 | input txc_dmc_dma1_mark_bit; | |
320 | input txc_dmc_dma2_mark_bit; | |
321 | input txc_dmc_dma3_mark_bit; | |
322 | ||
323 | ||
324 | ||
325 | // Error Related signals | |
326 | ||
327 | input set_pref_buf_par_err_dma0; | |
328 | input set_pkt_part_err_dma0; | |
329 | input [43:0] pkt_part_error_address_dma0; | |
330 | input set_conf_part_error_dma0; | |
331 | input set_tx_ring_oflow_dma0; | |
332 | input set_mbox_part_error_dma0; | |
333 | ||
334 | ||
335 | input txc_dmc_p0_dma0_pkt_size_err; // one-hot encoded | |
336 | input txc_dmc_dma0_nack_pkt_rd; | |
337 | ||
338 | input txc_dmc_p1_dma0_pkt_size_err; // one-hot encoded | |
339 | ||
340 | input txc_dmc_p2_dma0_pkt_size_err; // one-hot encoded | |
341 | ||
342 | input txc_dmc_p3_dma0_pkt_size_err; // one-hot encoded | |
343 | ||
344 | ||
345 | input set_pref_buf_par_err_dma1; | |
346 | input set_pkt_part_err_dma1; | |
347 | input [43:0] pkt_part_error_address_dma1; | |
348 | input set_conf_part_error_dma1; | |
349 | input set_tx_ring_oflow_dma1; | |
350 | input set_mbox_part_error_dma1; | |
351 | ||
352 | input txc_dmc_p0_dma1_pkt_size_err; // one-hot encoded | |
353 | input txc_dmc_dma1_nack_pkt_rd; | |
354 | ||
355 | input txc_dmc_p1_dma1_pkt_size_err; // one-hot encoded | |
356 | ||
357 | input txc_dmc_p2_dma1_pkt_size_err; // one-hot encoded | |
358 | ||
359 | input txc_dmc_p3_dma1_pkt_size_err; // one-hot encoded | |
360 | ||
361 | input set_pref_buf_par_err_dma2; | |
362 | input set_pkt_part_err_dma2; | |
363 | input [43:0] pkt_part_error_address_dma2; | |
364 | input set_conf_part_error_dma2; | |
365 | input set_tx_ring_oflow_dma2; | |
366 | input set_mbox_part_error_dma2; | |
367 | ||
368 | input txc_dmc_p0_dma2_pkt_size_err; // one-hot encoded | |
369 | input txc_dmc_dma2_nack_pkt_rd; | |
370 | ||
371 | input txc_dmc_p1_dma2_pkt_size_err; // one-hot encoded | |
372 | ||
373 | input txc_dmc_p2_dma2_pkt_size_err; // one-hot encoded | |
374 | ||
375 | input txc_dmc_p3_dma2_pkt_size_err; // one-hot encoded | |
376 | ||
377 | ||
378 | ||
379 | ||
380 | ||
381 | input set_pref_buf_par_err_dma3; | |
382 | input set_pkt_part_err_dma3; | |
383 | input [43:0] pkt_part_error_address_dma3; | |
384 | input set_conf_part_error_dma3; | |
385 | input set_tx_ring_oflow_dma3; | |
386 | input set_mbox_part_error_dma3; | |
387 | ||
388 | input txc_dmc_p0_dma3_pkt_size_err; // one-hot encoded | |
389 | input txc_dmc_dma3_nack_pkt_rd; | |
390 | ||
391 | input txc_dmc_p1_dma3_pkt_size_err; // one-hot encoded | |
392 | ||
393 | input txc_dmc_p2_dma3_pkt_size_err; // one-hot encoded | |
394 | ||
395 | input txc_dmc_p3_dma3_pkt_size_err; // one-hot encoded | |
396 | ||
397 | ||
398 | ||
399 | ||
400 | input [43:0] txc_dmc_nack_pkt_rd_addr; | |
401 | input [43:0] txc_dmc_p0_pkt_size_err_addr; | |
402 | input txc_dmc_p0_pkt_size_err; // pulse to indicate error | |
403 | input txc_dmc_nack_pkt_rd; // pulse to indicate error | |
404 | ||
405 | input [43:0] txc_dmc_p1_pkt_size_err_addr; | |
406 | input txc_dmc_p1_pkt_size_err; // pulse to indicate error | |
407 | ||
408 | input [43:0] txc_dmc_p2_pkt_size_err_addr; | |
409 | input txc_dmc_p2_pkt_size_err; // pulse to indicate error | |
410 | ||
411 | input [43:0] txc_dmc_p3_pkt_size_err_addr; | |
412 | input txc_dmc_p3_pkt_size_err; // pulse to indicate error | |
413 | ||
414 | // timeout indication from cache fetch engine | |
415 | input txpref_dma0_nack_resp; | |
416 | input txpref_dma1_nack_resp; | |
417 | input txpref_dma2_nack_resp; | |
418 | input txpref_dma3_nack_resp; | |
419 | input txpref_nack_resp; | |
420 | input [43:0] txpref_nack_rd_addr; | |
421 | ||
422 | ||
423 | // mbox Error | |
424 | input mbox_ack_dma0_err_received; | |
425 | input mbox_ack_dma1_err_received; | |
426 | input mbox_ack_dma2_err_received; | |
427 | input mbox_ack_dma3_err_received; | |
428 | input mbox_err_received; | |
429 | ||
430 | // input from dma context block for shodow tail pointer | |
431 | input [`PTR_WIDTH -1 :0] ShadowRingCurrentPtr_DMA0; | |
432 | input [`PTR_WIDTH -1 :0] ShadowRingCurrentPtr_DMA1; | |
433 | input [`PTR_WIDTH -1 :0] ShadowRingCurrentPtr_DMA2; | |
434 | input [`PTR_WIDTH -1 :0] ShadowRingCurrentPtr_DMA3; | |
435 | ||
436 | // interrupt signals | |
437 | // 2bits per dma | |
438 | output intr_ldf0_dma0; | |
439 | output intr_ldf1_dma0; | |
440 | ||
441 | output intr_ldf0_dma1; | |
442 | output intr_ldf1_dma1; | |
443 | ||
444 | output intr_ldf0_dma2; | |
445 | output intr_ldf1_dma2; | |
446 | ||
447 | output intr_ldf0_dma3; | |
448 | output intr_ldf1_dma3; | |
449 | ||
450 | input set_cfg_dma0_mk; | |
451 | input set_cfg_dma1_mk; | |
452 | input set_cfg_dma2_mk; | |
453 | input set_cfg_dma3_mk; | |
454 | ||
455 | ||
456 | output dmc_txc_dma0_error ; | |
457 | output dmc_txc_dma1_error ; | |
458 | output dmc_txc_dma2_error ; | |
459 | output dmc_txc_dma3_error ; | |
460 | ||
461 | ||
462 | ||
463 | // | |
464 | /*--------------------------------------------------------------*/ | |
465 | // Wires & Registers | |
466 | /*--------------------------------------------------------------*/ | |
467 | reg [31:0] page0_mask_dma0; | |
468 | reg [31:0] page0_value_dma0; | |
469 | reg [31:0] page0_reloc_dma0; | |
470 | reg page0_valid_dma0; | |
471 | reg [31:0] page1_mask_dma0; | |
472 | reg [31:0] page1_value_dma0; | |
473 | reg [31:0] page1_reloc_dma0; | |
474 | reg page1_valid_dma0; | |
475 | reg [19:0] dmc_txc_dma0_page_handle; | |
476 | reg [1:0] dmc_txc_dma0_func_num; | |
477 | ||
478 | reg [`RNG_LENGTH_WIDTH - 1:0] tx_rng_cfg_dma0_len; | |
479 | reg [37:0] tx_rng_cfg_dma0_staddr; | |
480 | reg [`PTR_WIDTH:0] tx_rng_tail_dma0 ; | |
481 | reg tx_dma_cfg_dma0_rst; | |
482 | reg tx_dma_cfg_dma0_stall; | |
483 | reg [37:0] tx_dma_cfg_dma0_mbaddr ; | |
484 | reg tx_cfg_dma0_enable_mb; // to mailbox | |
485 | reg tx_cfg_dma0_mk; // to mailbox | |
486 | reg tx_cfg_dma0_mmk; // to mailbox | |
487 | ||
488 | wire [63:0] tx_cs_dma0; // to mailbox | |
489 | wire [63:0] tx_dma0_pre_st; // to mailbox | |
490 | wire [63:0] tx_dma0_rng_err_logh; // to mailbox | |
491 | wire [63:0] tx_dma0_rng_err_logl; // to mailbox | |
492 | wire [7:0] tx_cs_dma0_err; | |
493 | ||
494 | ||
495 | reg [31:0] page0_mask_dma1; | |
496 | reg [31:0] page0_value_dma1; | |
497 | reg [31:0] page0_reloc_dma1; | |
498 | reg page0_valid_dma1; | |
499 | reg [31:0] page1_mask_dma1; | |
500 | reg [31:0] page1_value_dma1; | |
501 | reg [31:0] page1_reloc_dma1; | |
502 | reg page1_valid_dma1; | |
503 | reg [19:0] dmc_txc_dma1_page_handle; | |
504 | reg [1:0] dmc_txc_dma1_func_num; | |
505 | ||
506 | reg [`RNG_LENGTH_WIDTH - 1:0] tx_rng_cfg_dma1_len; | |
507 | reg [37:0] tx_rng_cfg_dma1_staddr; | |
508 | reg [`PTR_WIDTH:0] tx_rng_tail_dma1 ; | |
509 | reg tx_dma_cfg_dma1_rst; | |
510 | reg tx_dma_cfg_dma1_stall; | |
511 | reg [37:0] tx_dma_cfg_dma1_mbaddr ; | |
512 | reg tx_cfg_dma1_enable_mb; // to mailbox | |
513 | reg tx_cfg_dma1_mk; // to mailbox | |
514 | reg tx_cfg_dma1_mmk; // to mailbox | |
515 | ||
516 | wire [63:0] tx_cs_dma1; // to mailbox | |
517 | wire [63:0] tx_dma1_pre_st; // to mailbox | |
518 | wire [63:0] tx_dma1_rng_err_logh; // to mailbox | |
519 | wire [63:0] tx_dma1_rng_err_logl; // to mailbox | |
520 | wire [7:0] tx_cs_dma1_err; | |
521 | ||
522 | reg [31:0] page0_mask_dma2; | |
523 | reg [31:0] page0_value_dma2; | |
524 | reg [31:0] page0_reloc_dma2; | |
525 | reg page0_valid_dma2; | |
526 | reg [31:0] page1_mask_dma2; | |
527 | reg [31:0] page1_value_dma2; | |
528 | reg [31:0] page1_reloc_dma2; | |
529 | reg page1_valid_dma2; | |
530 | reg [19:0] dmc_txc_dma2_page_handle; | |
531 | reg [1:0] dmc_txc_dma2_func_num; | |
532 | ||
533 | reg [`RNG_LENGTH_WIDTH - 1:0] tx_rng_cfg_dma2_len; | |
534 | reg [37:0] tx_rng_cfg_dma2_staddr; | |
535 | reg [`PTR_WIDTH:0] tx_rng_tail_dma2 ; | |
536 | reg tx_dma_cfg_dma2_rst; | |
537 | reg tx_dma_cfg_dma2_stall; | |
538 | reg [37:0] tx_dma_cfg_dma2_mbaddr ; | |
539 | reg tx_cfg_dma2_enable_mb; // to mailbox | |
540 | reg tx_cfg_dma2_mk; // to mailbox | |
541 | reg tx_cfg_dma2_mmk; // to mailbox | |
542 | ||
543 | wire [63:0] tx_cs_dma2; // to mailbox | |
544 | wire [63:0] tx_dma2_pre_st; // to mailbox | |
545 | wire [63:0] tx_dma2_rng_err_logh; // to mailbox | |
546 | wire [63:0] tx_dma2_rng_err_logl; // to mailbox | |
547 | wire [7:0] tx_cs_dma2_err; | |
548 | ||
549 | ||
550 | reg [31:0] page0_mask_dma3; | |
551 | reg [31:0] page0_value_dma3; | |
552 | reg [31:0] page0_reloc_dma3; | |
553 | reg page0_valid_dma3; | |
554 | reg [31:0] page1_mask_dma3; | |
555 | reg [31:0] page1_value_dma3; | |
556 | reg [31:0] page1_reloc_dma3; | |
557 | reg page1_valid_dma3; | |
558 | reg [19:0] dmc_txc_dma3_page_handle; | |
559 | reg [1:0] dmc_txc_dma3_func_num; | |
560 | ||
561 | reg [`RNG_LENGTH_WIDTH - 1:0] tx_rng_cfg_dma3_len; | |
562 | reg [37:0] tx_rng_cfg_dma3_staddr; | |
563 | reg [`PTR_WIDTH:0] tx_rng_tail_dma3 ; | |
564 | reg tx_dma_cfg_dma3_rst; | |
565 | reg tx_dma_cfg_dma3_stall; | |
566 | reg [37:0] tx_dma_cfg_dma3_mbaddr ; | |
567 | reg tx_cfg_dma3_enable_mb; // to mailbox | |
568 | reg tx_cfg_dma3_mk; // to mailbox | |
569 | reg tx_cfg_dma3_mmk; // to mailbox | |
570 | ||
571 | wire [63:0] tx_cs_dma3; // to mailbox | |
572 | wire [63:0] tx_dma3_pre_st; // to mailbox | |
573 | wire [63:0] tx_dma3_rng_err_logh; // to mailbox | |
574 | wire [63:0] tx_dma3_rng_err_logl; // to mailbox | |
575 | wire [7:0] tx_cs_dma3_err; | |
576 | ||
577 | ||
578 | reg [63:0] dma_0_3_sl_data; | |
579 | reg [31:0] dma_0_3_sl_data_fzc; | |
580 | ||
581 | reg [31:0] dma_0_3_sl_data_h; | |
582 | reg [31:0] dma_0_3_sl_data_l; | |
583 | ||
584 | reg read_decode_invalid_dma0_3; | |
585 | ||
586 | `ifdef NEPTUNE | |
587 | reg tx_rng_cfg_dma0_shadow_written; | |
588 | reg tx_rng_cfg_dma1_shadow_written; | |
589 | reg tx_rng_cfg_dma2_shadow_written; | |
590 | reg tx_rng_cfg_dma3_shadow_written; | |
591 | reg [31:0] tx_rng_cfg_dma0_shadow; | |
592 | reg [31:0] tx_rng_cfg_dma1_shadow; | |
593 | reg [31:0] tx_rng_cfg_dma2_shadow; | |
594 | reg [31:0] tx_rng_cfg_dma3_shadow; | |
595 | `else // !ifdef NEPTUNE | |
596 | `endif // !ifdef NEPTUNE | |
597 | ||
598 | ||
599 | ||
600 | ||
601 | ||
602 | reg [`PTR_WIDTH -1 :0] ShadowRingCurrentPtr_DMA0_d; | |
603 | reg [`PTR_WIDTH -1 :0] ShadowRingCurrentPtr_DMA1_d; | |
604 | reg [`PTR_WIDTH -1 :0] ShadowRingCurrentPtr_DMA2_d; | |
605 | reg [`PTR_WIDTH -1 :0] ShadowRingCurrentPtr_DMA3_d; | |
606 | ||
607 | reg tx_cs_pkt_size_error_dma0; | |
608 | reg tx_cs_nack_pkt_rd_dma0; | |
609 | reg tx_cs_pref_buf_par_err_dma0; | |
610 | reg tx_cs_conf_part_err_dma0; | |
611 | reg tx_cs_pkt_part_err_dma0; | |
612 | reg err_logh_err_dma0; | |
613 | reg err_logh_merr_dma0; | |
614 | reg [2:0] err_logh_err_code_dma0; | |
615 | reg [43:0] err_log_err_addr_dma0; | |
616 | reg tx_cs_pkt_size_error_dma1; | |
617 | reg tx_cs_nack_pkt_rd_dma1; | |
618 | reg tx_cs_pref_buf_par_err_dma1; | |
619 | reg tx_cs_conf_part_err_dma1; | |
620 | reg tx_cs_pkt_part_err_dma1; | |
621 | reg err_logh_err_dma1; | |
622 | reg err_logh_merr_dma1; | |
623 | reg [2:0] err_logh_err_code_dma1; | |
624 | reg [43:0] err_log_err_addr_dma1; | |
625 | reg tx_cs_pkt_size_error_dma2; | |
626 | reg tx_cs_nack_pkt_rd_dma2; | |
627 | reg tx_cs_pref_buf_par_err_dma2; | |
628 | reg tx_cs_conf_part_err_dma2; | |
629 | reg tx_cs_pkt_part_err_dma2; | |
630 | reg err_logh_err_dma2; | |
631 | reg err_logh_merr_dma2; | |
632 | reg [2:0] err_logh_err_code_dma2; | |
633 | reg [43:0] err_log_err_addr_dma2; | |
634 | reg tx_cs_pkt_size_error_dma3; | |
635 | reg tx_cs_nack_pkt_rd_dma3; | |
636 | reg tx_cs_pref_buf_par_err_dma3; | |
637 | reg tx_cs_conf_part_err_dma3; | |
638 | reg tx_cs_pkt_part_err_dma3; | |
639 | reg err_logh_err_dma3; | |
640 | reg err_logh_merr_dma3; | |
641 | reg [2:0] err_logh_err_code_dma3; | |
642 | reg [43:0] err_log_err_addr_dma3; | |
643 | reg [3:0] tx_cs_read_dma0_3; | |
644 | ||
645 | // 2bits per dma | |
646 | reg intr_ldf0_dma0; | |
647 | reg intr_ldf1_dma0; | |
648 | ||
649 | reg intr_ldf0_dma1; | |
650 | reg intr_ldf1_dma1; | |
651 | ||
652 | reg intr_ldf0_dma2; | |
653 | reg intr_ldf1_dma2; | |
654 | ||
655 | reg intr_ldf0_dma3; | |
656 | reg intr_ldf1_dma3; | |
657 | ||
658 | reg tx_ent_mask_ldf0_dma0; | |
659 | reg [7:0] tx_ent_mask_ldf1_dma0; | |
660 | ||
661 | reg tx_ent_mask_ldf0_dma1; | |
662 | reg [7:0] tx_ent_mask_ldf1_dma1; | |
663 | ||
664 | reg tx_ent_mask_ldf0_dma2; | |
665 | reg [7:0] tx_ent_mask_ldf1_dma2; | |
666 | ||
667 | reg tx_ent_mask_ldf0_dma3; | |
668 | reg [7:0] tx_ent_mask_ldf1_dma3; | |
669 | ||
670 | wire [7:0] ldf1_events_dma0; | |
671 | wire [7:0] ldf1_events_dma1; | |
672 | wire [7:0] ldf1_events_dma2; | |
673 | wire [7:0] ldf1_events_dma3; | |
674 | ||
675 | reg tx_cs_nack_pref_dma0; | |
676 | reg tx_cs_nack_pref_dma1; | |
677 | reg tx_cs_nack_pref_dma2; | |
678 | reg tx_cs_nack_pref_dma3; | |
679 | reg tx_cs_mbox_error_dma0; | |
680 | reg tx_cs_mbox_error_dma1; | |
681 | reg tx_cs_mbox_error_dma2; | |
682 | reg tx_cs_mbox_error_dma3; | |
683 | ||
684 | reg tx_cs_tx_ring_oflow_dma0 ; | |
685 | reg tx_cs_tx_ring_oflow_dma1 ; | |
686 | reg tx_cs_tx_ring_oflow_dma2 ; | |
687 | reg tx_cs_tx_ring_oflow_dma3 ; | |
688 | ||
689 | ||
690 | ||
691 | reg tx_dma_cfg_dma0_stop; | |
692 | reg tx_dma_cfg_dma1_stop; | |
693 | reg tx_dma_cfg_dma2_stop; | |
694 | reg tx_dma_cfg_dma3_stop; | |
695 | ||
696 | ||
697 | wire txc_dmc_pkt_size_err; // pulse to indicate error | |
698 | wire txc_dmc_nack_pkt_rd; // pulse to indicate error | |
699 | ||
700 | wire txc_dmc_dma0_nack_pkt_rd; | |
701 | wire txc_dmc_dma0_pkt_size_err; | |
702 | ||
703 | wire txc_dmc_dma1_nack_pkt_rd; | |
704 | wire txc_dmc_dma1_pkt_size_err; | |
705 | ||
706 | wire txc_dmc_dma2_nack_pkt_rd; | |
707 | wire txc_dmc_dma2_pkt_size_err; | |
708 | ||
709 | wire txc_dmc_dma3_nack_pkt_rd; | |
710 | wire txc_dmc_dma3_pkt_size_err; | |
711 | ||
712 | reg [43:0] txc_dmc_pkt_size_err_addr_dma0; | |
713 | reg [43:0] txc_dmc_pkt_size_err_addr_dma1; | |
714 | reg [43:0] txc_dmc_pkt_size_err_addr_dma2; | |
715 | reg [43:0] txc_dmc_pkt_size_err_addr_dma3; | |
716 | ||
717 | reg dmc_txc_dma0_error ; | |
718 | reg dmc_txc_dma1_error ; | |
719 | reg dmc_txc_dma2_error ; | |
720 | reg dmc_txc_dma3_error ; | |
721 | wire set_dma0_error; | |
722 | wire set_dma1_error; | |
723 | wire set_dma2_error; | |
724 | wire set_dma3_error; | |
725 | ||
726 | wire set_dma0_error_logs; | |
727 | wire set_dma1_error_logs; | |
728 | wire set_dma2_error_logs; | |
729 | wire set_dma3_error_logs; | |
730 | ||
731 | reg [11:0] tx_cs_pkt_cnt_dma0; | |
732 | reg [11:0] tx_cs_lastmark_dma0; | |
733 | reg [11:0] tx_cs_pkt_cnt_dma1; | |
734 | reg [11:0] tx_cs_lastmark_dma1; | |
735 | reg [11:0] tx_cs_pkt_cnt_dma2; | |
736 | reg [11:0] tx_cs_lastmark_dma2; | |
737 | reg [11:0] tx_cs_pkt_cnt_dma3; | |
738 | reg [11:0] tx_cs_lastmark_dma3; | |
739 | ||
740 | reg txc_dmc_p0_pkt_size_err_d; | |
741 | reg txc_dmc_p1_pkt_size_err_d; | |
742 | reg txc_dmc_p2_pkt_size_err_d; | |
743 | reg txc_dmc_p3_pkt_size_err_d; | |
744 | reg err_logh_err_dma0_d; | |
745 | reg err_logh_err_dma1_d; | |
746 | reg err_logh_err_dma2_d; | |
747 | reg err_logh_err_dma3_d; | |
748 | always @(posedge SysClk ) | |
749 | if(!Reset_L) begin | |
750 | txc_dmc_p0_pkt_size_err_d <= 1'b0; | |
751 | txc_dmc_p1_pkt_size_err_d <= 1'b0; | |
752 | txc_dmc_p2_pkt_size_err_d <= 1'b0; | |
753 | txc_dmc_p3_pkt_size_err_d <= 1'b0; | |
754 | end else begin | |
755 | txc_dmc_p0_pkt_size_err_d <= txc_dmc_p0_pkt_size_err; | |
756 | txc_dmc_p1_pkt_size_err_d <= txc_dmc_p1_pkt_size_err; | |
757 | txc_dmc_p2_pkt_size_err_d <= txc_dmc_p2_pkt_size_err; | |
758 | txc_dmc_p3_pkt_size_err_d <= txc_dmc_p3_pkt_size_err; | |
759 | end | |
760 | ||
761 | ||
762 | assign txc_dmc_pkt_size_err = txc_dmc_p0_pkt_size_err_d| txc_dmc_p1_pkt_size_err_d| | |
763 | txc_dmc_p2_pkt_size_err_d| txc_dmc_p3_pkt_size_err_d; | |
764 | ||
765 | ||
766 | ||
767 | ||
768 | ||
769 | // DMA0 | |
770 | ||
771 | assign txc_dmc_dma0_pkt_size_err = txc_dmc_p0_dma0_pkt_size_err| txc_dmc_p1_dma0_pkt_size_err| | |
772 | txc_dmc_p2_dma0_pkt_size_err| txc_dmc_p3_dma0_pkt_size_err; | |
773 | ||
774 | always@( txc_dmc_p3_pkt_size_err_addr or txc_dmc_p2_pkt_size_err_addr or txc_dmc_p1_pkt_size_err_addr or txc_dmc_p0_pkt_size_err_addr or | |
775 | txc_dmc_p0_pkt_size_err_d or txc_dmc_p1_pkt_size_err_d or txc_dmc_p2_pkt_size_err_d or txc_dmc_p3_pkt_size_err_d ) | |
776 | begin | |
777 | case({txc_dmc_p3_pkt_size_err_d,txc_dmc_p2_pkt_size_err_d,txc_dmc_p1_pkt_size_err_d,txc_dmc_p0_pkt_size_err_d}) | |
778 | 4'b1000: txc_dmc_pkt_size_err_addr_dma0 = txc_dmc_p3_pkt_size_err_addr; | |
779 | 4'b0100: txc_dmc_pkt_size_err_addr_dma0 = txc_dmc_p2_pkt_size_err_addr; | |
780 | 4'b0010: txc_dmc_pkt_size_err_addr_dma0 = txc_dmc_p1_pkt_size_err_addr; | |
781 | 4'b0001: txc_dmc_pkt_size_err_addr_dma0 = txc_dmc_p0_pkt_size_err_addr; | |
782 | default: txc_dmc_pkt_size_err_addr_dma0 = 44'h0; | |
783 | endcase | |
784 | end | |
785 | ||
786 | // DMA1 | |
787 | ||
788 | ||
789 | assign txc_dmc_dma1_pkt_size_err = txc_dmc_p0_dma1_pkt_size_err| txc_dmc_p1_dma1_pkt_size_err| | |
790 | txc_dmc_p2_dma1_pkt_size_err| txc_dmc_p3_dma1_pkt_size_err; | |
791 | ||
792 | always@( txc_dmc_p3_pkt_size_err_addr or txc_dmc_p2_pkt_size_err_addr or txc_dmc_p1_pkt_size_err_addr or txc_dmc_p0_pkt_size_err_addr or | |
793 | txc_dmc_p0_pkt_size_err_d or txc_dmc_p1_pkt_size_err_d or txc_dmc_p2_pkt_size_err_d or txc_dmc_p3_pkt_size_err_d ) | |
794 | begin | |
795 | case({txc_dmc_p3_pkt_size_err_d,txc_dmc_p2_pkt_size_err_d,txc_dmc_p1_pkt_size_err_d,txc_dmc_p0_pkt_size_err_d}) | |
796 | 4'b1000: txc_dmc_pkt_size_err_addr_dma1 = txc_dmc_p3_pkt_size_err_addr; | |
797 | 4'b0100: txc_dmc_pkt_size_err_addr_dma1 = txc_dmc_p2_pkt_size_err_addr; | |
798 | 4'b0010: txc_dmc_pkt_size_err_addr_dma1 = txc_dmc_p1_pkt_size_err_addr; | |
799 | 4'b0001: txc_dmc_pkt_size_err_addr_dma1 = txc_dmc_p0_pkt_size_err_addr; | |
800 | default: txc_dmc_pkt_size_err_addr_dma1 = 44'h0; | |
801 | endcase | |
802 | end | |
803 | // DMA2 | |
804 | ||
805 | ||
806 | assign txc_dmc_dma2_pkt_size_err = txc_dmc_p0_dma2_pkt_size_err| txc_dmc_p1_dma2_pkt_size_err| | |
807 | txc_dmc_p2_dma2_pkt_size_err| txc_dmc_p3_dma2_pkt_size_err; | |
808 | ||
809 | always@( txc_dmc_p3_pkt_size_err_addr or txc_dmc_p2_pkt_size_err_addr or txc_dmc_p1_pkt_size_err_addr or txc_dmc_p0_pkt_size_err_addr or | |
810 | txc_dmc_p0_pkt_size_err_d or txc_dmc_p1_pkt_size_err_d or txc_dmc_p2_pkt_size_err_d or txc_dmc_p3_pkt_size_err_d ) | |
811 | begin | |
812 | case({txc_dmc_p3_pkt_size_err_d,txc_dmc_p2_pkt_size_err_d,txc_dmc_p1_pkt_size_err_d,txc_dmc_p0_pkt_size_err_d}) | |
813 | 4'b1000: txc_dmc_pkt_size_err_addr_dma2 = txc_dmc_p3_pkt_size_err_addr; | |
814 | 4'b0100: txc_dmc_pkt_size_err_addr_dma2 = txc_dmc_p2_pkt_size_err_addr; | |
815 | 4'b0010: txc_dmc_pkt_size_err_addr_dma2 = txc_dmc_p1_pkt_size_err_addr; | |
816 | 4'b0001: txc_dmc_pkt_size_err_addr_dma2 = txc_dmc_p0_pkt_size_err_addr; | |
817 | default: txc_dmc_pkt_size_err_addr_dma2 = 44'h0; | |
818 | endcase | |
819 | end | |
820 | // DMA3 | |
821 | ||
822 | ||
823 | assign txc_dmc_dma3_pkt_size_err = txc_dmc_p0_dma3_pkt_size_err| txc_dmc_p1_dma3_pkt_size_err| | |
824 | txc_dmc_p2_dma3_pkt_size_err| txc_dmc_p3_dma3_pkt_size_err; | |
825 | ||
826 | always@( txc_dmc_p3_pkt_size_err_addr or txc_dmc_p2_pkt_size_err_addr or txc_dmc_p1_pkt_size_err_addr or txc_dmc_p0_pkt_size_err_addr or | |
827 | txc_dmc_p0_pkt_size_err_d or txc_dmc_p1_pkt_size_err_d or txc_dmc_p2_pkt_size_err_d or txc_dmc_p3_pkt_size_err_d ) | |
828 | begin | |
829 | case({txc_dmc_p3_pkt_size_err_d,txc_dmc_p2_pkt_size_err_d,txc_dmc_p1_pkt_size_err_d,txc_dmc_p0_pkt_size_err_d}) | |
830 | 4'b1000: txc_dmc_pkt_size_err_addr_dma3 = txc_dmc_p3_pkt_size_err_addr; | |
831 | 4'b0100: txc_dmc_pkt_size_err_addr_dma3 = txc_dmc_p2_pkt_size_err_addr; | |
832 | 4'b0010: txc_dmc_pkt_size_err_addr_dma3 = txc_dmc_p1_pkt_size_err_addr; | |
833 | 4'b0001: txc_dmc_pkt_size_err_addr_dma3 = txc_dmc_p0_pkt_size_err_addr; | |
834 | default: txc_dmc_pkt_size_err_addr_dma3 = 44'h0; | |
835 | endcase | |
836 | end | |
837 | ||
838 | ||
839 | always @(posedge SysClk ) begin | |
840 | if(!Reset_L) begin | |
841 | ShadowRingCurrentPtr_DMA0_d <= `PTR_WIDTH'h0; | |
842 | ShadowRingCurrentPtr_DMA1_d <= `PTR_WIDTH'h0; | |
843 | ShadowRingCurrentPtr_DMA2_d <= `PTR_WIDTH'h0; | |
844 | ShadowRingCurrentPtr_DMA3_d <= `PTR_WIDTH'h0; | |
845 | end else begin | |
846 | ShadowRingCurrentPtr_DMA0_d <= ShadowRingCurrentPtr_DMA0; | |
847 | ShadowRingCurrentPtr_DMA1_d <= ShadowRingCurrentPtr_DMA1; | |
848 | ShadowRingCurrentPtr_DMA2_d <= ShadowRingCurrentPtr_DMA2; | |
849 | ShadowRingCurrentPtr_DMA3_d <= ShadowRingCurrentPtr_DMA3; | |
850 | end | |
851 | end | |
852 | ||
853 | ||
854 | // LDF0 Interrupt Logic | |
855 | // Set when mailbox is sent out to system memory and ack is reaceived | |
856 | ||
857 | always @(posedge SysClk ) | |
858 | if (!Reset_L) begin | |
859 | intr_ldf0_dma0 <= 1'b0; | |
860 | intr_ldf0_dma1 <= 1'b0; | |
861 | intr_ldf0_dma2 <= 1'b0; | |
862 | intr_ldf0_dma3 <= 1'b0; | |
863 | end else begin | |
864 | intr_ldf0_dma0 <= (tx_cfg_dma0_mk & ~tx_ent_mask_ldf0_dma0) ? 1'b1:1'b0; | |
865 | intr_ldf0_dma1 <= (tx_cfg_dma1_mk & ~tx_ent_mask_ldf0_dma1) ? 1'b1:1'b0; | |
866 | intr_ldf0_dma2 <= (tx_cfg_dma2_mk & ~tx_ent_mask_ldf0_dma2) ? 1'b1:1'b0; | |
867 | intr_ldf0_dma3 <= (tx_cfg_dma3_mk & ~tx_ent_mask_ldf0_dma3) ? 1'b1:1'b0; | |
868 | end // else: !if(!Reset_L) | |
869 | ||
870 | ||
871 | // LDF1 Interrupt Logic | |
872 | ||
873 | assign ldf1_events_dma0 = { tx_cs_mbox_error_dma0, tx_cs_pkt_size_error_dma0, tx_cs_tx_ring_oflow_dma0, tx_cs_pref_buf_par_err_dma0, | |
874 | tx_cs_nack_pref_dma0 , tx_cs_nack_pkt_rd_dma0, tx_cs_conf_part_err_dma0, tx_cs_pkt_part_err_dma0 }; | |
875 | ||
876 | assign ldf1_events_dma1 = { tx_cs_mbox_error_dma1, tx_cs_pkt_size_error_dma1, tx_cs_tx_ring_oflow_dma1, tx_cs_pref_buf_par_err_dma1, | |
877 | tx_cs_nack_pref_dma1 , tx_cs_nack_pkt_rd_dma1, tx_cs_conf_part_err_dma1, tx_cs_pkt_part_err_dma1 }; | |
878 | ||
879 | assign ldf1_events_dma2 = { tx_cs_mbox_error_dma2, tx_cs_pkt_size_error_dma2, tx_cs_tx_ring_oflow_dma2, tx_cs_pref_buf_par_err_dma2, | |
880 | tx_cs_nack_pref_dma2 , tx_cs_nack_pkt_rd_dma2, tx_cs_conf_part_err_dma2, tx_cs_pkt_part_err_dma2 }; | |
881 | ||
882 | assign ldf1_events_dma3 = { tx_cs_mbox_error_dma3, tx_cs_pkt_size_error_dma3, tx_cs_tx_ring_oflow_dma3, tx_cs_pref_buf_par_err_dma3, | |
883 | tx_cs_nack_pref_dma3 , tx_cs_nack_pkt_rd_dma3, tx_cs_conf_part_err_dma3, tx_cs_pkt_part_err_dma3 }; | |
884 | ||
885 | ||
886 | always @(posedge SysClk ) | |
887 | if (!Reset_L) begin | |
888 | intr_ldf1_dma0 <= 1'b0; | |
889 | intr_ldf1_dma1 <= 1'b0; | |
890 | intr_ldf1_dma2 <= 1'b0; | |
891 | intr_ldf1_dma3 <= 1'b0; | |
892 | end else begin // if (!Reset_L) | |
893 | intr_ldf1_dma0 <= (|( (ldf1_events_dma0 ) & ~tx_ent_mask_ldf1_dma0)) ? 1'b1:1'b0; | |
894 | intr_ldf1_dma1 <= (|( (ldf1_events_dma1 ) & ~tx_ent_mask_ldf1_dma1)) ? 1'b1:1'b0; | |
895 | intr_ldf1_dma2 <= (|( (ldf1_events_dma2 ) & ~tx_ent_mask_ldf1_dma2)) ? 1'b1:1'b0; | |
896 | intr_ldf1_dma3 <= (|( (ldf1_events_dma3 ) & ~tx_ent_mask_ldf1_dma3)) ? 1'b1:1'b0; | |
897 | end // else: !if(!Reset_L) | |
898 | ||
899 | // ERROR STATUS | |
900 | // DMA0 | |
901 | // setting various error bits-- | |
902 | always @(posedge SysClk ) | |
903 | if (!Reset_L) begin | |
904 | tx_cs_tx_ring_oflow_dma0 <= 1'b0; | |
905 | end else begin | |
906 | // setting take precedence | |
907 | if(slaveStrobe & write_DMA0_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} == `TXDMA_INTR_DBG_DMA0) ) | |
908 | tx_cs_tx_ring_oflow_dma0 <= Slave_DataIn[5]; | |
909 | else if(set_tx_ring_oflow_dma0) | |
910 | tx_cs_tx_ring_oflow_dma0 <= 1'b1; | |
911 | else if(dma0_clear_reset) | |
912 | tx_cs_tx_ring_oflow_dma0 <= 1'b0; | |
913 | end // else: !if(!Reset_L) | |
914 | ||
915 | ||
916 | always @(posedge SysClk ) | |
917 | if (!Reset_L) begin | |
918 | tx_cs_pkt_size_error_dma0 <= 1'b0; | |
919 | end else begin | |
920 | // setting take precedence | |
921 | if(slaveStrobe & write_DMA0_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} == `TXDMA_INTR_DBG_DMA0) ) | |
922 | tx_cs_pkt_size_error_dma0 <= Slave_DataIn[6]; | |
923 | else if(txc_dmc_dma0_pkt_size_err & txc_dmc_pkt_size_err ) | |
924 | tx_cs_pkt_size_error_dma0 <= 1'b1; | |
925 | else if(dma0_clear_reset) | |
926 | tx_cs_pkt_size_error_dma0 <= 1'b0; | |
927 | end // else: !if(!Reset_L) | |
928 | ||
929 | always @(posedge SysClk ) | |
930 | if (!Reset_L) begin | |
931 | tx_cs_nack_pkt_rd_dma0 <= 1'b0; | |
932 | end else begin | |
933 | // setting take precedence | |
934 | if(slaveStrobe & write_DMA0_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} == `TXDMA_INTR_DBG_DMA0) ) | |
935 | tx_cs_nack_pkt_rd_dma0 <= Slave_DataIn[2]; | |
936 | else if(txc_dmc_dma0_nack_pkt_rd & txc_dmc_nack_pkt_rd) | |
937 | tx_cs_nack_pkt_rd_dma0 <= 1'b1; | |
938 | else if(dma0_clear_reset) | |
939 | tx_cs_nack_pkt_rd_dma0 <= 1'b0; | |
940 | end // else: !if(!Reset_L) | |
941 | ||
942 | ||
943 | always @(posedge SysClk ) | |
944 | if (!Reset_L) begin | |
945 | tx_cs_mbox_error_dma0 <= 1'b0; | |
946 | end else begin | |
947 | // setting take precedence | |
948 | if(slaveStrobe & write_DMA0_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} == `TXDMA_INTR_DBG_DMA0) ) | |
949 | tx_cs_mbox_error_dma0<= Slave_DataIn[7]; | |
950 | else if(mbox_ack_dma0_err_received & mbox_err_received) | |
951 | tx_cs_mbox_error_dma0 <= 1'b1; | |
952 | else if(dma0_clear_reset) | |
953 | tx_cs_mbox_error_dma0 <= 1'b0; | |
954 | else if(slaveStrobe & write_DMA0_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} == `TXDMA_CS_DMA0) ) begin | |
955 | tx_cs_mbox_error_dma0 <= Slave_DataIn[7] ? 1'b0 : tx_cs_mbox_error_dma0 ; | |
956 | end // else: !if(!Reset_L) | |
957 | end // else: !if(!Reset_L) | |
958 | ||
959 | always @(posedge SysClk ) | |
960 | if (!Reset_L) begin | |
961 | tx_cs_nack_pref_dma0<= 1'b0; | |
962 | end else begin | |
963 | // setting take precedence | |
964 | if(slaveStrobe & write_DMA0_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} == `TXDMA_INTR_DBG_DMA0)) | |
965 | tx_cs_nack_pref_dma0<= Slave_DataIn[3]; | |
966 | else if(txpref_dma0_nack_resp & txpref_nack_resp) | |
967 | tx_cs_nack_pref_dma0 <= 1'b1; | |
968 | else if(dma0_clear_reset) | |
969 | tx_cs_nack_pref_dma0 <= 1'b0; | |
970 | end // else: !if(!Reset_L) | |
971 | ||
972 | always @(posedge SysClk ) | |
973 | if (!Reset_L) begin | |
974 | tx_cs_pref_buf_par_err_dma0 <= 1'b0; | |
975 | end else begin | |
976 | // setting take precedence | |
977 | if(slaveStrobe & write_DMA0_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} == `TXDMA_INTR_DBG_DMA0) ) | |
978 | tx_cs_pref_buf_par_err_dma0 <= Slave_DataIn[4]; | |
979 | else if(set_pref_buf_par_err_dma0) | |
980 | tx_cs_pref_buf_par_err_dma0 <= 1'b1; | |
981 | else if(dma0_clear_reset) | |
982 | tx_cs_pref_buf_par_err_dma0 <= 1'b0; | |
983 | end // else: !if(!Reset_L) | |
984 | ||
985 | always @(posedge SysClk ) | |
986 | if (!Reset_L) begin | |
987 | tx_cs_conf_part_err_dma0 <= 1'b0; | |
988 | end else begin | |
989 | // setting take precedence | |
990 | if(slaveStrobe & write_DMA0_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} == `TXDMA_INTR_DBG_DMA0)) | |
991 | tx_cs_conf_part_err_dma0<= Slave_DataIn[1]; | |
992 | else if(set_conf_part_error_dma0 | set_mbox_part_error_dma0) | |
993 | tx_cs_conf_part_err_dma0 <= 1'b1; | |
994 | else if(dma0_clear_reset) | |
995 | tx_cs_conf_part_err_dma0 <= 1'b0; | |
996 | end // else: !if(!Reset_L) | |
997 | ||
998 | always @(posedge SysClk ) | |
999 | if (!Reset_L) begin | |
1000 | tx_cs_pkt_part_err_dma0 <= 1'b0; | |
1001 | end else begin | |
1002 | // setting take precedence | |
1003 | if(slaveStrobe & write_DMA0_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} == `TXDMA_INTR_DBG_DMA0) ) | |
1004 | tx_cs_pkt_part_err_dma0 <= Slave_DataIn[0] ; | |
1005 | else if(set_pkt_part_err_dma0) | |
1006 | tx_cs_pkt_part_err_dma0 <= 1'b1; | |
1007 | else if(dma0_clear_reset) | |
1008 | tx_cs_pkt_part_err_dma0 <= 1'b0; | |
1009 | end // else: !if(!Reset_L) | |
1010 | ||
1011 | // pkt_cnt as part of TX Config register | |
1012 | always@(posedge SysClk ) begin | |
1013 | if (!Reset_L) begin | |
1014 | tx_cs_pkt_cnt_dma0 <= 12'h0; | |
1015 | end else if(dma0_clear_reset) begin | |
1016 | tx_cs_pkt_cnt_dma0 <= 12'h0; | |
1017 | end else if (slaveStrobe & write_DMA0_Register && ({Slave_Addr[8:3],(~Slave_Addr[2] & pio_clients_32b ) ,2'h0} == `TXDMA_CS_DBG_DMA0) ) begin | |
1018 | tx_cs_pkt_cnt_dma0 <= Slave_DataIn[59:48]; | |
1019 | end else if(txc_dmc_dma0_inc_pkt_cnt) begin | |
1020 | tx_cs_pkt_cnt_dma0 <= tx_cs_pkt_cnt_dma0 + 12'h1; | |
1021 | end // else: !if(!Reset_L) | |
1022 | end // always@ (posedge SysClk ) | |
1023 | ||
1024 | always@(posedge SysClk) begin | |
1025 | if(!Reset_L) begin | |
1026 | tx_cs_lastmark_dma0 <= 12'h0; | |
1027 | end else if(dma0_clear_reset) begin // if (!Reset_L) | |
1028 | tx_cs_lastmark_dma0 <= 12'h0; | |
1029 | end else if(txc_dmc_dma0_mark_bit) begin | |
1030 | tx_cs_lastmark_dma0 <= tx_cs_pkt_cnt_dma0; | |
1031 | end | |
1032 | end | |
1033 | ||
1034 | assign set_dma0_error_logs = set_pref_buf_par_err_dma0 | set_pkt_part_err_dma0 |( mbox_ack_dma0_err_received & mbox_err_received)| | |
1035 | (txpref_dma0_nack_resp & txpref_nack_resp) | (set_conf_part_error_dma0 | set_mbox_part_error_dma0) | |
1036 | | (txc_dmc_dma0_nack_pkt_rd & txc_dmc_nack_pkt_rd) | (txc_dmc_dma0_pkt_size_err & txc_dmc_pkt_size_err) | |
1037 | | set_tx_ring_oflow_dma0 ; | |
1038 | ||
1039 | // Error log associated with the errors | |
1040 | always @(posedge SysClk ) | |
1041 | if (!Reset_L) begin | |
1042 | err_logh_err_dma0 <= 1'b0; | |
1043 | err_logh_err_dma0_d <= 1'b0; | |
1044 | err_logh_merr_dma0 <= 1'b0; | |
1045 | end else begin | |
1046 | err_logh_err_dma0_d <= err_logh_err_dma0; | |
1047 | if( set_dma0_error_logs ) begin | |
1048 | err_logh_err_dma0 <= 1'b1; | |
1049 | // may need another term here -- TOADS | |
1050 | err_logh_merr_dma0 <= ( err_logh_err_dma0) ? 1'b1: 1'b0; | |
1051 | end // if (| tx_cs_dma0_err ) | |
1052 | else if(dma0_clear_reset) begin | |
1053 | err_logh_err_dma0 <= 1'b0; | |
1054 | err_logh_merr_dma0 <= 1'b0; | |
1055 | end // if (dma0_clear_reset) | |
1056 | end // else: !if(!Reset_L) | |
1057 | // Error code and Error address | |
1058 | always @(posedge SysClk ) | |
1059 | if (!Reset_L) begin | |
1060 | err_logh_err_code_dma0 <= 3'h0; | |
1061 | err_log_err_addr_dma0 <= 44'h0; | |
1062 | end else if(dma0_clear_reset) begin | |
1063 | err_logh_err_code_dma0 <= 3'h0; | |
1064 | err_log_err_addr_dma0 <= 44'h0; | |
1065 | end else if(~err_logh_err_dma0_d & err_logh_err_dma0) begin | |
1066 | if(tx_cs_pkt_size_error_dma0 ) begin | |
1067 | err_logh_err_code_dma0 <= `ERR_CODE_PKT_SIZE_ERR; | |
1068 | err_log_err_addr_dma0 <= txc_dmc_pkt_size_err_addr_dma0; | |
1069 | end else if(tx_cs_pref_buf_par_err_dma0 ) begin | |
1070 | err_logh_err_code_dma0 <= `ERR_CODE_PREF_BUF_PAR_ERR; | |
1071 | err_log_err_addr_dma0 <= 44'h0;// Not sure what to log??; | |
1072 | end else if(tx_cs_tx_ring_oflow_dma0 ) begin | |
1073 | err_logh_err_code_dma0 <= `ERR_CODE_TX_RING_OFLOW; | |
1074 | err_log_err_addr_dma0 <= 44'h0;// Not sure what to log??; | |
1075 | end else if( tx_cs_nack_pref_dma0) begin | |
1076 | err_logh_err_code_dma0 <= `ERR_CODE_NACK_PREF; | |
1077 | err_log_err_addr_dma0 <= txpref_nack_rd_addr; | |
1078 | end else if( tx_cs_nack_pkt_rd_dma0 ) begin | |
1079 | err_logh_err_code_dma0 <= `ERR_CODE_NACK_PKT_RD; | |
1080 | err_log_err_addr_dma0 <= txc_dmc_nack_pkt_rd_addr; | |
1081 | end else if(tx_cs_conf_part_err_dma0 ) begin | |
1082 | err_logh_err_code_dma0 <= `ERR_CODE_CONF_PART_ERR; | |
1083 | err_log_err_addr_dma0 <= set_mbox_part_error_dma0 ? {tx_dma_cfg_dma0_mbaddr, 6'h0}: {tx_rng_cfg_dma0_staddr,6'h0} ; | |
1084 | end else if(tx_cs_pkt_part_err_dma0) begin | |
1085 | err_logh_err_code_dma0 <= `ERR_CODE_PKT_PART_ERR; | |
1086 | err_log_err_addr_dma0 <=pkt_part_error_address_dma0 ; | |
1087 | end | |
1088 | end // if (!err_logh_merr_dma0) | |
1089 | ||
1090 | // TXCS_ Error logic | |
1091 | // DMA0 | |
1092 | assign set_dma0_error = (set_pref_buf_par_err_dma0|set_pkt_part_err_dma0); | |
1093 | ||
1094 | always @(posedge SysClk ) | |
1095 | if (!Reset_L) begin | |
1096 | dmc_txc_dma0_error <= 1'b0; | |
1097 | end else begin | |
1098 | if(dma0_clear_reset) dmc_txc_dma0_error <= 1'b0; | |
1099 | else dmc_txc_dma0_error <= ((| tx_cs_dma0_err)| set_dma0_error) ; | |
1100 | end | |
1101 | ||
1102 | assign tx_cs_dma0_err = {tx_cs_mbox_error_dma0, tx_cs_pkt_size_error_dma0, tx_cs_tx_ring_oflow_dma0, tx_cs_pref_buf_par_err_dma0, | |
1103 | tx_cs_nack_pref_dma0, tx_cs_nack_pkt_rd_dma0, tx_cs_conf_part_err_dma0, tx_cs_pkt_part_err_dma0 } ; | |
1104 | ||
1105 | assign tx_dma0_pre_st = {45'h0,3'h0,ShadowRingCurrentPtr_DMA0_d}; | |
1106 | assign tx_dma0_rng_err_logh = {32'h0,err_logh_err_dma0,err_logh_merr_dma0,err_logh_err_code_dma0,15'h0,err_log_err_addr_dma0[43:32] }; | |
1107 | assign tx_dma0_rng_err_logl = {32'h0,err_log_err_addr_dma0[31:0]}; | |
1108 | assign tx_cs_dma0 = { 4'h0, tx_cs_pkt_cnt_dma0, 4'h0, tx_cs_lastmark_dma0, tx_dma_cfg_dma0_rst, tx_dma_cfg_dma0_stall, | |
1109 | tx_cfg_dma0_enable_mb,tx_dma_cfg_dma0_stop,tx_dma_cfg_dma0_stop_state,11'h0 , tx_cfg_dma0_mk, tx_cfg_dma0_mmk, 6'h0, tx_cs_dma0_err }; | |
1110 | ||
1111 | ||
1112 | // DMA1 | |
1113 | // setting various error bits-- | |
1114 | always @(posedge SysClk ) | |
1115 | if (!Reset_L) begin | |
1116 | tx_cs_tx_ring_oflow_dma1 <= 1'b0; | |
1117 | end else begin | |
1118 | // setting take precedence | |
1119 | if(slaveStrobe & write_DMA1_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} ==`TXDMA_INTR_DBG_DMA1) ) | |
1120 | tx_cs_tx_ring_oflow_dma1 <= Slave_DataIn[5]; | |
1121 | else if(set_tx_ring_oflow_dma1) | |
1122 | tx_cs_tx_ring_oflow_dma1 <= 1'b1; | |
1123 | else if(dma1_clear_reset) | |
1124 | tx_cs_tx_ring_oflow_dma1 <= 1'b0; | |
1125 | end // else: !if(!Reset_L) | |
1126 | ||
1127 | ||
1128 | always @(posedge SysClk ) | |
1129 | if (!Reset_L) begin | |
1130 | tx_cs_pkt_size_error_dma1 <= 1'b0; | |
1131 | end else begin | |
1132 | // setting take precedence | |
1133 | if(slaveStrobe & write_DMA1_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} ==`TXDMA_INTR_DBG_DMA1 ) ) | |
1134 | tx_cs_pkt_size_error_dma1 <= Slave_DataIn[6]; | |
1135 | else if(txc_dmc_dma1_pkt_size_err & txc_dmc_pkt_size_err ) | |
1136 | tx_cs_pkt_size_error_dma1 <= 1'b1; | |
1137 | else if(dma1_clear_reset) | |
1138 | tx_cs_pkt_size_error_dma1 <= 1'b0; | |
1139 | end // else: !if(!Reset_L) | |
1140 | ||
1141 | always @(posedge SysClk ) | |
1142 | if (!Reset_L) begin | |
1143 | tx_cs_nack_pkt_rd_dma1 <= 1'b0; | |
1144 | end else begin | |
1145 | // setting take precedence | |
1146 | if(slaveStrobe & write_DMA1_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} ==`TXDMA_INTR_DBG_DMA1) ) | |
1147 | tx_cs_nack_pkt_rd_dma1 <= Slave_DataIn[2]; | |
1148 | else if(txc_dmc_dma1_nack_pkt_rd & txc_dmc_nack_pkt_rd) | |
1149 | tx_cs_nack_pkt_rd_dma1 <= 1'b1; | |
1150 | else if(dma1_clear_reset) | |
1151 | tx_cs_nack_pkt_rd_dma1 <= 1'b0; | |
1152 | end // else: !if(!Reset_L) | |
1153 | ||
1154 | ||
1155 | always @(posedge SysClk ) | |
1156 | if (!Reset_L) begin | |
1157 | tx_cs_mbox_error_dma1 <= 1'b0; | |
1158 | end else begin | |
1159 | // setting take precedence | |
1160 | if(slaveStrobe & write_DMA1_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} ==`TXDMA_INTR_DBG_DMA1) ) | |
1161 | tx_cs_mbox_error_dma1<= Slave_DataIn[7]; | |
1162 | else if(mbox_ack_dma1_err_received & mbox_err_received) | |
1163 | tx_cs_mbox_error_dma1 <= 1'b1; | |
1164 | else if(dma1_clear_reset) | |
1165 | tx_cs_mbox_error_dma1 <= 1'b0; | |
1166 | end // else: !if(!Reset_L) | |
1167 | ||
1168 | always @(posedge SysClk ) | |
1169 | if (!Reset_L) begin | |
1170 | tx_cs_nack_pref_dma1<= 1'b0; | |
1171 | end else begin | |
1172 | // setting take precedence | |
1173 | if(slaveStrobe & write_DMA1_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} ==`TXDMA_INTR_DBG_DMA1)) | |
1174 | tx_cs_nack_pref_dma1<= Slave_DataIn[3]; | |
1175 | else if(txpref_dma1_nack_resp & txpref_nack_resp) | |
1176 | tx_cs_nack_pref_dma1 <= 1'b1; | |
1177 | else if(dma1_clear_reset) | |
1178 | tx_cs_nack_pref_dma1 <= 1'b0; | |
1179 | end // else: !if(!Reset_L) | |
1180 | ||
1181 | always @(posedge SysClk ) | |
1182 | if (!Reset_L) begin | |
1183 | tx_cs_pref_buf_par_err_dma1 <= 1'b0; | |
1184 | end else begin | |
1185 | // setting take precedence | |
1186 | if(slaveStrobe & write_DMA1_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} ==`TXDMA_INTR_DBG_DMA1)) | |
1187 | tx_cs_pref_buf_par_err_dma1 <= Slave_DataIn[4]; | |
1188 | else if(set_pref_buf_par_err_dma1) | |
1189 | tx_cs_pref_buf_par_err_dma1 <= 1'b1; | |
1190 | else if(dma1_clear_reset) | |
1191 | tx_cs_pref_buf_par_err_dma1 <= 1'b0; | |
1192 | end // else: !if(!Reset_L) | |
1193 | ||
1194 | always @(posedge SysClk ) | |
1195 | if (!Reset_L) begin | |
1196 | tx_cs_conf_part_err_dma1 <= 1'b0; | |
1197 | end else begin | |
1198 | // setting take precedence | |
1199 | if(slaveStrobe & write_DMA1_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} ==`TXDMA_INTR_DBG_DMA1)) | |
1200 | tx_cs_conf_part_err_dma1<= Slave_DataIn[1]; | |
1201 | else if(set_conf_part_error_dma1 | set_mbox_part_error_dma1) | |
1202 | tx_cs_conf_part_err_dma1 <= 1'b1; | |
1203 | else if(dma1_clear_reset) | |
1204 | tx_cs_conf_part_err_dma1 <= 1'b0; | |
1205 | end // else: !if(!Reset_L) | |
1206 | ||
1207 | always @(posedge SysClk ) | |
1208 | if (!Reset_L) begin | |
1209 | tx_cs_pkt_part_err_dma1 <= 1'b0; | |
1210 | end else begin | |
1211 | // setting take precedence | |
1212 | if(slaveStrobe & write_DMA1_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} ==`TXDMA_INTR_DBG_DMA1) ) | |
1213 | tx_cs_pkt_part_err_dma1 <= Slave_DataIn[0]; | |
1214 | else if(set_pkt_part_err_dma1) | |
1215 | tx_cs_pkt_part_err_dma1 <= 1'b1; | |
1216 | else if(dma1_clear_reset) | |
1217 | tx_cs_pkt_part_err_dma1 <= 1'b0; | |
1218 | end // else: !if(!Reset_L) | |
1219 | ||
1220 | // pkt_cnt as part of TX Config register | |
1221 | always@(posedge SysClk ) begin | |
1222 | if (!Reset_L) begin | |
1223 | tx_cs_pkt_cnt_dma1 <= 12'h0; | |
1224 | end else if(dma1_clear_reset) begin | |
1225 | tx_cs_pkt_cnt_dma1 <= 12'h0; | |
1226 | end else if (slaveStrobe & write_DMA1_Register && ({Slave_Addr[8:3],(~Slave_Addr[2] & pio_clients_32b ) ,2'h0} == `TXDMA_CS_DBG_DMA1) ) begin | |
1227 | tx_cs_pkt_cnt_dma1 <= Slave_DataIn[59:48]; | |
1228 | end else if(txc_dmc_dma1_inc_pkt_cnt) begin | |
1229 | tx_cs_pkt_cnt_dma1 <= tx_cs_pkt_cnt_dma1 + 12'h1; | |
1230 | end // else: !if(!Reset_L) | |
1231 | end // always@ (posedge SysClk ) | |
1232 | ||
1233 | always@(posedge SysClk) begin | |
1234 | if(!Reset_L) begin | |
1235 | tx_cs_lastmark_dma1 <= 12'h0; | |
1236 | end else if(dma1_clear_reset) begin // if (!Reset_L) | |
1237 | tx_cs_lastmark_dma1 <= 12'h0; | |
1238 | end else if(txc_dmc_dma1_mark_bit) begin | |
1239 | tx_cs_lastmark_dma1 <= tx_cs_pkt_cnt_dma1; | |
1240 | end | |
1241 | end | |
1242 | ||
1243 | ||
1244 | assign set_dma1_error_logs = set_pref_buf_par_err_dma1 | set_pkt_part_err_dma1|( mbox_ack_dma1_err_received & mbox_err_received)| | |
1245 | (txpref_dma1_nack_resp & txpref_nack_resp) | (set_conf_part_error_dma1 | set_mbox_part_error_dma1) | |
1246 | | (txc_dmc_dma1_nack_pkt_rd & txc_dmc_nack_pkt_rd) | (txc_dmc_dma1_pkt_size_err & txc_dmc_pkt_size_err) | |
1247 | | set_tx_ring_oflow_dma1 ; | |
1248 | // Error log associated with the errors | |
1249 | always @(posedge SysClk ) | |
1250 | if (!Reset_L) begin | |
1251 | err_logh_err_dma1 <= 1'b0; | |
1252 | err_logh_err_dma1_d <= 1'b0; | |
1253 | err_logh_merr_dma1 <= 1'b0; | |
1254 | end else begin | |
1255 | err_logh_err_dma1_d <= err_logh_err_dma1; | |
1256 | if( set_dma1_error_logs ) begin | |
1257 | err_logh_err_dma1 <= 1'b1; | |
1258 | // may need another term here -- TOADS | |
1259 | err_logh_merr_dma1 <= ( err_logh_err_dma1) ? 1'b1: 1'b0; | |
1260 | end // if (| tx_cs_dma1_err ) | |
1261 | else if(dma1_clear_reset) begin | |
1262 | err_logh_err_dma1 <= 1'b0; | |
1263 | err_logh_merr_dma1 <= 1'b0; | |
1264 | end // if (dma1_clear_reset) | |
1265 | end // else: !if(!Reset_L) | |
1266 | // Error code and Error address | |
1267 | always @(posedge SysClk ) | |
1268 | if (!Reset_L) begin | |
1269 | err_logh_err_code_dma1 <= 3'h0; | |
1270 | err_log_err_addr_dma1 <= 44'h0; | |
1271 | end else if(dma1_clear_reset) begin | |
1272 | err_logh_err_code_dma1 <= 3'h0; | |
1273 | err_log_err_addr_dma1 <= 44'h0; | |
1274 | end else if(~err_logh_err_dma1_d & err_logh_err_dma1) begin | |
1275 | if(tx_cs_pkt_size_error_dma1 ) begin | |
1276 | err_logh_err_code_dma1 <= `ERR_CODE_PKT_SIZE_ERR; | |
1277 | err_log_err_addr_dma1 <= txc_dmc_pkt_size_err_addr_dma1; | |
1278 | end else if(tx_cs_pref_buf_par_err_dma1 ) begin | |
1279 | err_logh_err_code_dma1 <= `ERR_CODE_PREF_BUF_PAR_ERR; | |
1280 | err_log_err_addr_dma1 <= 44'h0;// Not sure what to log??; | |
1281 | end else if(tx_cs_tx_ring_oflow_dma1 ) begin | |
1282 | err_logh_err_code_dma1 <= `ERR_CODE_TX_RING_OFLOW; | |
1283 | err_log_err_addr_dma1 <= 44'h0;// Not sure what to log??; | |
1284 | end else if( tx_cs_nack_pref_dma1) begin | |
1285 | err_logh_err_code_dma1 <= `ERR_CODE_NACK_PREF; | |
1286 | err_log_err_addr_dma1 <= txpref_nack_rd_addr; | |
1287 | end else if( tx_cs_nack_pkt_rd_dma1 ) begin | |
1288 | err_logh_err_code_dma1 <= `ERR_CODE_NACK_PKT_RD; | |
1289 | err_log_err_addr_dma1 <= txc_dmc_nack_pkt_rd_addr; | |
1290 | end else if(tx_cs_conf_part_err_dma1 ) begin | |
1291 | err_logh_err_code_dma1 <= `ERR_CODE_CONF_PART_ERR; | |
1292 | err_log_err_addr_dma1 <= set_mbox_part_error_dma1 ? {tx_dma_cfg_dma1_mbaddr, 6'h0}: {tx_rng_cfg_dma1_staddr,6'h0} ; | |
1293 | end else if(tx_cs_pkt_part_err_dma1) begin | |
1294 | err_logh_err_code_dma1 <= `ERR_CODE_PKT_PART_ERR; | |
1295 | err_log_err_addr_dma1 <=pkt_part_error_address_dma1 ; | |
1296 | end | |
1297 | end // if (!err_logh_merr_dma1) | |
1298 | ||
1299 | // TXCS_ Error logic | |
1300 | // DMA1 | |
1301 | assign set_dma1_error = (set_pref_buf_par_err_dma1|set_pkt_part_err_dma1); | |
1302 | always @(posedge SysClk ) | |
1303 | if (!Reset_L) begin | |
1304 | dmc_txc_dma1_error <= 1'b0; | |
1305 | end else begin | |
1306 | if(dma1_clear_reset) dmc_txc_dma1_error <= 1'b0; | |
1307 | else dmc_txc_dma1_error <= ( ((| tx_cs_dma1_err) | set_dma1_error)); | |
1308 | end | |
1309 | assign tx_cs_dma1_err = {tx_cs_mbox_error_dma1, tx_cs_pkt_size_error_dma1, tx_cs_tx_ring_oflow_dma1, tx_cs_pref_buf_par_err_dma1, | |
1310 | tx_cs_nack_pref_dma1, tx_cs_nack_pkt_rd_dma1, tx_cs_conf_part_err_dma1, tx_cs_pkt_part_err_dma1 } ; | |
1311 | ||
1312 | assign tx_dma1_pre_st ={45'h0,3'h0,ShadowRingCurrentPtr_DMA1_d}; | |
1313 | assign tx_dma1_rng_err_logh = {32'h0,err_logh_err_dma1,err_logh_merr_dma1,err_logh_err_code_dma1,15'h0,err_log_err_addr_dma1[43:32] }; | |
1314 | assign tx_dma1_rng_err_logl = {32'h0,err_log_err_addr_dma1[31:0]}; | |
1315 | assign tx_cs_dma1 = { 4'h0, tx_cs_pkt_cnt_dma1, 4'h0, tx_cs_lastmark_dma1, tx_dma_cfg_dma1_rst, tx_dma_cfg_dma1_stall, | |
1316 | tx_cfg_dma1_enable_mb,tx_dma_cfg_dma1_stop,tx_dma_cfg_dma1_stop_state,11'h0 , tx_cfg_dma1_mk, tx_cfg_dma1_mmk, 6'h0, tx_cs_dma1_err }; | |
1317 | ||
1318 | ||
1319 | // DMA2 | |
1320 | // setting various error bits-- | |
1321 | always @(posedge SysClk ) | |
1322 | if (!Reset_L) begin | |
1323 | tx_cs_tx_ring_oflow_dma2 <= 1'b0; | |
1324 | end else begin | |
1325 | // setting take precedence | |
1326 | if(slaveStrobe & write_DMA2_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} == `TXDMA_INTR_DBG_DMA2) ) | |
1327 | tx_cs_tx_ring_oflow_dma2 <= Slave_DataIn[5]; | |
1328 | else if(set_tx_ring_oflow_dma2) | |
1329 | tx_cs_tx_ring_oflow_dma2 <= 1'b1; | |
1330 | else if(dma2_clear_reset) | |
1331 | tx_cs_tx_ring_oflow_dma2 <= 1'b0; | |
1332 | end // else: !if(!Reset_L) | |
1333 | ||
1334 | ||
1335 | always @(posedge SysClk ) | |
1336 | if (!Reset_L) begin | |
1337 | tx_cs_pkt_size_error_dma2 <= 1'b0; | |
1338 | end else begin | |
1339 | // setting take precedence | |
1340 | if(slaveStrobe & write_DMA2_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} ==`TXDMA_INTR_DBG_DMA2 ) ) | |
1341 | tx_cs_pkt_size_error_dma2 <= Slave_DataIn[6]; | |
1342 | else if(txc_dmc_dma2_pkt_size_err & txc_dmc_pkt_size_err ) | |
1343 | tx_cs_pkt_size_error_dma2 <= 1'b1; | |
1344 | else if(dma2_clear_reset) | |
1345 | tx_cs_pkt_size_error_dma2 <= 1'b0; | |
1346 | end // else: !if(!Reset_L) | |
1347 | ||
1348 | always @(posedge SysClk ) | |
1349 | if (!Reset_L) begin | |
1350 | tx_cs_nack_pkt_rd_dma2 <= 1'b0; | |
1351 | end else begin | |
1352 | // setting take precedence | |
1353 | if(slaveStrobe & write_DMA2_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} ==`TXDMA_INTR_DBG_DMA2) ) | |
1354 | tx_cs_nack_pkt_rd_dma2 <= Slave_DataIn[2]; | |
1355 | else if(txc_dmc_dma2_nack_pkt_rd & txc_dmc_nack_pkt_rd) | |
1356 | tx_cs_nack_pkt_rd_dma2 <= 1'b1; | |
1357 | else if(dma2_clear_reset) | |
1358 | tx_cs_nack_pkt_rd_dma2 <= 1'b0; | |
1359 | end // else: !if(!Reset_L) | |
1360 | ||
1361 | ||
1362 | always @(posedge SysClk ) | |
1363 | if (!Reset_L) begin | |
1364 | tx_cs_mbox_error_dma2 <= 1'b0; | |
1365 | end else begin | |
1366 | // setting take precedence | |
1367 | if(slaveStrobe & write_DMA2_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} ==`TXDMA_INTR_DBG_DMA2) ) | |
1368 | tx_cs_mbox_error_dma2<= Slave_DataIn[7]; | |
1369 | else if(mbox_ack_dma2_err_received & mbox_err_received) | |
1370 | tx_cs_mbox_error_dma2 <= 1'b1; | |
1371 | else if(dma2_clear_reset) | |
1372 | tx_cs_mbox_error_dma2 <= 1'b0; | |
1373 | end // else: !if(!Reset_L) | |
1374 | ||
1375 | always @(posedge SysClk ) | |
1376 | if (!Reset_L) begin | |
1377 | tx_cs_nack_pref_dma2<= 1'b0; | |
1378 | end else begin | |
1379 | // setting take precedence | |
1380 | if(slaveStrobe & write_DMA2_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} ==`TXDMA_INTR_DBG_DMA2)) | |
1381 | tx_cs_nack_pref_dma2<= Slave_DataIn[3]; | |
1382 | else if(txpref_dma2_nack_resp & txpref_nack_resp) | |
1383 | tx_cs_nack_pref_dma2 <= 1'b1; | |
1384 | else if(dma2_clear_reset) | |
1385 | tx_cs_nack_pref_dma2 <= 1'b0; | |
1386 | end // else: !if(!Reset_L) | |
1387 | ||
1388 | always @(posedge SysClk ) | |
1389 | if (!Reset_L) begin | |
1390 | tx_cs_pref_buf_par_err_dma2 <= 1'b0; | |
1391 | end else begin | |
1392 | // setting take precedence | |
1393 | if(slaveStrobe & write_DMA2_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} ==`TXDMA_INTR_DBG_DMA2)) | |
1394 | tx_cs_pref_buf_par_err_dma2 <= Slave_DataIn[4] ; | |
1395 | else if(set_pref_buf_par_err_dma2) | |
1396 | tx_cs_pref_buf_par_err_dma2 <= 1'b1; | |
1397 | else if(dma2_clear_reset) | |
1398 | tx_cs_pref_buf_par_err_dma2 <= 1'b0; | |
1399 | end // else: !if(!Reset_L) | |
1400 | ||
1401 | always @(posedge SysClk ) | |
1402 | if (!Reset_L) begin | |
1403 | tx_cs_conf_part_err_dma2 <= 1'b0; | |
1404 | end else begin | |
1405 | // setting take precedence | |
1406 | if(slaveStrobe & write_DMA2_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} ==`TXDMA_INTR_DBG_DMA2)) | |
1407 | tx_cs_conf_part_err_dma2<= Slave_DataIn[1]; | |
1408 | else if(set_conf_part_error_dma2 | set_mbox_part_error_dma2) | |
1409 | tx_cs_conf_part_err_dma2 <= 1'b1; | |
1410 | else if(dma2_clear_reset) | |
1411 | tx_cs_conf_part_err_dma2 <= 1'b0; | |
1412 | end // else: !if(!Reset_L) | |
1413 | ||
1414 | always @(posedge SysClk ) | |
1415 | if (!Reset_L) begin | |
1416 | tx_cs_pkt_part_err_dma2 <= 1'b0; | |
1417 | end else begin | |
1418 | // setting take precedence | |
1419 | if(slaveStrobe & write_DMA2_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} ==`TXDMA_INTR_DBG_DMA2) ) | |
1420 | tx_cs_pkt_part_err_dma2 <= Slave_DataIn[0]; | |
1421 | else if(set_pkt_part_err_dma2) | |
1422 | tx_cs_pkt_part_err_dma2 <= 1'b1; | |
1423 | else if(dma2_clear_reset) | |
1424 | tx_cs_pkt_part_err_dma2 <= 1'b0; | |
1425 | end // else: !if(!Reset_L) | |
1426 | ||
1427 | ||
1428 | // pkt_cnt as part of TX Config register | |
1429 | always@(posedge SysClk ) begin | |
1430 | if (!Reset_L) begin | |
1431 | tx_cs_pkt_cnt_dma2 <= 12'h0; | |
1432 | end else if(dma2_clear_reset) begin | |
1433 | tx_cs_pkt_cnt_dma2 <= 12'h0; | |
1434 | end else if (slaveStrobe & write_DMA2_Register && ({Slave_Addr[8:3],(~Slave_Addr[2] & pio_clients_32b ) ,2'h0} == `TXDMA_CS_DBG_DMA2) ) begin | |
1435 | tx_cs_pkt_cnt_dma2 <= Slave_DataIn[59:48]; | |
1436 | end else if(txc_dmc_dma2_inc_pkt_cnt) begin | |
1437 | tx_cs_pkt_cnt_dma2 <= tx_cs_pkt_cnt_dma2 + 12'h1; | |
1438 | end // else: !if(!Reset_L) | |
1439 | end // always@ (posedge SysClk ) | |
1440 | ||
1441 | always@(posedge SysClk) begin | |
1442 | if(!Reset_L) begin | |
1443 | tx_cs_lastmark_dma2 <= 12'h0; | |
1444 | end else if(dma2_clear_reset) begin // if (!Reset_L) | |
1445 | tx_cs_lastmark_dma2 <= 12'h0; | |
1446 | end else if(txc_dmc_dma2_mark_bit) begin | |
1447 | tx_cs_lastmark_dma2 <= tx_cs_pkt_cnt_dma2; | |
1448 | end | |
1449 | end | |
1450 | ||
1451 | assign set_dma2_error_logs = set_pref_buf_par_err_dma2 | set_pkt_part_err_dma2|( mbox_ack_dma2_err_received & mbox_err_received)| | |
1452 | (txpref_dma2_nack_resp & txpref_nack_resp) | (set_conf_part_error_dma2 | set_mbox_part_error_dma2) | |
1453 | | (txc_dmc_dma2_nack_pkt_rd & txc_dmc_nack_pkt_rd) | (txc_dmc_dma2_pkt_size_err & txc_dmc_pkt_size_err) | |
1454 | | set_tx_ring_oflow_dma2 ; | |
1455 | // Error log associated with the errors | |
1456 | always @(posedge SysClk ) | |
1457 | if (!Reset_L) begin | |
1458 | err_logh_err_dma2 <= 1'b0; | |
1459 | err_logh_err_dma2_d <= 1'b0; | |
1460 | err_logh_merr_dma2 <= 1'b0; | |
1461 | end else begin | |
1462 | err_logh_err_dma2_d <= err_logh_err_dma2; | |
1463 | if( set_dma2_error_logs ) begin | |
1464 | err_logh_err_dma2 <= 1'b1; | |
1465 | // may need another term here -- TOADS | |
1466 | err_logh_merr_dma2 <= ( err_logh_err_dma2) ? 1'b1: 1'b0; | |
1467 | end // if (| tx_cs_dma2_err ) | |
1468 | else if(dma2_clear_reset) begin | |
1469 | err_logh_err_dma2 <= 1'b0; | |
1470 | err_logh_merr_dma2 <= 1'b0; | |
1471 | end // if (dma2_clear_reset) | |
1472 | end // else: !if(!Reset_L) | |
1473 | // Error code and Error address | |
1474 | always @(posedge SysClk ) | |
1475 | if (!Reset_L) begin | |
1476 | err_logh_err_code_dma2 <= 3'h0; | |
1477 | err_log_err_addr_dma2 <= 44'h0; | |
1478 | end else if(dma2_clear_reset) begin | |
1479 | err_logh_err_code_dma2 <= 3'h0; | |
1480 | err_log_err_addr_dma2 <= 44'h0; | |
1481 | end else if(~err_logh_err_dma2_d & err_logh_err_dma2) begin | |
1482 | if(tx_cs_pkt_size_error_dma2 ) begin | |
1483 | err_logh_err_code_dma2 <= `ERR_CODE_PKT_SIZE_ERR; | |
1484 | err_log_err_addr_dma2 <= txc_dmc_pkt_size_err_addr_dma2; | |
1485 | end else if(tx_cs_pref_buf_par_err_dma2 ) begin | |
1486 | err_logh_err_code_dma2 <= `ERR_CODE_PREF_BUF_PAR_ERR; | |
1487 | err_log_err_addr_dma2 <= 44'h0;// Not sure what to log??; | |
1488 | end else if(tx_cs_tx_ring_oflow_dma2 ) begin | |
1489 | err_logh_err_code_dma2 <= `ERR_CODE_TX_RING_OFLOW; | |
1490 | err_log_err_addr_dma2 <= 44'h0;// Not sure what to log??; | |
1491 | end else if( tx_cs_nack_pref_dma2) begin | |
1492 | err_logh_err_code_dma2 <= `ERR_CODE_NACK_PREF; | |
1493 | err_log_err_addr_dma2 <= txpref_nack_rd_addr; | |
1494 | end else if( tx_cs_nack_pkt_rd_dma2 ) begin | |
1495 | err_logh_err_code_dma2 <= `ERR_CODE_NACK_PKT_RD; | |
1496 | err_log_err_addr_dma2 <= txc_dmc_nack_pkt_rd_addr; | |
1497 | end else if(tx_cs_conf_part_err_dma2 ) begin | |
1498 | err_logh_err_code_dma2 <= `ERR_CODE_CONF_PART_ERR; | |
1499 | err_log_err_addr_dma2 <= set_mbox_part_error_dma2 ? {tx_dma_cfg_dma2_mbaddr, 6'h0}: {tx_rng_cfg_dma2_staddr,6'h0} ; | |
1500 | end else if(tx_cs_pkt_part_err_dma2) begin | |
1501 | err_logh_err_code_dma2 <= `ERR_CODE_PKT_PART_ERR; | |
1502 | err_log_err_addr_dma2 <=pkt_part_error_address_dma2 ; | |
1503 | end | |
1504 | end // if (!err_logh_merr_dma2) | |
1505 | ||
1506 | // TXCS_ Error logic | |
1507 | // DMA2 | |
1508 | assign set_dma2_error = (set_pref_buf_par_err_dma2|set_pkt_part_err_dma2); | |
1509 | always @(posedge SysClk ) | |
1510 | if (!Reset_L) begin | |
1511 | dmc_txc_dma2_error <= 1'b0; | |
1512 | end else begin | |
1513 | if(dma2_clear_reset) dmc_txc_dma2_error <= 1'b0; | |
1514 | else dmc_txc_dma2_error <= ( ((| tx_cs_dma2_err) | set_dma2_error)); | |
1515 | ||
1516 | end | |
1517 | assign tx_cs_dma2_err = {tx_cs_mbox_error_dma2, tx_cs_pkt_size_error_dma2, tx_cs_tx_ring_oflow_dma2, tx_cs_pref_buf_par_err_dma2, | |
1518 | tx_cs_nack_pref_dma2, tx_cs_nack_pkt_rd_dma2, tx_cs_conf_part_err_dma2, tx_cs_pkt_part_err_dma2 } ; | |
1519 | ||
1520 | assign tx_dma2_pre_st = {45'h0,3'h0,ShadowRingCurrentPtr_DMA2_d}; | |
1521 | assign tx_dma2_rng_err_logh = {32'h0,err_logh_err_dma2,err_logh_merr_dma2,err_logh_err_code_dma2,15'h0,err_log_err_addr_dma2[43:32] }; | |
1522 | assign tx_dma2_rng_err_logl = {32'h0,err_log_err_addr_dma2[31:0]}; | |
1523 | assign tx_cs_dma2 = { 4'h0, tx_cs_pkt_cnt_dma2, 4'h0, tx_cs_lastmark_dma2, tx_dma_cfg_dma2_rst, tx_dma_cfg_dma2_stall, | |
1524 | tx_cfg_dma2_enable_mb, tx_dma_cfg_dma2_stop,tx_dma_cfg_dma2_stop_state,11'h0, tx_cfg_dma2_mk, tx_cfg_dma2_mmk, 6'h0, tx_cs_dma2_err }; | |
1525 | ||
1526 | ||
1527 | // DMA3 | |
1528 | // setting various error bits-- | |
1529 | always @(posedge SysClk ) | |
1530 | if (!Reset_L) begin | |
1531 | tx_cs_tx_ring_oflow_dma3 <= 1'b0; | |
1532 | end else begin | |
1533 | // setting take precedence | |
1534 | if(slaveStrobe & write_DMA3_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} == `TXDMA_INTR_DBG_DMA3)) | |
1535 | tx_cs_tx_ring_oflow_dma3 <= Slave_DataIn[5]; | |
1536 | else if(set_tx_ring_oflow_dma3) | |
1537 | tx_cs_tx_ring_oflow_dma3 <= 1'b1; | |
1538 | else if(dma3_clear_reset) | |
1539 | tx_cs_tx_ring_oflow_dma3 <= 1'b0; | |
1540 | end // else: !if(!Reset_L) | |
1541 | ||
1542 | ||
1543 | always @(posedge SysClk ) | |
1544 | if (!Reset_L) begin | |
1545 | tx_cs_pkt_size_error_dma3 <= 1'b0; | |
1546 | end else begin | |
1547 | // setting take precedence | |
1548 | if(slaveStrobe & write_DMA3_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} ==`TXDMA_INTR_DBG_DMA3 ) ) | |
1549 | tx_cs_pkt_size_error_dma3 <= Slave_DataIn[6]; | |
1550 | else if(txc_dmc_dma3_pkt_size_err & txc_dmc_pkt_size_err ) | |
1551 | tx_cs_pkt_size_error_dma3 <= 1'b1; | |
1552 | else if(dma3_clear_reset) | |
1553 | tx_cs_pkt_size_error_dma3 <= 1'b0; | |
1554 | end // else: !if(!Reset_L) | |
1555 | ||
1556 | ||
1557 | always @(posedge SysClk ) | |
1558 | if (!Reset_L) begin | |
1559 | tx_cs_nack_pkt_rd_dma3 <= 1'b0; | |
1560 | end else begin | |
1561 | // setting take precedence | |
1562 | if(slaveStrobe & write_DMA3_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} ==`TXDMA_INTR_DBG_DMA3) ) | |
1563 | tx_cs_nack_pkt_rd_dma3 <= Slave_DataIn[2]; | |
1564 | else if(txc_dmc_dma3_nack_pkt_rd & txc_dmc_nack_pkt_rd) | |
1565 | tx_cs_nack_pkt_rd_dma3 <= 1'b1; | |
1566 | else if(dma3_clear_reset) | |
1567 | tx_cs_nack_pkt_rd_dma3 <= 1'b0; | |
1568 | end // else: !if(!Reset_L) | |
1569 | ||
1570 | ||
1571 | always @(posedge SysClk ) | |
1572 | if (!Reset_L) begin | |
1573 | tx_cs_mbox_error_dma3 <= 1'b0; | |
1574 | end else begin | |
1575 | // setting take precedence | |
1576 | if(slaveStrobe & write_DMA3_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} ==`TXDMA_INTR_DBG_DMA3) ) | |
1577 | tx_cs_mbox_error_dma3<= Slave_DataIn[7]; | |
1578 | else if(mbox_ack_dma3_err_received & mbox_err_received) | |
1579 | tx_cs_mbox_error_dma3 <= 1'b1; | |
1580 | else if(dma3_clear_reset) | |
1581 | tx_cs_mbox_error_dma3 <= 1'b0; | |
1582 | end // else: !if(!Reset_L) | |
1583 | ||
1584 | always @(posedge SysClk ) | |
1585 | if (!Reset_L) begin | |
1586 | tx_cs_nack_pref_dma3<= 1'b0; | |
1587 | end else begin | |
1588 | // setting take precedence | |
1589 | if(slaveStrobe & write_DMA3_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} ==`TXDMA_INTR_DBG_DMA3)) | |
1590 | tx_cs_nack_pref_dma3<= Slave_DataIn[3]; | |
1591 | else if(txpref_dma3_nack_resp & txpref_nack_resp) | |
1592 | tx_cs_nack_pref_dma3 <= 1'b1; | |
1593 | else if(dma3_clear_reset) | |
1594 | tx_cs_nack_pref_dma3 <= 1'b0; | |
1595 | end // else: !if(!Reset_L) | |
1596 | ||
1597 | always @(posedge SysClk ) | |
1598 | if (!Reset_L) begin | |
1599 | tx_cs_pref_buf_par_err_dma3 <= 1'b0; | |
1600 | end else begin | |
1601 | // setting take precedence | |
1602 | if(slaveStrobe & write_DMA3_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} ==`TXDMA_INTR_DBG_DMA3)) | |
1603 | tx_cs_pref_buf_par_err_dma3 <= Slave_DataIn[4]; | |
1604 | else if(set_pref_buf_par_err_dma3) | |
1605 | tx_cs_pref_buf_par_err_dma3 <= 1'b1; | |
1606 | else if(dma3_clear_reset) | |
1607 | tx_cs_pref_buf_par_err_dma3 <= 1'b0; | |
1608 | end // else: !if(!Reset_L) | |
1609 | ||
1610 | always @(posedge SysClk ) | |
1611 | if (!Reset_L) begin | |
1612 | tx_cs_conf_part_err_dma3 <= 1'b0; | |
1613 | end else begin | |
1614 | // setting take precedence | |
1615 | if(slaveStrobe & write_DMA3_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} ==`TXDMA_INTR_DBG_DMA3)) | |
1616 | tx_cs_conf_part_err_dma3<= Slave_DataIn[1]; | |
1617 | else if(set_conf_part_error_dma3 | set_mbox_part_error_dma3) | |
1618 | tx_cs_conf_part_err_dma3 <= 1'b1; | |
1619 | else if(dma3_clear_reset) | |
1620 | tx_cs_conf_part_err_dma3 <= 1'b0; | |
1621 | end // else: !if(!Reset_L) | |
1622 | ||
1623 | always @(posedge SysClk ) | |
1624 | if (!Reset_L) begin | |
1625 | tx_cs_pkt_part_err_dma3 <= 1'b0; | |
1626 | end else begin | |
1627 | // setting take precedence | |
1628 | if(slaveStrobe & write_DMA3_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} ==`TXDMA_INTR_DBG_DMA3) ) | |
1629 | tx_cs_pkt_part_err_dma3 <= Slave_DataIn[0]; | |
1630 | else if(set_pkt_part_err_dma3) | |
1631 | tx_cs_pkt_part_err_dma3 <= 1'b1; | |
1632 | else if(dma3_clear_reset) | |
1633 | tx_cs_pkt_part_err_dma3 <= 1'b0; | |
1634 | end // else: !if(!Reset_L) | |
1635 | ||
1636 | // pkt_cnt as part of TX Config register | |
1637 | always@(posedge SysClk ) begin | |
1638 | if (!Reset_L) begin | |
1639 | tx_cs_pkt_cnt_dma3 <= 12'h0; | |
1640 | end else if(dma3_clear_reset) begin | |
1641 | tx_cs_pkt_cnt_dma3 <= 12'h0; | |
1642 | end else if (slaveStrobe & write_DMA3_Register && ({Slave_Addr[8:3],(~Slave_Addr[2] & pio_clients_32b ) ,2'h0} == `TXDMA_CS_DBG_DMA3) ) begin | |
1643 | tx_cs_pkt_cnt_dma3 <= Slave_DataIn[59:48]; | |
1644 | end else if(txc_dmc_dma3_inc_pkt_cnt) begin | |
1645 | tx_cs_pkt_cnt_dma3 <= tx_cs_pkt_cnt_dma3 + 12'h1; | |
1646 | end // else: !if(!Reset_L) | |
1647 | end // always@ (posedge SysClk ) | |
1648 | ||
1649 | always@(posedge SysClk) begin | |
1650 | if(!Reset_L) begin | |
1651 | tx_cs_lastmark_dma3 <= 12'h0; | |
1652 | end else if(dma3_clear_reset) begin // if (!Reset_L) | |
1653 | tx_cs_lastmark_dma3 <= 12'h0; | |
1654 | end else if(txc_dmc_dma3_mark_bit) begin | |
1655 | tx_cs_lastmark_dma3 <= tx_cs_pkt_cnt_dma3; | |
1656 | end | |
1657 | end | |
1658 | ||
1659 | ||
1660 | assign set_dma3_error_logs = set_pref_buf_par_err_dma3 | set_pkt_part_err_dma3|( mbox_ack_dma3_err_received & mbox_err_received)| | |
1661 | (txpref_dma3_nack_resp & txpref_nack_resp) | (set_conf_part_error_dma3 | set_mbox_part_error_dma3) | |
1662 | | (txc_dmc_dma3_nack_pkt_rd & txc_dmc_nack_pkt_rd) | (txc_dmc_dma3_pkt_size_err & txc_dmc_pkt_size_err) | |
1663 | | set_tx_ring_oflow_dma3 ; | |
1664 | // Error log associated with the errors | |
1665 | always @(posedge SysClk ) | |
1666 | if (!Reset_L) begin | |
1667 | err_logh_err_dma3 <= 1'b0; | |
1668 | err_logh_err_dma3_d <= 1'b0; | |
1669 | err_logh_merr_dma3 <= 1'b0; | |
1670 | end else begin | |
1671 | err_logh_err_dma3_d <= err_logh_err_dma3; | |
1672 | if( set_dma3_error_logs) begin | |
1673 | err_logh_err_dma3 <= 1'b1; | |
1674 | // may need another term here -- TOADS | |
1675 | err_logh_merr_dma3 <= ( err_logh_err_dma3) ? 1'b1: 1'b0; | |
1676 | end // if (| tx_cs_dma3_err ) | |
1677 | else if(dma3_clear_reset) begin | |
1678 | err_logh_err_dma3 <= 1'b0; | |
1679 | err_logh_merr_dma3 <= 1'b0; | |
1680 | end // if (dma3_clear_reset) | |
1681 | end // else: !if(!Reset_L) | |
1682 | // Error code and Error address | |
1683 | always @(posedge SysClk ) | |
1684 | if (!Reset_L) begin | |
1685 | err_logh_err_code_dma3 <= 3'h0; | |
1686 | err_log_err_addr_dma3 <= 44'h0; | |
1687 | end else if(dma3_clear_reset) begin | |
1688 | err_logh_err_code_dma3 <= 3'h0; | |
1689 | err_log_err_addr_dma3 <= 44'h0; | |
1690 | end else if(~err_logh_err_dma3_d & err_logh_err_dma3) begin | |
1691 | if(tx_cs_pkt_size_error_dma3 ) begin | |
1692 | err_logh_err_code_dma3 <= `ERR_CODE_PKT_SIZE_ERR; | |
1693 | err_log_err_addr_dma3 <= txc_dmc_pkt_size_err_addr_dma3; | |
1694 | end else if(tx_cs_pref_buf_par_err_dma3 ) begin | |
1695 | err_logh_err_code_dma3 <= `ERR_CODE_PREF_BUF_PAR_ERR; | |
1696 | err_log_err_addr_dma3 <= 44'h0;// Not sure what to log??; | |
1697 | end else if(tx_cs_tx_ring_oflow_dma3 ) begin | |
1698 | err_logh_err_code_dma3 <= `ERR_CODE_TX_RING_OFLOW; | |
1699 | err_log_err_addr_dma3 <= 44'h0;// Not sure what to log??; | |
1700 | end else if( tx_cs_nack_pref_dma3) begin | |
1701 | err_logh_err_code_dma3 <= `ERR_CODE_NACK_PREF; | |
1702 | err_log_err_addr_dma3 <= txpref_nack_rd_addr; | |
1703 | end else if( tx_cs_nack_pkt_rd_dma3 ) begin | |
1704 | err_logh_err_code_dma3 <= `ERR_CODE_NACK_PKT_RD; | |
1705 | err_log_err_addr_dma3 <= txc_dmc_nack_pkt_rd_addr; | |
1706 | end else if(tx_cs_conf_part_err_dma3 ) begin | |
1707 | err_logh_err_code_dma3 <= `ERR_CODE_CONF_PART_ERR; | |
1708 | err_log_err_addr_dma3 <= set_mbox_part_error_dma3 ? {tx_dma_cfg_dma3_mbaddr, 6'h0}: {tx_rng_cfg_dma3_staddr,6'h0} ; | |
1709 | end else if(tx_cs_pkt_part_err_dma3) begin | |
1710 | err_logh_err_code_dma3 <= `ERR_CODE_PKT_PART_ERR; | |
1711 | err_log_err_addr_dma3 <=pkt_part_error_address_dma3 ; | |
1712 | end | |
1713 | end // if (!err_logh_merr_dma3) | |
1714 | ||
1715 | // TXCS_ Error logic | |
1716 | // DMA3 | |
1717 | assign set_dma3_error = (set_pref_buf_par_err_dma3|set_pkt_part_err_dma3); | |
1718 | ||
1719 | always @(posedge SysClk ) | |
1720 | if (!Reset_L) begin | |
1721 | dmc_txc_dma3_error <= 1'b0; | |
1722 | end else begin | |
1723 | if(dma3_clear_reset) dmc_txc_dma3_error <= 1'b0; | |
1724 | else dmc_txc_dma3_error <= ( ((| tx_cs_dma3_err) | set_dma3_error)); | |
1725 | end | |
1726 | assign tx_cs_dma3_err = {tx_cs_mbox_error_dma3, tx_cs_pkt_size_error_dma3, tx_cs_tx_ring_oflow_dma3, tx_cs_pref_buf_par_err_dma3, | |
1727 | tx_cs_nack_pref_dma3, tx_cs_nack_pkt_rd_dma3, tx_cs_conf_part_err_dma3, tx_cs_pkt_part_err_dma3 } ; | |
1728 | ||
1729 | assign tx_dma3_pre_st = {45'h0,3'h0,ShadowRingCurrentPtr_DMA3_d}; | |
1730 | assign tx_dma3_rng_err_logh = {32'h0,err_logh_err_dma3,err_logh_merr_dma3,err_logh_err_code_dma3,15'h0,err_log_err_addr_dma3[43:32] }; | |
1731 | assign tx_dma3_rng_err_logl = {32'h0,err_log_err_addr_dma3[31:0]}; | |
1732 | assign tx_cs_dma3 = { 4'h0, tx_cs_pkt_cnt_dma3, 4'h0, tx_cs_lastmark_dma3, tx_dma_cfg_dma3_rst, tx_dma_cfg_dma3_stall, | |
1733 | tx_cfg_dma3_enable_mb,tx_dma_cfg_dma3_stop,tx_dma_cfg_dma3_stop_state,11'h0 , tx_cfg_dma3_mk, tx_cfg_dma3_mmk, 6'h0, tx_cs_dma3_err }; | |
1734 | ||
1735 | ||
1736 | ||
1737 | ||
1738 | ||
1739 | ||
1740 | // ERROR STATUS | |
1741 | ||
1742 | ||
1743 | ||
1744 | // Hardware/Software RW registers- | |
1745 | // DMA_0 | |
1746 | ||
1747 | always @ (posedge SysClk ) | |
1748 | if (!Reset_L) | |
1749 | begin | |
1750 | tx_dma_cfg_dma0_rst <=1'b0; | |
1751 | tx_dma_cfg_dma0_stall <=1'b1; | |
1752 | tx_dma_cfg_dma0_stop <= 1'b0; | |
1753 | ||
1754 | end // if (!Reset_L) | |
1755 | else if(dma0_clear_reset) begin | |
1756 | tx_dma_cfg_dma0_rst <=1'b0; | |
1757 | tx_dma_cfg_dma0_stall <= 1'b1; | |
1758 | end else if (slaveStrobe & write_DMA0_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} == `TXDMA_CS_DMA0) ) | |
1759 | begin | |
1760 | tx_dma_cfg_dma0_rst <= Slave_DataIn[31]; | |
1761 | tx_dma_cfg_dma0_stall<= Slave_DataIn[30]; | |
1762 | tx_dma_cfg_dma0_stop <= Slave_DataIn[28]; | |
1763 | ||
1764 | end // if (write_DMA0_Register) | |
1765 | ||
1766 | ||
1767 | ||
1768 | always @ (posedge SysClk ) | |
1769 | if (!Reset_L) | |
1770 | begin | |
1771 | tx_cfg_dma0_mk <= 1'b0; | |
1772 | end else begin // if (!Reset_L) | |
1773 | if(set_cfg_dma0_mk) begin | |
1774 | tx_cfg_dma0_mk <= 1'b1; | |
1775 | end else if(tx_cs_read_dma0_3[0]) begin | |
1776 | tx_cfg_dma0_mk <= 1'b0; | |
1777 | end else if (slaveStrobe & write_DMA0_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} == `TXDMA_CS_DMA0) ) begin | |
1778 | if(tx_cfg_dma0_mmk & Slave_DataIn[15]) begin | |
1779 | tx_cfg_dma0_mk <= Slave_DataIn[15]; | |
1780 | end // if (tx_cfg_dma0_mmk & Slave_DataIn[15]) | |
1781 | else if(Slave_DataIn[15]) | |
1782 | tx_cfg_dma0_mk <= 1'b0; | |
1783 | end else if(slaveStrobe & write_DMA0_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} ==`TXDMA_INTR_DBG_DMA0)) begin | |
1784 | tx_cfg_dma0_mk <= Slave_DataIn[15]; | |
1785 | end | |
1786 | end // else: !if(!Reset_L) | |
1787 | ||
1788 | always @ (posedge SysClk ) | |
1789 | if (!Reset_L) | |
1790 | begin | |
1791 | tx_cfg_dma0_mmk <= 1'b0; | |
1792 | end else begin // if (!Reset_L) | |
1793 | if(set_cfg_dma0_mmk) begin | |
1794 | tx_cfg_dma0_mmk <= 1'b1; | |
1795 | end else if(tx_cs_read_dma0_3[0]) begin | |
1796 | tx_cfg_dma0_mmk <= 1'b0; | |
1797 | end else if (slaveStrobe & write_DMA0_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} == `TXDMA_CS_DMA0) ) begin | |
1798 | if(tx_cfg_dma0_mmk & Slave_DataIn[15]) begin | |
1799 | tx_cfg_dma0_mmk <= 1'b0; | |
1800 | end // if (tx_cfg_dma0_mmk & Slave_DataIn[15]) | |
1801 | end | |
1802 | end // else: !if(!Reset_L) | |
1803 | ||
1804 | always @ (posedge SysClk ) | |
1805 | if (!Reset_L) | |
1806 | begin | |
1807 | tx_cfg_dma0_enable_mb <= 1'b0; | |
1808 | end else begin // if (!Reset_L) | |
1809 | if (slaveStrobe & write_DMA0_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} == `TXDMA_CS_DMA0) ) begin | |
1810 | tx_cfg_dma0_enable_mb <= Slave_DataIn[29]; | |
1811 | end else begin | |
1812 | tx_cfg_dma0_enable_mb <= clear_cfg_dma0_mb ? 1'b0 : tx_cfg_dma0_enable_mb; | |
1813 | end // if (clear_cfg_dma0_mb) | |
1814 | end // else: !if(!Reset_L) | |
1815 | ||
1816 | ||
1817 | ||
1818 | // DMA_1 | |
1819 | ||
1820 | always @ (posedge SysClk ) | |
1821 | if (!Reset_L) | |
1822 | begin | |
1823 | tx_dma_cfg_dma1_rst <=1'b0; | |
1824 | tx_dma_cfg_dma1_stall <=1'b1; | |
1825 | tx_dma_cfg_dma1_stop <= 1'b0; | |
1826 | ||
1827 | end // if (!Reset_L) | |
1828 | else if(dma1_clear_reset) begin | |
1829 | tx_dma_cfg_dma1_rst <=1'b0; | |
1830 | tx_dma_cfg_dma1_stall <= 1'b1; | |
1831 | end else if (slaveStrobe & write_DMA1_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} == `TXDMA_CS_DMA1) ) | |
1832 | begin | |
1833 | tx_dma_cfg_dma1_rst <= Slave_DataIn[31]; | |
1834 | tx_dma_cfg_dma1_stall<= Slave_DataIn[30]; | |
1835 | tx_dma_cfg_dma1_stop <= Slave_DataIn[28]; | |
1836 | ||
1837 | end // if (write_DMA1_Register) | |
1838 | always @ (posedge SysClk ) | |
1839 | if (!Reset_L) | |
1840 | begin | |
1841 | tx_cfg_dma1_mk <= 1'b0; | |
1842 | end else begin // if (!Reset_L) | |
1843 | if(set_cfg_dma1_mk) begin | |
1844 | tx_cfg_dma1_mk <= 1'b1; | |
1845 | end else if(tx_cs_read_dma0_3[1]) begin | |
1846 | tx_cfg_dma1_mk <= 1'b0; | |
1847 | end else if (slaveStrobe & write_DMA1_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} == `TXDMA_CS_DMA1) ) begin | |
1848 | if(tx_cfg_dma1_mmk & Slave_DataIn[15]) begin | |
1849 | tx_cfg_dma1_mk <= Slave_DataIn[15]; | |
1850 | end // if (tx_cfg_dma1_mmk & Slave_DataIn[15]) | |
1851 | else if(Slave_DataIn[15]) | |
1852 | tx_cfg_dma1_mk <= 1'b0; | |
1853 | end else if(slaveStrobe & write_DMA1_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} ==`TXDMA_INTR_DBG_DMA1)) begin | |
1854 | tx_cfg_dma1_mk <= Slave_DataIn[15]; | |
1855 | end | |
1856 | end // else: !if(!Reset_L) | |
1857 | ||
1858 | always @ (posedge SysClk ) | |
1859 | if (!Reset_L) | |
1860 | begin | |
1861 | tx_cfg_dma1_mmk <= 1'b0; | |
1862 | end else begin // if (!Reset_L) | |
1863 | if(set_cfg_dma1_mmk) begin | |
1864 | tx_cfg_dma1_mmk <= 1'b1; | |
1865 | end else if(tx_cs_read_dma0_3[1]) begin | |
1866 | tx_cfg_dma1_mmk <= 1'b0; | |
1867 | end else if (slaveStrobe & write_DMA1_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} == `TXDMA_CS_DMA1) ) begin | |
1868 | if(tx_cfg_dma1_mmk & Slave_DataIn[15]) begin | |
1869 | tx_cfg_dma1_mmk <= 1'b0; | |
1870 | end // if (tx_cfg_dma1_mmk & Slave_DataIn[15]) | |
1871 | end | |
1872 | end // else: !if(!Reset_L) | |
1873 | ||
1874 | always @ (posedge SysClk ) | |
1875 | if (!Reset_L) | |
1876 | begin | |
1877 | tx_cfg_dma1_enable_mb <= 1'b0; | |
1878 | end else begin // if (!Reset_L) | |
1879 | if (slaveStrobe & write_DMA1_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} == `TXDMA_CS_DMA1) ) begin | |
1880 | tx_cfg_dma1_enable_mb <= Slave_DataIn[29]; | |
1881 | end else begin | |
1882 | tx_cfg_dma1_enable_mb <= clear_cfg_dma1_mb ? 1'b0 : tx_cfg_dma1_enable_mb; | |
1883 | end // if (clear_cfg_dma1_mb) | |
1884 | end // else: !if(!Reset_L) | |
1885 | ||
1886 | ||
1887 | ||
1888 | // DMA_2 | |
1889 | ||
1890 | always @ (posedge SysClk ) | |
1891 | if (!Reset_L) | |
1892 | begin | |
1893 | tx_dma_cfg_dma2_rst <=1'b0; | |
1894 | tx_dma_cfg_dma2_stall <=1'b1; | |
1895 | tx_dma_cfg_dma2_stop <= 1'b0; | |
1896 | ||
1897 | end // if (!Reset_L) | |
1898 | else if(dma2_clear_reset) begin | |
1899 | tx_dma_cfg_dma2_rst <=1'b0; | |
1900 | tx_dma_cfg_dma2_stall <= 1'b1; | |
1901 | end else if (slaveStrobe & write_DMA2_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} == `TXDMA_CS_DMA2) ) | |
1902 | begin | |
1903 | tx_dma_cfg_dma2_rst <= Slave_DataIn[31]; | |
1904 | tx_dma_cfg_dma2_stall<= Slave_DataIn[30]; | |
1905 | tx_dma_cfg_dma2_stop <= Slave_DataIn[28]; | |
1906 | ||
1907 | end // if (write_DMA2_Register) | |
1908 | ||
1909 | ||
1910 | always @ (posedge SysClk ) | |
1911 | if (!Reset_L) | |
1912 | begin | |
1913 | tx_cfg_dma2_mk <= 1'b0; | |
1914 | end else begin // if (!Reset_L) | |
1915 | if(set_cfg_dma2_mk) begin | |
1916 | tx_cfg_dma2_mk <= 1'b1; | |
1917 | end else if(tx_cs_read_dma0_3[2]) begin | |
1918 | tx_cfg_dma2_mk <= 1'b0; | |
1919 | end else if (slaveStrobe & write_DMA2_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} == `TXDMA_CS_DMA2) ) begin | |
1920 | if(tx_cfg_dma2_mmk & Slave_DataIn[15]) begin | |
1921 | tx_cfg_dma2_mk <= Slave_DataIn[15]; | |
1922 | end // if (tx_cfg_dma2_mmk & Slave_DataIn[15]) | |
1923 | else if(Slave_DataIn[15]) | |
1924 | tx_cfg_dma2_mk <= 1'b0; | |
1925 | end else if(slaveStrobe & write_DMA2_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} ==`TXDMA_INTR_DBG_DMA2)) begin | |
1926 | tx_cfg_dma2_mk <= Slave_DataIn[15]; | |
1927 | end | |
1928 | end // else: !if(!Reset_L) | |
1929 | ||
1930 | always @ (posedge SysClk ) | |
1931 | if (!Reset_L) | |
1932 | begin | |
1933 | tx_cfg_dma2_mmk <= 1'b0; | |
1934 | end else begin // if (!Reset_L) | |
1935 | if(set_cfg_dma2_mmk) begin | |
1936 | tx_cfg_dma2_mmk <= 1'b1; | |
1937 | end else if(tx_cs_read_dma0_3[2]) begin | |
1938 | tx_cfg_dma2_mmk <= 1'b0; | |
1939 | end else if (slaveStrobe & write_DMA2_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} == `TXDMA_CS_DMA2) ) begin | |
1940 | if(tx_cfg_dma2_mmk & Slave_DataIn[15]) begin | |
1941 | tx_cfg_dma2_mmk <= 1'b0; | |
1942 | end // if (tx_cfg_dma2_mmk & Slave_DataIn[15]) | |
1943 | end | |
1944 | end // else: !if(!Reset_L) | |
1945 | ||
1946 | always @ (posedge SysClk ) | |
1947 | if (!Reset_L) | |
1948 | begin | |
1949 | tx_cfg_dma2_enable_mb <= 1'b0; | |
1950 | end else begin // if (!Reset_L) | |
1951 | if (slaveStrobe & write_DMA2_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} == `TXDMA_CS_DMA2) ) begin | |
1952 | tx_cfg_dma2_enable_mb <= Slave_DataIn[29]; | |
1953 | end else begin | |
1954 | tx_cfg_dma2_enable_mb <= clear_cfg_dma2_mb ? 1'b0 : tx_cfg_dma2_enable_mb; | |
1955 | end // if (clear_cfg_dma2_mb) | |
1956 | end // else: !if(!Reset_L) | |
1957 | ||
1958 | ||
1959 | // DMA_3 | |
1960 | ||
1961 | always @ (posedge SysClk ) | |
1962 | if (!Reset_L) | |
1963 | begin | |
1964 | tx_dma_cfg_dma3_rst <=1'b0; | |
1965 | tx_dma_cfg_dma3_stall <=1'b1; | |
1966 | tx_dma_cfg_dma3_stop <= 1'b0; | |
1967 | ||
1968 | end // if (!Reset_L) | |
1969 | else if(dma3_clear_reset) begin | |
1970 | tx_dma_cfg_dma3_rst <=1'b0; | |
1971 | tx_dma_cfg_dma3_stall <= 1'b1; | |
1972 | end else if (slaveStrobe & write_DMA3_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} == `TXDMA_CS_DMA3) ) | |
1973 | begin | |
1974 | tx_dma_cfg_dma3_rst <= Slave_DataIn[31]; | |
1975 | tx_dma_cfg_dma3_stall<= Slave_DataIn[30]; | |
1976 | tx_dma_cfg_dma3_stop <= Slave_DataIn[28]; | |
1977 | ||
1978 | end // if (write_DMA3_Register) | |
1979 | ||
1980 | always @ (posedge SysClk ) | |
1981 | if (!Reset_L) | |
1982 | begin | |
1983 | tx_cfg_dma3_mk <= 1'b0; | |
1984 | end else begin // if (!Reset_L) | |
1985 | if(set_cfg_dma3_mk) begin | |
1986 | tx_cfg_dma3_mk <= 1'b1; | |
1987 | end else if(tx_cs_read_dma0_3[3]) begin | |
1988 | tx_cfg_dma3_mk <= 1'b0; | |
1989 | end else if (slaveStrobe & write_DMA3_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} == `TXDMA_CS_DMA3) ) begin | |
1990 | if(tx_cfg_dma3_mmk & Slave_DataIn[15]) begin | |
1991 | tx_cfg_dma3_mk <= Slave_DataIn[15]; | |
1992 | end // if (tx_cfg_dma3_mmk & Slave_DataIn[15]) | |
1993 | else if(Slave_DataIn[15]) | |
1994 | tx_cfg_dma3_mk <= 1'b0; | |
1995 | end else if(slaveStrobe & write_DMA3_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} ==`TXDMA_INTR_DBG_DMA3)) begin | |
1996 | tx_cfg_dma3_mk <= Slave_DataIn[15]; | |
1997 | end | |
1998 | end // else: !if(!Reset_L) | |
1999 | ||
2000 | always @ (posedge SysClk ) | |
2001 | if (!Reset_L) | |
2002 | begin | |
2003 | tx_cfg_dma3_mmk <= 1'b0; | |
2004 | end else begin // if (!Reset_L) | |
2005 | if(set_cfg_dma3_mmk) begin | |
2006 | tx_cfg_dma3_mmk <= 1'b1; | |
2007 | end else if(tx_cs_read_dma0_3[3]) begin | |
2008 | tx_cfg_dma3_mmk <= 1'b0; | |
2009 | end else if (slaveStrobe & write_DMA3_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} == `TXDMA_CS_DMA3) ) begin | |
2010 | if(tx_cfg_dma3_mmk & Slave_DataIn[15]) begin | |
2011 | tx_cfg_dma3_mmk <= 1'b0; | |
2012 | end // if (tx_cfg_dma3_mmk & Slave_DataIn[15]) | |
2013 | end | |
2014 | end // else: !if(!Reset_L) | |
2015 | ||
2016 | always @ (posedge SysClk ) | |
2017 | if (!Reset_L) | |
2018 | begin | |
2019 | tx_cfg_dma3_enable_mb <= 1'b0; | |
2020 | end else begin // if (!Reset_L) | |
2021 | if (slaveStrobe & write_DMA3_Register && ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0} == `TXDMA_CS_DMA3) ) begin | |
2022 | tx_cfg_dma3_enable_mb <= Slave_DataIn[29]; | |
2023 | end else begin | |
2024 | tx_cfg_dma3_enable_mb <= clear_cfg_dma3_mb ? 1'b0 : tx_cfg_dma3_enable_mb; | |
2025 | end // if (clear_cfg_dma3_mb) | |
2026 | end // else: !if(!Reset_L) | |
2027 | ||
2028 | ||
2029 | ||
2030 | // PIOS | |
2031 | always @ (posedge SysClk ) | |
2032 | if (!Reset_L) | |
2033 | begin | |
2034 | tx_rng_cfg_dma0_len <= `RNG_LENGTH_WIDTH'h0; | |
2035 | tx_rng_cfg_dma0_staddr <= 38'h0; | |
2036 | tx_rng_tail_dma0 <=`PTR_WIDTH_PLUS1'h0; | |
2037 | ||
2038 | tx_ent_mask_ldf0_dma0 <= 1'b1; | |
2039 | tx_ent_mask_ldf1_dma0 <= 8'hff; | |
2040 | tx_dma_cfg_dma0_mbaddr <= 38'h0; | |
2041 | `ifdef NEPTUNE | |
2042 | tx_rng_cfg_dma0_shadow_written <= 1'b0; | |
2043 | `else // !ifdef NEPTUNE | |
2044 | `endif // !ifdef NEPTUNE | |
2045 | ||
2046 | ||
2047 | end // if (!Reset_L) | |
2048 | else if (write_DMA0_Register) | |
2049 | begin | |
2050 | ||
2051 | `ifdef NEPTUNE | |
2052 | ||
2053 | case ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b), 2'h0}) // synopsys parallel_case | |
2054 | ||
2055 | `TXDMA_RNG_CFIG_DMA0: begin | |
2056 | ||
2057 | if(pio_clients_32b) begin | |
2058 | tx_rng_cfg_dma0_shadow[31:0] <= Slave_DataIn[31:0]; | |
2059 | tx_rng_cfg_dma0_shadow_written <= 1'b1; | |
2060 | end else begin // 64 bit mode | |
2061 | tx_rng_cfg_dma0_len <= Slave_DataIn[`RNG_LENGTH_WIDTH -1 + 48 :48]; | |
2062 | tx_rng_cfg_dma0_staddr <= Slave_DataIn[43:6]; | |
2063 | end // else: !if(pio_clients_32b) | |
2064 | end | |
2065 | ||
2066 | `TXDMA_RNG_CFIG_DMA0_H: begin | |
2067 | // This condition will never happen in 64 bit mode | |
2068 | if(pio_clients_32b) begin | |
2069 | if(tx_rng_cfg_dma0_shadow_written) begin | |
2070 | tx_rng_cfg_dma0_len <= Slave_DataIn[`RNG_LENGTH_WIDTH -1 + 16 :16]; | |
2071 | tx_rng_cfg_dma0_staddr <= { Slave_DataIn[11:0],tx_rng_cfg_dma0_shadow[31:6] }; | |
2072 | tx_rng_cfg_dma0_shadow_written <= 1'b0; | |
2073 | end // else: !if(tx_rng_cfg_dma0_shadow_written) | |
2074 | end // if (pio_clients_32b) | |
2075 | end | |
2076 | ||
2077 | ||
2078 | ||
2079 | `else | |
2080 | case ({Slave_Addr[8:3],3'h0}) // synopsys parallel_case | |
2081 | `TXDMA_RNG_CFIG_DMA0: begin | |
2082 | tx_rng_cfg_dma0_len <= Slave_DataIn[`RNG_LENGTH_WIDTH -1 + 48 :48]; | |
2083 | tx_rng_cfg_dma0_staddr <= Slave_DataIn[43:6]; | |
2084 | end | |
2085 | ||
2086 | `endif | |
2087 | `TXDMA_MBH_DMA0: tx_dma_cfg_dma0_mbaddr[37:26]<= Slave_DataIn[11:0]; | |
2088 | `TXDMA_MBL_DMA0: tx_dma_cfg_dma0_mbaddr[25:0]<= Slave_DataIn[31:6]; | |
2089 | `TXDMA_RING_KICK_DMA0: tx_rng_tail_dma0 <= Slave_DataIn[`PTR_WIDTH + 3 :3]; | |
2090 | ||
2091 | `TXDMA_ENT_MASK_DMA0 : begin | |
2092 | tx_ent_mask_ldf0_dma0 <= Slave_DataIn[15]; | |
2093 | tx_ent_mask_ldf1_dma0 <= Slave_DataIn[7:0]; | |
2094 | end | |
2095 | ||
2096 | ||
2097 | endcase | |
2098 | end // if (write_DMA0_Register) | |
2099 | ||
2100 | always @ (posedge SysClk ) | |
2101 | if (!Reset_L) | |
2102 | begin | |
2103 | page0_mask_dma0 <= 32'h0; | |
2104 | page0_value_dma0 <= 32'h0; | |
2105 | page0_reloc_dma0 <= 32'h0; | |
2106 | page0_valid_dma0 <= 1'b0 ; | |
2107 | page1_mask_dma0 <= 32'h0; | |
2108 | page1_value_dma0 <= 32'h0; | |
2109 | page1_reloc_dma0 <= 32'h0; | |
2110 | page1_valid_dma0 <= 1'b0; | |
2111 | dmc_txc_dma0_page_handle <= 20'h0; | |
2112 | dmc_txc_dma0_func_num <= 2'h0; | |
2113 | ||
2114 | end // if (!Reset_L) | |
2115 | else if (write_FZC_DMA0_Register ) | |
2116 | begin | |
2117 | case ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0}) // synopsys parallel_case | |
2118 | `TXDMA_LOG_PAGE_VLD_DMA0: {dmc_txc_dma0_func_num,page1_valid_dma0,page0_valid_dma0} <= Slave_DataIn[3:0]; | |
2119 | `TXDMA_LOG_PAGE_MASK0_DMA0: page0_mask_dma0 <= Slave_DataIn[31:0]; | |
2120 | `TXDMA_LOG_PAGE_VALUE0_DMA0: page0_value_dma0 <= Slave_DataIn[31:0]; | |
2121 | `TXDMA_LOG_PAGE_MASK1_DMA0: page1_mask_dma0 <= Slave_DataIn[31:0]; | |
2122 | `TXDMA_LOG_PAGE_VALUE1_DMA0: page1_value_dma0 <= Slave_DataIn[31:0]; | |
2123 | `TXDMA_LOG_PAGE_RELOC0_DMA0: page0_reloc_dma0 <= Slave_DataIn[31:0]; | |
2124 | `TXDMA_LOG_PAGE_RELOC1_DMA0: page1_reloc_dma0 <= Slave_DataIn[31:0]; | |
2125 | `TXDMA_LOG_PAGE_HANDLE_DMA0: dmc_txc_dma0_page_handle <= Slave_DataIn[19:0]; | |
2126 | endcase | |
2127 | end // if (write_FZC_DMA0_Register) | |
2128 | ||
2129 | always @ (posedge SysClk ) | |
2130 | if (!Reset_L) | |
2131 | begin | |
2132 | tx_rng_cfg_dma1_len <= `RNG_LENGTH_WIDTH'h0; | |
2133 | tx_rng_cfg_dma1_staddr <= 38'h0; | |
2134 | tx_rng_tail_dma1 <=`PTR_WIDTH_PLUS1'h0; | |
2135 | ||
2136 | tx_ent_mask_ldf0_dma1 <= 1'b1; | |
2137 | tx_ent_mask_ldf1_dma1 <= 8'hff; | |
2138 | ||
2139 | tx_dma_cfg_dma1_mbaddr <= 38'h0; | |
2140 | `ifdef NEPTUNE | |
2141 | tx_rng_cfg_dma1_shadow_written <= 1'b0; | |
2142 | `else // !ifdef NEPTUNE | |
2143 | `endif // !ifdef NEPTUNE | |
2144 | ||
2145 | ||
2146 | end // if (!Reset_L) | |
2147 | else if (write_DMA1_Register) | |
2148 | begin | |
2149 | ||
2150 | `ifdef NEPTUNE | |
2151 | ||
2152 | case ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b), 2'h0}) // synopsys parallel_case | |
2153 | ||
2154 | `TXDMA_RNG_CFIG_DMA1: begin | |
2155 | ||
2156 | if(pio_clients_32b) begin | |
2157 | tx_rng_cfg_dma1_shadow[31:0] <= Slave_DataIn[31:0]; | |
2158 | tx_rng_cfg_dma1_shadow_written <= 1'b1; | |
2159 | end else begin // 64 bit mode | |
2160 | tx_rng_cfg_dma1_len <= Slave_DataIn[`RNG_LENGTH_WIDTH -1 + 48 :48]; | |
2161 | tx_rng_cfg_dma1_staddr <= Slave_DataIn[43:6]; | |
2162 | end // else: !if(pio_clients_32b) | |
2163 | end | |
2164 | ||
2165 | `TXDMA_RNG_CFIG_DMA1_H: begin | |
2166 | // This condition will never happen in 64 bit mode | |
2167 | if(pio_clients_32b) begin | |
2168 | if(tx_rng_cfg_dma1_shadow_written) begin | |
2169 | tx_rng_cfg_dma1_len <= Slave_DataIn[`RNG_LENGTH_WIDTH -1 + 16:16]; | |
2170 | tx_rng_cfg_dma1_staddr <= { Slave_DataIn[11:0],tx_rng_cfg_dma1_shadow[31:6] }; | |
2171 | tx_rng_cfg_dma1_shadow_written <= 1'b0; | |
2172 | end // else: !if(tx_rng_cfg_dma1_shadow_written) | |
2173 | end // if (pio_clients_32b) | |
2174 | end | |
2175 | ||
2176 | ||
2177 | ||
2178 | `else | |
2179 | case ({Slave_Addr[8:3],3'h0}) // synopsys parallel_case | |
2180 | `TXDMA_RNG_CFIG_DMA1: begin | |
2181 | tx_rng_cfg_dma1_len <= Slave_DataIn[`RNG_LENGTH_WIDTH -1 + 48 :48]; | |
2182 | tx_rng_cfg_dma1_staddr <= Slave_DataIn[43:6]; | |
2183 | end | |
2184 | ||
2185 | `endif | |
2186 | `TXDMA_MBH_DMA1: tx_dma_cfg_dma1_mbaddr[37:26]<= Slave_DataIn[11:0]; | |
2187 | `TXDMA_MBL_DMA1: tx_dma_cfg_dma1_mbaddr[25:0]<= Slave_DataIn[31:6]; | |
2188 | `TXDMA_RING_KICK_DMA1: tx_rng_tail_dma1 <= Slave_DataIn[`PTR_WIDTH + 3:3]; | |
2189 | `TXDMA_ENT_MASK_DMA1 : begin | |
2190 | tx_ent_mask_ldf0_dma1 <= Slave_DataIn[15]; | |
2191 | tx_ent_mask_ldf1_dma1 <= Slave_DataIn[7:0]; | |
2192 | end | |
2193 | endcase | |
2194 | end // if (write_DMA1_Register) | |
2195 | ||
2196 | always @ (posedge SysClk ) | |
2197 | if (!Reset_L) | |
2198 | begin | |
2199 | page0_mask_dma1 <= 32'h0; | |
2200 | page0_value_dma1 <= 32'h0; | |
2201 | page0_reloc_dma1 <= 32'h0; | |
2202 | page0_valid_dma1 <= 1'b0 ; | |
2203 | page1_mask_dma1 <= 32'h0; | |
2204 | page1_value_dma1 <= 32'h0; | |
2205 | page1_reloc_dma1 <= 32'h0; | |
2206 | page1_valid_dma1 <= 1'b0; | |
2207 | dmc_txc_dma1_page_handle <= 20'h0; | |
2208 | dmc_txc_dma1_func_num <= 2'h0; | |
2209 | ||
2210 | end // if (!Reset_L) | |
2211 | else if (write_FZC_DMA1_Register ) | |
2212 | begin | |
2213 | case ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0}) // synopsys parallel_case | |
2214 | `TXDMA_LOG_PAGE_VLD_DMA1: {dmc_txc_dma1_func_num,page1_valid_dma1,page0_valid_dma1} <= Slave_DataIn[3:0]; | |
2215 | `TXDMA_LOG_PAGE_MASK0_DMA1: page0_mask_dma1 <= Slave_DataIn[31:0]; | |
2216 | `TXDMA_LOG_PAGE_VALUE0_DMA1: page0_value_dma1 <= Slave_DataIn[31:0]; | |
2217 | `TXDMA_LOG_PAGE_MASK1_DMA1: page1_mask_dma1 <= Slave_DataIn[31:0]; | |
2218 | `TXDMA_LOG_PAGE_VALUE1_DMA1: page1_value_dma1 <= Slave_DataIn[31:0]; | |
2219 | `TXDMA_LOG_PAGE_RELOC0_DMA1: page0_reloc_dma1 <= Slave_DataIn[31:0]; | |
2220 | `TXDMA_LOG_PAGE_RELOC1_DMA1: page1_reloc_dma1 <= Slave_DataIn[31:0]; | |
2221 | `TXDMA_LOG_PAGE_HANDLE_DMA1: dmc_txc_dma1_page_handle <= Slave_DataIn[19:0]; | |
2222 | endcase | |
2223 | end // if (write_FZC_DMA1_Register) | |
2224 | ||
2225 | always @ (posedge SysClk ) | |
2226 | if (!Reset_L) | |
2227 | begin | |
2228 | tx_rng_cfg_dma2_len <= `RNG_LENGTH_WIDTH'h0; | |
2229 | tx_rng_cfg_dma2_staddr <= 38'h0; | |
2230 | tx_rng_tail_dma2 <=`PTR_WIDTH_PLUS1'h0; | |
2231 | ||
2232 | tx_ent_mask_ldf0_dma2 <= 1'b1; | |
2233 | tx_ent_mask_ldf1_dma2 <= 8'hff; | |
2234 | ||
2235 | tx_dma_cfg_dma2_mbaddr <= 38'h0; | |
2236 | `ifdef NEPTUNE | |
2237 | tx_rng_cfg_dma2_shadow_written <= 1'b0; | |
2238 | `else // !ifdef NEPTUNE | |
2239 | `endif // !ifdef NEPTUNE | |
2240 | ||
2241 | end // if (!Reset_L) | |
2242 | else if (write_DMA2_Register) | |
2243 | begin | |
2244 | ||
2245 | `ifdef NEPTUNE | |
2246 | ||
2247 | case ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b), 2'h0}) // synopsys parallel_case | |
2248 | ||
2249 | `TXDMA_RNG_CFIG_DMA2: begin | |
2250 | ||
2251 | if(pio_clients_32b) begin | |
2252 | tx_rng_cfg_dma2_shadow[31:0] <= Slave_DataIn[31:0]; | |
2253 | tx_rng_cfg_dma2_shadow_written <= 1'b1; | |
2254 | end else begin // 64 bit mode | |
2255 | tx_rng_cfg_dma2_len <= Slave_DataIn[`RNG_LENGTH_WIDTH -1 + 48 :48]; | |
2256 | tx_rng_cfg_dma2_staddr <= Slave_DataIn[43:6]; | |
2257 | end // else: !if(pio_clients_32b) | |
2258 | end | |
2259 | ||
2260 | `TXDMA_RNG_CFIG_DMA2_H: begin | |
2261 | // This condition will never happen in 64 bit mode | |
2262 | if(pio_clients_32b) begin | |
2263 | if(tx_rng_cfg_dma2_shadow_written) begin | |
2264 | tx_rng_cfg_dma2_len <= Slave_DataIn[`RNG_LENGTH_WIDTH -1 + 16 :16]; | |
2265 | tx_rng_cfg_dma2_staddr <= { Slave_DataIn[11:0],tx_rng_cfg_dma2_shadow[31:6] }; | |
2266 | tx_rng_cfg_dma2_shadow_written <= 1'b0; | |
2267 | end // else: !if(tx_rng_cfg_dma2_shadow_written) | |
2268 | end // if (pio_clients_32b) | |
2269 | end | |
2270 | ||
2271 | ||
2272 | ||
2273 | `else | |
2274 | case ({Slave_Addr[8:3],3'h0}) // synopsys parallel_case | |
2275 | `TXDMA_RNG_CFIG_DMA2: begin | |
2276 | tx_rng_cfg_dma2_len <= Slave_DataIn[`RNG_LENGTH_WIDTH -1 + 48 :48]; | |
2277 | tx_rng_cfg_dma2_staddr <= Slave_DataIn[43:6]; | |
2278 | end | |
2279 | ||
2280 | `endif | |
2281 | `TXDMA_MBH_DMA2: tx_dma_cfg_dma2_mbaddr[37:26]<= Slave_DataIn[11:0]; | |
2282 | `TXDMA_MBL_DMA2: tx_dma_cfg_dma2_mbaddr[25:0]<= Slave_DataIn[31:6]; | |
2283 | `TXDMA_RING_KICK_DMA2: tx_rng_tail_dma2 <= Slave_DataIn[`PTR_WIDTH + 3:3]; | |
2284 | ||
2285 | `TXDMA_ENT_MASK_DMA2 : begin | |
2286 | tx_ent_mask_ldf0_dma2 <= Slave_DataIn[15]; | |
2287 | tx_ent_mask_ldf1_dma2 <= Slave_DataIn[7:0]; | |
2288 | end | |
2289 | endcase | |
2290 | end // if (write_DMA2_Register) | |
2291 | ||
2292 | always @ (posedge SysClk ) | |
2293 | if (!Reset_L) | |
2294 | begin | |
2295 | page0_mask_dma2 <= 32'h0; | |
2296 | page0_value_dma2 <= 32'h0; | |
2297 | page0_reloc_dma2 <= 32'h0; | |
2298 | page0_valid_dma2 <= 1'b0 ; | |
2299 | page1_mask_dma2 <= 32'h0; | |
2300 | page1_value_dma2 <= 32'h0; | |
2301 | page1_reloc_dma2 <= 32'h0; | |
2302 | page1_valid_dma2 <= 1'b0; | |
2303 | dmc_txc_dma2_page_handle <= 20'h0; | |
2304 | dmc_txc_dma2_func_num <= 2'h0; | |
2305 | ||
2306 | end // if (!Reset_L) | |
2307 | else if (write_FZC_DMA2_Register ) | |
2308 | begin | |
2309 | case ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0}) // synopsys parallel_case | |
2310 | `TXDMA_LOG_PAGE_VLD_DMA2: {dmc_txc_dma2_func_num,page1_valid_dma2,page0_valid_dma2} <= Slave_DataIn[3:0]; | |
2311 | `TXDMA_LOG_PAGE_MASK0_DMA2: page0_mask_dma2 <= Slave_DataIn[31:0]; | |
2312 | `TXDMA_LOG_PAGE_VALUE0_DMA2: page0_value_dma2 <= Slave_DataIn[31:0]; | |
2313 | `TXDMA_LOG_PAGE_MASK1_DMA2: page1_mask_dma2 <= Slave_DataIn[31:0]; | |
2314 | `TXDMA_LOG_PAGE_VALUE1_DMA2: page1_value_dma2 <= Slave_DataIn[31:0]; | |
2315 | `TXDMA_LOG_PAGE_RELOC0_DMA2: page0_reloc_dma2 <= Slave_DataIn[31:0]; | |
2316 | `TXDMA_LOG_PAGE_RELOC1_DMA2: page1_reloc_dma2 <= Slave_DataIn[31:0]; | |
2317 | `TXDMA_LOG_PAGE_HANDLE_DMA2: dmc_txc_dma2_page_handle <= Slave_DataIn[19:0]; | |
2318 | endcase | |
2319 | end // if (write_FZC_DMA2_Register) | |
2320 | ||
2321 | always @ (posedge SysClk ) | |
2322 | if (!Reset_L) | |
2323 | begin | |
2324 | tx_rng_cfg_dma3_len <= `RNG_LENGTH_WIDTH'h0; | |
2325 | tx_rng_cfg_dma3_staddr <= 38'h0; | |
2326 | tx_rng_tail_dma3 <=`PTR_WIDTH_PLUS1'h0; | |
2327 | tx_ent_mask_ldf0_dma3 <= 1'b1; | |
2328 | tx_ent_mask_ldf1_dma3 <= 8'hff; | |
2329 | tx_dma_cfg_dma3_mbaddr <= 38'h0; | |
2330 | `ifdef NEPTUNE | |
2331 | tx_rng_cfg_dma3_shadow_written <= 1'b0; | |
2332 | `else // !ifdef NEPTUNE | |
2333 | `endif // !ifdef NEPTUNE | |
2334 | ||
2335 | end // if (!Reset_L) | |
2336 | else if (write_DMA3_Register) | |
2337 | begin | |
2338 | `ifdef NEPTUNE | |
2339 | ||
2340 | case ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b), 2'h0}) // synopsys parallel_case | |
2341 | ||
2342 | `TXDMA_RNG_CFIG_DMA3: begin | |
2343 | ||
2344 | if(pio_clients_32b) begin | |
2345 | tx_rng_cfg_dma3_shadow[31:0] <= Slave_DataIn[31:0]; | |
2346 | tx_rng_cfg_dma3_shadow_written <= 1'b1; | |
2347 | end else begin // 64 bit mode | |
2348 | tx_rng_cfg_dma3_len <= Slave_DataIn[`RNG_LENGTH_WIDTH -1 + 48 :48]; | |
2349 | tx_rng_cfg_dma3_staddr <= Slave_DataIn[43:6]; | |
2350 | end // else: !if(pio_clients_32b) | |
2351 | end | |
2352 | ||
2353 | `TXDMA_RNG_CFIG_DMA3_H: begin | |
2354 | // This condition will never happen in 64 bit mode | |
2355 | if(pio_clients_32b) begin | |
2356 | if(tx_rng_cfg_dma3_shadow_written) begin | |
2357 | tx_rng_cfg_dma3_len <= Slave_DataIn[`RNG_LENGTH_WIDTH -1 + 16 :16]; | |
2358 | tx_rng_cfg_dma3_staddr <= { Slave_DataIn[11:0],tx_rng_cfg_dma3_shadow[31:6] }; | |
2359 | tx_rng_cfg_dma3_shadow_written <= 1'b0; | |
2360 | end // else: !if(tx_rng_cfg_dma3_shadow_written) | |
2361 | end // if (pio_clients_32b) | |
2362 | end | |
2363 | ||
2364 | ||
2365 | ||
2366 | `else | |
2367 | case ({Slave_Addr[8:3],3'h0}) // synopsys parallel_case | |
2368 | `TXDMA_RNG_CFIG_DMA3: begin | |
2369 | tx_rng_cfg_dma3_len <= Slave_DataIn[`RNG_LENGTH_WIDTH -1 + 48 :48]; | |
2370 | tx_rng_cfg_dma3_staddr <= Slave_DataIn[43:6]; | |
2371 | end | |
2372 | ||
2373 | `endif | |
2374 | `TXDMA_MBH_DMA3: tx_dma_cfg_dma3_mbaddr[37:26]<= Slave_DataIn[11:0]; | |
2375 | `TXDMA_MBL_DMA3: tx_dma_cfg_dma3_mbaddr[25:0]<= Slave_DataIn[31:6]; | |
2376 | `TXDMA_RING_KICK_DMA3: tx_rng_tail_dma3 <= Slave_DataIn[`PTR_WIDTH + 3:3]; | |
2377 | ||
2378 | `TXDMA_ENT_MASK_DMA3 : begin | |
2379 | tx_ent_mask_ldf0_dma3 <= Slave_DataIn[15]; | |
2380 | tx_ent_mask_ldf1_dma3 <= Slave_DataIn[7:0]; | |
2381 | end | |
2382 | endcase | |
2383 | end // if (write_DMA3_Register) | |
2384 | ||
2385 | always @ (posedge SysClk ) | |
2386 | if (!Reset_L) | |
2387 | begin | |
2388 | page0_mask_dma3 <= 32'h0; | |
2389 | page0_value_dma3 <= 32'h0; | |
2390 | page0_reloc_dma3 <= 32'h0; | |
2391 | page0_valid_dma3 <= 1'b0 ; | |
2392 | page1_mask_dma3 <= 32'h0; | |
2393 | page1_value_dma3 <= 32'h0; | |
2394 | page1_reloc_dma3 <= 32'h0; | |
2395 | page1_valid_dma3 <= 1'b0; | |
2396 | dmc_txc_dma3_page_handle <= 20'h0; | |
2397 | dmc_txc_dma3_func_num <= 2'h0; | |
2398 | ||
2399 | end // if (!Reset_L) | |
2400 | else if (write_FZC_DMA3_Register ) | |
2401 | begin | |
2402 | case ({Slave_Addr[8:3],(Slave_Addr[2] & pio_clients_32b ) ,2'h0}) // synopsys parallel_case | |
2403 | `TXDMA_LOG_PAGE_VLD_DMA3: {dmc_txc_dma3_func_num,page1_valid_dma3,page0_valid_dma3} <= Slave_DataIn[3:0]; | |
2404 | `TXDMA_LOG_PAGE_MASK0_DMA3: page0_mask_dma3 <= Slave_DataIn[31:0]; | |
2405 | `TXDMA_LOG_PAGE_VALUE0_DMA3: page0_value_dma3 <= Slave_DataIn[31:0]; | |
2406 | `TXDMA_LOG_PAGE_MASK1_DMA3: page1_mask_dma3 <= Slave_DataIn[31:0]; | |
2407 | `TXDMA_LOG_PAGE_VALUE1_DMA3: page1_value_dma3 <= Slave_DataIn[31:0]; | |
2408 | `TXDMA_LOG_PAGE_RELOC0_DMA3: page0_reloc_dma3 <= Slave_DataIn[31:0]; | |
2409 | `TXDMA_LOG_PAGE_RELOC1_DMA3: page1_reloc_dma3 <= Slave_DataIn[31:0]; | |
2410 | `TXDMA_LOG_PAGE_HANDLE_DMA3: dmc_txc_dma3_page_handle <= Slave_DataIn[19:0]; | |
2411 | endcase | |
2412 | end // if (write_FZC_DMA3_Register ) | |
2413 | ||
2414 | ||
2415 | ||
2416 | always @ (posedge SysClk ) | |
2417 | if (!Reset_L) begin | |
2418 | dma_0_3_sl_data_l <= 32'h0; | |
2419 | end else begin | |
2420 | case(read_DMA_0_3_Regsister) // synopsys parallel_case | |
2421 | 8'b00000001: begin | |
2422 | case ({Slave_Addr[8:3],3'h0})// synopsys parallel_case | |
2423 | `TXDMA_RNG_CFIG_DMA0: dma_0_3_sl_data_l <= {tx_rng_cfg_dma0_staddr[25:0],6'h0}; | |
2424 | `TXDMA_CS_DMA0: begin | |
2425 | dma_0_3_sl_data_l<= { tx_dma_cfg_dma0_rst, tx_dma_cfg_dma0_stall, tx_cfg_dma0_enable_mb, tx_dma_cfg_dma0_stop, | |
2426 | tx_dma_cfg_dma0_stop_state,11'h0, tx_cfg_dma0_mk, tx_cfg_dma0_mmk, 6'h0, tx_cs_dma0_err }; | |
2427 | end // case: `TXDMA_CS_DMA0 | |
2428 | `TXDMA_RNG_HDL_DMA0: dma_0_3_sl_data_l <= {12'h0,tx_rng_head_dma0[`PTR_WIDTH:0],3'h0}; | |
2429 | `TXDMA_RING_KICK_DMA0: dma_0_3_sl_data_l <= {12'h0,tx_rng_tail_dma0[`PTR_WIDTH:0],3'h0}; | |
2430 | `TXDMA_MBH_DMA0: dma_0_3_sl_data_l<= {20'h0,tx_dma_cfg_dma0_mbaddr[37:26]}; | |
2431 | `TXDMA_MBL_DMA0: dma_0_3_sl_data_l<= { tx_dma_cfg_dma0_mbaddr[25:0],6'h0}; | |
2432 | `TXDMA_ST_DMA0: dma_0_3_sl_data_l <=tx_dma0_pre_st[31:0]; | |
2433 | `TXDMA_ENT_MASK_DMA0: dma_0_3_sl_data_l <= {16'h0,tx_ent_mask_ldf0_dma0,7'h0,tx_ent_mask_ldf1_dma0}; | |
2434 | `TXDMA_RNG_ERR_LOGH_DMA0: dma_0_3_sl_data_l <= tx_dma0_rng_err_logh[31:0]; | |
2435 | `TXDMA_RNG_ERR_LOGL_DMA0: dma_0_3_sl_data_l<= tx_dma0_rng_err_logl[31:0]; | |
2436 | `TXDMA_INTR_DBG_DMA0: dma_0_3_sl_data_l<= {16'h0,tx_cfg_dma0_mk,7'h0,tx_cs_dma0_err}; | |
2437 | default: begin | |
2438 | dma_0_3_sl_data_l <= 32'h0; | |
2439 | end | |
2440 | endcase | |
2441 | end | |
2442 | 8'b00000010: begin | |
2443 | // LOW DECODE DMA 1 | |
2444 | case ({Slave_Addr[8:3],3'h0})// synopsys parallel_case | |
2445 | `TXDMA_RNG_CFIG_DMA1: dma_0_3_sl_data_l <= {tx_rng_cfg_dma1_staddr[25:0],6'h0}; | |
2446 | `TXDMA_CS_DMA1: begin | |
2447 | dma_0_3_sl_data_l<= { tx_dma_cfg_dma1_rst, tx_dma_cfg_dma1_stall, tx_cfg_dma1_enable_mb, tx_dma_cfg_dma1_stop, | |
2448 | tx_dma_cfg_dma1_stop_state,11'h0, tx_cfg_dma1_mk, tx_cfg_dma1_mmk, 6'h0, tx_cs_dma1_err }; | |
2449 | end // case: `TXDMA_CS_DMA1 | |
2450 | `TXDMA_RNG_HDL_DMA1: dma_0_3_sl_data_l <= {12'h0,tx_rng_head_dma1[`PTR_WIDTH:0],3'h0}; | |
2451 | `TXDMA_RING_KICK_DMA1: dma_0_3_sl_data_l <= {12'h0,tx_rng_tail_dma1[`PTR_WIDTH:0],3'h0}; | |
2452 | `TXDMA_MBH_DMA1: dma_0_3_sl_data_l<= {20'h0,tx_dma_cfg_dma1_mbaddr[37:26]}; | |
2453 | `TXDMA_MBL_DMA1: dma_0_3_sl_data_l<= { tx_dma_cfg_dma1_mbaddr[25:0],6'h0}; | |
2454 | `TXDMA_ST_DMA1: dma_0_3_sl_data_l <=tx_dma1_pre_st[31:0]; | |
2455 | `TXDMA_ENT_MASK_DMA1: dma_0_3_sl_data_l <= {16'h0,tx_ent_mask_ldf0_dma1,7'h0,tx_ent_mask_ldf1_dma1}; | |
2456 | `TXDMA_RNG_ERR_LOGH_DMA1: dma_0_3_sl_data_l <= tx_dma1_rng_err_logh[31:0]; | |
2457 | `TXDMA_RNG_ERR_LOGL_DMA1: dma_0_3_sl_data_l<= tx_dma1_rng_err_logl[31:0]; | |
2458 | `TXDMA_INTR_DBG_DMA1: dma_0_3_sl_data_l<= {16'h0,tx_cfg_dma1_mk,7'h0,tx_cs_dma1_err}; | |
2459 | default: begin | |
2460 | dma_0_3_sl_data_l <= 32'h0; | |
2461 | end | |
2462 | endcase | |
2463 | ||
2464 | end | |
2465 | 8'b00000100: begin | |
2466 | // LOW DECODE DMA 2 | |
2467 | case ({Slave_Addr[8:3],3'h0})// synopsys parallel_case | |
2468 | `TXDMA_RNG_CFIG_DMA2: dma_0_3_sl_data_l <= {tx_rng_cfg_dma2_staddr[25:0],6'h0}; | |
2469 | `TXDMA_CS_DMA2: begin | |
2470 | dma_0_3_sl_data_l<= { tx_dma_cfg_dma2_rst, tx_dma_cfg_dma2_stall, tx_cfg_dma2_enable_mb, tx_dma_cfg_dma2_stop, | |
2471 | tx_dma_cfg_dma2_stop_state,11'h0, tx_cfg_dma2_mk, tx_cfg_dma2_mmk, 6'h0, tx_cs_dma2_err }; | |
2472 | end // case: `TXDMA_CS_DMA2 | |
2473 | `TXDMA_RNG_HDL_DMA2: dma_0_3_sl_data_l <= {12'h0,tx_rng_head_dma2[`PTR_WIDTH:0],3'h0}; | |
2474 | `TXDMA_RING_KICK_DMA2: dma_0_3_sl_data_l <= {12'h0,tx_rng_tail_dma2[`PTR_WIDTH:0],3'h0}; | |
2475 | `TXDMA_MBH_DMA2: dma_0_3_sl_data_l<= {20'h0,tx_dma_cfg_dma2_mbaddr[37:26]}; | |
2476 | `TXDMA_MBL_DMA2: dma_0_3_sl_data_l<= { tx_dma_cfg_dma2_mbaddr[25:0],6'h0}; | |
2477 | `TXDMA_ST_DMA2: dma_0_3_sl_data_l <=tx_dma2_pre_st[31:0]; | |
2478 | `TXDMA_ENT_MASK_DMA2: dma_0_3_sl_data_l <= {16'h0,tx_ent_mask_ldf0_dma2,7'h0,tx_ent_mask_ldf1_dma2}; | |
2479 | `TXDMA_RNG_ERR_LOGH_DMA2: dma_0_3_sl_data_l <= tx_dma2_rng_err_logh[31:0]; | |
2480 | `TXDMA_RNG_ERR_LOGL_DMA2: dma_0_3_sl_data_l<= tx_dma2_rng_err_logl[31:0]; | |
2481 | `TXDMA_INTR_DBG_DMA2: dma_0_3_sl_data_l<= {16'h0,tx_cfg_dma2_mk,7'h0,tx_cs_dma2_err}; | |
2482 | default: begin | |
2483 | dma_0_3_sl_data_l <= 32'h0; | |
2484 | end | |
2485 | endcase | |
2486 | ||
2487 | end | |
2488 | 8'b00001000: begin | |
2489 | // LOW DECODE DMA 3 | |
2490 | case ({Slave_Addr[8:3],3'h0})// synopsys parallel_case | |
2491 | `TXDMA_RNG_CFIG_DMA3: dma_0_3_sl_data_l <= {tx_rng_cfg_dma3_staddr[25:0],6'h0}; | |
2492 | `TXDMA_CS_DMA3: begin | |
2493 | dma_0_3_sl_data_l<= { tx_dma_cfg_dma3_rst, tx_dma_cfg_dma3_stall, tx_cfg_dma3_enable_mb, tx_dma_cfg_dma3_stop, | |
2494 | tx_dma_cfg_dma3_stop_state,11'h0, tx_cfg_dma3_mk, tx_cfg_dma3_mmk, 6'h0, tx_cs_dma3_err }; | |
2495 | end // case: `TXDMA_CS_DMA3 | |
2496 | `TXDMA_RNG_HDL_DMA3: dma_0_3_sl_data_l <= {12'h0,tx_rng_head_dma3[`PTR_WIDTH:0],3'h0}; | |
2497 | `TXDMA_RING_KICK_DMA3: dma_0_3_sl_data_l <= {12'h0,tx_rng_tail_dma3[`PTR_WIDTH:0],3'h0}; | |
2498 | `TXDMA_MBH_DMA3: dma_0_3_sl_data_l<= {20'h0,tx_dma_cfg_dma3_mbaddr[37:26]}; | |
2499 | `TXDMA_MBL_DMA3: dma_0_3_sl_data_l<= { tx_dma_cfg_dma3_mbaddr[25:0],6'h0}; | |
2500 | `TXDMA_ST_DMA3: dma_0_3_sl_data_l <=tx_dma3_pre_st[31:0]; | |
2501 | `TXDMA_ENT_MASK_DMA3: dma_0_3_sl_data_l <= {16'h0,tx_ent_mask_ldf0_dma3,7'h0,tx_ent_mask_ldf1_dma3}; | |
2502 | `TXDMA_RNG_ERR_LOGH_DMA3: dma_0_3_sl_data_l <= tx_dma3_rng_err_logh[31:0]; | |
2503 | `TXDMA_RNG_ERR_LOGL_DMA3: dma_0_3_sl_data_l<= tx_dma3_rng_err_logl[31:0]; | |
2504 | `TXDMA_INTR_DBG_DMA3: dma_0_3_sl_data_l<= {16'h0,tx_cfg_dma3_mk,7'h0,tx_cs_dma3_err}; | |
2505 | default: begin | |
2506 | dma_0_3_sl_data_l <= 32'h0; | |
2507 | end | |
2508 | endcase | |
2509 | end // case: 8'b00001000 | |
2510 | default: begin | |
2511 | dma_0_3_sl_data_l <= 32'h0; | |
2512 | end | |
2513 | endcase // case(read_DMA_0_3_Regsister) | |
2514 | end // else: !if(!Reset_L) | |
2515 | ||
2516 | ||
2517 | always @ (posedge SysClk ) | |
2518 | if (!Reset_L) begin | |
2519 | dma_0_3_sl_data_h <= 32'h0; | |
2520 | tx_cs_read_dma0_3 <= 4'h0; | |
2521 | end else begin | |
2522 | case(read_DMA_0_3_Regsister) // synopsys parallel_case | |
2523 | 8'b00000001: begin | |
2524 | // HIGH DECODE DMA 0 | |
2525 | case ({Slave_Addr[8:3],3'h0})// synopsys parallel_case | |
2526 | `TXDMA_RNG_CFIG_DMA0: dma_0_3_sl_data_h <= {3'h0,tx_rng_cfg_dma0_len,4'h0,tx_rng_cfg_dma0_staddr[37:26]}; | |
2527 | `TXDMA_CS_DMA0: begin | |
2528 | dma_0_3_sl_data_h<= { 4'h0, tx_cs_pkt_cnt_dma0, 4'h0, tx_cs_lastmark_dma0}; | |
2529 | tx_cs_read_dma0_3 <= 4'h1; | |
2530 | end // case: `TXDMA_CS_DMA0 | |
2531 | `TXDMA_CS_DBG_DMA0: dma_0_3_sl_data_h <= { 4'h0, tx_cs_pkt_cnt_dma0,16'h0}; | |
2532 | default: begin | |
2533 | dma_0_3_sl_data_h <= 32'h0; | |
2534 | end | |
2535 | endcase | |
2536 | end | |
2537 | 8'b00000010: begin | |
2538 | // HIGH DECODE DMA 1 | |
2539 | case ({Slave_Addr[8:3],3'h0})// synopsys parallel_case | |
2540 | `TXDMA_RNG_CFIG_DMA1: dma_0_3_sl_data_h <= {3'h0,tx_rng_cfg_dma1_len,4'h0,tx_rng_cfg_dma1_staddr[37:26]}; | |
2541 | `TXDMA_CS_DMA1: begin | |
2542 | dma_0_3_sl_data_h<= { 4'h0, tx_cs_pkt_cnt_dma1, 4'h0, tx_cs_lastmark_dma1}; | |
2543 | tx_cs_read_dma0_3 <= 4'h2; | |
2544 | end // case: `TXDMA_CS_DMA1 | |
2545 | `TXDMA_CS_DBG_DMA1: dma_0_3_sl_data_h <= { 4'h0, tx_cs_pkt_cnt_dma1,16'h0}; | |
2546 | default: begin | |
2547 | dma_0_3_sl_data_h <= 32'h0; | |
2548 | end | |
2549 | endcase | |
2550 | end | |
2551 | 8'b00000100: begin | |
2552 | // HIGH DECODE DMA 2 | |
2553 | case ({Slave_Addr[8:3],3'h0})// synopsys parallel_case | |
2554 | `TXDMA_RNG_CFIG_DMA2: dma_0_3_sl_data_h <= {3'h0,tx_rng_cfg_dma2_len,4'h0,tx_rng_cfg_dma2_staddr[37:26]}; | |
2555 | `TXDMA_CS_DMA2: begin | |
2556 | dma_0_3_sl_data_h<= { 4'h0, tx_cs_pkt_cnt_dma2, 4'h0, tx_cs_lastmark_dma2}; | |
2557 | tx_cs_read_dma0_3 <= 4'h4; | |
2558 | end // case: `TXDMA_CS_DMA2 | |
2559 | `TXDMA_CS_DBG_DMA2: dma_0_3_sl_data_h <= { 4'h0, tx_cs_pkt_cnt_dma2,16'h0}; | |
2560 | default: begin | |
2561 | dma_0_3_sl_data_h <= 32'h0; | |
2562 | end | |
2563 | endcase | |
2564 | end | |
2565 | 8'b00001000: begin | |
2566 | // HIGH DECODE DMA 3 | |
2567 | case ({Slave_Addr[8:3],3'h0})// synopsys parallel_case | |
2568 | `TXDMA_RNG_CFIG_DMA3: dma_0_3_sl_data_h <= {3'h0,tx_rng_cfg_dma3_len,4'h0,tx_rng_cfg_dma3_staddr[37:26]}; | |
2569 | `TXDMA_CS_DMA3: begin | |
2570 | dma_0_3_sl_data_h<= { 4'h0, tx_cs_pkt_cnt_dma3, 4'h0, tx_cs_lastmark_dma3}; | |
2571 | tx_cs_read_dma0_3 <= 4'h8; | |
2572 | end // case: `TXDMA_CS_DMA3 | |
2573 | `TXDMA_CS_DBG_DMA3: dma_0_3_sl_data_h <= { 4'h0, tx_cs_pkt_cnt_dma3,16'h0}; | |
2574 | default: begin | |
2575 | dma_0_3_sl_data_h <= 32'h0; | |
2576 | end | |
2577 | endcase | |
2578 | end // case: 8'b00001000 | |
2579 | default: begin | |
2580 | dma_0_3_sl_data_h <= 32'h0; | |
2581 | tx_cs_read_dma0_3 <= 4'h0; | |
2582 | end | |
2583 | endcase // case(read_DMA_0_3_Regsister) | |
2584 | end // else: !if(!Reset_L) | |
2585 | ||
2586 | ||
2587 | ||
2588 | always @ (posedge SysClk ) | |
2589 | if (!Reset_L) begin | |
2590 | dma_0_3_sl_data_fzc <= 32'h0; | |
2591 | read_decode_invalid_dma0_3 <= 1'b0; | |
2592 | end else begin | |
2593 | case(read_DMA_0_3_Regsister) // synopsys parallel_case | |
2594 | 8'b00010000: begin | |
2595 | case ({Slave_Addr[8:3],3'h0})// synopsys parallel_case | |
2596 | `TXDMA_LOG_PAGE_VLD_DMA0: dma_0_3_sl_data_fzc <= {28'h0,dmc_txc_dma0_func_num,page1_valid_dma0,page0_valid_dma0} ; | |
2597 | `TXDMA_LOG_PAGE_MASK0_DMA0: dma_0_3_sl_data_fzc <= {page0_mask_dma0 }; | |
2598 | `TXDMA_LOG_PAGE_VALUE0_DMA0: dma_0_3_sl_data_fzc <= {page0_value_dma0 }; | |
2599 | `TXDMA_LOG_PAGE_MASK1_DMA0: dma_0_3_sl_data_fzc <= {page1_mask_dma0 }; | |
2600 | `TXDMA_LOG_PAGE_VALUE1_DMA0: dma_0_3_sl_data_fzc <= {page1_value_dma0 }; | |
2601 | `TXDMA_LOG_PAGE_RELOC0_DMA0: dma_0_3_sl_data_fzc <= {page0_reloc_dma0 }; | |
2602 | `TXDMA_LOG_PAGE_RELOC1_DMA0: dma_0_3_sl_data_fzc <= {page1_reloc_dma0 }; | |
2603 | `TXDMA_LOG_PAGE_HANDLE_DMA0: dma_0_3_sl_data_fzc <= {12'h0,dmc_txc_dma0_page_handle }; | |
2604 | default: begin | |
2605 | dma_0_3_sl_data_fzc <= 32'hdeadbeef; | |
2606 | read_decode_invalid_dma0_3 <= 1'b1; | |
2607 | end | |
2608 | endcase | |
2609 | end | |
2610 | 8'b00100000: begin | |
2611 | case ({Slave_Addr[8:3],3'h0})// synopsys parallel_case | |
2612 | `TXDMA_LOG_PAGE_VLD_DMA1: dma_0_3_sl_data_fzc <= {28'h0,dmc_txc_dma1_func_num,page1_valid_dma1,page0_valid_dma1} ; | |
2613 | `TXDMA_LOG_PAGE_MASK0_DMA1: dma_0_3_sl_data_fzc <= {page0_mask_dma1 }; | |
2614 | `TXDMA_LOG_PAGE_VALUE0_DMA1: dma_0_3_sl_data_fzc <= {page0_value_dma1 }; | |
2615 | `TXDMA_LOG_PAGE_MASK1_DMA1: dma_0_3_sl_data_fzc <= {page1_mask_dma1 }; | |
2616 | `TXDMA_LOG_PAGE_VALUE1_DMA1: dma_0_3_sl_data_fzc <= {page1_value_dma1 }; | |
2617 | `TXDMA_LOG_PAGE_RELOC0_DMA1: dma_0_3_sl_data_fzc <= {page0_reloc_dma1 }; | |
2618 | `TXDMA_LOG_PAGE_RELOC1_DMA1: dma_0_3_sl_data_fzc <= {page1_reloc_dma1 }; | |
2619 | `TXDMA_LOG_PAGE_HANDLE_DMA1: dma_0_3_sl_data_fzc <= {12'h0,dmc_txc_dma1_page_handle }; | |
2620 | default: begin | |
2621 | dma_0_3_sl_data_fzc <= 32'hdeadbeef; | |
2622 | read_decode_invalid_dma0_3 <= 1'b1; | |
2623 | end | |
2624 | endcase | |
2625 | end | |
2626 | 8'b01000000: begin | |
2627 | case ({Slave_Addr[8:3],3'h0})// synopsys parallel_case | |
2628 | `TXDMA_LOG_PAGE_VLD_DMA2: dma_0_3_sl_data_fzc <= {28'h0,dmc_txc_dma2_func_num,page1_valid_dma2,page0_valid_dma2} ; | |
2629 | `TXDMA_LOG_PAGE_MASK0_DMA2: dma_0_3_sl_data_fzc <= {page0_mask_dma2 }; | |
2630 | `TXDMA_LOG_PAGE_VALUE0_DMA2: dma_0_3_sl_data_fzc <= {page0_value_dma2 }; | |
2631 | `TXDMA_LOG_PAGE_MASK1_DMA2: dma_0_3_sl_data_fzc <= {page1_mask_dma2 }; | |
2632 | `TXDMA_LOG_PAGE_VALUE1_DMA2: dma_0_3_sl_data_fzc <= {page1_value_dma2 }; | |
2633 | `TXDMA_LOG_PAGE_RELOC0_DMA2: dma_0_3_sl_data_fzc <= {page0_reloc_dma2 }; | |
2634 | `TXDMA_LOG_PAGE_RELOC1_DMA2: dma_0_3_sl_data_fzc <= {page1_reloc_dma2 }; | |
2635 | `TXDMA_LOG_PAGE_HANDLE_DMA2: dma_0_3_sl_data_fzc <= {12'h0,dmc_txc_dma2_page_handle }; | |
2636 | default: begin | |
2637 | dma_0_3_sl_data_fzc <= 32'hdeadbeef; | |
2638 | read_decode_invalid_dma0_3 <= 1'b1; | |
2639 | end | |
2640 | endcase | |
2641 | end | |
2642 | 8'b10000000: begin | |
2643 | case ({Slave_Addr[8:3],3'h0})// synopsys parallel_case | |
2644 | `TXDMA_LOG_PAGE_VLD_DMA3: dma_0_3_sl_data_fzc <= {28'h0,dmc_txc_dma3_func_num,page1_valid_dma3,page0_valid_dma3} ; | |
2645 | `TXDMA_LOG_PAGE_MASK0_DMA3: dma_0_3_sl_data_fzc <= {page0_mask_dma3 }; | |
2646 | `TXDMA_LOG_PAGE_VALUE0_DMA3: dma_0_3_sl_data_fzc <= {page0_value_dma3 }; | |
2647 | `TXDMA_LOG_PAGE_MASK1_DMA3: dma_0_3_sl_data_fzc <= {page1_mask_dma3 }; | |
2648 | `TXDMA_LOG_PAGE_VALUE1_DMA3: dma_0_3_sl_data_fzc <= {page1_value_dma3 }; | |
2649 | `TXDMA_LOG_PAGE_RELOC0_DMA3: dma_0_3_sl_data_fzc <= {page0_reloc_dma3 }; | |
2650 | `TXDMA_LOG_PAGE_RELOC1_DMA3: dma_0_3_sl_data_fzc <= {page1_reloc_dma3 }; | |
2651 | `TXDMA_LOG_PAGE_HANDLE_DMA3: dma_0_3_sl_data_fzc <= {12'h0,dmc_txc_dma3_page_handle }; | |
2652 | default: begin | |
2653 | dma_0_3_sl_data_fzc <= 32'hdeadbeef; | |
2654 | read_decode_invalid_dma0_3 <= 1'b1; | |
2655 | end | |
2656 | endcase | |
2657 | end | |
2658 | default:begin | |
2659 | read_decode_invalid_dma0_3 <= 1'b0; | |
2660 | dma_0_3_sl_data_fzc <= 32'hdeadbeef; | |
2661 | end // case: default | |
2662 | endcase | |
2663 | end | |
2664 | ||
2665 | always@(dma_0_3_sl_data_h or dma_0_3_sl_data_l or dma_0_3_sl_data_fzc or read_DMA_0_3_Regsister ) begin | |
2666 | if(| read_DMA_0_3_Regsister[3:0]) begin | |
2667 | dma_0_3_sl_data = {dma_0_3_sl_data_h,dma_0_3_sl_data_l}; | |
2668 | end else begin | |
2669 | dma_0_3_sl_data = {32'h0,dma_0_3_sl_data_fzc}; | |
2670 | end | |
2671 | end | |
2672 | ||
2673 | endmodule // niu_tdmc_dmaregs |