Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / design / sys / iop / niu / rtl / niu_tdmc_dmaregs.v
CommitLineData
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
59module 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
2673endmodule // niu_tdmc_dmaregs