Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / design / sys / iop / niu / rtl / niu_tdmc_piodecodes.v
CommitLineData
86530b38
AT
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T2 Processor File: niu_tdmc_piodecodes.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 * NIU TDMC - PIO Decodes and Interface for 32 DMAs
38 *
39 * Orignal Author(s): Arvind Srinivasan
40 * Modifier(s):
41 * Project(s): Neptune
42 *
43 * Copyright (c) 2004 Sun Microsystems, Inc.
44 *
45 * All Rights Reserved.
46 *
47 * This verilog model is the confidential and proprietary property of
48 * Sun Microsystems, Inc., and the possession or use of this model
49 * requires a written license from Sun Microsystems, Inc.
50 *
51 **********************************************************************/
52
53`include "niu_dmc_reg_defines.h"
54`include "txc_defines.h"
55
56
57module niu_tdmc_piodecodes (/*AUTOJUNK*/
58 // Outputs
59 tdmc_pio_ack, tdmc_pio_err, tdmc_pio_rdata,
60 Slave_Read_dma0_3, Slave_Sel_dma0_3, Slave_Addr_dma0_3,pio_clients_32b_d_dma0_3,
61 Slave_Read_dma4_7, Slave_Sel_dma4_7, Slave_Addr_dma4_7,pio_clients_32b_d_dma4_7,
62 Slave_Read_dma8_11, Slave_Sel_dma8_11, Slave_Addr_dma8_11,pio_clients_32b_d_dma8_11,
63 Slave_Read_dma12_15, Slave_Sel_dma12_15, Slave_Addr_dma12_15,pio_clients_32b_d_dma12_15,
64
65 debug_select, training_vector, parity_corrupt_config,
66 slaveStrobe, Slave_DataIn,
67 write_DMA0_Register, write_DMA1_Register, write_DMA2_Register,
68 write_DMA3_Register, write_DMA4_Register, write_DMA5_Register,
69 write_DMA6_Register, write_DMA7_Register, write_DMA8_Register,
70 write_DMA9_Register, write_DMA10_Register, write_DMA11_Register,
71 write_DMA12_Register, write_DMA13_Register, write_DMA14_Register,
72 write_DMA15_Register,
73`ifdef NEPTUNE
74 Slave_Read_dma16_19, Slave_Sel_dma16_19, Slave_Addr_dma16_19,pio_clients_32b_d_dma16_19,
75 Slave_Read_dma20_23, Slave_Sel_dma20_23, Slave_Addr_dma20_23,pio_clients_32b_d_dma20_23,
76 write_DMA16_Register, write_DMA17_Register,
77 write_DMA18_Register, write_DMA19_Register, write_DMA20_Register,
78 write_DMA21_Register, write_DMA22_Register, write_DMA23_Register,
79`else // !ifdef NEPTUNE
80`endif // !ifdef NEPTUNE
81
82 write_FZC_DMA0_Register, write_FZC_DMA1_Register,
83 write_FZC_DMA2_Register, write_FZC_DMA3_Register,
84 write_FZC_DMA4_Register, write_FZC_DMA5_Register,
85 write_FZC_DMA6_Register, write_FZC_DMA7_Register,
86 write_FZC_DMA8_Register, write_FZC_DMA9_Register,
87 write_FZC_DMA10_Register, write_FZC_DMA11_Register,
88 write_FZC_DMA12_Register, write_FZC_DMA13_Register,
89 write_FZC_DMA14_Register, write_FZC_DMA15_Register,
90`ifdef NEPTUNE
91 write_FZC_DMA16_Register, write_FZC_DMA17_Register,
92 write_FZC_DMA18_Register, write_FZC_DMA19_Register,
93 write_FZC_DMA20_Register, write_FZC_DMA21_Register,
94 write_FZC_DMA22_Register, write_FZC_DMA23_Register,
95`else // !ifdef NEPTUNE
96`endif // !ifdef NEPTUNE
97
98 read_DMA_0_3_Regsister, read_DMA_4_7_Regsister,
99 read_DMA_8_11_Regsister, read_DMA_12_15_Regsister,
100`ifdef NEPTUNE
101 read_DMA_16_19_Regsister, read_DMA_20_23_Regsister,
102`else // !ifdef NEPTUNE
103`endif // !ifdef NEPTUNE
104
105 dmc_txc_tx_addr_md,
106 // Inputs
107 SysClk, Reset_L,
108 pio_clients_rd, pio_tdmc_sel, pio_clients_addr, pio_clients_wdata,
109 pio_clients_32b, dma_0_3_sl_data, dma_4_7_sl_data,
110 dma_8_11_sl_data, dma_12_15_sl_data, dma_16_19_sl_data,
111 dma_20_23_sl_data,
112 read_decode_invalid_dma0_3, read_decode_invalid_dma4_7,
113 read_decode_invalid_dma8_11, read_decode_invalid_dma12_15,
114 read_decode_invalid_dma16_19, read_decode_invalid_dma20_23
115
116 ) ;
117
118 // Global Signals
119 input SysClk;
120 input Reset_L;
121
122 output [5:0] debug_select;
123 output [31:0] training_vector;
124 output [31:0] parity_corrupt_config;
125 // PIO I/F Inputs
126 output tdmc_pio_ack; // pio read data ack
127 output tdmc_pio_err; // pio read data error
128 output [63:0] tdmc_pio_rdata; // pio read data
129 input pio_clients_rd; // pio read
130 input pio_tdmc_sel; // pio DMC select
131 input [19:0] pio_clients_addr; // pio address
132 input [63:0] pio_clients_wdata; // pio write data
133 input pio_clients_32b;
134
135 output pio_clients_32b_d_dma0_3;
136 output Slave_Read_dma0_3;
137 output Slave_Sel_dma0_3;
138 output [19:0] Slave_Addr_dma0_3;
139
140 output pio_clients_32b_d_dma4_7;
141 output Slave_Read_dma4_7;
142 output Slave_Sel_dma4_7;
143 output [19:0] Slave_Addr_dma4_7;
144
145 output pio_clients_32b_d_dma8_11;
146 output Slave_Read_dma8_11;
147 output Slave_Sel_dma8_11;
148 output [19:0] Slave_Addr_dma8_11;
149
150 output pio_clients_32b_d_dma12_15;
151 output Slave_Read_dma12_15;
152 output Slave_Sel_dma12_15;
153 output [19:0] Slave_Addr_dma12_15;
154
155 output [63:0] Slave_DataIn;
156 output slaveStrobe;
157
158 // decode signals
159 output write_DMA0_Register;
160 output write_DMA1_Register;
161 output write_DMA2_Register;
162 output write_DMA3_Register;
163 output write_DMA4_Register;
164 output write_DMA5_Register;
165 output write_DMA6_Register;
166 output write_DMA7_Register;
167 output write_DMA8_Register;
168 output write_DMA9_Register;
169 output write_DMA10_Register;
170 output write_DMA11_Register;
171 output write_DMA12_Register;
172 output write_DMA13_Register;
173 output write_DMA14_Register;
174 output write_DMA15_Register;
175`ifdef NEPTUNE
176 output pio_clients_32b_d_dma16_19;
177 output Slave_Read_dma16_19;
178 output Slave_Sel_dma16_19;
179 output [19:0] Slave_Addr_dma16_19;
180
181 output pio_clients_32b_d_dma20_23;
182 output Slave_Read_dma20_23;
183 output Slave_Sel_dma20_23;
184 output [19:0] Slave_Addr_dma20_23;
185
186 output write_DMA16_Register;
187 output write_DMA17_Register;
188 output write_DMA18_Register;
189 output write_DMA19_Register;
190 output write_DMA20_Register;
191 output write_DMA21_Register;
192 output write_DMA22_Register;
193 output write_DMA23_Register;
194`else // !ifdef NEPTUNE
195`endif // !ifdef NEPTUNE
196
197
198
199
200 output write_FZC_DMA0_Register ;
201 output write_FZC_DMA1_Register ;
202 output write_FZC_DMA2_Register ;
203 output write_FZC_DMA3_Register ;
204 output write_FZC_DMA4_Register ;
205 output write_FZC_DMA5_Register ;
206 output write_FZC_DMA6_Register ;
207 output write_FZC_DMA7_Register ;
208 output write_FZC_DMA8_Register ;
209 output write_FZC_DMA9_Register ;
210 output write_FZC_DMA10_Register ;
211 output write_FZC_DMA11_Register ;
212 output write_FZC_DMA12_Register ;
213 output write_FZC_DMA13_Register ;
214 output write_FZC_DMA14_Register ;
215 output write_FZC_DMA15_Register ;
216`ifdef NEPTUNE
217 output write_FZC_DMA16_Register ;
218 output write_FZC_DMA17_Register ;
219 output write_FZC_DMA18_Register ;
220 output write_FZC_DMA19_Register ;
221 output write_FZC_DMA20_Register ;
222 output write_FZC_DMA21_Register ;
223 output write_FZC_DMA22_Register ;
224 output write_FZC_DMA23_Register ;
225`else // !ifdef NEPTUNE
226`endif // !ifdef NEPTUNE
227
228
229
230
231 output [7:0] read_DMA_0_3_Regsister;
232 output [7:0] read_DMA_4_7_Regsister;
233 output [7:0] read_DMA_8_11_Regsister;
234 output [7:0] read_DMA_12_15_Regsister;
235`ifdef NEPTUNE
236 output [7:0] read_DMA_16_19_Regsister;
237 output [7:0] read_DMA_20_23_Regsister;
238`else // !ifdef NEPTUNE
239`endif // !ifdef NEPTUNE
240
241
242
243 output dmc_txc_tx_addr_md;
244
245 // read data inputs
246 input [63:0] dma_0_3_sl_data;
247 input [63:0] dma_4_7_sl_data;
248 input [63:0] dma_8_11_sl_data;
249 input [63:0] dma_12_15_sl_data;
250 input [63:0] dma_16_19_sl_data;
251 input [63:0] dma_20_23_sl_data;
252 input read_decode_invalid_dma0_3;
253 input read_decode_invalid_dma4_7;
254 input read_decode_invalid_dma8_11;
255 input read_decode_invalid_dma12_15;
256 input read_decode_invalid_dma16_19;
257 input read_decode_invalid_dma20_23;
258
259
260
261
262 //
263 /*--------------------------------------------------------------*/
264 // Wires & Registers
265 /*--------------------------------------------------------------*/
266 reg Slave_Ack;
267 reg Slave_Err;
268 reg [63:0] Slave_DataOut;
269
270 wire slaveStrobe;
271 wire readSlaveReg_dma0_3;
272 wire writeSlaveReg_dma0_3;
273
274 wire readSlaveReg_dma4_7;
275 wire writeSlaveReg_dma4_7;
276
277 wire readSlaveReg_dma8_11;
278 wire writeSlaveReg_dma8_11;
279
280 wire readSlaveReg_dma12_15;
281 wire writeSlaveReg_dma12_15;
282
283 wire dma_fzc_decode_dma0_3;
284 wire dma_fzc_decode_dma4_7;
285 wire dma_fzc_decode_dma8_11;
286 wire dma_fzc_decode_dma12_15;
287
288`ifdef NEPTUNE
289 wire readSlaveReg_dma16_19;
290 wire writeSlaveReg_dma16_19;
291 wire readSlaveReg_dma20_23;
292 wire writeSlaveReg_dma20_23;
293
294 wire dma_fzc_decode_dma16_19;
295 wire dma_fzc_decode_dma20_23;
296`else
297`endif
298
299
300 reg en_Slave_Ack;
301 reg en_Slave_AckD1;
302 wire niu_dmc_RSV_decode;
303
304
305
306
307 wire read_DMA0_Register ;
308 wire write_DMA0_Register;
309 wire read_FZC_DMA0_Register;
310 wire write_FZC_DMA0_Register;
311 wire dma0_decode ;
312 wire dma0_rsv_space ;
313 wire read_DMA1_Register ;
314 wire write_DMA1_Register;
315 wire read_FZC_DMA1_Register;
316 wire write_FZC_DMA1_Register;
317 wire dma1_decode ;
318 wire dma1_rsv_space ;
319 wire read_DMA2_Register ;
320 wire write_DMA2_Register;
321 wire read_FZC_DMA2_Register;
322 wire write_FZC_DMA2_Register;
323 wire dma2_decode ;
324 wire dma2_rsv_space ;
325 wire read_DMA3_Register ;
326 wire write_DMA3_Register;
327 wire read_FZC_DMA3_Register;
328 wire write_FZC_DMA3_Register;
329 wire dma3_decode ;
330 wire dma3_rsv_space ;
331 wire read_DMA4_Register ;
332 wire write_DMA4_Register;
333 wire read_FZC_DMA4_Register;
334 wire write_FZC_DMA4_Register;
335 wire dma4_decode ;
336 wire dma4_rsv_space ;
337 wire read_DMA5_Register ;
338 wire write_DMA5_Register;
339 wire read_FZC_DMA5_Register;
340 wire write_FZC_DMA5_Register;
341 wire dma5_decode ;
342 wire dma5_rsv_space ;
343 wire read_DMA6_Register ;
344 wire write_DMA6_Register;
345 wire read_FZC_DMA6_Register;
346 wire write_FZC_DMA6_Register;
347 wire dma6_decode ;
348 wire dma6_rsv_space ;
349 wire read_DMA7_Register ;
350 wire write_DMA7_Register;
351 wire read_FZC_DMA7_Register;
352 wire write_FZC_DMA7_Register;
353 wire dma7_decode ;
354 wire dma7_rsv_space ;
355 wire read_DMA8_Register ;
356 wire write_DMA8_Register;
357 wire read_FZC_DMA8_Register;
358 wire write_FZC_DMA8_Register;
359 wire dma8_decode ;
360 wire dma8_rsv_space ;
361 wire read_DMA9_Register ;
362 wire write_DMA9_Register;
363 wire read_FZC_DMA9_Register;
364 wire write_FZC_DMA9_Register;
365 wire dma9_decode ;
366 wire dma9_rsv_space ;
367 wire read_DMA10_Register ;
368 wire write_DMA10_Register;
369 wire read_FZC_DMA10_Register;
370 wire write_FZC_DMA10_Register;
371 wire dma10_decode ;
372 wire dma10_rsv_space ;
373 wire read_DMA11_Register ;
374 wire write_DMA11_Register;
375 wire read_FZC_DMA11_Register;
376 wire write_FZC_DMA11_Register;
377 wire dma11_decode ;
378 wire dma11_rsv_space ;
379 wire read_DMA12_Register ;
380 wire write_DMA12_Register;
381 wire read_FZC_DMA12_Register;
382 wire write_FZC_DMA12_Register;
383 wire dma12_decode ;
384 wire dma12_rsv_space ;
385 wire read_DMA13_Register ;
386 wire write_DMA13_Register;
387 wire read_FZC_DMA13_Register;
388 wire write_FZC_DMA13_Register;
389 wire dma13_decode ;
390 wire dma13_rsv_space ;
391 wire read_DMA14_Register ;
392 wire write_DMA14_Register;
393 wire read_FZC_DMA14_Register;
394 wire write_FZC_DMA14_Register;
395 wire dma14_decode ;
396 wire dma14_rsv_space ;
397 wire read_DMA15_Register ;
398 wire write_DMA15_Register;
399 wire read_FZC_DMA15_Register;
400 wire write_FZC_DMA15_Register;
401 wire dma15_decode ;
402 wire dma15_rsv_space ;
403 wire read_DMA16_Register ;
404 wire write_DMA16_Register;
405 wire read_FZC_DMA16_Register;
406 wire write_FZC_DMA16_Register;
407 wire dma16_decode ;
408 wire dma16_rsv_space ;
409 wire read_DMA17_Register ;
410 wire write_DMA17_Register;
411 wire read_FZC_DMA17_Register;
412 wire write_FZC_DMA17_Register;
413 wire dma17_decode ;
414 wire dma17_rsv_space ;
415 wire read_DMA18_Register ;
416 wire write_DMA18_Register;
417 wire read_FZC_DMA18_Register;
418 wire write_FZC_DMA18_Register;
419 wire dma18_decode ;
420 wire dma18_rsv_space ;
421 wire read_DMA19_Register ;
422 wire write_DMA19_Register;
423 wire read_FZC_DMA19_Register;
424 wire write_FZC_DMA19_Register;
425 wire dma19_decode ;
426 wire dma19_rsv_space ;
427 wire read_DMA20_Register ;
428 wire write_DMA20_Register;
429 wire read_FZC_DMA20_Register;
430 wire write_FZC_DMA20_Register;
431 wire dma20_decode ;
432 wire dma20_rsv_space ;
433 wire read_DMA21_Register ;
434 wire write_DMA21_Register;
435 wire read_FZC_DMA21_Register;
436 wire write_FZC_DMA21_Register;
437 wire dma21_decode ;
438 wire dma21_rsv_space ;
439 wire read_DMA22_Register ;
440 wire write_DMA22_Register;
441 wire read_FZC_DMA22_Register;
442 wire write_FZC_DMA22_Register;
443 wire dma22_decode ;
444 wire dma22_rsv_space ;
445 wire read_DMA23_Register ;
446 wire write_DMA23_Register;
447 wire read_FZC_DMA23_Register;
448 wire write_FZC_DMA23_Register;
449 wire dma23_decode ;
450 wire dma23_rsv_space ;
451
452
453 wire [7:0] read_DMA_0_3_Regsister;
454 wire [7:0] read_DMA_4_7_Regsister;
455 wire [7:0] read_DMA_8_11_Regsister;
456 wire [7:0] read_DMA_12_15_Regsister;
457 wire [7:0] read_DMA_16_19_Regsister;
458 wire [7:0] read_DMA_20_23_Regsister;
459
460 reg dmc_txc_tx_addr_md;
461 wire tx_addr_md_decode;
462 wire read_tx_addr_md ;
463 wire write_tx_addr_md;
464 wire par_corrupt_decode;
465 wire read_parity_corrupt_config ;
466 wire write_parity_corrupt_config;
467
468
469 reg [31:0] parity_corrupt_config;
470
471 reg [5:0] debug_select;
472 reg [31:0] training_vector;
473 wire debug_reg_select ;
474 wire read_debug_reg ;
475 wire write_debug_reg;
476 wire debug_training_sel;
477 wire read_training_reg ;
478 wire write_training_reg;
479 wire valid_reads;
480 wire pio_32bit_read_resp;
481 wire read_decode_invalid_dma;
482
483/* DUPLICATE THE FLOPS FOR Fixing High Fanout issues */
484 reg [19:0] pio_clients_addr_reg_dma0_3 ;
485 reg pio_clients_rd_reg_dma0_3 ;
486 reg pio_dmc_sel_reg_dma0_3 ;
487 reg pio_clients_32b_d_dma0_3;
488
489 reg [19:0] pio_clients_addr_reg_dma4_7 ;
490 reg pio_clients_rd_reg_dma4_7 ;
491 reg pio_dmc_sel_reg_dma4_7 ;
492 reg pio_clients_32b_d_dma4_7;
493
494 reg [19:0] pio_clients_addr_reg_dma8_11 ;
495 reg pio_clients_rd_reg_dma8_11 ;
496 reg pio_dmc_sel_reg_dma8_11 ;
497 reg pio_clients_32b_d_dma8_11;
498
499 reg [19:0] pio_clients_addr_reg_dma12_15 ;
500 reg pio_clients_rd_reg_dma12_15 ;
501 reg pio_dmc_sel_reg_dma12_15 ;
502 reg pio_clients_32b_d_dma12_15;
503`ifdef NEPTUNE
504 reg [19:0] pio_clients_addr_reg_dma16_19 ;
505 reg pio_clients_rd_reg_dma16_19 ;
506 reg pio_dmc_sel_reg_dma16_19 ;
507 reg pio_clients_32b_d_dma16_19;
508
509 reg [19:0] pio_clients_addr_reg_dma20_23 ;
510 reg pio_clients_rd_reg_dma20_23 ;
511 reg pio_dmc_sel_reg_dma20_23 ;
512 reg pio_clients_32b_d_dma20_23;
513`else // !`ifdef NEPTUNE
514`endif // !`ifdef NEPTUNE
515
516
517 reg [63:0] pio_clients_wdata_reg ;
518
519 wire Slave_Read_dma0_3;
520 wire Slave_Sel_dma0_3;
521 wire [19:0] Slave_Addr_dma0_3;
522
523 wire Slave_Read_dma4_7;
524 wire Slave_Sel_dma4_7;
525 wire [19:0] Slave_Addr_dma4_7;
526
527 wire Slave_Read_dma8_11;
528 wire Slave_Sel_dma8_11;
529 wire [19:0] Slave_Addr_dma8_11;
530
531 wire Slave_Read_dma12_15;
532 wire Slave_Sel_dma12_15;
533 wire [19:0] Slave_Addr_dma12_15;
534
535
536`ifdef NEPTUNE
537 wire Slave_Read_dma16_19;
538 wire Slave_Sel_dma16_19;
539 wire [19:0] Slave_Addr_dma16_19;
540
541 wire Slave_Read_dma20_23;
542 wire Slave_Sel_dma20_23;
543 wire [19:0] Slave_Addr_dma20_23;
544`else
545`endif
546
547 wire [63:0] Slave_DataIn;
548 always@(posedge SysClk) begin
549 if(!Reset_L) begin
550 pio_clients_wdata_reg <= 64'h0;
551 end else begin
552 pio_clients_wdata_reg <= pio_clients_wdata;
553 end
554 end
555
556 always@(posedge SysClk) begin
557 if(!Reset_L) begin
558 pio_clients_addr_reg_dma0_3 <= 20'h0;
559 pio_clients_rd_reg_dma0_3 <= 1'b0;
560 pio_dmc_sel_reg_dma0_3 <= 1'b0;
561 pio_clients_32b_d_dma0_3 <= 1'b0;
562 end else begin
563 pio_clients_addr_reg_dma0_3 <= pio_clients_addr;
564 pio_clients_rd_reg_dma0_3 <= pio_clients_rd;
565 pio_dmc_sel_reg_dma0_3 <= pio_tdmc_sel;
566 pio_clients_32b_d_dma0_3 <= pio_clients_32b;
567 end
568 end
569
570 always@(posedge SysClk) begin
571 if(!Reset_L) begin
572 pio_clients_addr_reg_dma4_7 <= 20'h0;
573 pio_clients_rd_reg_dma4_7 <= 1'b0;
574 pio_dmc_sel_reg_dma4_7 <= 1'b0;
575 pio_clients_32b_d_dma4_7 <= 1'b0;
576 end else begin
577 pio_clients_addr_reg_dma4_7 <= pio_clients_addr;
578 pio_clients_rd_reg_dma4_7 <= pio_clients_rd;
579 pio_dmc_sel_reg_dma4_7 <= pio_tdmc_sel;
580 pio_clients_32b_d_dma4_7 <= pio_clients_32b;
581 end
582 end
583
584 always@(posedge SysClk) begin
585 if(!Reset_L) begin
586 pio_clients_addr_reg_dma8_11 <= 20'h0;
587 pio_clients_rd_reg_dma8_11 <= 1'b0;
588 pio_dmc_sel_reg_dma8_11 <= 1'b0;
589 pio_clients_32b_d_dma8_11 <= 1'b0;
590 end else begin
591 pio_clients_addr_reg_dma8_11 <= pio_clients_addr;
592 pio_clients_rd_reg_dma8_11 <= pio_clients_rd;
593 pio_dmc_sel_reg_dma8_11 <= pio_tdmc_sel;
594 pio_clients_32b_d_dma8_11 <= pio_clients_32b;
595 end
596 end
597
598 always@(posedge SysClk) begin
599 if(!Reset_L) begin
600 pio_clients_addr_reg_dma12_15 <= 20'h0;
601 pio_clients_rd_reg_dma12_15 <= 1'b0;
602 pio_dmc_sel_reg_dma12_15 <= 1'b0;
603 pio_clients_32b_d_dma12_15 <= 1'b0;
604 end else begin
605 pio_clients_addr_reg_dma12_15 <= pio_clients_addr;
606 pio_clients_rd_reg_dma12_15 <= pio_clients_rd;
607 pio_dmc_sel_reg_dma12_15 <= pio_tdmc_sel;
608 pio_clients_32b_d_dma12_15 <= pio_clients_32b;
609 end
610 end
611
612`ifdef NEPTUNE
613 always@(posedge SysClk) begin
614 if(!Reset_L) begin
615 pio_clients_addr_reg_dma16_19 <= 20'h0;
616 pio_clients_rd_reg_dma16_19 <= 1'b0;
617 pio_dmc_sel_reg_dma16_19 <= 1'b0;
618 pio_clients_32b_d_dma16_19 <= 1'b0;
619 end else begin
620 pio_clients_addr_reg_dma16_19 <= pio_clients_addr;
621 pio_clients_rd_reg_dma16_19 <= pio_clients_rd;
622 pio_dmc_sel_reg_dma16_19 <= pio_tdmc_sel;
623 pio_clients_32b_d_dma16_19 <= pio_clients_32b;
624 end
625 end
626
627 always@(posedge SysClk) begin
628 if(!Reset_L) begin
629 pio_clients_addr_reg_dma20_23 <= 20'h0;
630 pio_clients_rd_reg_dma20_23 <= 1'b0;
631 pio_dmc_sel_reg_dma20_23 <= 1'b0;
632 pio_clients_32b_d_dma20_23 <= 1'b0;
633 end else begin
634 pio_clients_addr_reg_dma20_23 <= pio_clients_addr;
635 pio_clients_rd_reg_dma20_23 <= pio_clients_rd;
636 pio_dmc_sel_reg_dma20_23 <= pio_tdmc_sel;
637 pio_clients_32b_d_dma20_23 <= pio_clients_32b;
638 end
639 end
640`else
641`endif
642
643
644
645
646 assign Slave_Read_dma0_3= pio_clients_rd_reg_dma0_3 ;
647 assign Slave_Sel_dma0_3= pio_dmc_sel_reg_dma0_3 ;
648 assign Slave_Addr_dma0_3=pio_clients_addr_reg_dma0_3;
649
650 assign Slave_Read_dma4_7= pio_clients_rd_reg_dma4_7 ;
651 assign Slave_Sel_dma4_7= pio_dmc_sel_reg_dma4_7 ;
652 assign Slave_Addr_dma4_7=pio_clients_addr_reg_dma4_7;
653
654 assign Slave_Read_dma8_11= pio_clients_rd_reg_dma8_11 ;
655 assign Slave_Sel_dma8_11= pio_dmc_sel_reg_dma8_11 ;
656 assign Slave_Addr_dma8_11=pio_clients_addr_reg_dma8_11;
657
658 assign Slave_Read_dma12_15= pio_clients_rd_reg_dma12_15 ;
659 assign Slave_Sel_dma12_15= pio_dmc_sel_reg_dma12_15 ;
660 assign Slave_Addr_dma12_15=pio_clients_addr_reg_dma12_15;
661
662`ifdef NEPTUNE
663 assign Slave_Read_dma16_19= pio_clients_rd_reg_dma16_19 ;
664 assign Slave_Sel_dma16_19= pio_dmc_sel_reg_dma16_19 ;
665 assign Slave_Addr_dma16_19=pio_clients_addr_reg_dma16_19;
666
667 assign Slave_Read_dma20_23= pio_clients_rd_reg_dma20_23 ;
668 assign Slave_Sel_dma20_23= pio_dmc_sel_reg_dma20_23 ;
669 assign Slave_Addr_dma20_23=pio_clients_addr_reg_dma20_23;
670
671`else
672`endif
673 assign Slave_DataIn =pio_clients_wdata_reg;
674
675 assign tdmc_pio_ack = Slave_Ack;
676 assign tdmc_pio_err = Slave_Err;
677 assign tdmc_pio_rdata = Slave_DataOut;
678
679 /*--------------------------------------------------------------*/
680 // Address Decodes
681 /*--------------------------------------------------------------*/
682 assign readSlaveReg_dma0_3 = (Slave_Sel_dma0_3 & Slave_Read_dma0_3);
683 assign writeSlaveReg_dma0_3 = (Slave_Sel_dma0_3 & ~Slave_Read_dma0_3);
684
685 assign readSlaveReg_dma4_7 = (Slave_Sel_dma4_7 & Slave_Read_dma4_7);
686 assign writeSlaveReg_dma4_7 = (Slave_Sel_dma4_7 & ~Slave_Read_dma4_7);
687
688 assign readSlaveReg_dma8_11 = (Slave_Sel_dma8_11 & Slave_Read_dma8_11);
689 assign writeSlaveReg_dma8_11 = (Slave_Sel_dma8_11 & ~Slave_Read_dma8_11);
690
691 assign readSlaveReg_dma12_15 = (Slave_Sel_dma12_15 & Slave_Read_dma12_15);
692 assign writeSlaveReg_dma12_15 = (Slave_Sel_dma12_15 & ~Slave_Read_dma12_15);
693
694 `ifdef NEPTUNE
695 assign readSlaveReg_dma16_19 = (Slave_Sel_dma16_19 & Slave_Read_dma16_19);
696 assign writeSlaveReg_dma16_19 = (Slave_Sel_dma16_19 & ~Slave_Read_dma16_19);
697 assign readSlaveReg_dma20_23 = (Slave_Sel_dma20_23 & Slave_Read_dma20_23);
698 assign writeSlaveReg_dma20_23 = (Slave_Sel_dma20_23 & ~Slave_Read_dma20_23);
699 `else
700 `endif
701 // assign niu_dmc_RSV_decode = ({1'h0, Slave_Addr[18:12]} == `NIU_DMC_RSV);??
702 assign niu_dmc_RSV_decode = (~valid_reads & readSlaveReg_dma0_3) | ( read_decode_invalid_dma & readSlaveReg_dma0_3);
703 assign read_decode_invalid_dma = | {read_decode_invalid_dma0_3, read_decode_invalid_dma4_7,
704 read_decode_invalid_dma8_11, read_decode_invalid_dma12_15,
705 read_decode_invalid_dma16_19, read_decode_invalid_dma20_23};
706
707
708
709
710
711 /*--------------------------------------------------------------*/
712 // Slave Control Logic
713 /*--------------------------------------------------------------*/
714 always @ (posedge SysClk )
715 if (!Reset_L) en_Slave_Ack <= 1'b0;
716 else en_Slave_Ack <= Slave_Sel_dma0_3;
717
718 always @ (posedge SysClk )
719 if (!Reset_L) en_Slave_AckD1 <= 1'b0;
720 else en_Slave_AckD1 <= en_Slave_Ack;
721
722 assign slaveStrobe = en_Slave_Ack & ~en_Slave_AckD1;
723
724 /*--------------------------------------------------------------*/
725 // Slave Interface
726 /*--------------------------------------------------------------*/
727 always @ (posedge SysClk )
728 if (!Reset_L) Slave_Ack <= 1'b0;
729 else if (slaveStrobe) Slave_Ack <= 1'b1;
730 else Slave_Ack <= 1'b0;
731
732 always @ (posedge SysClk )
733 if (!Reset_L)
734 Slave_Err <= 1'b0;
735 else if (slaveStrobe)
736 begin
737 if (niu_dmc_RSV_decode) Slave_Err <= 1'b1;
738 else Slave_Err <= 1'b0;
739 end
740 else
741 Slave_Err <= 1'b0;
742
743 assign dma_fzc_decode_dma0_3 = Slave_Addr_dma0_3[19];
744 assign dma_fzc_decode_dma4_7 = Slave_Addr_dma4_7[19];
745 assign dma_fzc_decode_dma8_11= Slave_Addr_dma8_11[19];
746 assign dma_fzc_decode_dma12_15 = Slave_Addr_dma12_15[19];
747 `ifdef NEPTUNE
748 assign dma_fzc_decode_dma16_19 = Slave_Addr_dma16_19[19];
749 assign dma_fzc_decode_dma20_23 = Slave_Addr_dma20_23[19];
750 `else
751 `endif
752
753
754
755 assign debug_reg_select = ({1'h0, Slave_Addr_dma0_3[18:3],3'h0} == `TDMC_DEBUG_SELECT);
756 assign read_debug_reg = dma_fzc_decode_dma0_3 & (readSlaveReg_dma0_3 & debug_reg_select );
757 assign write_debug_reg = dma_fzc_decode_dma0_3 & (writeSlaveReg_dma0_3 & debug_reg_select );
758
759 always @ (posedge SysClk )
760 if (!Reset_L)
761 begin
762 debug_select <= 6'b0;
763 end else begin // if (!Reset_L)
764 if (write_debug_reg & ~Slave_Addr_dma0_3[2] ) begin
765 debug_select <= Slave_DataIn[5:0];
766 end // if (write_tx_addr_md )
767 end // else: !if(!Reset_L)
768
769 assign debug_training_sel = ({1'h0, Slave_Addr_dma0_3[18:3],3'h0} == `TDMC_TRAINING_VECTOR);
770 assign read_training_reg = dma_fzc_decode_dma0_3 & (readSlaveReg_dma0_3 & debug_training_sel );
771 assign write_training_reg = dma_fzc_decode_dma0_3 & (writeSlaveReg_dma0_3 & debug_training_sel );
772 always @ (posedge SysClk )
773 if (!Reset_L)
774 begin
775 training_vector <= 32'b0;
776 end else begin // if (!Reset_L)
777 if (write_training_reg & ~Slave_Addr_dma0_3[2] ) begin
778 training_vector <= Slave_DataIn[31:0];
779 end // if (write_tx_addr_md )
780 end // else: !if(!Reset_L)
781
782
783
784
785 // for a common register to be shared with all the DMAs
786
787
788 assign tx_addr_md_decode = ({1'h0, Slave_Addr_dma0_3[18:3],3'h0} == `TX_ADDR_MD);
789 assign read_tx_addr_md = dma_fzc_decode_dma0_3 & (readSlaveReg_dma0_3 & tx_addr_md_decode );
790 assign write_tx_addr_md = dma_fzc_decode_dma0_3 & (writeSlaveReg_dma0_3 & tx_addr_md_decode );
791
792 always @ (posedge SysClk )
793 if (!Reset_L)
794 begin
795 dmc_txc_tx_addr_md <= 1'b0;
796 end else begin // if (!Reset_L)
797 if (write_tx_addr_md & ~Slave_Addr_dma0_3[2] ) begin
798 dmc_txc_tx_addr_md <= Slave_DataIn[0];
799 end // if (write_tx_addr_md )
800 end // else: !if(!Reset_L)
801
802 assign par_corrupt_decode = ({1'h0, Slave_Addr_dma0_3[18:3],3'h0} == `TX_CACHE_PAR_CORRUPT);
803 assign read_parity_corrupt_config = dma_fzc_decode_dma0_3 & (readSlaveReg_dma0_3 & par_corrupt_decode );
804 assign write_parity_corrupt_config = dma_fzc_decode_dma0_3 & (writeSlaveReg_dma0_3 & par_corrupt_decode );
805
806
807 always @ (posedge SysClk )
808 if (!Reset_L)
809 parity_corrupt_config <= 32'h0;
810 else begin
811 if(write_parity_corrupt_config & ~Slave_Addr_dma0_3[2]) begin
812`ifdef NEPTUNE
813 parity_corrupt_config <= {8'h0,Slave_DataIn[23:0]};
814`else
815 parity_corrupt_config <= {16'h0,Slave_DataIn[15:0]};
816`endif
817 end
818 end // else: !if(!Reset_L)
819
820
821
822 // below this is script generated
823
824
825 assign read_DMA0_Register = ~dma_fzc_decode_dma0_3 & (readSlaveReg_dma0_3 & dma0_decode & ~dma0_rsv_space);
826 assign write_DMA0_Register = ~dma_fzc_decode_dma0_3 & (writeSlaveReg_dma0_3 & dma0_decode & ~dma0_rsv_space);
827
828 assign read_FZC_DMA0_Register = dma_fzc_decode_dma0_3 & (readSlaveReg_dma0_3 & dma0_decode & ~dma0_rsv_space);
829 assign write_FZC_DMA0_Register = dma_fzc_decode_dma0_3 & (writeSlaveReg_dma0_3 & dma0_decode & ~dma0_rsv_space);
830
831 assign dma0_decode = ({1'h0, Slave_Addr_dma0_3[18:9]} == `DMC_DMA0_SPACE);
832 assign dma0_rsv_space = (Slave_Addr_dma0_3[8:0] >= `DMC_DMA_RSV_SPACE);
833
834 assign read_DMA1_Register = ~dma_fzc_decode_dma0_3 & (readSlaveReg_dma0_3 & dma1_decode & ~dma1_rsv_space);
835 assign write_DMA1_Register = ~dma_fzc_decode_dma0_3 & (writeSlaveReg_dma0_3 & dma1_decode & ~dma1_rsv_space);
836
837 assign read_FZC_DMA1_Register = dma_fzc_decode_dma0_3 & (readSlaveReg_dma0_3 & dma1_decode & ~dma1_rsv_space);
838 assign write_FZC_DMA1_Register = dma_fzc_decode_dma0_3 & (writeSlaveReg_dma0_3 & dma1_decode & ~dma1_rsv_space);
839
840 assign dma1_decode = ({1'h0, Slave_Addr_dma0_3[18:9]} == `DMC_DMA1_SPACE);
841 assign dma1_rsv_space = (Slave_Addr_dma0_3[8:0] >= `DMC_DMA_RSV_SPACE);
842
843 assign read_DMA2_Register = ~dma_fzc_decode_dma0_3 & (readSlaveReg_dma0_3 & dma2_decode & ~dma2_rsv_space);
844 assign write_DMA2_Register = ~dma_fzc_decode_dma0_3 & (writeSlaveReg_dma0_3 & dma2_decode & ~dma2_rsv_space);
845
846 assign read_FZC_DMA2_Register = dma_fzc_decode_dma0_3 & (readSlaveReg_dma0_3 & dma2_decode & ~dma2_rsv_space);
847 assign write_FZC_DMA2_Register = dma_fzc_decode_dma0_3 & (writeSlaveReg_dma0_3 & dma2_decode & ~dma2_rsv_space);
848
849 assign dma2_decode = ({1'h0, Slave_Addr_dma0_3[18:9]} == `DMC_DMA2_SPACE);
850 assign dma2_rsv_space = (Slave_Addr_dma0_3[8:0] >= `DMC_DMA_RSV_SPACE);
851
852 assign read_DMA3_Register = ~dma_fzc_decode_dma0_3 & (readSlaveReg_dma0_3 & dma3_decode & ~dma3_rsv_space);
853 assign write_DMA3_Register = ~dma_fzc_decode_dma0_3 & (writeSlaveReg_dma0_3 & dma3_decode & ~dma3_rsv_space);
854
855 assign read_FZC_DMA3_Register = dma_fzc_decode_dma0_3 & (readSlaveReg_dma0_3 & dma3_decode & ~dma3_rsv_space);
856 assign write_FZC_DMA3_Register = dma_fzc_decode_dma0_3 & (writeSlaveReg_dma0_3 & dma3_decode & ~dma3_rsv_space);
857
858 assign dma3_decode = ({1'h0, Slave_Addr_dma0_3[18:9]} == `DMC_DMA3_SPACE);
859 assign dma3_rsv_space = (Slave_Addr_dma0_3[8:0] >= `DMC_DMA_RSV_SPACE);
860
861 assign read_DMA4_Register = ~dma_fzc_decode_dma4_7 & (readSlaveReg_dma4_7 & dma4_decode & ~dma4_rsv_space);
862 assign write_DMA4_Register = ~dma_fzc_decode_dma4_7 & (writeSlaveReg_dma4_7 & dma4_decode & ~dma4_rsv_space);
863
864 assign read_FZC_DMA4_Register = dma_fzc_decode_dma4_7 & (readSlaveReg_dma4_7 & dma4_decode & ~dma4_rsv_space);
865 assign write_FZC_DMA4_Register = dma_fzc_decode_dma4_7 & (writeSlaveReg_dma4_7 & dma4_decode & ~dma4_rsv_space);
866
867 assign dma4_decode = ({1'h0, Slave_Addr_dma4_7[18:9]} == `DMC_DMA4_SPACE);
868 assign dma4_rsv_space = (Slave_Addr_dma4_7[8:0] >= `DMC_DMA_RSV_SPACE);
869
870 assign read_DMA5_Register = ~dma_fzc_decode_dma4_7 & (readSlaveReg_dma4_7 & dma5_decode & ~dma5_rsv_space);
871 assign write_DMA5_Register = ~dma_fzc_decode_dma4_7 & (writeSlaveReg_dma4_7 & dma5_decode & ~dma5_rsv_space);
872
873 assign read_FZC_DMA5_Register = dma_fzc_decode_dma4_7 & (readSlaveReg_dma4_7 & dma5_decode & ~dma5_rsv_space);
874 assign write_FZC_DMA5_Register = dma_fzc_decode_dma4_7 & (writeSlaveReg_dma4_7 & dma5_decode & ~dma5_rsv_space);
875
876 assign dma5_decode = ({1'h0, Slave_Addr_dma4_7[18:9]} == `DMC_DMA5_SPACE);
877 assign dma5_rsv_space = (Slave_Addr_dma4_7[8:0] >= `DMC_DMA_RSV_SPACE);
878
879 assign read_DMA6_Register = ~dma_fzc_decode_dma4_7 & (readSlaveReg_dma4_7 & dma6_decode & ~dma6_rsv_space);
880 assign write_DMA6_Register = ~dma_fzc_decode_dma4_7 & (writeSlaveReg_dma4_7 & dma6_decode & ~dma6_rsv_space);
881
882 assign read_FZC_DMA6_Register = dma_fzc_decode_dma4_7 & (readSlaveReg_dma4_7 & dma6_decode & ~dma6_rsv_space);
883 assign write_FZC_DMA6_Register = dma_fzc_decode_dma4_7 & (writeSlaveReg_dma4_7 & dma6_decode & ~dma6_rsv_space);
884
885 assign dma6_decode = ({1'h0, Slave_Addr_dma4_7[18:9]} == `DMC_DMA6_SPACE);
886 assign dma6_rsv_space = (Slave_Addr_dma4_7[8:0] >= `DMC_DMA_RSV_SPACE);
887
888 assign read_DMA7_Register = ~dma_fzc_decode_dma4_7 & (readSlaveReg_dma4_7 & dma7_decode & ~dma7_rsv_space);
889 assign write_DMA7_Register = ~dma_fzc_decode_dma4_7 & (writeSlaveReg_dma4_7 & dma7_decode & ~dma7_rsv_space);
890
891 assign read_FZC_DMA7_Register = dma_fzc_decode_dma4_7 & (readSlaveReg_dma4_7 & dma7_decode & ~dma7_rsv_space);
892 assign write_FZC_DMA7_Register = dma_fzc_decode_dma4_7 & (writeSlaveReg_dma4_7 & dma7_decode & ~dma7_rsv_space);
893
894 assign dma7_decode = ({1'h0, Slave_Addr_dma4_7[18:9]} == `DMC_DMA7_SPACE);
895 assign dma7_rsv_space = (Slave_Addr_dma4_7[8:0] >= `DMC_DMA_RSV_SPACE);
896
897 assign read_DMA8_Register = ~dma_fzc_decode_dma8_11 & (readSlaveReg_dma8_11 & dma8_decode & ~dma8_rsv_space);
898 assign write_DMA8_Register = ~dma_fzc_decode_dma8_11 & (writeSlaveReg_dma8_11 & dma8_decode & ~dma8_rsv_space);
899
900 assign read_FZC_DMA8_Register = dma_fzc_decode_dma8_11 & (readSlaveReg_dma8_11 & dma8_decode & ~dma8_rsv_space);
901 assign write_FZC_DMA8_Register = dma_fzc_decode_dma8_11 & (writeSlaveReg_dma8_11 & dma8_decode & ~dma8_rsv_space);
902
903 assign dma8_decode = ({1'h0, Slave_Addr_dma8_11[18:9]} == `DMC_DMA8_SPACE);
904 assign dma8_rsv_space = (Slave_Addr_dma8_11[8:0] >= `DMC_DMA_RSV_SPACE);
905
906 assign read_DMA9_Register = ~dma_fzc_decode_dma8_11 & (readSlaveReg_dma8_11 & dma9_decode & ~dma9_rsv_space);
907 assign write_DMA9_Register = ~dma_fzc_decode_dma8_11 & (writeSlaveReg_dma8_11 & dma9_decode & ~dma9_rsv_space);
908
909 assign read_FZC_DMA9_Register = dma_fzc_decode_dma8_11 & (readSlaveReg_dma8_11 & dma9_decode & ~dma9_rsv_space);
910 assign write_FZC_DMA9_Register = dma_fzc_decode_dma8_11 & (writeSlaveReg_dma8_11 & dma9_decode & ~dma9_rsv_space);
911
912 assign dma9_decode = ({1'h0, Slave_Addr_dma8_11[18:9]} == `DMC_DMA9_SPACE);
913 assign dma9_rsv_space = (Slave_Addr_dma8_11[8:0] >= `DMC_DMA_RSV_SPACE);
914
915 assign read_DMA10_Register = ~dma_fzc_decode_dma8_11 & (readSlaveReg_dma8_11 & dma10_decode & ~dma10_rsv_space);
916 assign write_DMA10_Register = ~dma_fzc_decode_dma8_11 & (writeSlaveReg_dma8_11 & dma10_decode & ~dma10_rsv_space);
917
918 assign read_FZC_DMA10_Register = dma_fzc_decode_dma8_11 & (readSlaveReg_dma8_11 & dma10_decode & ~dma10_rsv_space);
919 assign write_FZC_DMA10_Register = dma_fzc_decode_dma8_11 & (writeSlaveReg_dma8_11 & dma10_decode & ~dma10_rsv_space);
920
921 assign dma10_decode = ({1'h0, Slave_Addr_dma8_11[18:9]} == `DMC_DMA10_SPACE);
922 assign dma10_rsv_space = (Slave_Addr_dma8_11[8:0] >= `DMC_DMA_RSV_SPACE);
923
924 assign read_DMA11_Register = ~dma_fzc_decode_dma8_11 & (readSlaveReg_dma8_11 & dma11_decode & ~dma11_rsv_space);
925 assign write_DMA11_Register = ~dma_fzc_decode_dma8_11 & (writeSlaveReg_dma8_11 & dma11_decode & ~dma11_rsv_space);
926
927 assign read_FZC_DMA11_Register = dma_fzc_decode_dma8_11 & (readSlaveReg_dma8_11 & dma11_decode & ~dma11_rsv_space);
928 assign write_FZC_DMA11_Register = dma_fzc_decode_dma8_11 & (writeSlaveReg_dma8_11 & dma11_decode & ~dma11_rsv_space);
929
930 assign dma11_decode = ({1'h0, Slave_Addr_dma8_11[18:9]} == `DMC_DMA11_SPACE);
931 assign dma11_rsv_space = (Slave_Addr_dma8_11[8:0] >= `DMC_DMA_RSV_SPACE);
932
933 assign read_DMA12_Register = ~dma_fzc_decode_dma12_15 & (readSlaveReg_dma12_15 & dma12_decode & ~dma12_rsv_space);
934 assign write_DMA12_Register = ~dma_fzc_decode_dma12_15 & (writeSlaveReg_dma12_15 & dma12_decode & ~dma12_rsv_space);
935
936 assign read_FZC_DMA12_Register = dma_fzc_decode_dma12_15 & (readSlaveReg_dma12_15 & dma12_decode & ~dma12_rsv_space);
937 assign write_FZC_DMA12_Register = dma_fzc_decode_dma12_15 & (writeSlaveReg_dma12_15 & dma12_decode & ~dma12_rsv_space);
938
939 assign dma12_decode = ({1'h0, Slave_Addr_dma12_15[18:9]} == `DMC_DMA12_SPACE);
940 assign dma12_rsv_space = (Slave_Addr_dma12_15[8:0] >= `DMC_DMA_RSV_SPACE);
941
942 assign read_DMA13_Register = ~dma_fzc_decode_dma12_15 & (readSlaveReg_dma12_15 & dma13_decode & ~dma13_rsv_space);
943 assign write_DMA13_Register = ~dma_fzc_decode_dma12_15 & (writeSlaveReg_dma12_15 & dma13_decode & ~dma13_rsv_space);
944
945 assign read_FZC_DMA13_Register = dma_fzc_decode_dma12_15 & (readSlaveReg_dma12_15 & dma13_decode & ~dma13_rsv_space);
946 assign write_FZC_DMA13_Register = dma_fzc_decode_dma12_15 & (writeSlaveReg_dma12_15 & dma13_decode & ~dma13_rsv_space);
947
948 assign dma13_decode = ({1'h0, Slave_Addr_dma12_15[18:9]} == `DMC_DMA13_SPACE);
949 assign dma13_rsv_space = (Slave_Addr_dma12_15[8:0] >= `DMC_DMA_RSV_SPACE);
950
951 assign read_DMA14_Register = ~dma_fzc_decode_dma12_15 & (readSlaveReg_dma12_15 & dma14_decode & ~dma14_rsv_space);
952 assign write_DMA14_Register = ~dma_fzc_decode_dma12_15 & (writeSlaveReg_dma12_15 & dma14_decode & ~dma14_rsv_space);
953
954 assign read_FZC_DMA14_Register = dma_fzc_decode_dma12_15 & (readSlaveReg_dma12_15 & dma14_decode & ~dma14_rsv_space);
955 assign write_FZC_DMA14_Register = dma_fzc_decode_dma12_15 & (writeSlaveReg_dma12_15 & dma14_decode & ~dma14_rsv_space);
956
957 assign dma14_decode = ({1'h0, Slave_Addr_dma12_15[18:9]} == `DMC_DMA14_SPACE);
958 assign dma14_rsv_space = (Slave_Addr_dma12_15[8:0] >= `DMC_DMA_RSV_SPACE);
959
960 assign read_DMA15_Register = ~dma_fzc_decode_dma12_15 & (readSlaveReg_dma12_15 & dma15_decode & ~dma15_rsv_space);
961 assign write_DMA15_Register = ~dma_fzc_decode_dma12_15 & (writeSlaveReg_dma12_15 & dma15_decode & ~dma15_rsv_space);
962
963 assign read_FZC_DMA15_Register = dma_fzc_decode_dma12_15 & (readSlaveReg_dma12_15 & dma15_decode & ~dma15_rsv_space);
964 assign write_FZC_DMA15_Register = dma_fzc_decode_dma12_15 & (writeSlaveReg_dma12_15 & dma15_decode & ~dma15_rsv_space);
965
966 assign dma15_decode = ({1'h0, Slave_Addr_dma12_15[18:9]} == `DMC_DMA15_SPACE);
967 assign dma15_rsv_space = (Slave_Addr_dma12_15[8:0] >= `DMC_DMA_RSV_SPACE);
968
969
970
971
972`ifdef NEPTUNE
973
974 assign read_DMA16_Register = ~dma_fzc_decode_dma16_19 & (readSlaveReg_dma16_19 & dma16_decode & ~dma16_rsv_space);
975 assign write_DMA16_Register = ~dma_fzc_decode_dma16_19 & (writeSlaveReg_dma16_19 & dma16_decode & ~dma16_rsv_space);
976
977 assign read_FZC_DMA16_Register = dma_fzc_decode_dma16_19 & (readSlaveReg_dma16_19 & dma16_decode & ~dma16_rsv_space);
978 assign write_FZC_DMA16_Register = dma_fzc_decode_dma16_19 & (writeSlaveReg_dma16_19 & dma16_decode & ~dma16_rsv_space);
979
980 assign dma16_decode = ({1'h0, Slave_Addr_dma16_19[18:9]} == `DMC_DMA16_SPACE);
981 assign dma16_rsv_space = (Slave_Addr_dma16_19[8:0] >= `DMC_DMA_RSV_SPACE);
982
983 assign read_DMA17_Register = ~dma_fzc_decode_dma16_19 & (readSlaveReg_dma16_19 & dma17_decode & ~dma17_rsv_space);
984 assign write_DMA17_Register = ~dma_fzc_decode_dma16_19 & (writeSlaveReg_dma16_19 & dma17_decode & ~dma17_rsv_space);
985
986 assign read_FZC_DMA17_Register = dma_fzc_decode_dma16_19 & (readSlaveReg_dma16_19 & dma17_decode & ~dma17_rsv_space);
987 assign write_FZC_DMA17_Register = dma_fzc_decode_dma16_19 & (writeSlaveReg_dma16_19 & dma17_decode & ~dma17_rsv_space);
988
989 assign dma17_decode = ({1'h0, Slave_Addr_dma16_19[18:9]} == `DMC_DMA17_SPACE);
990 assign dma17_rsv_space = (Slave_Addr_dma16_19[8:0] >= `DMC_DMA_RSV_SPACE);
991
992 assign read_DMA18_Register = ~dma_fzc_decode_dma16_19 & (readSlaveReg_dma16_19 & dma18_decode & ~dma18_rsv_space);
993 assign write_DMA18_Register = ~dma_fzc_decode_dma16_19 & (writeSlaveReg_dma16_19 & dma18_decode & ~dma18_rsv_space);
994
995 assign read_FZC_DMA18_Register = dma_fzc_decode_dma16_19 & (readSlaveReg_dma16_19 & dma18_decode & ~dma18_rsv_space);
996 assign write_FZC_DMA18_Register = dma_fzc_decode_dma16_19 & (writeSlaveReg_dma16_19 & dma18_decode & ~dma18_rsv_space);
997
998 assign dma18_decode = ({1'h0, Slave_Addr_dma16_19[18:9]} == `DMC_DMA18_SPACE);
999 assign dma18_rsv_space = (Slave_Addr_dma16_19[8:0] >= `DMC_DMA_RSV_SPACE);
1000
1001 assign read_DMA19_Register = ~dma_fzc_decode_dma16_19 & (readSlaveReg_dma16_19 & dma19_decode & ~dma19_rsv_space);
1002 assign write_DMA19_Register = ~dma_fzc_decode_dma16_19 & (writeSlaveReg_dma16_19 & dma19_decode & ~dma19_rsv_space);
1003
1004 assign read_FZC_DMA19_Register = dma_fzc_decode_dma16_19 & (readSlaveReg_dma16_19 & dma19_decode & ~dma19_rsv_space);
1005 assign write_FZC_DMA19_Register = dma_fzc_decode_dma16_19 & (writeSlaveReg_dma16_19 & dma19_decode & ~dma19_rsv_space);
1006
1007 assign dma19_decode = ({1'h0, Slave_Addr_dma16_19[18:9]} == `DMC_DMA19_SPACE);
1008 assign dma19_rsv_space = (Slave_Addr_dma16_19[8:0] >= `DMC_DMA_RSV_SPACE);
1009
1010 assign read_DMA20_Register = ~dma_fzc_decode_dma20_23 & (readSlaveReg_dma20_23 & dma20_decode & ~dma20_rsv_space);
1011 assign write_DMA20_Register = ~dma_fzc_decode_dma20_23 & (writeSlaveReg_dma20_23 & dma20_decode & ~dma20_rsv_space);
1012
1013 assign read_FZC_DMA20_Register = dma_fzc_decode_dma20_23 & (readSlaveReg_dma20_23 & dma20_decode & ~dma20_rsv_space);
1014 assign write_FZC_DMA20_Register = dma_fzc_decode_dma20_23 & (writeSlaveReg_dma20_23 & dma20_decode & ~dma20_rsv_space);
1015
1016 assign dma20_decode = ({1'h0, Slave_Addr_dma20_23[18:9]} == `DMC_DMA20_SPACE);
1017 assign dma20_rsv_space = (Slave_Addr_dma20_23[8:0] >= `DMC_DMA_RSV_SPACE);
1018
1019 assign read_DMA21_Register = ~dma_fzc_decode_dma20_23 & (readSlaveReg_dma20_23 & dma21_decode & ~dma21_rsv_space);
1020 assign write_DMA21_Register = ~dma_fzc_decode_dma20_23 & (writeSlaveReg_dma20_23 & dma21_decode & ~dma21_rsv_space);
1021
1022 assign read_FZC_DMA21_Register = dma_fzc_decode_dma20_23 & (readSlaveReg_dma20_23 & dma21_decode & ~dma21_rsv_space);
1023 assign write_FZC_DMA21_Register = dma_fzc_decode_dma20_23 & (writeSlaveReg_dma20_23 & dma21_decode & ~dma21_rsv_space);
1024
1025 assign dma21_decode = ({1'h0, Slave_Addr_dma20_23[18:9]} == `DMC_DMA21_SPACE);
1026 assign dma21_rsv_space = (Slave_Addr_dma20_23[8:0] >= `DMC_DMA_RSV_SPACE);
1027
1028 assign read_DMA22_Register = ~dma_fzc_decode_dma20_23 & (readSlaveReg_dma20_23 & dma22_decode & ~dma22_rsv_space);
1029 assign write_DMA22_Register = ~dma_fzc_decode_dma20_23 & (writeSlaveReg_dma20_23 & dma22_decode & ~dma22_rsv_space);
1030
1031 assign read_FZC_DMA22_Register = dma_fzc_decode_dma20_23 & (readSlaveReg_dma20_23 & dma22_decode & ~dma22_rsv_space);
1032 assign write_FZC_DMA22_Register = dma_fzc_decode_dma20_23 & (writeSlaveReg_dma20_23 & dma22_decode & ~dma22_rsv_space);
1033
1034 assign dma22_decode = ({1'h0, Slave_Addr_dma20_23[18:9]} == `DMC_DMA22_SPACE);
1035 assign dma22_rsv_space = (Slave_Addr_dma20_23[8:0] >= `DMC_DMA_RSV_SPACE);
1036
1037 assign read_DMA23_Register = ~dma_fzc_decode_dma20_23 & (readSlaveReg_dma20_23 & dma23_decode & ~dma23_rsv_space);
1038 assign write_DMA23_Register = ~dma_fzc_decode_dma20_23 & (writeSlaveReg_dma20_23 & dma23_decode & ~dma23_rsv_space);
1039
1040 assign read_FZC_DMA23_Register = dma_fzc_decode_dma20_23 & (readSlaveReg_dma20_23 & dma23_decode & ~dma23_rsv_space);
1041 assign write_FZC_DMA23_Register = dma_fzc_decode_dma20_23 & (writeSlaveReg_dma20_23 & dma23_decode & ~dma23_rsv_space);
1042
1043 assign dma23_decode = ({1'h0, Slave_Addr_dma20_23[18:9]} == `DMC_DMA23_SPACE);
1044 assign dma23_rsv_space = (Slave_Addr_dma20_23[8:0] >= `DMC_DMA_RSV_SPACE);
1045
1046 `else
1047
1048 assign read_DMA16_Register = 1'b0;
1049 assign write_DMA16_Register = 1'b0;
1050
1051 assign read_FZC_DMA16_Register = 1'b0;
1052 assign write_FZC_DMA16_Register = 1'b0;
1053
1054 assign dma16_decode = 1'b0;
1055 assign dma16_rsv_space = 1'b0;
1056 assign read_DMA17_Register = 1'b0;
1057 assign write_DMA17_Register = 1'b0;
1058
1059 assign read_FZC_DMA17_Register = 1'b0;
1060 assign write_FZC_DMA17_Register = 1'b0;
1061
1062 assign dma17_decode = 1'b0;
1063 assign dma17_rsv_space = 1'b0;
1064 assign read_DMA18_Register = 1'b0;
1065 assign write_DMA18_Register = 1'b0;
1066
1067 assign read_FZC_DMA18_Register = 1'b0;
1068 assign write_FZC_DMA18_Register = 1'b0;
1069
1070 assign dma18_decode = 1'b0;
1071 assign dma18_rsv_space = 1'b0;
1072 assign read_DMA19_Register = 1'b0;
1073 assign write_DMA19_Register = 1'b0;
1074
1075 assign read_FZC_DMA19_Register = 1'b0;
1076 assign write_FZC_DMA19_Register = 1'b0;
1077
1078 assign dma19_decode = 1'b0;
1079 assign dma19_rsv_space = 1'b0;
1080 assign read_DMA20_Register = 1'b0;
1081 assign write_DMA20_Register = 1'b0;
1082
1083 assign read_FZC_DMA20_Register = 1'b0;
1084 assign write_FZC_DMA20_Register = 1'b0;
1085
1086 assign dma20_decode = 1'b0;
1087 assign dma20_rsv_space = 1'b0;
1088 assign read_DMA21_Register = 1'b0;
1089 assign write_DMA21_Register = 1'b0;
1090
1091 assign read_FZC_DMA21_Register = 1'b0;
1092 assign write_FZC_DMA21_Register = 1'b0;
1093
1094 assign dma21_decode = 1'b0;
1095 assign dma21_rsv_space = 1'b0;
1096 assign read_DMA22_Register = 1'b0;
1097 assign write_DMA22_Register = 1'b0;
1098
1099 assign read_FZC_DMA22_Register = 1'b0;
1100 assign write_FZC_DMA22_Register = 1'b0;
1101
1102 assign dma22_decode = 1'b0;
1103 assign dma22_rsv_space = 1'b0;
1104 assign read_DMA23_Register = 1'b0;
1105 assign write_DMA23_Register = 1'b0;
1106
1107 assign read_FZC_DMA23_Register = 1'b0;
1108 assign write_FZC_DMA23_Register = 1'b0;
1109
1110 assign dma23_decode = 1'b0;
1111 assign dma23_rsv_space = 1'b0;
1112 `endif
1113
1114
1115
1116
1117
1118
1119
1120
1121 assign read_DMA_0_3_Regsister = {read_FZC_DMA3_Register,read_FZC_DMA2_Register,read_FZC_DMA1_Register,read_FZC_DMA0_Register,
1122 read_DMA3_Register,read_DMA2_Register,read_DMA1_Register,read_DMA0_Register };
1123 assign read_DMA_4_7_Regsister = {read_FZC_DMA7_Register,read_FZC_DMA6_Register,read_FZC_DMA5_Register,read_FZC_DMA4_Register,
1124 read_DMA7_Register,read_DMA6_Register,read_DMA5_Register,read_DMA4_Register };
1125 assign read_DMA_8_11_Regsister = {read_FZC_DMA11_Register,read_FZC_DMA10_Register,read_FZC_DMA9_Register,read_FZC_DMA8_Register,
1126 read_DMA11_Register,read_DMA10_Register,read_DMA9_Register,read_DMA8_Register };
1127 assign read_DMA_12_15_Regsister = {read_FZC_DMA15_Register,read_FZC_DMA14_Register,read_FZC_DMA13_Register,read_FZC_DMA12_Register,
1128 read_DMA15_Register,read_DMA14_Register,read_DMA13_Register,read_DMA12_Register };
1129 assign read_DMA_16_19_Regsister = {read_FZC_DMA19_Register,read_FZC_DMA18_Register,read_FZC_DMA17_Register,read_FZC_DMA16_Register,
1130 read_DMA19_Register,read_DMA18_Register,read_DMA17_Register,read_DMA16_Register };
1131 assign read_DMA_20_23_Regsister = {read_FZC_DMA23_Register,read_FZC_DMA22_Register,read_FZC_DMA21_Register,read_FZC_DMA20_Register,
1132 read_DMA23_Register,read_DMA22_Register,read_DMA21_Register,read_DMA20_Register };
1133
1134
1135
1136
1137 assign valid_reads = |{read_DMA_0_3_Regsister,read_DMA_4_7_Regsister,read_DMA_8_11_Regsister,read_DMA_12_15_Regsister,
1138 read_DMA_16_19_Regsister,read_DMA_20_23_Regsister,
1139 read_tx_addr_md,read_parity_corrupt_config,read_debug_reg,read_training_reg};
1140
1141 assign pio_32bit_read_resp = pio_clients_32b_d_dma0_3 & Slave_Addr_dma0_3[2] ;
1142
1143 // Mux Data Out
1144 always @ (posedge SysClk )
1145 if (!Reset_L) Slave_DataOut <= 64'h0;
1146 else if ( |read_DMA_0_3_Regsister) Slave_DataOut <= pio_32bit_read_resp ? {32'h0,dma_0_3_sl_data[63:32]} : dma_0_3_sl_data;
1147 else if ( |read_DMA_4_7_Regsister) Slave_DataOut <= pio_32bit_read_resp ? {32'h0,dma_4_7_sl_data[63:32]} :dma_4_7_sl_data;
1148 else if ( |read_DMA_8_11_Regsister) Slave_DataOut <= pio_32bit_read_resp ? {32'h0,dma_8_11_sl_data[63:32]} :dma_8_11_sl_data;
1149 else if ( |read_DMA_12_15_Regsister) Slave_DataOut <= pio_32bit_read_resp ? {32'h0,dma_12_15_sl_data[63:32]} :dma_12_15_sl_data;
1150 else if ( |read_DMA_16_19_Regsister) Slave_DataOut <= pio_32bit_read_resp ? {32'h0,dma_16_19_sl_data[63:32]} :dma_16_19_sl_data;
1151 else if ( |read_DMA_20_23_Regsister) Slave_DataOut <= pio_32bit_read_resp ? {32'h0,dma_20_23_sl_data[63:32]} :dma_20_23_sl_data;
1152
1153 else if ( read_tx_addr_md ) Slave_DataOut <= pio_32bit_read_resp ? {32'h0,32'h0} : {63'h0, dmc_txc_tx_addr_md };
1154 else if ( read_parity_corrupt_config) Slave_DataOut <= pio_32bit_read_resp ? {32'h0,32'h0} : {32'h0,parity_corrupt_config};
1155 else if ( read_debug_reg) Slave_DataOut <= pio_32bit_read_resp ? {32'h0,32'h0} : {32'h0,26'h0,debug_select};
1156 else if ( read_training_reg) Slave_DataOut <= pio_32bit_read_resp ? {32'h0,32'h0} : {32'h0,training_vector};
1157 else Slave_DataOut <= 64'hDEADBEEF_DEADBEEF;
1158
1159
1160
1161endmodule // niu_tdmc_piodecodes
1162
1163