OpenCores
URL https://opencores.org/ocsvn/usb_fpga_2_14/usb_fpga_2_14/trunk

Subversion Repositories usb_fpga_2_14

[/] [usb_fpga_2_14/] [trunk/] [examples/] [memfifo/] [fpga-2.04b/] [ipcore_dir/] [mem0/] [user_design/] [rtl/] [mcb_controller/] [mcb_ui_top.v] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 ZTEX
//*****************************************************************************
2
// (c) Copyright 2009 Xilinx, Inc. All rights reserved.
3
//
4
// This file contains confidential and proprietary information
5
// of Xilinx, Inc. and is protected under U.S. and
6
// international copyright and other intellectual property
7
// laws.
8
//
9
// DISCLAIMER
10
// This disclaimer is not a license and does not grant any
11
// rights to the materials distributed herewith. Except as
12
// otherwise provided in a valid license issued to you by
13
// Xilinx, and to the maximum extent permitted by applicable
14
// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
15
// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
16
// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
17
// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
18
// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
19
// (2) Xilinx shall not be liable (whether in contract or tort,
20
// including negligence, or under any other theory of
21
// liability) for any loss or damage of any kind or nature
22
// related to, arising under or in connection with these
23
// materials, including for any direct, or any indirect,
24
// special, incidental, or consequential loss or damage
25
// (including loss of data, profits, goodwill, or any type of
26
// loss or damage suffered as a result of any action brought
27
// by a third party) even if such damage or loss was
28
// reasonably foreseeable or Xilinx had been advised of the
29
// possibility of the same.
30
//
31
// CRITICAL APPLICATIONS
32
// Xilinx products are not designed or intended to be fail-
33
// safe, or for use in any application requiring fail-safe
34
// performance, such as life-support or safety devices or
35
// systems, Class III medical devices, nuclear facilities,
36
// applications related to the deployment of airbags, or any
37
// other applications that could lead to death, personal
38
// injury, or severe property or environmental damage
39
// (individually and collectively, "Critical
40
// Applications"). Customer assumes the sole risk and
41
// liability of any use of Xilinx products in Critical
42
// Applications, subject only to applicable laws and
43
// regulations governing limitations on product liability.
44
//
45
// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
46
// PART OF THIS FILE AT ALL TIMES.
47
//
48
//*****************************************************************************
49
//Device: Spartan6
50
//Design Name: DDR/DDR2/DDR3/LPDDR
51
//Purpose:
52
//Reference:
53
//   This module instantiates the AXI bridges
54
//
55
//*****************************************************************************
56
`timescale 1ps / 1ps
57
 
58
module mcb_ui_top #
59
   (
60
///////////////////////////////////////////////////////////////////////////////
61
// Parameter Definitions
62
///////////////////////////////////////////////////////////////////////////////
63
   // Raw Wrapper Parameters
64
   parameter         C_MEMCLK_PERIOD           = 2500,
65
   parameter         C_PORT_ENABLE             = 6'b111111,
66
   parameter         C_MEM_ADDR_ORDER          = "BANK_ROW_COLUMN",
67
   parameter         C_USR_INTERFACE_MODE      = "NATIVE",
68
   parameter         C_ARB_ALGORITHM           = 0,
69
   parameter         C_ARB_NUM_TIME_SLOTS      = 12,
70
   parameter         C_ARB_TIME_SLOT_0         = 18'o012345,
71
   parameter         C_ARB_TIME_SLOT_1         = 18'o123450,
72
   parameter         C_ARB_TIME_SLOT_2         = 18'o234501,
73
   parameter         C_ARB_TIME_SLOT_3         = 18'o345012,
74
   parameter         C_ARB_TIME_SLOT_4         = 18'o450123,
75
   parameter         C_ARB_TIME_SLOT_5         = 18'o501234,
76
   parameter         C_ARB_TIME_SLOT_6         = 18'o012345,
77
   parameter         C_ARB_TIME_SLOT_7         = 18'o123450,
78
   parameter         C_ARB_TIME_SLOT_8         = 18'o234501,
79
   parameter         C_ARB_TIME_SLOT_9         = 18'o345012,
80
   parameter         C_ARB_TIME_SLOT_10        = 18'o450123,
81
   parameter         C_ARB_TIME_SLOT_11        = 18'o501234,
82
   parameter         C_PORT_CONFIG             = "B128",
83
   parameter         C_MEM_TRAS                = 45000,
84
   parameter         C_MEM_TRCD                = 12500,
85
   parameter         C_MEM_TREFI               = 7800,
86
   parameter         C_MEM_TRFC                = 127500,
87
   parameter         C_MEM_TRP                 = 12500,
88
   parameter         C_MEM_TWR                 = 15000,
89
   parameter         C_MEM_TRTP                = 7500,
90
   parameter         C_MEM_TWTR                = 7500,
91
   parameter         C_NUM_DQ_PINS             = 8,
92
   parameter         C_MEM_TYPE                = "DDR3",
93
   parameter         C_MEM_DENSITY             = "512M",
94
   parameter         C_MEM_BURST_LEN           = 8,
95
   parameter         C_MEM_CAS_LATENCY         = 4,
96
   parameter         C_MEM_ADDR_WIDTH          = 13,
97
   parameter         C_MEM_BANKADDR_WIDTH      = 3,
98
   parameter         C_MEM_NUM_COL_BITS        = 11,
99
   parameter         C_MEM_DDR3_CAS_LATENCY    = 7,
100
   parameter         C_MEM_MOBILE_PA_SR        = "FULL",
101
   parameter         C_MEM_DDR1_2_ODS          = "FULL",
102
   parameter         C_MEM_DDR3_ODS            = "DIV6",
103
   parameter         C_MEM_DDR2_RTT            = "50OHMS",
104
   parameter         C_MEM_DDR3_RTT            = "DIV2",
105
   parameter         C_MEM_MDDR_ODS            = "FULL",
106
   parameter         C_MEM_DDR2_DIFF_DQS_EN    = "YES",
107
   parameter         C_MEM_DDR2_3_PA_SR        = "OFF",
108
   parameter         C_MEM_DDR3_CAS_WR_LATENCY = 5,
109
   parameter         C_MEM_DDR3_AUTO_SR        = "ENABLED",
110
   parameter         C_MEM_DDR2_3_HIGH_TEMP_SR = "NORMAL",
111
   parameter         C_MEM_DDR3_DYN_WRT_ODT    = "OFF",
112
   parameter         C_MEM_TZQINIT_MAXCNT      = 10'd512,
113
   parameter         C_MC_CALIB_BYPASS         = "NO",
114
   parameter         C_MC_CALIBRATION_RA       = 15'h0000,
115
   parameter         C_MC_CALIBRATION_BA       = 3'h0,
116
   parameter         C_CALIB_SOFT_IP           = "TRUE",
117
   parameter         C_SKIP_IN_TERM_CAL        = 1'b0,
118
   parameter         C_SKIP_DYNAMIC_CAL        = 1'b0,
119
   parameter         C_SKIP_DYN_IN_TERM        = 1'b1,
120
   parameter         LDQSP_TAP_DELAY_VAL       = 0,
121
   parameter         UDQSP_TAP_DELAY_VAL       = 0,
122
   parameter         LDQSN_TAP_DELAY_VAL       = 0,
123
   parameter         UDQSN_TAP_DELAY_VAL       = 0,
124
   parameter         DQ0_TAP_DELAY_VAL         = 0,
125
   parameter         DQ1_TAP_DELAY_VAL         = 0,
126
   parameter         DQ2_TAP_DELAY_VAL         = 0,
127
   parameter         DQ3_TAP_DELAY_VAL         = 0,
128
   parameter         DQ4_TAP_DELAY_VAL         = 0,
129
   parameter         DQ5_TAP_DELAY_VAL         = 0,
130
   parameter         DQ6_TAP_DELAY_VAL         = 0,
131
   parameter         DQ7_TAP_DELAY_VAL         = 0,
132
   parameter         DQ8_TAP_DELAY_VAL         = 0,
133
   parameter         DQ9_TAP_DELAY_VAL         = 0,
134
   parameter         DQ10_TAP_DELAY_VAL        = 0,
135
   parameter         DQ11_TAP_DELAY_VAL        = 0,
136
   parameter         DQ12_TAP_DELAY_VAL        = 0,
137
   parameter         DQ13_TAP_DELAY_VAL        = 0,
138
   parameter         DQ14_TAP_DELAY_VAL        = 0,
139
   parameter         DQ15_TAP_DELAY_VAL        = 0,
140
   parameter         C_MC_CALIBRATION_CA       = 12'h000,
141
   parameter         C_MC_CALIBRATION_CLK_DIV  = 1,
142
   parameter         C_MC_CALIBRATION_MODE     = "CALIBRATION",
143
   parameter         C_MC_CALIBRATION_DELAY    = "HALF",
144
   parameter         C_SIMULATION              = "FALSE",
145
   parameter         C_P0_MASK_SIZE            = 4,
146
   parameter         C_P0_DATA_PORT_SIZE       = 32,
147
   parameter         C_P1_MASK_SIZE            = 4,
148
   parameter         C_P1_DATA_PORT_SIZE       = 32,
149
   parameter integer C_MCB_USE_EXTERNAL_BUFPLL = 1,
150
   // AXI Parameters
151
   parameter         C_S0_AXI_BASEADDR         = 32'h00000000,
152
   parameter         C_S0_AXI_HIGHADDR         = 32'h00000000,
153
   parameter integer C_S0_AXI_ENABLE           = 0,
154
   parameter integer C_S0_AXI_ID_WIDTH         = 4,
155
   parameter integer C_S0_AXI_ADDR_WIDTH       = 64,
156
   parameter integer C_S0_AXI_DATA_WIDTH       = 32,
157
   parameter integer C_S0_AXI_SUPPORTS_READ    = 1,
158
   parameter integer C_S0_AXI_SUPPORTS_WRITE   = 1,
159
   parameter integer C_S0_AXI_SUPPORTS_NARROW_BURST  = 1,
160
   parameter         C_S0_AXI_REG_EN0          = 20'h00000,
161
   parameter         C_S0_AXI_REG_EN1          = 20'h01000,
162
   parameter integer C_S0_AXI_STRICT_COHERENCY = 1,
163
   parameter integer C_S0_AXI_ENABLE_AP        = 0,
164
   parameter         C_S1_AXI_BASEADDR         = 32'h00000000,
165
   parameter         C_S1_AXI_HIGHADDR         = 32'h00000000,
166
   parameter integer C_S1_AXI_ENABLE           = 0,
167
   parameter integer C_S1_AXI_ID_WIDTH         = 4,
168
   parameter integer C_S1_AXI_ADDR_WIDTH       = 64,
169
   parameter integer C_S1_AXI_DATA_WIDTH       = 32,
170
   parameter integer C_S1_AXI_SUPPORTS_READ    = 1,
171
   parameter integer C_S1_AXI_SUPPORTS_WRITE   = 1,
172
   parameter integer C_S1_AXI_SUPPORTS_NARROW_BURST  = 1,
173
   parameter         C_S1_AXI_REG_EN0          = 20'h00000,
174
   parameter         C_S1_AXI_REG_EN1          = 20'h01000,
175
   parameter integer C_S1_AXI_STRICT_COHERENCY = 1,
176
   parameter integer C_S1_AXI_ENABLE_AP        = 0,
177
   parameter         C_S2_AXI_BASEADDR         = 32'h00000000,
178
   parameter         C_S2_AXI_HIGHADDR         = 32'h00000000,
179
   parameter integer C_S2_AXI_ENABLE           = 0,
180
   parameter integer C_S2_AXI_ID_WIDTH         = 4,
181
   parameter integer C_S2_AXI_ADDR_WIDTH       = 64,
182
   parameter integer C_S2_AXI_DATA_WIDTH       = 32,
183
   parameter integer C_S2_AXI_SUPPORTS_READ    = 1,
184
   parameter integer C_S2_AXI_SUPPORTS_WRITE   = 1,
185
   parameter integer C_S2_AXI_SUPPORTS_NARROW_BURST  = 1,
186
   parameter         C_S2_AXI_REG_EN0          = 20'h00000,
187
   parameter         C_S2_AXI_REG_EN1          = 20'h01000,
188
   parameter integer C_S2_AXI_STRICT_COHERENCY = 1,
189
   parameter integer C_S2_AXI_ENABLE_AP        = 0,
190
   parameter         C_S3_AXI_BASEADDR         = 32'h00000000,
191
   parameter         C_S3_AXI_HIGHADDR         = 32'h00000000,
192
   parameter integer C_S3_AXI_ENABLE           = 0,
193
   parameter integer C_S3_AXI_ID_WIDTH         = 4,
194
   parameter integer C_S3_AXI_ADDR_WIDTH       = 64,
195
   parameter integer C_S3_AXI_DATA_WIDTH       = 32,
196
   parameter integer C_S3_AXI_SUPPORTS_READ    = 1,
197
   parameter integer C_S3_AXI_SUPPORTS_WRITE   = 1,
198
   parameter integer C_S3_AXI_SUPPORTS_NARROW_BURST  = 1,
199
   parameter         C_S3_AXI_REG_EN0          = 20'h00000,
200
   parameter         C_S3_AXI_REG_EN1          = 20'h01000,
201
   parameter integer C_S3_AXI_STRICT_COHERENCY = 1,
202
   parameter integer C_S3_AXI_ENABLE_AP        = 0,
203
   parameter         C_S4_AXI_BASEADDR         = 32'h00000000,
204
   parameter         C_S4_AXI_HIGHADDR         = 32'h00000000,
205
   parameter integer C_S4_AXI_ENABLE           = 0,
206
   parameter integer C_S4_AXI_ID_WIDTH         = 4,
207
   parameter integer C_S4_AXI_ADDR_WIDTH       = 64,
208
   parameter integer C_S4_AXI_DATA_WIDTH       = 32,
209
   parameter integer C_S4_AXI_SUPPORTS_READ    = 1,
210
   parameter integer C_S4_AXI_SUPPORTS_WRITE   = 1,
211
   parameter integer C_S4_AXI_SUPPORTS_NARROW_BURST  = 1,
212
   parameter         C_S4_AXI_REG_EN0          = 20'h00000,
213
   parameter         C_S4_AXI_REG_EN1          = 20'h01000,
214
   parameter integer C_S4_AXI_STRICT_COHERENCY = 1,
215
   parameter integer C_S4_AXI_ENABLE_AP        = 0,
216
   parameter         C_S5_AXI_BASEADDR         = 32'h00000000,
217
   parameter         C_S5_AXI_HIGHADDR         = 32'h00000000,
218
   parameter integer C_S5_AXI_ENABLE           = 0,
219
   parameter integer C_S5_AXI_ID_WIDTH         = 4,
220
   parameter integer C_S5_AXI_ADDR_WIDTH       = 64,
221
   parameter integer C_S5_AXI_DATA_WIDTH       = 32,
222
   parameter integer C_S5_AXI_SUPPORTS_READ    = 1,
223
   parameter integer C_S5_AXI_SUPPORTS_WRITE   = 1,
224
   parameter integer C_S5_AXI_SUPPORTS_NARROW_BURST  = 1,
225
   parameter         C_S5_AXI_REG_EN0          = 20'h00000,
226
   parameter         C_S5_AXI_REG_EN1          = 20'h01000,
227
   parameter integer C_S5_AXI_STRICT_COHERENCY = 1,
228
   parameter integer C_S5_AXI_ENABLE_AP        = 0
229
   )
230
   (
231
///////////////////////////////////////////////////////////////////////////////
232
// Port Declarations
233
///////////////////////////////////////////////////////////////////////////////
234
   // Raw Wrapper Signals
235
   input                                     sysclk_2x          ,
236
   input                                     sysclk_2x_180      ,
237
   input                                     pll_ce_0           ,
238
   input                                     pll_ce_90          ,
239
   output                                    sysclk_2x_bufpll_o ,
240
   output                                    sysclk_2x_180_bufpll_o,
241
   output                                    pll_ce_0_bufpll_o  ,
242
   output                                    pll_ce_90_bufpll_o ,
243
   output                                    pll_lock_bufpll_o  ,
244
   input                                     pll_lock           ,
245
   input                                     sys_rst            ,
246
   input                                     p0_arb_en          ,
247
   input                                     p0_cmd_clk         ,
248
   input                                     p0_cmd_en          ,
249
   input       [2:0]                         p0_cmd_instr       ,
250
   input       [5:0]                         p0_cmd_bl          ,
251
   input       [29:0]                        p0_cmd_byte_addr   ,
252
   output                                    p0_cmd_empty       ,
253
   output                                    p0_cmd_full        ,
254
   input                                     p0_wr_clk          ,
255
   input                                     p0_wr_en           ,
256
   input       [C_P0_MASK_SIZE-1:0]          p0_wr_mask         ,
257
   input       [C_P0_DATA_PORT_SIZE-1:0]     p0_wr_data         ,
258
   output                                    p0_wr_full         ,
259
   output                                    p0_wr_empty        ,
260
   output      [6:0]                         p0_wr_count        ,
261
   output                                    p0_wr_underrun     ,
262
   output                                    p0_wr_error        ,
263
   input                                     p0_rd_clk          ,
264
   input                                     p0_rd_en           ,
265
   output      [C_P0_DATA_PORT_SIZE-1:0]     p0_rd_data         ,
266
   output                                    p0_rd_full         ,
267
   output                                    p0_rd_empty        ,
268
   output      [6:0]                         p0_rd_count        ,
269
   output                                    p0_rd_overflow     ,
270
   output                                    p0_rd_error        ,
271
   input                                     p1_arb_en          ,
272
   input                                     p1_cmd_clk         ,
273
   input                                     p1_cmd_en          ,
274
   input       [2:0]                         p1_cmd_instr       ,
275
   input       [5:0]                         p1_cmd_bl          ,
276
   input       [29:0]                        p1_cmd_byte_addr   ,
277
   output                                    p1_cmd_empty       ,
278
   output                                    p1_cmd_full        ,
279
   input                                     p1_wr_clk          ,
280
   input                                     p1_wr_en           ,
281
   input       [C_P1_MASK_SIZE-1:0]          p1_wr_mask         ,
282
   input       [C_P1_DATA_PORT_SIZE-1:0]     p1_wr_data         ,
283
   output                                    p1_wr_full         ,
284
   output                                    p1_wr_empty        ,
285
   output      [6:0]                         p1_wr_count        ,
286
   output                                    p1_wr_underrun     ,
287
   output                                    p1_wr_error        ,
288
   input                                     p1_rd_clk          ,
289
   input                                     p1_rd_en           ,
290
   output      [C_P1_DATA_PORT_SIZE-1:0]     p1_rd_data         ,
291
   output                                    p1_rd_full         ,
292
   output                                    p1_rd_empty        ,
293
   output      [6:0]                         p1_rd_count        ,
294
   output                                    p1_rd_overflow     ,
295
   output                                    p1_rd_error        ,
296
   input                                     p2_arb_en          ,
297
   input                                     p2_cmd_clk         ,
298
   input                                     p2_cmd_en          ,
299
   input       [2:0]                         p2_cmd_instr       ,
300
   input       [5:0]                         p2_cmd_bl          ,
301
   input       [29:0]                        p2_cmd_byte_addr   ,
302
   output                                    p2_cmd_empty       ,
303
   output                                    p2_cmd_full        ,
304
   input                                     p2_wr_clk          ,
305
   input                                     p2_wr_en           ,
306
   input       [3:0]                         p2_wr_mask         ,
307
   input       [31:0]                        p2_wr_data         ,
308
   output                                    p2_wr_full         ,
309
   output                                    p2_wr_empty        ,
310
   output      [6:0]                         p2_wr_count        ,
311
   output                                    p2_wr_underrun     ,
312
   output                                    p2_wr_error        ,
313
   input                                     p2_rd_clk          ,
314
   input                                     p2_rd_en           ,
315
   output      [31:0]                        p2_rd_data         ,
316
   output                                    p2_rd_full         ,
317
   output                                    p2_rd_empty        ,
318
   output      [6:0]                         p2_rd_count        ,
319
   output                                    p2_rd_overflow     ,
320
   output                                    p2_rd_error        ,
321
   input                                     p3_arb_en          ,
322
   input                                     p3_cmd_clk         ,
323
   input                                     p3_cmd_en          ,
324
   input       [2:0]                         p3_cmd_instr       ,
325
   input       [5:0]                         p3_cmd_bl          ,
326
   input       [29:0]                        p3_cmd_byte_addr   ,
327
   output                                    p3_cmd_empty       ,
328
   output                                    p3_cmd_full        ,
329
   input                                     p3_wr_clk          ,
330
   input                                     p3_wr_en           ,
331
   input       [3:0]                         p3_wr_mask         ,
332
   input       [31:0]                        p3_wr_data         ,
333
   output                                    p3_wr_full         ,
334
   output                                    p3_wr_empty        ,
335
   output      [6:0]                         p3_wr_count        ,
336
   output                                    p3_wr_underrun     ,
337
   output                                    p3_wr_error        ,
338
   input                                     p3_rd_clk          ,
339
   input                                     p3_rd_en           ,
340
   output      [31:0]                        p3_rd_data         ,
341
   output                                    p3_rd_full         ,
342
   output                                    p3_rd_empty        ,
343
   output      [6:0]                         p3_rd_count        ,
344
   output                                    p3_rd_overflow     ,
345
   output                                    p3_rd_error        ,
346
   input                                     p4_arb_en          ,
347
   input                                     p4_cmd_clk         ,
348
   input                                     p4_cmd_en          ,
349
   input       [2:0]                         p4_cmd_instr       ,
350
   input       [5:0]                         p4_cmd_bl          ,
351
   input       [29:0]                        p4_cmd_byte_addr   ,
352
   output                                    p4_cmd_empty       ,
353
   output                                    p4_cmd_full        ,
354
   input                                     p4_wr_clk          ,
355
   input                                     p4_wr_en           ,
356
   input       [3:0]                         p4_wr_mask         ,
357
   input       [31:0]                        p4_wr_data         ,
358
   output                                    p4_wr_full         ,
359
   output                                    p4_wr_empty        ,
360
   output      [6:0]                         p4_wr_count        ,
361
   output                                    p4_wr_underrun     ,
362
   output                                    p4_wr_error        ,
363
   input                                     p4_rd_clk          ,
364
   input                                     p4_rd_en           ,
365
   output      [31:0]                        p4_rd_data         ,
366
   output                                    p4_rd_full         ,
367
   output                                    p4_rd_empty        ,
368
   output      [6:0]                         p4_rd_count        ,
369
   output                                    p4_rd_overflow     ,
370
   output                                    p4_rd_error        ,
371
   input                                     p5_arb_en          ,
372
   input                                     p5_cmd_clk         ,
373
   input                                     p5_cmd_en          ,
374
   input       [2:0]                         p5_cmd_instr       ,
375
   input       [5:0]                         p5_cmd_bl          ,
376
   input       [29:0]                        p5_cmd_byte_addr   ,
377
   output                                    p5_cmd_empty       ,
378
   output                                    p5_cmd_full        ,
379
   input                                     p5_wr_clk          ,
380
   input                                     p5_wr_en           ,
381
   input       [3:0]                         p5_wr_mask         ,
382
   input       [31:0]                        p5_wr_data         ,
383
   output                                    p5_wr_full         ,
384
   output                                    p5_wr_empty        ,
385
   output      [6:0]                         p5_wr_count        ,
386
   output                                    p5_wr_underrun     ,
387
   output                                    p5_wr_error        ,
388
   input                                     p5_rd_clk          ,
389
   input                                     p5_rd_en           ,
390
   output      [31:0]                        p5_rd_data         ,
391
   output                                    p5_rd_full         ,
392
   output                                    p5_rd_empty        ,
393
   output      [6:0]                         p5_rd_count        ,
394
   output                                    p5_rd_overflow     ,
395
   output                                    p5_rd_error        ,
396
   output      [C_MEM_ADDR_WIDTH-1:0]        mcbx_dram_addr     ,
397
   output      [C_MEM_BANKADDR_WIDTH-1:0]    mcbx_dram_ba       ,
398
   output                                    mcbx_dram_ras_n    ,
399
   output                                    mcbx_dram_cas_n    ,
400
   output                                    mcbx_dram_we_n     ,
401
   output                                    mcbx_dram_cke      ,
402
   output                                    mcbx_dram_clk      ,
403
   output                                    mcbx_dram_clk_n    ,
404
   inout       [C_NUM_DQ_PINS-1:0]           mcbx_dram_dq       ,
405
   inout                                     mcbx_dram_dqs      ,
406
   inout                                     mcbx_dram_dqs_n    ,
407
   inout                                     mcbx_dram_udqs     ,
408
   inout                                     mcbx_dram_udqs_n   ,
409
   output                                    mcbx_dram_udm      ,
410
   output                                    mcbx_dram_ldm      ,
411
   output                                    mcbx_dram_odt      ,
412
   output                                    mcbx_dram_ddr3_rst ,
413
   input                                     calib_recal        ,
414
   inout                                     rzq                ,
415
   inout                                     zio                ,
416
   input                                     ui_read            ,
417
   input                                     ui_add             ,
418
   input                                     ui_cs              ,
419
   input                                     ui_clk             ,
420
   input                                     ui_sdi             ,
421
   input       [4:0]                         ui_addr            ,
422
   input                                     ui_broadcast       ,
423
   input                                     ui_drp_update      ,
424
   input                                     ui_done_cal        ,
425
   input                                     ui_cmd             ,
426
   input                                     ui_cmd_in          ,
427
   input                                     ui_cmd_en          ,
428
   input       [3:0]                         ui_dqcount         ,
429
   input                                     ui_dq_lower_dec    ,
430
   input                                     ui_dq_lower_inc    ,
431
   input                                     ui_dq_upper_dec    ,
432
   input                                     ui_dq_upper_inc    ,
433
   input                                     ui_udqs_inc        ,
434
   input                                     ui_udqs_dec        ,
435
   input                                     ui_ldqs_inc        ,
436
   input                                     ui_ldqs_dec        ,
437
   output      [7:0]                         uo_data            ,
438
   output                                    uo_data_valid      ,
439
   output                                    uo_done_cal        ,
440
   output                                    uo_cmd_ready_in    ,
441
   output                                    uo_refrsh_flag     ,
442
   output                                    uo_cal_start       ,
443
   output                                    uo_sdo             ,
444
   output      [31:0]                        status             ,
445
   input                                     selfrefresh_enter  ,
446
   output                                    selfrefresh_mode   ,
447
   // AXI Signals
448
   input  wire                               s0_axi_aclk        ,
449
   input  wire                               s0_axi_aresetn     ,
450
   input  wire [C_S0_AXI_ID_WIDTH-1:0]       s0_axi_awid        ,
451
   input  wire [C_S0_AXI_ADDR_WIDTH-1:0]     s0_axi_awaddr      ,
452
   input  wire [7:0]                         s0_axi_awlen       ,
453
   input  wire [2:0]                         s0_axi_awsize      ,
454
   input  wire [1:0]                         s0_axi_awburst     ,
455
   input  wire [0:0]                         s0_axi_awlock      ,
456
   input  wire [3:0]                         s0_axi_awcache     ,
457
   input  wire [2:0]                         s0_axi_awprot      ,
458
   input  wire [3:0]                         s0_axi_awqos       ,
459
   input  wire                               s0_axi_awvalid     ,
460
   output wire                               s0_axi_awready     ,
461
   input  wire [C_S0_AXI_DATA_WIDTH-1:0]     s0_axi_wdata       ,
462
   input  wire [C_S0_AXI_DATA_WIDTH/8-1:0]   s0_axi_wstrb       ,
463
   input  wire                               s0_axi_wlast       ,
464
   input  wire                               s0_axi_wvalid      ,
465
   output wire                               s0_axi_wready      ,
466
   output wire [C_S0_AXI_ID_WIDTH-1:0]       s0_axi_bid         ,
467
   output wire [1:0]                         s0_axi_bresp       ,
468
   output wire                               s0_axi_bvalid      ,
469
   input  wire                               s0_axi_bready      ,
470
   input  wire [C_S0_AXI_ID_WIDTH-1:0]       s0_axi_arid        ,
471
   input  wire [C_S0_AXI_ADDR_WIDTH-1:0]     s0_axi_araddr      ,
472
   input  wire [7:0]                         s0_axi_arlen       ,
473
   input  wire [2:0]                         s0_axi_arsize      ,
474
   input  wire [1:0]                         s0_axi_arburst     ,
475
   input  wire [0:0]                         s0_axi_arlock      ,
476
   input  wire [3:0]                         s0_axi_arcache     ,
477
   input  wire [2:0]                         s0_axi_arprot      ,
478
   input  wire [3:0]                         s0_axi_arqos       ,
479
   input  wire                               s0_axi_arvalid     ,
480
   output wire                               s0_axi_arready     ,
481
   output wire [C_S0_AXI_ID_WIDTH-1:0]       s0_axi_rid         ,
482
   output wire [C_S0_AXI_DATA_WIDTH-1:0]     s0_axi_rdata       ,
483
   output wire [1:0]                         s0_axi_rresp       ,
484
   output wire                               s0_axi_rlast       ,
485
   output wire                               s0_axi_rvalid      ,
486
   input  wire                               s0_axi_rready      ,
487
 
488
   input  wire                               s1_axi_aclk        ,
489
   input  wire                               s1_axi_aresetn     ,
490
   input  wire [C_S1_AXI_ID_WIDTH-1:0]       s1_axi_awid        ,
491
   input  wire [C_S1_AXI_ADDR_WIDTH-1:0]     s1_axi_awaddr      ,
492
   input  wire [7:0]                         s1_axi_awlen       ,
493
   input  wire [2:0]                         s1_axi_awsize      ,
494
   input  wire [1:0]                         s1_axi_awburst     ,
495
   input  wire [0:0]                         s1_axi_awlock      ,
496
   input  wire [3:0]                         s1_axi_awcache     ,
497
   input  wire [2:0]                         s1_axi_awprot      ,
498
   input  wire [3:0]                         s1_axi_awqos       ,
499
   input  wire                               s1_axi_awvalid     ,
500
   output wire                               s1_axi_awready     ,
501
   input  wire [C_S1_AXI_DATA_WIDTH-1:0]     s1_axi_wdata       ,
502
   input  wire [C_S1_AXI_DATA_WIDTH/8-1:0]   s1_axi_wstrb       ,
503
   input  wire                               s1_axi_wlast       ,
504
   input  wire                               s1_axi_wvalid      ,
505
   output wire                               s1_axi_wready      ,
506
   output wire [C_S1_AXI_ID_WIDTH-1:0]       s1_axi_bid         ,
507
   output wire [1:0]                         s1_axi_bresp       ,
508
   output wire                               s1_axi_bvalid      ,
509
   input  wire                               s1_axi_bready      ,
510
   input  wire [C_S1_AXI_ID_WIDTH-1:0]       s1_axi_arid        ,
511
   input  wire [C_S1_AXI_ADDR_WIDTH-1:0]     s1_axi_araddr      ,
512
   input  wire [7:0]                         s1_axi_arlen       ,
513
   input  wire [2:0]                         s1_axi_arsize      ,
514
   input  wire [1:0]                         s1_axi_arburst     ,
515
   input  wire [0:0]                         s1_axi_arlock      ,
516
   input  wire [3:0]                         s1_axi_arcache     ,
517
   input  wire [2:0]                         s1_axi_arprot      ,
518
   input  wire [3:0]                         s1_axi_arqos       ,
519
   input  wire                               s1_axi_arvalid     ,
520
   output wire                               s1_axi_arready     ,
521
   output wire [C_S1_AXI_ID_WIDTH-1:0]       s1_axi_rid         ,
522
   output wire [C_S1_AXI_DATA_WIDTH-1:0]     s1_axi_rdata       ,
523
   output wire [1:0]                         s1_axi_rresp       ,
524
   output wire                               s1_axi_rlast       ,
525
   output wire                               s1_axi_rvalid      ,
526
   input  wire                               s1_axi_rready      ,
527
 
528
   input  wire                               s2_axi_aclk        ,
529
   input  wire                               s2_axi_aresetn     ,
530
   input  wire [C_S2_AXI_ID_WIDTH-1:0]       s2_axi_awid        ,
531
   input  wire [C_S2_AXI_ADDR_WIDTH-1:0]     s2_axi_awaddr      ,
532
   input  wire [7:0]                         s2_axi_awlen       ,
533
   input  wire [2:0]                         s2_axi_awsize      ,
534
   input  wire [1:0]                         s2_axi_awburst     ,
535
   input  wire [0:0]                         s2_axi_awlock      ,
536
   input  wire [3:0]                         s2_axi_awcache     ,
537
   input  wire [2:0]                         s2_axi_awprot      ,
538
   input  wire [3:0]                         s2_axi_awqos       ,
539
   input  wire                               s2_axi_awvalid     ,
540
   output wire                               s2_axi_awready     ,
541
   input  wire [C_S2_AXI_DATA_WIDTH-1:0]     s2_axi_wdata       ,
542
   input  wire [C_S2_AXI_DATA_WIDTH/8-1:0]   s2_axi_wstrb       ,
543
   input  wire                               s2_axi_wlast       ,
544
   input  wire                               s2_axi_wvalid      ,
545
   output wire                               s2_axi_wready      ,
546
   output wire [C_S2_AXI_ID_WIDTH-1:0]       s2_axi_bid         ,
547
   output wire [1:0]                         s2_axi_bresp       ,
548
   output wire                               s2_axi_bvalid      ,
549
   input  wire                               s2_axi_bready      ,
550
   input  wire [C_S2_AXI_ID_WIDTH-1:0]       s2_axi_arid        ,
551
   input  wire [C_S2_AXI_ADDR_WIDTH-1:0]     s2_axi_araddr      ,
552
   input  wire [7:0]                         s2_axi_arlen       ,
553
   input  wire [2:0]                         s2_axi_arsize      ,
554
   input  wire [1:0]                         s2_axi_arburst     ,
555
   input  wire [0:0]                         s2_axi_arlock      ,
556
   input  wire [3:0]                         s2_axi_arcache     ,
557
   input  wire [2:0]                         s2_axi_arprot      ,
558
   input  wire [3:0]                         s2_axi_arqos       ,
559
   input  wire                               s2_axi_arvalid     ,
560
   output wire                               s2_axi_arready     ,
561
   output wire [C_S2_AXI_ID_WIDTH-1:0]       s2_axi_rid         ,
562
   output wire [C_S2_AXI_DATA_WIDTH-1:0]     s2_axi_rdata       ,
563
   output wire [1:0]                         s2_axi_rresp       ,
564
   output wire                               s2_axi_rlast       ,
565
   output wire                               s2_axi_rvalid      ,
566
   input  wire                               s2_axi_rready      ,
567
 
568
   input  wire                               s3_axi_aclk        ,
569
   input  wire                               s3_axi_aresetn     ,
570
   input  wire [C_S3_AXI_ID_WIDTH-1:0]       s3_axi_awid        ,
571
   input  wire [C_S3_AXI_ADDR_WIDTH-1:0]     s3_axi_awaddr      ,
572
   input  wire [7:0]                         s3_axi_awlen       ,
573
   input  wire [2:0]                         s3_axi_awsize      ,
574
   input  wire [1:0]                         s3_axi_awburst     ,
575
   input  wire [0:0]                         s3_axi_awlock      ,
576
   input  wire [3:0]                         s3_axi_awcache     ,
577
   input  wire [2:0]                         s3_axi_awprot      ,
578
   input  wire [3:0]                         s3_axi_awqos       ,
579
   input  wire                               s3_axi_awvalid     ,
580
   output wire                               s3_axi_awready     ,
581
   input  wire [C_S3_AXI_DATA_WIDTH-1:0]     s3_axi_wdata       ,
582
   input  wire [C_S3_AXI_DATA_WIDTH/8-1:0]   s3_axi_wstrb       ,
583
   input  wire                               s3_axi_wlast       ,
584
   input  wire                               s3_axi_wvalid      ,
585
   output wire                               s3_axi_wready      ,
586
   output wire [C_S3_AXI_ID_WIDTH-1:0]       s3_axi_bid         ,
587
   output wire [1:0]                         s3_axi_bresp       ,
588
   output wire                               s3_axi_bvalid      ,
589
   input  wire                               s3_axi_bready      ,
590
   input  wire [C_S3_AXI_ID_WIDTH-1:0]       s3_axi_arid        ,
591
   input  wire [C_S3_AXI_ADDR_WIDTH-1:0]     s3_axi_araddr      ,
592
   input  wire [7:0]                         s3_axi_arlen       ,
593
   input  wire [2:0]                         s3_axi_arsize      ,
594
   input  wire [1:0]                         s3_axi_arburst     ,
595
   input  wire [0:0]                         s3_axi_arlock      ,
596
   input  wire [3:0]                         s3_axi_arcache     ,
597
   input  wire [2:0]                         s3_axi_arprot      ,
598
   input  wire [3:0]                         s3_axi_arqos       ,
599
   input  wire                               s3_axi_arvalid     ,
600
   output wire                               s3_axi_arready     ,
601
   output wire [C_S3_AXI_ID_WIDTH-1:0]       s3_axi_rid         ,
602
   output wire [C_S3_AXI_DATA_WIDTH-1:0]     s3_axi_rdata       ,
603
   output wire [1:0]                         s3_axi_rresp       ,
604
   output wire                               s3_axi_rlast       ,
605
   output wire                               s3_axi_rvalid      ,
606
   input  wire                               s3_axi_rready      ,
607
 
608
   input  wire                               s4_axi_aclk        ,
609
   input  wire                               s4_axi_aresetn     ,
610
   input  wire [C_S4_AXI_ID_WIDTH-1:0]       s4_axi_awid        ,
611
   input  wire [C_S4_AXI_ADDR_WIDTH-1:0]     s4_axi_awaddr      ,
612
   input  wire [7:0]                         s4_axi_awlen       ,
613
   input  wire [2:0]                         s4_axi_awsize      ,
614
   input  wire [1:0]                         s4_axi_awburst     ,
615
   input  wire [0:0]                         s4_axi_awlock      ,
616
   input  wire [3:0]                         s4_axi_awcache     ,
617
   input  wire [2:0]                         s4_axi_awprot      ,
618
   input  wire [3:0]                         s4_axi_awqos       ,
619
   input  wire                               s4_axi_awvalid     ,
620
   output wire                               s4_axi_awready     ,
621
   input  wire [C_S4_AXI_DATA_WIDTH-1:0]     s4_axi_wdata       ,
622
   input  wire [C_S4_AXI_DATA_WIDTH/8-1:0]   s4_axi_wstrb       ,
623
   input  wire                               s4_axi_wlast       ,
624
   input  wire                               s4_axi_wvalid      ,
625
   output wire                               s4_axi_wready      ,
626
   output wire [C_S4_AXI_ID_WIDTH-1:0]       s4_axi_bid         ,
627
   output wire [1:0]                         s4_axi_bresp       ,
628
   output wire                               s4_axi_bvalid      ,
629
   input  wire                               s4_axi_bready      ,
630
   input  wire [C_S4_AXI_ID_WIDTH-1:0]       s4_axi_arid        ,
631
   input  wire [C_S4_AXI_ADDR_WIDTH-1:0]     s4_axi_araddr      ,
632
   input  wire [7:0]                         s4_axi_arlen       ,
633
   input  wire [2:0]                         s4_axi_arsize      ,
634
   input  wire [1:0]                         s4_axi_arburst     ,
635
   input  wire [0:0]                         s4_axi_arlock      ,
636
   input  wire [3:0]                         s4_axi_arcache     ,
637
   input  wire [2:0]                         s4_axi_arprot      ,
638
   input  wire [3:0]                         s4_axi_arqos       ,
639
   input  wire                               s4_axi_arvalid     ,
640
   output wire                               s4_axi_arready     ,
641
   output wire [C_S4_AXI_ID_WIDTH-1:0]       s4_axi_rid         ,
642
   output wire [C_S4_AXI_DATA_WIDTH-1:0]     s4_axi_rdata       ,
643
   output wire [1:0]                         s4_axi_rresp       ,
644
   output wire                               s4_axi_rlast       ,
645
   output wire                               s4_axi_rvalid      ,
646
   input  wire                               s4_axi_rready      ,
647
 
648
   input  wire                               s5_axi_aclk        ,
649
   input  wire                               s5_axi_aresetn     ,
650
   input  wire [C_S5_AXI_ID_WIDTH-1:0]       s5_axi_awid        ,
651
   input  wire [C_S5_AXI_ADDR_WIDTH-1:0]     s5_axi_awaddr      ,
652
   input  wire [7:0]                         s5_axi_awlen       ,
653
   input  wire [2:0]                         s5_axi_awsize      ,
654
   input  wire [1:0]                         s5_axi_awburst     ,
655
   input  wire [0:0]                         s5_axi_awlock      ,
656
   input  wire [3:0]                         s5_axi_awcache     ,
657
   input  wire [2:0]                         s5_axi_awprot      ,
658
   input  wire [3:0]                         s5_axi_awqos       ,
659
   input  wire                               s5_axi_awvalid     ,
660
   output wire                               s5_axi_awready     ,
661
   input  wire [C_S5_AXI_DATA_WIDTH-1:0]     s5_axi_wdata       ,
662
   input  wire [C_S5_AXI_DATA_WIDTH/8-1:0]   s5_axi_wstrb       ,
663
   input  wire                               s5_axi_wlast       ,
664
   input  wire                               s5_axi_wvalid      ,
665
   output wire                               s5_axi_wready      ,
666
   output wire [C_S5_AXI_ID_WIDTH-1:0]       s5_axi_bid         ,
667
   output wire [1:0]                         s5_axi_bresp       ,
668
   output wire                               s5_axi_bvalid      ,
669
   input  wire                               s5_axi_bready      ,
670
   input  wire [C_S5_AXI_ID_WIDTH-1:0]       s5_axi_arid        ,
671
   input  wire [C_S5_AXI_ADDR_WIDTH-1:0]     s5_axi_araddr      ,
672
   input  wire [7:0]                         s5_axi_arlen       ,
673
   input  wire [2:0]                         s5_axi_arsize      ,
674
   input  wire [1:0]                         s5_axi_arburst     ,
675
   input  wire [0:0]                         s5_axi_arlock      ,
676
   input  wire [3:0]                         s5_axi_arcache     ,
677
   input  wire [2:0]                         s5_axi_arprot      ,
678
   input  wire [3:0]                         s5_axi_arqos       ,
679
   input  wire                               s5_axi_arvalid     ,
680
   output wire                               s5_axi_arready     ,
681
   output wire [C_S5_AXI_ID_WIDTH-1:0]       s5_axi_rid         ,
682
   output wire [C_S5_AXI_DATA_WIDTH-1:0]     s5_axi_rdata       ,
683
   output wire [1:0]                         s5_axi_rresp       ,
684
   output wire                               s5_axi_rlast       ,
685
   output wire                               s5_axi_rvalid      ,
686
   input  wire                               s5_axi_rready
687
   );
688
 
689
////////////////////////////////////////////////////////////////////////////////
690
// Functions
691
////////////////////////////////////////////////////////////////////////////////
692
// Barrel Left Shift Octal
693
function [17:0] blso (
694
  input [17:0] a,
695
  input integer shift,
696
  input integer width
697
);
698
begin : func_blso
699
  integer i;
700
  integer w;
701
  integer s;
702
  w = width*3;
703
  s = (shift*3) % w;
704
  blso = 18'o000000;
705
  for (i = 0; i < w; i = i + 1) begin
706
    blso[i] = a[(i+w-s)%w];
707
    //bls[i] = 1'b1;
708
  end
709
end
710
endfunction
711
 
712
// For a given port_config, port_enable and slot, calculate the round robin
713
// arbitration that would be generated by the gui.
714
function [17:0] rr (
715
  input [5:0] port_enable,
716
  input integer port_config,
717
  input integer slot_num
718
);
719
begin : func_rr
720
  integer i;
721
  integer max_ports;
722
  integer num_ports;
723
  integer port_cnt;
724
 
725
  case (port_config)
726
    1: max_ports = 6;
727
    2: max_ports = 4;
728
    3: max_ports = 3;
729
    4: max_ports = 2;
730
    5: max_ports = 1;
731
// synthesis translate_off
732
    default : $display("ERROR: Port Config can't be %d", port_config);
733
// synthesis translate_on
734
  endcase
735
 
736
  num_ports = 0;
737
  for (i = 0; i < max_ports; i = i + 1) begin
738
    if (port_enable[i] == 1'b1) begin
739
      num_ports = num_ports + 1;
740
    end
741
  end
742
 
743
  rr = 18'o000000;
744
  port_cnt = 0;
745
 
746
  for (i = (num_ports-1); i >= 0; i = i - 1) begin
747
    while (port_enable[port_cnt] != 1'b1) begin
748
      port_cnt = port_cnt + 1;
749
    end
750
    rr[i*3 +: 3] = port_cnt[2:0];
751
    port_cnt = port_cnt +1;
752
  end
753
 
754
 
755
  rr = blso(rr, slot_num, num_ports);
756
end
757
endfunction
758
 
759
function [17:0] convert_arb_slot (
760
  input [5:0]   port_enable,
761
  input integer port_config,
762
  input [17:0]  mig_arb_slot
763
);
764
begin : func_convert_arb_slot
765
  integer i;
766
  integer num_ports;
767
  integer mig_port_num;
768
  reg [17:0] port_map;
769
  num_ports = 0;
770
 
771
  // Enumerated port configuration for ease of use
772
  case (port_config)
773
    1: port_map = 18'o543210;
774
    2: port_map = 18'o774210;
775
    3: port_map = 18'o777420;
776
    4: port_map = 18'o777720;
777
    5: port_map = 18'o777770;
778
// synthesis translate_off
779
    default : $display ("ERROR: Invalid Port Configuration.");
780
// synthesis translate_on
781
  endcase
782
 
783
  // Count the number of ports
784
  for (i = 0; i < 6; i = i + 1) begin
785
    if (port_enable[i] == 1'b1) begin
786
      num_ports = num_ports + 1;
787
    end
788
  end
789
 
790
  // Map the ports from the MIG GUI to the MCB Wrapper
791
  for (i = 0; i < 6; i = i + 1) begin
792
    if (i < num_ports) begin
793
      mig_port_num = mig_arb_slot[3*(num_ports-i-1) +: 3];
794
      convert_arb_slot[3*i +: 3] = port_map[3*mig_port_num +: 3];
795
    end else begin
796
      convert_arb_slot[3*i +: 3] = 3'b111;
797
    end
798
  end
799
end
800
endfunction
801
 
802
// Function to calculate the number of time slots automatically based on the
803
// number of ports used.  Will choose 10 if the number of valid ports is 5,
804
// otherwise it will be 12.
805
function integer calc_num_time_slots (
806
  input [5:0]   port_enable,
807
  input integer port_config
808
);
809
begin : func_calc_num_tim_slots
810
  integer num_ports;
811
  integer i;
812
  num_ports = 0;
813
  for (i = 0; i < 6; i = i + 1) begin
814
    if (port_enable[i] == 1'b1) begin
815
      num_ports = num_ports + 1;
816
    end
817
  end
818
  calc_num_time_slots = (port_config == 1 && num_ports == 5) ? 10 : 12;
819
end
820
endfunction
821
////////////////////////////////////////////////////////////////////////////////
822
// Local Parameters
823
////////////////////////////////////////////////////////////////////////////////
824
  localparam P_S0_AXI_ADDRMASK = C_S0_AXI_BASEADDR ^ C_S0_AXI_HIGHADDR;
825
  localparam P_S1_AXI_ADDRMASK = C_S1_AXI_BASEADDR ^ C_S1_AXI_HIGHADDR;
826
  localparam P_S2_AXI_ADDRMASK = C_S2_AXI_BASEADDR ^ C_S2_AXI_HIGHADDR;
827
  localparam P_S3_AXI_ADDRMASK = C_S3_AXI_BASEADDR ^ C_S3_AXI_HIGHADDR;
828
  localparam P_S4_AXI_ADDRMASK = C_S4_AXI_BASEADDR ^ C_S4_AXI_HIGHADDR;
829
  localparam P_S5_AXI_ADDRMASK = C_S5_AXI_BASEADDR ^ C_S5_AXI_HIGHADDR;
830
  localparam P_PORT_CONFIG     = (C_PORT_CONFIG == "B32_B32_B32_B32") ? 2 :
831
                                 (C_PORT_CONFIG == "B64_B32_B32"    ) ? 3 :
832
                                 (C_PORT_CONFIG == "B64_B64"        ) ? 4 :
833
                                 (C_PORT_CONFIG == "B128"           ) ? 5 :
834
                                 1; // B32_B32_x32_x32_x32_x32 case
835
  localparam P_ARB_NUM_TIME_SLOTS = (C_ARB_ALGORITHM == 0) ? calc_num_time_slots(C_PORT_ENABLE, P_PORT_CONFIG) : C_ARB_NUM_TIME_SLOTS;
836
  localparam P_0_ARB_TIME_SLOT_0 =  (C_ARB_ALGORITHM == 0) ? rr(C_PORT_ENABLE, P_PORT_CONFIG, 0 ) : C_ARB_TIME_SLOT_0 ;
837
  localparam P_0_ARB_TIME_SLOT_1 =  (C_ARB_ALGORITHM == 0) ? rr(C_PORT_ENABLE, P_PORT_CONFIG, 1 ) : C_ARB_TIME_SLOT_1 ;
838
  localparam P_0_ARB_TIME_SLOT_2 =  (C_ARB_ALGORITHM == 0) ? rr(C_PORT_ENABLE, P_PORT_CONFIG, 2 ) : C_ARB_TIME_SLOT_2 ;
839
  localparam P_0_ARB_TIME_SLOT_3 =  (C_ARB_ALGORITHM == 0) ? rr(C_PORT_ENABLE, P_PORT_CONFIG, 3 ) : C_ARB_TIME_SLOT_3 ;
840
  localparam P_0_ARB_TIME_SLOT_4 =  (C_ARB_ALGORITHM == 0) ? rr(C_PORT_ENABLE, P_PORT_CONFIG, 4 ) : C_ARB_TIME_SLOT_4 ;
841
  localparam P_0_ARB_TIME_SLOT_5 =  (C_ARB_ALGORITHM == 0) ? rr(C_PORT_ENABLE, P_PORT_CONFIG, 5 ) : C_ARB_TIME_SLOT_5 ;
842
  localparam P_0_ARB_TIME_SLOT_6 =  (C_ARB_ALGORITHM == 0) ? rr(C_PORT_ENABLE, P_PORT_CONFIG, 6 ) : C_ARB_TIME_SLOT_6 ;
843
  localparam P_0_ARB_TIME_SLOT_7 =  (C_ARB_ALGORITHM == 0) ? rr(C_PORT_ENABLE, P_PORT_CONFIG, 7 ) : C_ARB_TIME_SLOT_7 ;
844
  localparam P_0_ARB_TIME_SLOT_8 =  (C_ARB_ALGORITHM == 0) ? rr(C_PORT_ENABLE, P_PORT_CONFIG, 8 ) : C_ARB_TIME_SLOT_8 ;
845
  localparam P_0_ARB_TIME_SLOT_9 =  (C_ARB_ALGORITHM == 0) ? rr(C_PORT_ENABLE, P_PORT_CONFIG, 9 ) : C_ARB_TIME_SLOT_9 ;
846
  localparam P_0_ARB_TIME_SLOT_10 = (C_ARB_ALGORITHM == 0) ? rr(C_PORT_ENABLE, P_PORT_CONFIG, 10) : C_ARB_TIME_SLOT_10;
847
  localparam P_0_ARB_TIME_SLOT_11 = (C_ARB_ALGORITHM == 0) ? rr(C_PORT_ENABLE, P_PORT_CONFIG, 11) : C_ARB_TIME_SLOT_11;
848
  localparam P_ARB_TIME_SLOT_0 =  convert_arb_slot(C_PORT_ENABLE, P_PORT_CONFIG, P_0_ARB_TIME_SLOT_0);
849
  localparam P_ARB_TIME_SLOT_1 =  convert_arb_slot(C_PORT_ENABLE, P_PORT_CONFIG, P_0_ARB_TIME_SLOT_1);
850
  localparam P_ARB_TIME_SLOT_2 =  convert_arb_slot(C_PORT_ENABLE, P_PORT_CONFIG, P_0_ARB_TIME_SLOT_2);
851
  localparam P_ARB_TIME_SLOT_3 =  convert_arb_slot(C_PORT_ENABLE, P_PORT_CONFIG, P_0_ARB_TIME_SLOT_3);
852
  localparam P_ARB_TIME_SLOT_4 =  convert_arb_slot(C_PORT_ENABLE, P_PORT_CONFIG, P_0_ARB_TIME_SLOT_4);
853
  localparam P_ARB_TIME_SLOT_5 =  convert_arb_slot(C_PORT_ENABLE, P_PORT_CONFIG, P_0_ARB_TIME_SLOT_5);
854
  localparam P_ARB_TIME_SLOT_6 =  convert_arb_slot(C_PORT_ENABLE, P_PORT_CONFIG, P_0_ARB_TIME_SLOT_6);
855
  localparam P_ARB_TIME_SLOT_7 =  convert_arb_slot(C_PORT_ENABLE, P_PORT_CONFIG, P_0_ARB_TIME_SLOT_7);
856
  localparam P_ARB_TIME_SLOT_8 =  convert_arb_slot(C_PORT_ENABLE, P_PORT_CONFIG, P_0_ARB_TIME_SLOT_8);
857
  localparam P_ARB_TIME_SLOT_9 =  convert_arb_slot(C_PORT_ENABLE, P_PORT_CONFIG, P_0_ARB_TIME_SLOT_9);
858
  localparam P_ARB_TIME_SLOT_10 = convert_arb_slot(C_PORT_ENABLE, P_PORT_CONFIG, P_0_ARB_TIME_SLOT_10);
859
  localparam P_ARB_TIME_SLOT_11 = convert_arb_slot(C_PORT_ENABLE, P_PORT_CONFIG, P_0_ARB_TIME_SLOT_11);
860
 
861
////////////////////////////////////////////////////////////////////////////////
862
// Wires/Reg declarations
863
////////////////////////////////////////////////////////////////////////////////
864
  wire [C_S0_AXI_ADDR_WIDTH-1:0] s0_axi_araddr_i;
865
  wire [C_S0_AXI_ADDR_WIDTH-1:0] s0_axi_awaddr_i;
866
  wire                           p0_arb_en_i;
867
  wire                           p0_cmd_clk_i;
868
  wire                           p0_cmd_en_i;
869
  wire [2:0]                     p0_cmd_instr_i;
870
  wire [5:0]                     p0_cmd_bl_i;
871
  wire [29:0]                    p0_cmd_byte_addr_i;
872
  wire                           p0_cmd_empty_i;
873
  wire                           p0_cmd_full_i;
874
  wire                           p0_wr_clk_i;
875
  wire                           p0_wr_en_i;
876
  wire [C_P0_MASK_SIZE-1:0]      p0_wr_mask_i;
877
  wire [C_P0_DATA_PORT_SIZE-1:0] p0_wr_data_i;
878
  wire                           p0_wr_full_i;
879
  wire                           p0_wr_empty_i;
880
  wire [6:0]                     p0_wr_count_i;
881
  wire                           p0_wr_underrun_i;
882
  wire                           p0_wr_error_i;
883
  wire                           p0_rd_clk_i;
884
  wire                           p0_rd_en_i;
885
  wire [C_P0_DATA_PORT_SIZE-1:0] p0_rd_data_i;
886
  wire                           p0_rd_full_i;
887
  wire                           p0_rd_empty_i;
888
  wire [6:0]                     p0_rd_count_i;
889
  wire                           p0_rd_overflow_i;
890
  wire                           p0_rd_error_i;
891
 
892
  wire [C_S1_AXI_ADDR_WIDTH-1:0] s1_axi_araddr_i;
893
  wire [C_S1_AXI_ADDR_WIDTH-1:0] s1_axi_awaddr_i;
894
  wire                           p1_arb_en_i;
895
  wire                           p1_cmd_clk_i;
896
  wire                           p1_cmd_en_i;
897
  wire [2:0]                     p1_cmd_instr_i;
898
  wire [5:0]                     p1_cmd_bl_i;
899
  wire [29:0]                    p1_cmd_byte_addr_i;
900
  wire                           p1_cmd_empty_i;
901
  wire                           p1_cmd_full_i;
902
  wire                           p1_wr_clk_i;
903
  wire                           p1_wr_en_i;
904
  wire [C_P1_MASK_SIZE-1:0]      p1_wr_mask_i;
905
  wire [C_P1_DATA_PORT_SIZE-1:0] p1_wr_data_i;
906
  wire                           p1_wr_full_i;
907
  wire                           p1_wr_empty_i;
908
  wire [6:0]                     p1_wr_count_i;
909
  wire                           p1_wr_underrun_i;
910
  wire                           p1_wr_error_i;
911
  wire                           p1_rd_clk_i;
912
  wire                           p1_rd_en_i;
913
  wire [C_P1_DATA_PORT_SIZE-1:0] p1_rd_data_i;
914
  wire                           p1_rd_full_i;
915
  wire                           p1_rd_empty_i;
916
  wire [6:0]                     p1_rd_count_i;
917
  wire                           p1_rd_overflow_i;
918
  wire                           p1_rd_error_i;
919
 
920
  wire [C_S2_AXI_ADDR_WIDTH-1:0] s2_axi_araddr_i;
921
  wire [C_S2_AXI_ADDR_WIDTH-1:0] s2_axi_awaddr_i;
922
  wire                           p2_arb_en_i;
923
  wire                           p2_cmd_clk_i;
924
  wire                           p2_cmd_en_i;
925
  wire [2:0]                     p2_cmd_instr_i;
926
  wire [5:0]                     p2_cmd_bl_i;
927
  wire [29:0]                    p2_cmd_byte_addr_i;
928
  wire                           p2_cmd_empty_i;
929
  wire                           p2_cmd_full_i;
930
  wire                           p2_wr_clk_i;
931
  wire                           p2_wr_en_i;
932
  wire [3:0]                     p2_wr_mask_i;
933
  wire [31:0]                    p2_wr_data_i;
934
  wire                           p2_wr_full_i;
935
  wire                           p2_wr_empty_i;
936
  wire [6:0]                     p2_wr_count_i;
937
  wire                           p2_wr_underrun_i;
938
  wire                           p2_wr_error_i;
939
  wire                           p2_rd_clk_i;
940
  wire                           p2_rd_en_i;
941
  wire [31:0]                    p2_rd_data_i;
942
  wire                           p2_rd_full_i;
943
  wire                           p2_rd_empty_i;
944
  wire [6:0]                     p2_rd_count_i;
945
  wire                           p2_rd_overflow_i;
946
  wire                           p2_rd_error_i;
947
 
948
  wire [C_S3_AXI_ADDR_WIDTH-1:0] s3_axi_araddr_i;
949
  wire [C_S3_AXI_ADDR_WIDTH-1:0] s3_axi_awaddr_i;
950
  wire                           p3_arb_en_i;
951
  wire                           p3_cmd_clk_i;
952
  wire                           p3_cmd_en_i;
953
  wire [2:0]                     p3_cmd_instr_i;
954
  wire [5:0]                     p3_cmd_bl_i;
955
  wire [29:0]                    p3_cmd_byte_addr_i;
956
  wire                           p3_cmd_empty_i;
957
  wire                           p3_cmd_full_i;
958
  wire                           p3_wr_clk_i;
959
  wire                           p3_wr_en_i;
960
  wire [3:0]                     p3_wr_mask_i;
961
  wire [31:0]                    p3_wr_data_i;
962
  wire                           p3_wr_full_i;
963
  wire                           p3_wr_empty_i;
964
  wire [6:0]                     p3_wr_count_i;
965
  wire                           p3_wr_underrun_i;
966
  wire                           p3_wr_error_i;
967
  wire                           p3_rd_clk_i;
968
  wire                           p3_rd_en_i;
969
  wire [31:0]                    p3_rd_data_i;
970
  wire                           p3_rd_full_i;
971
  wire                           p3_rd_empty_i;
972
  wire [6:0]                     p3_rd_count_i;
973
  wire                           p3_rd_overflow_i;
974
  wire                           p3_rd_error_i;
975
 
976
  wire [C_S4_AXI_ADDR_WIDTH-1:0] s4_axi_araddr_i;
977
  wire [C_S4_AXI_ADDR_WIDTH-1:0] s4_axi_awaddr_i;
978
  wire                           p4_arb_en_i;
979
  wire                           p4_cmd_clk_i;
980
  wire                           p4_cmd_en_i;
981
  wire [2:0]                     p4_cmd_instr_i;
982
  wire [5:0]                     p4_cmd_bl_i;
983
  wire [29:0]                    p4_cmd_byte_addr_i;
984
  wire                           p4_cmd_empty_i;
985
  wire                           p4_cmd_full_i;
986
  wire                           p4_wr_clk_i;
987
  wire                           p4_wr_en_i;
988
  wire [3:0]                     p4_wr_mask_i;
989
  wire [31:0]                    p4_wr_data_i;
990
  wire                           p4_wr_full_i;
991
  wire                           p4_wr_empty_i;
992
  wire [6:0]                     p4_wr_count_i;
993
  wire                           p4_wr_underrun_i;
994
  wire                           p4_wr_error_i;
995
  wire                           p4_rd_clk_i;
996
  wire                           p4_rd_en_i;
997
  wire [31:0]                    p4_rd_data_i;
998
  wire                           p4_rd_full_i;
999
  wire                           p4_rd_empty_i;
1000
  wire [6:0]                     p4_rd_count_i;
1001
  wire                           p4_rd_overflow_i;
1002
  wire                           p4_rd_error_i;
1003
 
1004
  wire [C_S5_AXI_ADDR_WIDTH-1:0] s5_axi_araddr_i;
1005
  wire [C_S5_AXI_ADDR_WIDTH-1:0] s5_axi_awaddr_i;
1006
  wire                           p5_arb_en_i;
1007
  wire                           p5_cmd_clk_i;
1008
  wire                           p5_cmd_en_i;
1009
  wire [2:0]                     p5_cmd_instr_i;
1010
  wire [5:0]                     p5_cmd_bl_i;
1011
  wire [29:0]                    p5_cmd_byte_addr_i;
1012
  wire                           p5_cmd_empty_i;
1013
  wire                           p5_cmd_full_i;
1014
  wire                           p5_wr_clk_i;
1015
  wire                           p5_wr_en_i;
1016
  wire [3:0]                     p5_wr_mask_i;
1017
  wire [31:0]                    p5_wr_data_i;
1018
  wire                           p5_wr_full_i;
1019
  wire                           p5_wr_empty_i;
1020
  wire [6:0]                     p5_wr_count_i;
1021
  wire                           p5_wr_underrun_i;
1022
  wire                           p5_wr_error_i;
1023
  wire                           p5_rd_clk_i;
1024
  wire                           p5_rd_en_i;
1025
  wire [31:0]                    p5_rd_data_i;
1026
  wire                           p5_rd_full_i;
1027
  wire                           p5_rd_empty_i;
1028
  wire [6:0]                     p5_rd_count_i;
1029
  wire                           p5_rd_overflow_i;
1030
  wire                           p5_rd_error_i;
1031
 
1032
  wire                           ioclk0;
1033
  wire                           ioclk180;
1034
  wire                           pll_ce_0_i;
1035
  wire                           pll_ce_90_i;
1036
 
1037
  generate
1038
    if (C_MCB_USE_EXTERNAL_BUFPLL == 0) begin : gen_spartan6_bufpll_mcb
1039
      // Instantiate the PLL for MCB.
1040
      BUFPLL_MCB #
1041
      (
1042
      .DIVIDE   (2),
1043
      .LOCK_SRC ("LOCK_TO_0")
1044
      )
1045
      bufpll_0
1046
        (
1047
        .IOCLK0       (ioclk0),
1048
        .IOCLK1       (ioclk180),
1049
        .GCLK         (ui_clk),
1050
        .LOCKED       (pll_lock),
1051
        .LOCK         (pll_lock_bufpll_o),
1052
        .SERDESSTROBE0(pll_ce_0_i),
1053
        .SERDESSTROBE1(pll_ce_90_i),
1054
        .PLLIN0       (sysclk_2x),
1055
        .PLLIN1       (sysclk_2x_180)
1056
        );
1057
      end else begin : gen_spartan6_no_bufpll_mcb
1058
        // Use external bufpll_mcb.
1059
        assign pll_ce_0_i   = pll_ce_0;
1060
        assign pll_ce_90_i  = pll_ce_90;
1061
        assign ioclk0     = sysclk_2x;
1062
        assign ioclk180   = sysclk_2x_180;
1063
        assign pll_lock_bufpll_o = pll_lock;
1064
      end
1065
  endgenerate
1066
 
1067
  assign sysclk_2x_bufpll_o     = ioclk0;
1068
  assign sysclk_2x_180_bufpll_o = ioclk180;
1069
  assign pll_ce_0_bufpll_o      = pll_ce_0_i;
1070
  assign pll_ce_90_bufpll_o     = pll_ce_90_i;
1071
 
1072
mcb_raw_wrapper #
1073
   (
1074
   .C_MEMCLK_PERIOD           ( C_MEMCLK_PERIOD           ),
1075
   .C_PORT_ENABLE             ( C_PORT_ENABLE             ),
1076
   .C_MEM_ADDR_ORDER          ( C_MEM_ADDR_ORDER          ),
1077
   .C_USR_INTERFACE_MODE      ( C_USR_INTERFACE_MODE      ),
1078
   .C_ARB_NUM_TIME_SLOTS      ( P_ARB_NUM_TIME_SLOTS      ),
1079
   .C_ARB_TIME_SLOT_0         ( P_ARB_TIME_SLOT_0         ),
1080
   .C_ARB_TIME_SLOT_1         ( P_ARB_TIME_SLOT_1         ),
1081
   .C_ARB_TIME_SLOT_2         ( P_ARB_TIME_SLOT_2         ),
1082
   .C_ARB_TIME_SLOT_3         ( P_ARB_TIME_SLOT_3         ),
1083
   .C_ARB_TIME_SLOT_4         ( P_ARB_TIME_SLOT_4         ),
1084
   .C_ARB_TIME_SLOT_5         ( P_ARB_TIME_SLOT_5         ),
1085
   .C_ARB_TIME_SLOT_6         ( P_ARB_TIME_SLOT_6         ),
1086
   .C_ARB_TIME_SLOT_7         ( P_ARB_TIME_SLOT_7         ),
1087
   .C_ARB_TIME_SLOT_8         ( P_ARB_TIME_SLOT_8         ),
1088
   .C_ARB_TIME_SLOT_9         ( P_ARB_TIME_SLOT_9         ),
1089
   .C_ARB_TIME_SLOT_10        ( P_ARB_TIME_SLOT_10        ),
1090
   .C_ARB_TIME_SLOT_11        ( P_ARB_TIME_SLOT_11        ),
1091
   .C_PORT_CONFIG             ( C_PORT_CONFIG             ),
1092
   .C_MEM_TRAS                ( C_MEM_TRAS                ),
1093
   .C_MEM_TRCD                ( C_MEM_TRCD                ),
1094
   .C_MEM_TREFI               ( C_MEM_TREFI               ),
1095
   .C_MEM_TRFC                ( C_MEM_TRFC                ),
1096
   .C_MEM_TRP                 ( C_MEM_TRP                 ),
1097
   .C_MEM_TWR                 ( C_MEM_TWR                 ),
1098
   .C_MEM_TRTP                ( C_MEM_TRTP                ),
1099
   .C_MEM_TWTR                ( C_MEM_TWTR                ),
1100
   .C_NUM_DQ_PINS             ( C_NUM_DQ_PINS             ),
1101
   .C_MEM_TYPE                ( C_MEM_TYPE                ),
1102
   .C_MEM_DENSITY             ( C_MEM_DENSITY             ),
1103
   .C_MEM_BURST_LEN           ( C_MEM_BURST_LEN           ),
1104
   .C_MEM_CAS_LATENCY         ( C_MEM_CAS_LATENCY         ),
1105
   .C_MEM_ADDR_WIDTH          ( C_MEM_ADDR_WIDTH          ),
1106
   .C_MEM_BANKADDR_WIDTH      ( C_MEM_BANKADDR_WIDTH      ),
1107
   .C_MEM_NUM_COL_BITS        ( C_MEM_NUM_COL_BITS        ),
1108
   .C_MEM_DDR3_CAS_LATENCY    ( C_MEM_DDR3_CAS_LATENCY    ),
1109
   .C_MEM_MOBILE_PA_SR        ( C_MEM_MOBILE_PA_SR        ),
1110
   .C_MEM_DDR1_2_ODS          ( C_MEM_DDR1_2_ODS          ),
1111
   .C_MEM_DDR3_ODS            ( C_MEM_DDR3_ODS            ),
1112
   .C_MEM_DDR2_RTT            ( C_MEM_DDR2_RTT            ),
1113
   .C_MEM_DDR3_RTT            ( C_MEM_DDR3_RTT            ),
1114
   .C_MEM_MDDR_ODS            ( C_MEM_MDDR_ODS            ),
1115
   .C_MEM_DDR2_DIFF_DQS_EN    ( C_MEM_DDR2_DIFF_DQS_EN    ),
1116
   .C_MEM_DDR2_3_PA_SR        ( C_MEM_DDR2_3_PA_SR        ),
1117
   .C_MEM_DDR3_CAS_WR_LATENCY ( C_MEM_DDR3_CAS_WR_LATENCY ),
1118
   .C_MEM_DDR3_AUTO_SR        ( C_MEM_DDR3_AUTO_SR        ),
1119
   .C_MEM_DDR2_3_HIGH_TEMP_SR ( C_MEM_DDR2_3_HIGH_TEMP_SR ),
1120
   .C_MEM_DDR3_DYN_WRT_ODT    ( C_MEM_DDR3_DYN_WRT_ODT    ),
1121
   // Subtract 16 to stop TRFC violations.
1122
   .C_MEM_TZQINIT_MAXCNT      ( C_MEM_TZQINIT_MAXCNT - 16 ),
1123
   .C_MC_CALIB_BYPASS         ( C_MC_CALIB_BYPASS         ),
1124
   .C_MC_CALIBRATION_RA       ( C_MC_CALIBRATION_RA       ),
1125
   .C_MC_CALIBRATION_BA       ( C_MC_CALIBRATION_BA       ),
1126
   .C_CALIB_SOFT_IP           ( C_CALIB_SOFT_IP           ),
1127
   .C_SKIP_IN_TERM_CAL        ( C_SKIP_IN_TERM_CAL        ),
1128
   .C_SKIP_DYNAMIC_CAL        ( C_SKIP_DYNAMIC_CAL        ),
1129
   .C_SKIP_DYN_IN_TERM        ( C_SKIP_DYN_IN_TERM        ),
1130
   .LDQSP_TAP_DELAY_VAL       ( LDQSP_TAP_DELAY_VAL       ),
1131
   .UDQSP_TAP_DELAY_VAL       ( UDQSP_TAP_DELAY_VAL       ),
1132
   .LDQSN_TAP_DELAY_VAL       ( LDQSN_TAP_DELAY_VAL       ),
1133
   .UDQSN_TAP_DELAY_VAL       ( UDQSN_TAP_DELAY_VAL       ),
1134
   .DQ0_TAP_DELAY_VAL         ( DQ0_TAP_DELAY_VAL         ),
1135
   .DQ1_TAP_DELAY_VAL         ( DQ1_TAP_DELAY_VAL         ),
1136
   .DQ2_TAP_DELAY_VAL         ( DQ2_TAP_DELAY_VAL         ),
1137
   .DQ3_TAP_DELAY_VAL         ( DQ3_TAP_DELAY_VAL         ),
1138
   .DQ4_TAP_DELAY_VAL         ( DQ4_TAP_DELAY_VAL         ),
1139
   .DQ5_TAP_DELAY_VAL         ( DQ5_TAP_DELAY_VAL         ),
1140
   .DQ6_TAP_DELAY_VAL         ( DQ6_TAP_DELAY_VAL         ),
1141
   .DQ7_TAP_DELAY_VAL         ( DQ7_TAP_DELAY_VAL         ),
1142
   .DQ8_TAP_DELAY_VAL         ( DQ8_TAP_DELAY_VAL         ),
1143
   .DQ9_TAP_DELAY_VAL         ( DQ9_TAP_DELAY_VAL         ),
1144
   .DQ10_TAP_DELAY_VAL        ( DQ10_TAP_DELAY_VAL        ),
1145
   .DQ11_TAP_DELAY_VAL        ( DQ11_TAP_DELAY_VAL        ),
1146
   .DQ12_TAP_DELAY_VAL        ( DQ12_TAP_DELAY_VAL        ),
1147
   .DQ13_TAP_DELAY_VAL        ( DQ13_TAP_DELAY_VAL        ),
1148
   .DQ14_TAP_DELAY_VAL        ( DQ14_TAP_DELAY_VAL        ),
1149
   .DQ15_TAP_DELAY_VAL        ( DQ15_TAP_DELAY_VAL        ),
1150
   .C_MC_CALIBRATION_CA       ( C_MC_CALIBRATION_CA       ),
1151
   .C_MC_CALIBRATION_CLK_DIV  ( C_MC_CALIBRATION_CLK_DIV  ),
1152
   .C_MC_CALIBRATION_MODE     ( C_MC_CALIBRATION_MODE     ),
1153
   .C_MC_CALIBRATION_DELAY    ( C_MC_CALIBRATION_DELAY    ),
1154
   // synthesis translate_off
1155
   .C_SIMULATION              ( C_SIMULATION              ),
1156
   // synthesis translate_on
1157
   .C_P0_MASK_SIZE            ( C_P0_MASK_SIZE            ),
1158
   .C_P0_DATA_PORT_SIZE       ( C_P0_DATA_PORT_SIZE       ),
1159
   .C_P1_MASK_SIZE            ( C_P1_MASK_SIZE            ),
1160
   .C_P1_DATA_PORT_SIZE       ( C_P1_DATA_PORT_SIZE       )
1161
   )
1162
   mcb_raw_wrapper_inst
1163
   (
1164
   .sysclk_2x                 ( ioclk0                    ),
1165
   .sysclk_2x_180             ( ioclk180                  ),
1166
   .pll_ce_0                  ( pll_ce_0_i                ),
1167
   .pll_ce_90                 ( pll_ce_90_i               ),
1168
   .pll_lock                  ( pll_lock_bufpll_o         ),
1169
   .sys_rst                   ( sys_rst                   ),
1170
   .p0_arb_en                 ( p0_arb_en_i               ),
1171
   .p0_cmd_clk                ( p0_cmd_clk_i              ),
1172
   .p0_cmd_en                 ( p0_cmd_en_i               ),
1173
   .p0_cmd_instr              ( p0_cmd_instr_i            ),
1174
   .p0_cmd_bl                 ( p0_cmd_bl_i               ),
1175
   .p0_cmd_byte_addr          ( p0_cmd_byte_addr_i        ),
1176
   .p0_cmd_empty              ( p0_cmd_empty_i            ),
1177
   .p0_cmd_full               ( p0_cmd_full_i             ),
1178
   .p0_wr_clk                 ( p0_wr_clk_i               ),
1179
   .p0_wr_en                  ( p0_wr_en_i                ),
1180
   .p0_wr_mask                ( p0_wr_mask_i              ),
1181
   .p0_wr_data                ( p0_wr_data_i              ),
1182
   .p0_wr_full                ( p0_wr_full_i              ),
1183
   .p0_wr_empty               ( p0_wr_empty_i             ),
1184
   .p0_wr_count               ( p0_wr_count_i             ),
1185
   .p0_wr_underrun            ( p0_wr_underrun_i          ),
1186
   .p0_wr_error               ( p0_wr_error_i             ),
1187
   .p0_rd_clk                 ( p0_rd_clk_i               ),
1188
   .p0_rd_en                  ( p0_rd_en_i                ),
1189
   .p0_rd_data                ( p0_rd_data_i              ),
1190
   .p0_rd_full                ( p0_rd_full_i              ),
1191
   .p0_rd_empty               ( p0_rd_empty_i             ),
1192
   .p0_rd_count               ( p0_rd_count_i             ),
1193
   .p0_rd_overflow            ( p0_rd_overflow_i          ),
1194
   .p0_rd_error               ( p0_rd_error_i             ),
1195
   .p1_arb_en                 ( p1_arb_en_i               ),
1196
   .p1_cmd_clk                ( p1_cmd_clk_i              ),
1197
   .p1_cmd_en                 ( p1_cmd_en_i               ),
1198
   .p1_cmd_instr              ( p1_cmd_instr_i            ),
1199
   .p1_cmd_bl                 ( p1_cmd_bl_i               ),
1200
   .p1_cmd_byte_addr          ( p1_cmd_byte_addr_i        ),
1201
   .p1_cmd_empty              ( p1_cmd_empty_i            ),
1202
   .p1_cmd_full               ( p1_cmd_full_i             ),
1203
   .p1_wr_clk                 ( p1_wr_clk_i               ),
1204
   .p1_wr_en                  ( p1_wr_en_i                ),
1205
   .p1_wr_mask                ( p1_wr_mask_i              ),
1206
   .p1_wr_data                ( p1_wr_data_i              ),
1207
   .p1_wr_full                ( p1_wr_full_i              ),
1208
   .p1_wr_empty               ( p1_wr_empty_i             ),
1209
   .p1_wr_count               ( p1_wr_count_i             ),
1210
   .p1_wr_underrun            ( p1_wr_underrun_i          ),
1211
   .p1_wr_error               ( p1_wr_error_i             ),
1212
   .p1_rd_clk                 ( p1_rd_clk_i               ),
1213
   .p1_rd_en                  ( p1_rd_en_i                ),
1214
   .p1_rd_data                ( p1_rd_data_i              ),
1215
   .p1_rd_full                ( p1_rd_full_i              ),
1216
   .p1_rd_empty               ( p1_rd_empty_i             ),
1217
   .p1_rd_count               ( p1_rd_count_i             ),
1218
   .p1_rd_overflow            ( p1_rd_overflow_i          ),
1219
   .p1_rd_error               ( p1_rd_error_i             ),
1220
   .p2_arb_en                 ( p2_arb_en_i               ),
1221
   .p2_cmd_clk                ( p2_cmd_clk_i              ),
1222
   .p2_cmd_en                 ( p2_cmd_en_i               ),
1223
   .p2_cmd_instr              ( p2_cmd_instr_i            ),
1224
   .p2_cmd_bl                 ( p2_cmd_bl_i               ),
1225
   .p2_cmd_byte_addr          ( p2_cmd_byte_addr_i        ),
1226
   .p2_cmd_empty              ( p2_cmd_empty_i            ),
1227
   .p2_cmd_full               ( p2_cmd_full_i             ),
1228
   .p2_wr_clk                 ( p2_wr_clk_i               ),
1229
   .p2_wr_en                  ( p2_wr_en_i                ),
1230
   .p2_wr_mask                ( p2_wr_mask_i              ),
1231
   .p2_wr_data                ( p2_wr_data_i              ),
1232
   .p2_wr_full                ( p2_wr_full_i              ),
1233
   .p2_wr_empty               ( p2_wr_empty_i             ),
1234
   .p2_wr_count               ( p2_wr_count_i             ),
1235
   .p2_wr_underrun            ( p2_wr_underrun_i          ),
1236
   .p2_wr_error               ( p2_wr_error_i             ),
1237
   .p2_rd_clk                 ( p2_rd_clk_i               ),
1238
   .p2_rd_en                  ( p2_rd_en_i                ),
1239
   .p2_rd_data                ( p2_rd_data_i              ),
1240
   .p2_rd_full                ( p2_rd_full_i              ),
1241
   .p2_rd_empty               ( p2_rd_empty_i             ),
1242
   .p2_rd_count               ( p2_rd_count_i             ),
1243
   .p2_rd_overflow            ( p2_rd_overflow_i          ),
1244
   .p2_rd_error               ( p2_rd_error_i             ),
1245
   .p3_arb_en                 ( p3_arb_en_i               ),
1246
   .p3_cmd_clk                ( p3_cmd_clk_i              ),
1247
   .p3_cmd_en                 ( p3_cmd_en_i               ),
1248
   .p3_cmd_instr              ( p3_cmd_instr_i            ),
1249
   .p3_cmd_bl                 ( p3_cmd_bl_i               ),
1250
   .p3_cmd_byte_addr          ( p3_cmd_byte_addr_i        ),
1251
   .p3_cmd_empty              ( p3_cmd_empty_i            ),
1252
   .p3_cmd_full               ( p3_cmd_full_i             ),
1253
   .p3_wr_clk                 ( p3_wr_clk_i               ),
1254
   .p3_wr_en                  ( p3_wr_en_i                ),
1255
   .p3_wr_mask                ( p3_wr_mask_i              ),
1256
   .p3_wr_data                ( p3_wr_data_i              ),
1257
   .p3_wr_full                ( p3_wr_full_i              ),
1258
   .p3_wr_empty               ( p3_wr_empty_i             ),
1259
   .p3_wr_count               ( p3_wr_count_i             ),
1260
   .p3_wr_underrun            ( p3_wr_underrun_i          ),
1261
   .p3_wr_error               ( p3_wr_error_i             ),
1262
   .p3_rd_clk                 ( p3_rd_clk_i               ),
1263
   .p3_rd_en                  ( p3_rd_en_i                ),
1264
   .p3_rd_data                ( p3_rd_data_i              ),
1265
   .p3_rd_full                ( p3_rd_full_i              ),
1266
   .p3_rd_empty               ( p3_rd_empty_i             ),
1267
   .p3_rd_count               ( p3_rd_count_i             ),
1268
   .p3_rd_overflow            ( p3_rd_overflow_i          ),
1269
   .p3_rd_error               ( p3_rd_error_i             ),
1270
   .p4_arb_en                 ( p4_arb_en_i               ),
1271
   .p4_cmd_clk                ( p4_cmd_clk_i              ),
1272
   .p4_cmd_en                 ( p4_cmd_en_i               ),
1273
   .p4_cmd_instr              ( p4_cmd_instr_i            ),
1274
   .p4_cmd_bl                 ( p4_cmd_bl_i               ),
1275
   .p4_cmd_byte_addr          ( p4_cmd_byte_addr_i        ),
1276
   .p4_cmd_empty              ( p4_cmd_empty_i            ),
1277
   .p4_cmd_full               ( p4_cmd_full_i             ),
1278
   .p4_wr_clk                 ( p4_wr_clk_i               ),
1279
   .p4_wr_en                  ( p4_wr_en_i                ),
1280
   .p4_wr_mask                ( p4_wr_mask_i              ),
1281
   .p4_wr_data                ( p4_wr_data_i              ),
1282
   .p4_wr_full                ( p4_wr_full_i              ),
1283
   .p4_wr_empty               ( p4_wr_empty_i             ),
1284
   .p4_wr_count               ( p4_wr_count_i             ),
1285
   .p4_wr_underrun            ( p4_wr_underrun_i          ),
1286
   .p4_wr_error               ( p4_wr_error_i             ),
1287
   .p4_rd_clk                 ( p4_rd_clk_i               ),
1288
   .p4_rd_en                  ( p4_rd_en_i                ),
1289
   .p4_rd_data                ( p4_rd_data_i              ),
1290
   .p4_rd_full                ( p4_rd_full_i              ),
1291
   .p4_rd_empty               ( p4_rd_empty_i             ),
1292
   .p4_rd_count               ( p4_rd_count_i             ),
1293
   .p4_rd_overflow            ( p4_rd_overflow_i          ),
1294
   .p4_rd_error               ( p4_rd_error_i             ),
1295
   .p5_arb_en                 ( p5_arb_en_i               ),
1296
   .p5_cmd_clk                ( p5_cmd_clk_i              ),
1297
   .p5_cmd_en                 ( p5_cmd_en_i               ),
1298
   .p5_cmd_instr              ( p5_cmd_instr_i            ),
1299
   .p5_cmd_bl                 ( p5_cmd_bl_i               ),
1300
   .p5_cmd_byte_addr          ( p5_cmd_byte_addr_i        ),
1301
   .p5_cmd_empty              ( p5_cmd_empty_i            ),
1302
   .p5_cmd_full               ( p5_cmd_full_i             ),
1303
   .p5_wr_clk                 ( p5_wr_clk_i               ),
1304
   .p5_wr_en                  ( p5_wr_en_i                ),
1305
   .p5_wr_mask                ( p5_wr_mask_i              ),
1306
   .p5_wr_data                ( p5_wr_data_i              ),
1307
   .p5_wr_full                ( p5_wr_full_i              ),
1308
   .p5_wr_empty               ( p5_wr_empty_i             ),
1309
   .p5_wr_count               ( p5_wr_count_i             ),
1310
   .p5_wr_underrun            ( p5_wr_underrun_i          ),
1311
   .p5_wr_error               ( p5_wr_error_i             ),
1312
   .p5_rd_clk                 ( p5_rd_clk_i               ),
1313
   .p5_rd_en                  ( p5_rd_en_i                ),
1314
   .p5_rd_data                ( p5_rd_data_i              ),
1315
   .p5_rd_full                ( p5_rd_full_i              ),
1316
   .p5_rd_empty               ( p5_rd_empty_i             ),
1317
   .p5_rd_count               ( p5_rd_count_i             ),
1318
   .p5_rd_overflow            ( p5_rd_overflow_i          ),
1319
   .p5_rd_error               ( p5_rd_error_i             ),
1320
   .mcbx_dram_addr            ( mcbx_dram_addr            ),
1321
   .mcbx_dram_ba              ( mcbx_dram_ba              ),
1322
   .mcbx_dram_ras_n           ( mcbx_dram_ras_n           ),
1323
   .mcbx_dram_cas_n           ( mcbx_dram_cas_n           ),
1324
   .mcbx_dram_we_n            ( mcbx_dram_we_n            ),
1325
   .mcbx_dram_cke             ( mcbx_dram_cke             ),
1326
   .mcbx_dram_clk             ( mcbx_dram_clk             ),
1327
   .mcbx_dram_clk_n           ( mcbx_dram_clk_n           ),
1328
   .mcbx_dram_dq              ( mcbx_dram_dq              ),
1329
   .mcbx_dram_dqs             ( mcbx_dram_dqs             ),
1330
   .mcbx_dram_dqs_n           ( mcbx_dram_dqs_n           ),
1331
   .mcbx_dram_udqs            ( mcbx_dram_udqs            ),
1332
   .mcbx_dram_udqs_n          ( mcbx_dram_udqs_n          ),
1333
   .mcbx_dram_udm             ( mcbx_dram_udm             ),
1334
   .mcbx_dram_ldm             ( mcbx_dram_ldm             ),
1335
   .mcbx_dram_odt             ( mcbx_dram_odt             ),
1336
   .mcbx_dram_ddr3_rst        ( mcbx_dram_ddr3_rst        ),
1337
   .calib_recal               ( calib_recal               ),
1338
   .rzq                       ( rzq                       ),
1339
   .zio                       ( zio                       ),
1340
   .ui_read                   ( ui_read                   ),
1341
   .ui_add                    ( ui_add                    ),
1342
   .ui_cs                     ( ui_cs                     ),
1343
   .ui_clk                    ( ui_clk                    ),
1344
   .ui_sdi                    ( ui_sdi                    ),
1345
   .ui_addr                   ( ui_addr                   ),
1346
   .ui_broadcast              ( ui_broadcast              ),
1347
   .ui_drp_update             ( ui_drp_update             ),
1348
   .ui_done_cal               ( ui_done_cal               ),
1349
   .ui_cmd                    ( ui_cmd                    ),
1350
   .ui_cmd_in                 ( ui_cmd_in                 ),
1351
   .ui_cmd_en                 ( ui_cmd_en                 ),
1352
   .ui_dqcount                ( ui_dqcount                ),
1353
   .ui_dq_lower_dec           ( ui_dq_lower_dec           ),
1354
   .ui_dq_lower_inc           ( ui_dq_lower_inc           ),
1355
   .ui_dq_upper_dec           ( ui_dq_upper_dec           ),
1356
   .ui_dq_upper_inc           ( ui_dq_upper_inc           ),
1357
   .ui_udqs_inc               ( ui_udqs_inc               ),
1358
   .ui_udqs_dec               ( ui_udqs_dec               ),
1359
   .ui_ldqs_inc               ( ui_ldqs_inc               ),
1360
   .ui_ldqs_dec               ( ui_ldqs_dec               ),
1361
   .uo_data                   ( uo_data                   ),
1362
   .uo_data_valid             ( uo_data_valid             ),
1363
   .uo_done_cal               ( uo_done_cal               ),
1364
   .uo_cmd_ready_in           ( uo_cmd_ready_in           ),
1365
   .uo_refrsh_flag            ( uo_refrsh_flag            ),
1366
   .uo_cal_start              ( uo_cal_start              ),
1367
   .uo_sdo                    ( uo_sdo                    ),
1368
   .status                    ( status                    ),
1369
   .selfrefresh_enter         ( selfrefresh_enter         ),
1370
   .selfrefresh_mode          ( selfrefresh_mode          )
1371
   );
1372
 
1373
// P0 AXI Bridge Mux
1374
  generate
1375
    if (C_S0_AXI_ENABLE == 0) begin : P0_UI_MCB
1376
      assign  p0_arb_en_i        =  p0_arb_en        ; //
1377
      assign  p0_cmd_clk_i       =  p0_cmd_clk       ; //
1378
      assign  p0_cmd_en_i        =  p0_cmd_en        ; //
1379
      assign  p0_cmd_instr_i     =  p0_cmd_instr     ; // [2:0]
1380
      assign  p0_cmd_bl_i        =  p0_cmd_bl        ; // [5:0]
1381
      assign  p0_cmd_byte_addr_i =  p0_cmd_byte_addr ; // [29:0]
1382
      assign  p0_cmd_empty       =  p0_cmd_empty_i   ; //
1383
      assign  p0_cmd_full        =  p0_cmd_full_i    ; //
1384
      assign  p0_wr_clk_i        =  p0_wr_clk        ; //
1385
      assign  p0_wr_en_i         =  p0_wr_en         ; //
1386
      assign  p0_wr_mask_i       =  p0_wr_mask       ; // [C_P0_MASK_SIZE-1:0]
1387
      assign  p0_wr_data_i       =  p0_wr_data       ; // [C_P0_DATA_PORT_SIZE-1:0]
1388
      assign  p0_wr_full         =  p0_wr_full_i     ; //
1389
      assign  p0_wr_empty        =  p0_wr_empty_i    ; //
1390
      assign  p0_wr_count        =  p0_wr_count_i    ; // [6:0]
1391
      assign  p0_wr_underrun     =  p0_wr_underrun_i ; //
1392
      assign  p0_wr_error        =  p0_wr_error_i    ; //
1393
      assign  p0_rd_clk_i        =  p0_rd_clk        ; //
1394
      assign  p0_rd_en_i         =  p0_rd_en         ; //
1395
      assign  p0_rd_data         =  p0_rd_data_i     ; // [C_P0_DATA_PORT_SIZE-1:0]
1396
      assign  p0_rd_full         =  p0_rd_full_i     ; //
1397
      assign  p0_rd_empty        =  p0_rd_empty_i    ; //
1398
      assign  p0_rd_count        =  p0_rd_count_i    ; // [6:0]
1399
      assign  p0_rd_overflow     =  p0_rd_overflow_i ; //
1400
      assign  p0_rd_error        =  p0_rd_error_i    ; //
1401
    end
1402
    else begin : P0_UI_AXI
1403
      assign  p0_arb_en_i        =  p0_arb_en;
1404
      assign  s0_axi_araddr_i    = s0_axi_araddr & P_S0_AXI_ADDRMASK;
1405
      assign  s0_axi_awaddr_i    = s0_axi_awaddr & P_S0_AXI_ADDRMASK;
1406
      wire                     calib_done_synch;
1407
 
1408
      mcb_ui_top_synch #(
1409
        .C_SYNCH_WIDTH          ( 1 )
1410
      )
1411
      axi_mcb_synch
1412
      (
1413
        .clk       ( s0_axi_aclk      ) ,
1414
        .synch_in  ( uo_done_cal      ) ,
1415
        .synch_out ( calib_done_synch )
1416
      );
1417
      axi_mcb #
1418
        (
1419
        .C_FAMILY                ( "spartan6"               ) ,
1420
        .C_S_AXI_ID_WIDTH        ( C_S0_AXI_ID_WIDTH        ) ,
1421
        .C_S_AXI_ADDR_WIDTH      ( C_S0_AXI_ADDR_WIDTH      ) ,
1422
        .C_S_AXI_DATA_WIDTH      ( C_S0_AXI_DATA_WIDTH      ) ,
1423
        .C_S_AXI_SUPPORTS_READ   ( C_S0_AXI_SUPPORTS_READ   ) ,
1424
        .C_S_AXI_SUPPORTS_WRITE  ( C_S0_AXI_SUPPORTS_WRITE  ) ,
1425
        .C_S_AXI_REG_EN0         ( C_S0_AXI_REG_EN0         ) ,
1426
        .C_S_AXI_REG_EN1         ( C_S0_AXI_REG_EN1         ) ,
1427
        .C_S_AXI_SUPPORTS_NARROW_BURST ( C_S0_AXI_SUPPORTS_NARROW_BURST ) ,
1428
        .C_MCB_ADDR_WIDTH        ( 30                       ) ,
1429
        .C_MCB_DATA_WIDTH        ( C_P0_DATA_PORT_SIZE      ) ,
1430
        .C_STRICT_COHERENCY      ( C_S0_AXI_STRICT_COHERENCY    ) ,
1431
        .C_ENABLE_AP             ( C_S0_AXI_ENABLE_AP           )
1432
        )
1433
        p0_axi_mcb
1434
        (
1435
        .aclk              ( s0_axi_aclk        ),
1436
        .aresetn           ( s0_axi_aresetn     ),
1437
        .s_axi_awid        ( s0_axi_awid        ),
1438
        .s_axi_awaddr      ( s0_axi_awaddr_i    ),
1439
        .s_axi_awlen       ( s0_axi_awlen       ),
1440
        .s_axi_awsize      ( s0_axi_awsize      ),
1441
        .s_axi_awburst     ( s0_axi_awburst     ),
1442
        .s_axi_awlock      ( s0_axi_awlock      ),
1443
        .s_axi_awcache     ( s0_axi_awcache     ),
1444
        .s_axi_awprot      ( s0_axi_awprot      ),
1445
        .s_axi_awqos       ( s0_axi_awqos       ),
1446
        .s_axi_awvalid     ( s0_axi_awvalid     ),
1447
        .s_axi_awready     ( s0_axi_awready     ),
1448
        .s_axi_wdata       ( s0_axi_wdata       ),
1449
        .s_axi_wstrb       ( s0_axi_wstrb       ),
1450
        .s_axi_wlast       ( s0_axi_wlast       ),
1451
        .s_axi_wvalid      ( s0_axi_wvalid      ),
1452
        .s_axi_wready      ( s0_axi_wready      ),
1453
        .s_axi_bid         ( s0_axi_bid         ),
1454
        .s_axi_bresp       ( s0_axi_bresp       ),
1455
        .s_axi_bvalid      ( s0_axi_bvalid      ),
1456
        .s_axi_bready      ( s0_axi_bready      ),
1457
        .s_axi_arid        ( s0_axi_arid        ),
1458
        .s_axi_araddr      ( s0_axi_araddr_i    ),
1459
        .s_axi_arlen       ( s0_axi_arlen       ),
1460
        .s_axi_arsize      ( s0_axi_arsize      ),
1461
        .s_axi_arburst     ( s0_axi_arburst     ),
1462
        .s_axi_arlock      ( s0_axi_arlock      ),
1463
        .s_axi_arcache     ( s0_axi_arcache     ),
1464
        .s_axi_arprot      ( s0_axi_arprot      ),
1465
        .s_axi_arqos       ( s0_axi_arqos       ),
1466
        .s_axi_arvalid     ( s0_axi_arvalid     ),
1467
        .s_axi_arready     ( s0_axi_arready     ),
1468
        .s_axi_rid         ( s0_axi_rid         ),
1469
        .s_axi_rdata       ( s0_axi_rdata       ),
1470
        .s_axi_rresp       ( s0_axi_rresp       ),
1471
        .s_axi_rlast       ( s0_axi_rlast       ),
1472
        .s_axi_rvalid      ( s0_axi_rvalid      ),
1473
        .s_axi_rready      ( s0_axi_rready      ),
1474
        .mcb_cmd_clk       ( p0_cmd_clk_i       ),
1475
        .mcb_cmd_en        ( p0_cmd_en_i        ),
1476
        .mcb_cmd_instr     ( p0_cmd_instr_i     ),
1477
        .mcb_cmd_bl        ( p0_cmd_bl_i        ),
1478
        .mcb_cmd_byte_addr ( p0_cmd_byte_addr_i ),
1479
        .mcb_cmd_empty     ( p0_cmd_empty_i     ),
1480
        .mcb_cmd_full      ( p0_cmd_full_i      ),
1481
        .mcb_wr_clk        ( p0_wr_clk_i        ),
1482
        .mcb_wr_en         ( p0_wr_en_i         ),
1483
        .mcb_wr_mask       ( p0_wr_mask_i       ),
1484
        .mcb_wr_data       ( p0_wr_data_i       ),
1485
        .mcb_wr_full       ( p0_wr_full_i       ),
1486
        .mcb_wr_empty      ( p0_wr_empty_i      ),
1487
        .mcb_wr_count      ( p0_wr_count_i      ),
1488
        .mcb_wr_underrun   ( p0_wr_underrun_i   ),
1489
        .mcb_wr_error      ( p0_wr_error_i      ),
1490
        .mcb_rd_clk        ( p0_rd_clk_i        ),
1491
        .mcb_rd_en         ( p0_rd_en_i         ),
1492
        .mcb_rd_data       ( p0_rd_data_i       ),
1493
        .mcb_rd_full       ( p0_rd_full_i       ),
1494
        .mcb_rd_empty      ( p0_rd_empty_i      ),
1495
        .mcb_rd_count      ( p0_rd_count_i      ),
1496
        .mcb_rd_overflow   ( p0_rd_overflow_i   ),
1497
        .mcb_rd_error      ( p0_rd_error_i      ),
1498
        .mcb_calib_done    ( calib_done_synch   )
1499
        );
1500
    end
1501
  endgenerate
1502
 
1503
// P1 AXI Bridge Mux
1504
  generate
1505
    if (C_S1_AXI_ENABLE == 0) begin : P1_UI_MCB
1506
      assign  p1_arb_en_i        =  p1_arb_en        ; //
1507
      assign  p1_cmd_clk_i       =  p1_cmd_clk       ; //
1508
      assign  p1_cmd_en_i        =  p1_cmd_en        ; //
1509
      assign  p1_cmd_instr_i     =  p1_cmd_instr     ; // [2:0]
1510
      assign  p1_cmd_bl_i        =  p1_cmd_bl        ; // [5:0]
1511
      assign  p1_cmd_byte_addr_i =  p1_cmd_byte_addr ; // [29:0]
1512
      assign  p1_cmd_empty       =  p1_cmd_empty_i   ; //
1513
      assign  p1_cmd_full        =  p1_cmd_full_i    ; //
1514
      assign  p1_wr_clk_i        =  p1_wr_clk        ; //
1515
      assign  p1_wr_en_i         =  p1_wr_en         ; //
1516
      assign  p1_wr_mask_i       =  p1_wr_mask       ; // [C_P1_MASK_SIZE-1:0]
1517
      assign  p1_wr_data_i       =  p1_wr_data       ; // [C_P1_DATA_PORT_SIZE-1:0]
1518
      assign  p1_wr_full         =  p1_wr_full_i     ; //
1519
      assign  p1_wr_empty        =  p1_wr_empty_i    ; //
1520
      assign  p1_wr_count        =  p1_wr_count_i    ; // [6:0]
1521
      assign  p1_wr_underrun     =  p1_wr_underrun_i ; //
1522
      assign  p1_wr_error        =  p1_wr_error_i    ; //
1523
      assign  p1_rd_clk_i        =  p1_rd_clk        ; //
1524
      assign  p1_rd_en_i         =  p1_rd_en         ; //
1525
      assign  p1_rd_data         =  p1_rd_data_i     ; // [C_P1_DATA_PORT_SIZE-1:0]
1526
      assign  p1_rd_full         =  p1_rd_full_i     ; //
1527
      assign  p1_rd_empty        =  p1_rd_empty_i    ; //
1528
      assign  p1_rd_count        =  p1_rd_count_i    ; // [6:0]
1529
      assign  p1_rd_overflow     =  p1_rd_overflow_i ; //
1530
      assign  p1_rd_error        =  p1_rd_error_i    ; //
1531
    end
1532
    else begin : P1_UI_AXI
1533
      assign  p1_arb_en_i        =  p1_arb_en;
1534
      assign  s1_axi_araddr_i    = s1_axi_araddr & P_S1_AXI_ADDRMASK;
1535
      assign  s1_axi_awaddr_i    = s1_axi_awaddr & P_S1_AXI_ADDRMASK;
1536
      wire                     calib_done_synch;
1537
 
1538
      mcb_ui_top_synch #(
1539
        .C_SYNCH_WIDTH          ( 1 )
1540
      )
1541
      axi_mcb_synch
1542
      (
1543
        .clk                    ( s1_axi_aclk      ),
1544
        .synch_in               ( uo_done_cal      ),
1545
        .synch_out              ( calib_done_synch )
1546
      );
1547
      axi_mcb #
1548
        (
1549
        .C_FAMILY                ( "spartan6"               ) ,
1550
        .C_S_AXI_ID_WIDTH        ( C_S1_AXI_ID_WIDTH        ) ,
1551
        .C_S_AXI_ADDR_WIDTH      ( C_S1_AXI_ADDR_WIDTH      ) ,
1552
        .C_S_AXI_DATA_WIDTH      ( C_S1_AXI_DATA_WIDTH      ) ,
1553
        .C_S_AXI_SUPPORTS_READ   ( C_S1_AXI_SUPPORTS_READ   ) ,
1554
        .C_S_AXI_SUPPORTS_WRITE  ( C_S1_AXI_SUPPORTS_WRITE  ) ,
1555
        .C_S_AXI_REG_EN0         ( C_S1_AXI_REG_EN0         ) ,
1556
        .C_S_AXI_REG_EN1         ( C_S1_AXI_REG_EN1         ) ,
1557
        .C_S_AXI_SUPPORTS_NARROW_BURST ( C_S1_AXI_SUPPORTS_NARROW_BURST ) ,
1558
        .C_MCB_ADDR_WIDTH        ( 30                       ) ,
1559
        .C_MCB_DATA_WIDTH        ( C_P1_DATA_PORT_SIZE      ) ,
1560
        .C_STRICT_COHERENCY      ( C_S1_AXI_STRICT_COHERENCY    ) ,
1561
        .C_ENABLE_AP             ( C_S1_AXI_ENABLE_AP           )
1562
        )
1563
        p1_axi_mcb
1564
        (
1565
        .aclk              ( s1_axi_aclk        ),
1566
        .aresetn           ( s1_axi_aresetn     ),
1567
        .s_axi_awid        ( s1_axi_awid        ),
1568
        .s_axi_awaddr      ( s1_axi_awaddr_i    ),
1569
        .s_axi_awlen       ( s1_axi_awlen       ),
1570
        .s_axi_awsize      ( s1_axi_awsize      ),
1571
        .s_axi_awburst     ( s1_axi_awburst     ),
1572
        .s_axi_awlock      ( s1_axi_awlock      ),
1573
        .s_axi_awcache     ( s1_axi_awcache     ),
1574
        .s_axi_awprot      ( s1_axi_awprot      ),
1575
        .s_axi_awqos       ( s1_axi_awqos       ),
1576
        .s_axi_awvalid     ( s1_axi_awvalid     ),
1577
        .s_axi_awready     ( s1_axi_awready     ),
1578
        .s_axi_wdata       ( s1_axi_wdata       ),
1579
        .s_axi_wstrb       ( s1_axi_wstrb       ),
1580
        .s_axi_wlast       ( s1_axi_wlast       ),
1581
        .s_axi_wvalid      ( s1_axi_wvalid      ),
1582
        .s_axi_wready      ( s1_axi_wready      ),
1583
        .s_axi_bid         ( s1_axi_bid         ),
1584
        .s_axi_bresp       ( s1_axi_bresp       ),
1585
        .s_axi_bvalid      ( s1_axi_bvalid      ),
1586
        .s_axi_bready      ( s1_axi_bready      ),
1587
        .s_axi_arid        ( s1_axi_arid        ),
1588
        .s_axi_araddr      ( s1_axi_araddr_i    ),
1589
        .s_axi_arlen       ( s1_axi_arlen       ),
1590
        .s_axi_arsize      ( s1_axi_arsize      ),
1591
        .s_axi_arburst     ( s1_axi_arburst     ),
1592
        .s_axi_arlock      ( s1_axi_arlock      ),
1593
        .s_axi_arcache     ( s1_axi_arcache     ),
1594
        .s_axi_arprot      ( s1_axi_arprot      ),
1595
        .s_axi_arqos       ( s1_axi_arqos       ),
1596
        .s_axi_arvalid     ( s1_axi_arvalid     ),
1597
        .s_axi_arready     ( s1_axi_arready     ),
1598
        .s_axi_rid         ( s1_axi_rid         ),
1599
        .s_axi_rdata       ( s1_axi_rdata       ),
1600
        .s_axi_rresp       ( s1_axi_rresp       ),
1601
        .s_axi_rlast       ( s1_axi_rlast       ),
1602
        .s_axi_rvalid      ( s1_axi_rvalid      ),
1603
        .s_axi_rready      ( s1_axi_rready      ),
1604
        .mcb_cmd_clk       ( p1_cmd_clk_i       ),
1605
        .mcb_cmd_en        ( p1_cmd_en_i        ),
1606
        .mcb_cmd_instr     ( p1_cmd_instr_i     ),
1607
        .mcb_cmd_bl        ( p1_cmd_bl_i        ),
1608
        .mcb_cmd_byte_addr ( p1_cmd_byte_addr_i ),
1609
        .mcb_cmd_empty     ( p1_cmd_empty_i     ),
1610
        .mcb_cmd_full      ( p1_cmd_full_i      ),
1611
        .mcb_wr_clk        ( p1_wr_clk_i        ),
1612
        .mcb_wr_en         ( p1_wr_en_i         ),
1613
        .mcb_wr_mask       ( p1_wr_mask_i       ),
1614
        .mcb_wr_data       ( p1_wr_data_i       ),
1615
        .mcb_wr_full       ( p1_wr_full_i       ),
1616
        .mcb_wr_empty      ( p1_wr_empty_i      ),
1617
        .mcb_wr_count      ( p1_wr_count_i      ),
1618
        .mcb_wr_underrun   ( p1_wr_underrun_i   ),
1619
        .mcb_wr_error      ( p1_wr_error_i      ),
1620
        .mcb_rd_clk        ( p1_rd_clk_i        ),
1621
        .mcb_rd_en         ( p1_rd_en_i         ),
1622
        .mcb_rd_data       ( p1_rd_data_i       ),
1623
        .mcb_rd_full       ( p1_rd_full_i       ),
1624
        .mcb_rd_empty      ( p1_rd_empty_i      ),
1625
        .mcb_rd_count      ( p1_rd_count_i      ),
1626
        .mcb_rd_overflow   ( p1_rd_overflow_i   ),
1627
        .mcb_rd_error      ( p1_rd_error_i      ),
1628
        .mcb_calib_done    ( calib_done_synch   )
1629
        );
1630
    end
1631
  endgenerate
1632
 
1633
// P2 AXI Bridge Mux
1634
  generate
1635
    if (C_S2_AXI_ENABLE == 0) begin : P2_UI_MCB
1636
      assign  p2_arb_en_i        =  p2_arb_en        ; //
1637
      assign  p2_cmd_clk_i       =  p2_cmd_clk       ; //
1638
      assign  p2_cmd_en_i        =  p2_cmd_en        ; //
1639
      assign  p2_cmd_instr_i     =  p2_cmd_instr     ; // [2:0]
1640
      assign  p2_cmd_bl_i        =  p2_cmd_bl        ; // [5:0]
1641
      assign  p2_cmd_byte_addr_i =  p2_cmd_byte_addr ; // [29:0]
1642
      assign  p2_cmd_empty       =  p2_cmd_empty_i   ; //
1643
      assign  p2_cmd_full        =  p2_cmd_full_i    ; //
1644
      assign  p2_wr_clk_i        =  p2_wr_clk        ; //
1645
      assign  p2_wr_en_i         =  p2_wr_en         ; //
1646
      assign  p2_wr_mask_i       =  p2_wr_mask       ; // [3:0]
1647
      assign  p2_wr_data_i       =  p2_wr_data       ; // [31:0]
1648
      assign  p2_wr_full         =  p2_wr_full_i     ; //
1649
      assign  p2_wr_empty        =  p2_wr_empty_i    ; //
1650
      assign  p2_wr_count        =  p2_wr_count_i    ; // [6:0]
1651
      assign  p2_wr_underrun     =  p2_wr_underrun_i ; //
1652
      assign  p2_wr_error        =  p2_wr_error_i    ; //
1653
      assign  p2_rd_clk_i        =  p2_rd_clk        ; //
1654
      assign  p2_rd_en_i         =  p2_rd_en         ; //
1655
      assign  p2_rd_data         =  p2_rd_data_i     ; // [31:0]
1656
      assign  p2_rd_full         =  p2_rd_full_i     ; //
1657
      assign  p2_rd_empty        =  p2_rd_empty_i    ; //
1658
      assign  p2_rd_count        =  p2_rd_count_i    ; // [6:0]
1659
      assign  p2_rd_overflow     =  p2_rd_overflow_i ; //
1660
      assign  p2_rd_error        =  p2_rd_error_i    ; //
1661
    end
1662
    else begin : P2_UI_AXI
1663
      assign  p2_arb_en_i        =  p2_arb_en;
1664
      assign  s2_axi_araddr_i    = s2_axi_araddr & P_S2_AXI_ADDRMASK;
1665
      assign  s2_axi_awaddr_i    = s2_axi_awaddr & P_S2_AXI_ADDRMASK;
1666
      wire                     calib_done_synch;
1667
 
1668
      mcb_ui_top_synch #(
1669
        .C_SYNCH_WIDTH          ( 1 )
1670
      )
1671
      axi_mcb_synch
1672
      (
1673
        .clk                    ( s2_axi_aclk      ),
1674
        .synch_in               ( uo_done_cal      ),
1675
        .synch_out              ( calib_done_synch )
1676
      );
1677
      axi_mcb #
1678
        (
1679
        .C_FAMILY                ( "spartan6"               ) ,
1680
        .C_S_AXI_ID_WIDTH        ( C_S2_AXI_ID_WIDTH        ) ,
1681
        .C_S_AXI_ADDR_WIDTH      ( C_S2_AXI_ADDR_WIDTH      ) ,
1682
        .C_S_AXI_DATA_WIDTH      ( 32                       ) ,
1683
        .C_S_AXI_SUPPORTS_READ   ( C_S2_AXI_SUPPORTS_READ   ) ,
1684
        .C_S_AXI_SUPPORTS_WRITE  ( C_S2_AXI_SUPPORTS_WRITE  ) ,
1685
        .C_S_AXI_REG_EN0         ( C_S2_AXI_REG_EN0         ) ,
1686
        .C_S_AXI_REG_EN1         ( C_S2_AXI_REG_EN1         ) ,
1687
        .C_S_AXI_SUPPORTS_NARROW_BURST ( C_S2_AXI_SUPPORTS_NARROW_BURST ) ,
1688
        .C_MCB_ADDR_WIDTH        ( 30                       ) ,
1689
        .C_MCB_DATA_WIDTH        ( 32                       ) ,
1690
        .C_STRICT_COHERENCY      ( C_S2_AXI_STRICT_COHERENCY    ) ,
1691
        .C_ENABLE_AP             ( C_S2_AXI_ENABLE_AP           )
1692
        )
1693
        p2_axi_mcb
1694
        (
1695
        .aclk              ( s2_axi_aclk        ),
1696
        .aresetn           ( s2_axi_aresetn     ),
1697
        .s_axi_awid        ( s2_axi_awid        ),
1698
        .s_axi_awaddr      ( s2_axi_awaddr_i    ),
1699
        .s_axi_awlen       ( s2_axi_awlen       ),
1700
        .s_axi_awsize      ( s2_axi_awsize      ),
1701
        .s_axi_awburst     ( s2_axi_awburst     ),
1702
        .s_axi_awlock      ( s2_axi_awlock      ),
1703
        .s_axi_awcache     ( s2_axi_awcache     ),
1704
        .s_axi_awprot      ( s2_axi_awprot      ),
1705
        .s_axi_awqos       ( s2_axi_awqos       ),
1706
        .s_axi_awvalid     ( s2_axi_awvalid     ),
1707
        .s_axi_awready     ( s2_axi_awready     ),
1708
        .s_axi_wdata       ( s2_axi_wdata       ),
1709
        .s_axi_wstrb       ( s2_axi_wstrb       ),
1710
        .s_axi_wlast       ( s2_axi_wlast       ),
1711
        .s_axi_wvalid      ( s2_axi_wvalid      ),
1712
        .s_axi_wready      ( s2_axi_wready      ),
1713
        .s_axi_bid         ( s2_axi_bid         ),
1714
        .s_axi_bresp       ( s2_axi_bresp       ),
1715
        .s_axi_bvalid      ( s2_axi_bvalid      ),
1716
        .s_axi_bready      ( s2_axi_bready      ),
1717
        .s_axi_arid        ( s2_axi_arid        ),
1718
        .s_axi_araddr      ( s2_axi_araddr_i    ),
1719
        .s_axi_arlen       ( s2_axi_arlen       ),
1720
        .s_axi_arsize      ( s2_axi_arsize      ),
1721
        .s_axi_arburst     ( s2_axi_arburst     ),
1722
        .s_axi_arlock      ( s2_axi_arlock      ),
1723
        .s_axi_arcache     ( s2_axi_arcache     ),
1724
        .s_axi_arprot      ( s2_axi_arprot      ),
1725
        .s_axi_arqos       ( s2_axi_arqos       ),
1726
        .s_axi_arvalid     ( s2_axi_arvalid     ),
1727
        .s_axi_arready     ( s2_axi_arready     ),
1728
        .s_axi_rid         ( s2_axi_rid         ),
1729
        .s_axi_rdata       ( s2_axi_rdata       ),
1730
        .s_axi_rresp       ( s2_axi_rresp       ),
1731
        .s_axi_rlast       ( s2_axi_rlast       ),
1732
        .s_axi_rvalid      ( s2_axi_rvalid      ),
1733
        .s_axi_rready      ( s2_axi_rready      ),
1734
        .mcb_cmd_clk       ( p2_cmd_clk_i       ),
1735
        .mcb_cmd_en        ( p2_cmd_en_i        ),
1736
        .mcb_cmd_instr     ( p2_cmd_instr_i     ),
1737
        .mcb_cmd_bl        ( p2_cmd_bl_i        ),
1738
        .mcb_cmd_byte_addr ( p2_cmd_byte_addr_i ),
1739
        .mcb_cmd_empty     ( p2_cmd_empty_i     ),
1740
        .mcb_cmd_full      ( p2_cmd_full_i      ),
1741
        .mcb_wr_clk        ( p2_wr_clk_i        ),
1742
        .mcb_wr_en         ( p2_wr_en_i         ),
1743
        .mcb_wr_mask       ( p2_wr_mask_i       ),
1744
        .mcb_wr_data       ( p2_wr_data_i       ),
1745
        .mcb_wr_full       ( p2_wr_full_i       ),
1746
        .mcb_wr_empty      ( p2_wr_empty_i      ),
1747
        .mcb_wr_count      ( p2_wr_count_i      ),
1748
        .mcb_wr_underrun   ( p2_wr_underrun_i   ),
1749
        .mcb_wr_error      ( p2_wr_error_i      ),
1750
        .mcb_rd_clk        ( p2_rd_clk_i        ),
1751
        .mcb_rd_en         ( p2_rd_en_i         ),
1752
        .mcb_rd_data       ( p2_rd_data_i       ),
1753
        .mcb_rd_full       ( p2_rd_full_i       ),
1754
        .mcb_rd_empty      ( p2_rd_empty_i      ),
1755
        .mcb_rd_count      ( p2_rd_count_i      ),
1756
        .mcb_rd_overflow   ( p2_rd_overflow_i   ),
1757
        .mcb_rd_error      ( p2_rd_error_i      ),
1758
        .mcb_calib_done    ( calib_done_synch   )
1759
        );
1760
    end
1761
  endgenerate
1762
 
1763
// P3 AXI Bridge Mux
1764
  generate
1765
    if (C_S3_AXI_ENABLE == 0) begin : P3_UI_MCB
1766
      assign  p3_arb_en_i        =  p3_arb_en        ; //
1767
      assign  p3_cmd_clk_i       =  p3_cmd_clk       ; //
1768
      assign  p3_cmd_en_i        =  p3_cmd_en        ; //
1769
      assign  p3_cmd_instr_i     =  p3_cmd_instr     ; // [2:0]
1770
      assign  p3_cmd_bl_i        =  p3_cmd_bl        ; // [5:0]
1771
      assign  p3_cmd_byte_addr_i =  p3_cmd_byte_addr ; // [29:0]
1772
      assign  p3_cmd_empty       =  p3_cmd_empty_i   ; //
1773
      assign  p3_cmd_full        =  p3_cmd_full_i    ; //
1774
      assign  p3_wr_clk_i        =  p3_wr_clk        ; //
1775
      assign  p3_wr_en_i         =  p3_wr_en         ; //
1776
      assign  p3_wr_mask_i       =  p3_wr_mask       ; // [3:0]
1777
      assign  p3_wr_data_i       =  p3_wr_data       ; // [31:0]
1778
      assign  p3_wr_full         =  p3_wr_full_i     ; //
1779
      assign  p3_wr_empty        =  p3_wr_empty_i    ; //
1780
      assign  p3_wr_count        =  p3_wr_count_i    ; // [6:0]
1781
      assign  p3_wr_underrun     =  p3_wr_underrun_i ; //
1782
      assign  p3_wr_error        =  p3_wr_error_i    ; //
1783
      assign  p3_rd_clk_i        =  p3_rd_clk        ; //
1784
      assign  p3_rd_en_i         =  p3_rd_en         ; //
1785
      assign  p3_rd_data         =  p3_rd_data_i     ; // [31:0]
1786
      assign  p3_rd_full         =  p3_rd_full_i     ; //
1787
      assign  p3_rd_empty        =  p3_rd_empty_i    ; //
1788
      assign  p3_rd_count        =  p3_rd_count_i    ; // [6:0]
1789
      assign  p3_rd_overflow     =  p3_rd_overflow_i ; //
1790
      assign  p3_rd_error        =  p3_rd_error_i    ; //
1791
    end
1792
    else begin : P3_UI_AXI
1793
      assign  p3_arb_en_i        =  p3_arb_en;
1794
      assign  s3_axi_araddr_i    = s3_axi_araddr & P_S3_AXI_ADDRMASK;
1795
      assign  s3_axi_awaddr_i    = s3_axi_awaddr & P_S3_AXI_ADDRMASK;
1796
      wire                     calib_done_synch;
1797
 
1798
      mcb_ui_top_synch #(
1799
        .C_SYNCH_WIDTH          ( 1 )
1800
      )
1801
      axi_mcb_synch
1802
      (
1803
        .clk                    ( s3_axi_aclk      ),
1804
        .synch_in               ( uo_done_cal      ),
1805
        .synch_out              ( calib_done_synch )
1806
      );
1807
 
1808
      axi_mcb #
1809
        (
1810
        .C_FAMILY                ( "spartan6"               ) ,
1811
        .C_S_AXI_ID_WIDTH        ( C_S3_AXI_ID_WIDTH        ) ,
1812
        .C_S_AXI_ADDR_WIDTH      ( C_S3_AXI_ADDR_WIDTH      ) ,
1813
        .C_S_AXI_DATA_WIDTH      ( 32                       ) ,
1814
        .C_S_AXI_SUPPORTS_READ   ( C_S3_AXI_SUPPORTS_READ   ) ,
1815
        .C_S_AXI_SUPPORTS_WRITE  ( C_S3_AXI_SUPPORTS_WRITE  ) ,
1816
        .C_S_AXI_REG_EN0         ( C_S3_AXI_REG_EN0         ) ,
1817
        .C_S_AXI_REG_EN1         ( C_S3_AXI_REG_EN1         ) ,
1818
        .C_S_AXI_SUPPORTS_NARROW_BURST ( C_S3_AXI_SUPPORTS_NARROW_BURST ) ,
1819
        .C_MCB_ADDR_WIDTH        ( 30                       ) ,
1820
        .C_MCB_DATA_WIDTH        ( 32                       ) ,
1821
        .C_STRICT_COHERENCY      ( C_S3_AXI_STRICT_COHERENCY    ) ,
1822
        .C_ENABLE_AP             ( C_S3_AXI_ENABLE_AP           )
1823
        )
1824
        p3_axi_mcb
1825
        (
1826
        .aclk              ( s3_axi_aclk        ),
1827
        .aresetn           ( s3_axi_aresetn     ),
1828
        .s_axi_awid        ( s3_axi_awid        ),
1829
        .s_axi_awaddr      ( s3_axi_awaddr_i    ),
1830
        .s_axi_awlen       ( s3_axi_awlen       ),
1831
        .s_axi_awsize      ( s3_axi_awsize      ),
1832
        .s_axi_awburst     ( s3_axi_awburst     ),
1833
        .s_axi_awlock      ( s3_axi_awlock      ),
1834
        .s_axi_awcache     ( s3_axi_awcache     ),
1835
        .s_axi_awprot      ( s3_axi_awprot      ),
1836
        .s_axi_awqos       ( s3_axi_awqos       ),
1837
        .s_axi_awvalid     ( s3_axi_awvalid     ),
1838
        .s_axi_awready     ( s3_axi_awready     ),
1839
        .s_axi_wdata       ( s3_axi_wdata       ),
1840
        .s_axi_wstrb       ( s3_axi_wstrb       ),
1841
        .s_axi_wlast       ( s3_axi_wlast       ),
1842
        .s_axi_wvalid      ( s3_axi_wvalid      ),
1843
        .s_axi_wready      ( s3_axi_wready      ),
1844
        .s_axi_bid         ( s3_axi_bid         ),
1845
        .s_axi_bresp       ( s3_axi_bresp       ),
1846
        .s_axi_bvalid      ( s3_axi_bvalid      ),
1847
        .s_axi_bready      ( s3_axi_bready      ),
1848
        .s_axi_arid        ( s3_axi_arid        ),
1849
        .s_axi_araddr      ( s3_axi_araddr_i    ),
1850
        .s_axi_arlen       ( s3_axi_arlen       ),
1851
        .s_axi_arsize      ( s3_axi_arsize      ),
1852
        .s_axi_arburst     ( s3_axi_arburst     ),
1853
        .s_axi_arlock      ( s3_axi_arlock      ),
1854
        .s_axi_arcache     ( s3_axi_arcache     ),
1855
        .s_axi_arprot      ( s3_axi_arprot      ),
1856
        .s_axi_arqos       ( s3_axi_arqos       ),
1857
        .s_axi_arvalid     ( s3_axi_arvalid     ),
1858
        .s_axi_arready     ( s3_axi_arready     ),
1859
        .s_axi_rid         ( s3_axi_rid         ),
1860
        .s_axi_rdata       ( s3_axi_rdata       ),
1861
        .s_axi_rresp       ( s3_axi_rresp       ),
1862
        .s_axi_rlast       ( s3_axi_rlast       ),
1863
        .s_axi_rvalid      ( s3_axi_rvalid      ),
1864
        .s_axi_rready      ( s3_axi_rready      ),
1865
        .mcb_cmd_clk       ( p3_cmd_clk_i       ),
1866
        .mcb_cmd_en        ( p3_cmd_en_i        ),
1867
        .mcb_cmd_instr     ( p3_cmd_instr_i     ),
1868
        .mcb_cmd_bl        ( p3_cmd_bl_i        ),
1869
        .mcb_cmd_byte_addr ( p3_cmd_byte_addr_i ),
1870
        .mcb_cmd_empty     ( p3_cmd_empty_i     ),
1871
        .mcb_cmd_full      ( p3_cmd_full_i      ),
1872
        .mcb_wr_clk        ( p3_wr_clk_i        ),
1873
        .mcb_wr_en         ( p3_wr_en_i         ),
1874
        .mcb_wr_mask       ( p3_wr_mask_i       ),
1875
        .mcb_wr_data       ( p3_wr_data_i       ),
1876
        .mcb_wr_full       ( p3_wr_full_i       ),
1877
        .mcb_wr_empty      ( p3_wr_empty_i      ),
1878
        .mcb_wr_count      ( p3_wr_count_i      ),
1879
        .mcb_wr_underrun   ( p3_wr_underrun_i   ),
1880
        .mcb_wr_error      ( p3_wr_error_i      ),
1881
        .mcb_rd_clk        ( p3_rd_clk_i        ),
1882
        .mcb_rd_en         ( p3_rd_en_i         ),
1883
        .mcb_rd_data       ( p3_rd_data_i       ),
1884
        .mcb_rd_full       ( p3_rd_full_i       ),
1885
        .mcb_rd_empty      ( p3_rd_empty_i      ),
1886
        .mcb_rd_count      ( p3_rd_count_i      ),
1887
        .mcb_rd_overflow   ( p3_rd_overflow_i   ),
1888
        .mcb_rd_error      ( p3_rd_error_i      ),
1889
        .mcb_calib_done    ( calib_done_synch   )
1890
        );
1891
    end
1892
  endgenerate
1893
 
1894
// P4 AXI Bridge Mux
1895
  generate
1896
    if (C_S4_AXI_ENABLE == 0) begin : P4_UI_MCB
1897
      assign  p4_arb_en_i        =  p4_arb_en        ; //
1898
      assign  p4_cmd_clk_i       =  p4_cmd_clk       ; //
1899
      assign  p4_cmd_en_i        =  p4_cmd_en        ; //
1900
      assign  p4_cmd_instr_i     =  p4_cmd_instr     ; // [2:0]
1901
      assign  p4_cmd_bl_i        =  p4_cmd_bl        ; // [5:0]
1902
      assign  p4_cmd_byte_addr_i =  p4_cmd_byte_addr ; // [29:0]
1903
      assign  p4_cmd_empty       =  p4_cmd_empty_i   ; //
1904
      assign  p4_cmd_full        =  p4_cmd_full_i    ; //
1905
      assign  p4_wr_clk_i        =  p4_wr_clk        ; //
1906
      assign  p4_wr_en_i         =  p4_wr_en         ; //
1907
      assign  p4_wr_mask_i       =  p4_wr_mask       ; // [3:0]
1908
      assign  p4_wr_data_i       =  p4_wr_data       ; // [31:0]
1909
      assign  p4_wr_full         =  p4_wr_full_i     ; //
1910
      assign  p4_wr_empty        =  p4_wr_empty_i    ; //
1911
      assign  p4_wr_count        =  p4_wr_count_i    ; // [6:0]
1912
      assign  p4_wr_underrun     =  p4_wr_underrun_i ; //
1913
      assign  p4_wr_error        =  p4_wr_error_i    ; //
1914
      assign  p4_rd_clk_i        =  p4_rd_clk        ; //
1915
      assign  p4_rd_en_i         =  p4_rd_en         ; //
1916
      assign  p4_rd_data         =  p4_rd_data_i     ; // [31:0]
1917
      assign  p4_rd_full         =  p4_rd_full_i     ; //
1918
      assign  p4_rd_empty        =  p4_rd_empty_i    ; //
1919
      assign  p4_rd_count        =  p4_rd_count_i    ; // [6:0]
1920
      assign  p4_rd_overflow     =  p4_rd_overflow_i ; //
1921
      assign  p4_rd_error        =  p4_rd_error_i    ; //
1922
    end
1923
    else begin : P4_UI_AXI
1924
      assign  p4_arb_en_i        =  p4_arb_en;
1925
      assign  s4_axi_araddr_i    = s4_axi_araddr & P_S4_AXI_ADDRMASK;
1926
      assign  s4_axi_awaddr_i    = s4_axi_awaddr & P_S4_AXI_ADDRMASK;
1927
      wire                     calib_done_synch;
1928
 
1929
      mcb_ui_top_synch #(
1930
        .C_SYNCH_WIDTH          ( 1 )
1931
      )
1932
      axi_mcb_synch
1933
      (
1934
        .clk                    ( s4_axi_aclk      ),
1935
        .synch_in               ( uo_done_cal      ),
1936
        .synch_out              ( calib_done_synch )
1937
      );
1938
 
1939
      axi_mcb #
1940
        (
1941
        .C_FAMILY                ( "spartan6"               ) ,
1942
        .C_S_AXI_ID_WIDTH        ( C_S4_AXI_ID_WIDTH        ) ,
1943
        .C_S_AXI_ADDR_WIDTH      ( C_S4_AXI_ADDR_WIDTH      ) ,
1944
        .C_S_AXI_DATA_WIDTH      ( 32                       ) ,
1945
        .C_S_AXI_SUPPORTS_READ   ( C_S4_AXI_SUPPORTS_READ   ) ,
1946
        .C_S_AXI_SUPPORTS_WRITE  ( C_S4_AXI_SUPPORTS_WRITE  ) ,
1947
        .C_S_AXI_REG_EN0         ( C_S4_AXI_REG_EN0         ) ,
1948
        .C_S_AXI_REG_EN1         ( C_S4_AXI_REG_EN1         ) ,
1949
        .C_S_AXI_SUPPORTS_NARROW_BURST ( C_S4_AXI_SUPPORTS_NARROW_BURST ) ,
1950
        .C_MCB_ADDR_WIDTH        ( 30                       ) ,
1951
        .C_MCB_DATA_WIDTH        ( 32                       ) ,
1952
        .C_STRICT_COHERENCY      ( C_S4_AXI_STRICT_COHERENCY    ) ,
1953
        .C_ENABLE_AP             ( C_S4_AXI_ENABLE_AP           )
1954
        )
1955
        p4_axi_mcb
1956
        (
1957
        .aclk              ( s4_axi_aclk        ),
1958
        .aresetn           ( s4_axi_aresetn     ),
1959
        .s_axi_awid        ( s4_axi_awid        ),
1960
        .s_axi_awaddr      ( s4_axi_awaddr_i    ),
1961
        .s_axi_awlen       ( s4_axi_awlen       ),
1962
        .s_axi_awsize      ( s4_axi_awsize      ),
1963
        .s_axi_awburst     ( s4_axi_awburst     ),
1964
        .s_axi_awlock      ( s4_axi_awlock      ),
1965
        .s_axi_awcache     ( s4_axi_awcache     ),
1966
        .s_axi_awprot      ( s4_axi_awprot      ),
1967
        .s_axi_awqos       ( s4_axi_awqos       ),
1968
        .s_axi_awvalid     ( s4_axi_awvalid     ),
1969
        .s_axi_awready     ( s4_axi_awready     ),
1970
        .s_axi_wdata       ( s4_axi_wdata       ),
1971
        .s_axi_wstrb       ( s4_axi_wstrb       ),
1972
        .s_axi_wlast       ( s4_axi_wlast       ),
1973
        .s_axi_wvalid      ( s4_axi_wvalid      ),
1974
        .s_axi_wready      ( s4_axi_wready      ),
1975
        .s_axi_bid         ( s4_axi_bid         ),
1976
        .s_axi_bresp       ( s4_axi_bresp       ),
1977
        .s_axi_bvalid      ( s4_axi_bvalid      ),
1978
        .s_axi_bready      ( s4_axi_bready      ),
1979
        .s_axi_arid        ( s4_axi_arid        ),
1980
        .s_axi_araddr      ( s4_axi_araddr_i    ),
1981
        .s_axi_arlen       ( s4_axi_arlen       ),
1982
        .s_axi_arsize      ( s4_axi_arsize      ),
1983
        .s_axi_arburst     ( s4_axi_arburst     ),
1984
        .s_axi_arlock      ( s4_axi_arlock      ),
1985
        .s_axi_arcache     ( s4_axi_arcache     ),
1986
        .s_axi_arprot      ( s4_axi_arprot      ),
1987
        .s_axi_arqos       ( s4_axi_arqos       ),
1988
        .s_axi_arvalid     ( s4_axi_arvalid     ),
1989
        .s_axi_arready     ( s4_axi_arready     ),
1990
        .s_axi_rid         ( s4_axi_rid         ),
1991
        .s_axi_rdata       ( s4_axi_rdata       ),
1992
        .s_axi_rresp       ( s4_axi_rresp       ),
1993
        .s_axi_rlast       ( s4_axi_rlast       ),
1994
        .s_axi_rvalid      ( s4_axi_rvalid      ),
1995
        .s_axi_rready      ( s4_axi_rready      ),
1996
        .mcb_cmd_clk       ( p4_cmd_clk_i       ),
1997
        .mcb_cmd_en        ( p4_cmd_en_i        ),
1998
        .mcb_cmd_instr     ( p4_cmd_instr_i     ),
1999
        .mcb_cmd_bl        ( p4_cmd_bl_i        ),
2000
        .mcb_cmd_byte_addr ( p4_cmd_byte_addr_i ),
2001
        .mcb_cmd_empty     ( p4_cmd_empty_i     ),
2002
        .mcb_cmd_full      ( p4_cmd_full_i      ),
2003
        .mcb_wr_clk        ( p4_wr_clk_i        ),
2004
        .mcb_wr_en         ( p4_wr_en_i         ),
2005
        .mcb_wr_mask       ( p4_wr_mask_i       ),
2006
        .mcb_wr_data       ( p4_wr_data_i       ),
2007
        .mcb_wr_full       ( p4_wr_full_i       ),
2008
        .mcb_wr_empty      ( p4_wr_empty_i      ),
2009
        .mcb_wr_count      ( p4_wr_count_i      ),
2010
        .mcb_wr_underrun   ( p4_wr_underrun_i   ),
2011
        .mcb_wr_error      ( p4_wr_error_i      ),
2012
        .mcb_rd_clk        ( p4_rd_clk_i        ),
2013
        .mcb_rd_en         ( p4_rd_en_i         ),
2014
        .mcb_rd_data       ( p4_rd_data_i       ),
2015
        .mcb_rd_full       ( p4_rd_full_i       ),
2016
        .mcb_rd_empty      ( p4_rd_empty_i      ),
2017
        .mcb_rd_count      ( p4_rd_count_i      ),
2018
        .mcb_rd_overflow   ( p4_rd_overflow_i   ),
2019
        .mcb_rd_error      ( p4_rd_error_i      ),
2020
        .mcb_calib_done    ( calib_done_synch   )
2021
        );
2022
    end
2023
  endgenerate
2024
 
2025
// P5 AXI Bridge Mux
2026
  generate
2027
    if (C_S5_AXI_ENABLE == 0) begin : P5_UI_MCB
2028
      assign  p5_arb_en_i        =  p5_arb_en        ; //
2029
      assign  p5_cmd_clk_i       =  p5_cmd_clk       ; //
2030
      assign  p5_cmd_en_i        =  p5_cmd_en        ; //
2031
      assign  p5_cmd_instr_i     =  p5_cmd_instr     ; // [2:0]
2032
      assign  p5_cmd_bl_i        =  p5_cmd_bl        ; // [5:0]
2033
      assign  p5_cmd_byte_addr_i =  p5_cmd_byte_addr ; // [29:0]
2034
      assign  p5_cmd_empty       =  p5_cmd_empty_i   ; //
2035
      assign  p5_cmd_full        =  p5_cmd_full_i    ; //
2036
      assign  p5_wr_clk_i        =  p5_wr_clk        ; //
2037
      assign  p5_wr_en_i         =  p5_wr_en         ; //
2038
      assign  p5_wr_mask_i       =  p5_wr_mask       ; // [3:0]
2039
      assign  p5_wr_data_i       =  p5_wr_data       ; // [31:0]
2040
      assign  p5_wr_full         =  p5_wr_full_i     ; //
2041
      assign  p5_wr_empty        =  p5_wr_empty_i    ; //
2042
      assign  p5_wr_count        =  p5_wr_count_i    ; // [6:0]
2043
      assign  p5_wr_underrun     =  p5_wr_underrun_i ; //
2044
      assign  p5_wr_error        =  p5_wr_error_i    ; //
2045
      assign  p5_rd_clk_i        =  p5_rd_clk        ; //
2046
      assign  p5_rd_en_i         =  p5_rd_en         ; //
2047
      assign  p5_rd_data         =  p5_rd_data_i     ; // [31:0]
2048
      assign  p5_rd_full         =  p5_rd_full_i     ; //
2049
      assign  p5_rd_empty        =  p5_rd_empty_i    ; //
2050
      assign  p5_rd_count        =  p5_rd_count_i    ; // [6:0]
2051
      assign  p5_rd_overflow     =  p5_rd_overflow_i ; //
2052
      assign  p5_rd_error        =  p5_rd_error_i    ; //
2053
    end
2054
    else begin : P5_UI_AXI
2055
      assign  p5_arb_en_i        =  p5_arb_en;
2056
      assign  s5_axi_araddr_i    = s5_axi_araddr & P_S5_AXI_ADDRMASK;
2057
      assign  s5_axi_awaddr_i    = s5_axi_awaddr & P_S5_AXI_ADDRMASK;
2058
      wire                     calib_done_synch;
2059
 
2060
      mcb_ui_top_synch #(
2061
        .C_SYNCH_WIDTH          ( 1 )
2062
      )
2063
      axi_mcb_synch
2064
      (
2065
        .clk                    ( s5_axi_aclk      ),
2066
        .synch_in               ( uo_done_cal      ),
2067
        .synch_out              ( calib_done_synch )
2068
      );
2069
 
2070
      axi_mcb #
2071
        (
2072
        .C_FAMILY                ( "spartan6"               ) ,
2073
        .C_S_AXI_ID_WIDTH        ( C_S5_AXI_ID_WIDTH        ) ,
2074
        .C_S_AXI_ADDR_WIDTH      ( C_S5_AXI_ADDR_WIDTH      ) ,
2075
        .C_S_AXI_DATA_WIDTH      ( 32                       ) ,
2076
        .C_S_AXI_SUPPORTS_READ   ( C_S5_AXI_SUPPORTS_READ   ) ,
2077
        .C_S_AXI_SUPPORTS_WRITE  ( C_S5_AXI_SUPPORTS_WRITE  ) ,
2078
        .C_S_AXI_REG_EN0         ( C_S5_AXI_REG_EN0         ) ,
2079
        .C_S_AXI_REG_EN1         ( C_S5_AXI_REG_EN1         ) ,
2080
        .C_S_AXI_SUPPORTS_NARROW_BURST ( C_S5_AXI_SUPPORTS_NARROW_BURST ) ,
2081
        .C_MCB_ADDR_WIDTH        ( 30                       ) ,
2082
        .C_MCB_DATA_WIDTH        ( 32                       ) ,
2083
        .C_STRICT_COHERENCY      ( C_S5_AXI_STRICT_COHERENCY    ) ,
2084
        .C_ENABLE_AP             ( C_S5_AXI_ENABLE_AP           )
2085
        )
2086
        p5_axi_mcb
2087
        (
2088
        .aclk              ( s5_axi_aclk        ),
2089
        .aresetn           ( s5_axi_aresetn     ),
2090
        .s_axi_awid        ( s5_axi_awid        ),
2091
        .s_axi_awaddr      ( s5_axi_awaddr_i    ),
2092
        .s_axi_awlen       ( s5_axi_awlen       ),
2093
        .s_axi_awsize      ( s5_axi_awsize      ),
2094
        .s_axi_awburst     ( s5_axi_awburst     ),
2095
        .s_axi_awlock      ( s5_axi_awlock      ),
2096
        .s_axi_awcache     ( s5_axi_awcache     ),
2097
        .s_axi_awprot      ( s5_axi_awprot      ),
2098
        .s_axi_awqos       ( s5_axi_awqos       ),
2099
        .s_axi_awvalid     ( s5_axi_awvalid     ),
2100
        .s_axi_awready     ( s5_axi_awready     ),
2101
        .s_axi_wdata       ( s5_axi_wdata       ),
2102
        .s_axi_wstrb       ( s5_axi_wstrb       ),
2103
        .s_axi_wlast       ( s5_axi_wlast       ),
2104
        .s_axi_wvalid      ( s5_axi_wvalid      ),
2105
        .s_axi_wready      ( s5_axi_wready      ),
2106
        .s_axi_bid         ( s5_axi_bid         ),
2107
        .s_axi_bresp       ( s5_axi_bresp       ),
2108
        .s_axi_bvalid      ( s5_axi_bvalid      ),
2109
        .s_axi_bready      ( s5_axi_bready      ),
2110
        .s_axi_arid        ( s5_axi_arid        ),
2111
        .s_axi_araddr      ( s5_axi_araddr_i    ),
2112
        .s_axi_arlen       ( s5_axi_arlen       ),
2113
        .s_axi_arsize      ( s5_axi_arsize      ),
2114
        .s_axi_arburst     ( s5_axi_arburst     ),
2115
        .s_axi_arlock      ( s5_axi_arlock      ),
2116
        .s_axi_arcache     ( s5_axi_arcache     ),
2117
        .s_axi_arprot      ( s5_axi_arprot      ),
2118
        .s_axi_arqos       ( s5_axi_arqos       ),
2119
        .s_axi_arvalid     ( s5_axi_arvalid     ),
2120
        .s_axi_arready     ( s5_axi_arready     ),
2121
        .s_axi_rid         ( s5_axi_rid         ),
2122
        .s_axi_rdata       ( s5_axi_rdata       ),
2123
        .s_axi_rresp       ( s5_axi_rresp       ),
2124
        .s_axi_rlast       ( s5_axi_rlast       ),
2125
        .s_axi_rvalid      ( s5_axi_rvalid      ),
2126
        .s_axi_rready      ( s5_axi_rready      ),
2127
        .mcb_cmd_clk       ( p5_cmd_clk_i       ),
2128
        .mcb_cmd_en        ( p5_cmd_en_i        ),
2129
        .mcb_cmd_instr     ( p5_cmd_instr_i     ),
2130
        .mcb_cmd_bl        ( p5_cmd_bl_i        ),
2131
        .mcb_cmd_byte_addr ( p5_cmd_byte_addr_i ),
2132
        .mcb_cmd_empty     ( p5_cmd_empty_i     ),
2133
        .mcb_cmd_full      ( p5_cmd_full_i      ),
2134
        .mcb_wr_clk        ( p5_wr_clk_i        ),
2135
        .mcb_wr_en         ( p5_wr_en_i         ),
2136
        .mcb_wr_mask       ( p5_wr_mask_i       ),
2137
        .mcb_wr_data       ( p5_wr_data_i       ),
2138
        .mcb_wr_full       ( p5_wr_full_i       ),
2139
        .mcb_wr_empty      ( p5_wr_empty_i      ),
2140
        .mcb_wr_count      ( p5_wr_count_i      ),
2141
        .mcb_wr_underrun   ( p5_wr_underrun_i   ),
2142
        .mcb_wr_error      ( p5_wr_error_i      ),
2143
        .mcb_rd_clk        ( p5_rd_clk_i        ),
2144
        .mcb_rd_en         ( p5_rd_en_i         ),
2145
        .mcb_rd_data       ( p5_rd_data_i       ),
2146
        .mcb_rd_full       ( p5_rd_full_i       ),
2147
        .mcb_rd_empty      ( p5_rd_empty_i      ),
2148
        .mcb_rd_count      ( p5_rd_count_i      ),
2149
        .mcb_rd_overflow   ( p5_rd_overflow_i   ),
2150
        .mcb_rd_error      ( p5_rd_error_i      ),
2151
        .mcb_calib_done    ( calib_done_synch   )
2152
        );
2153
    end
2154
  endgenerate
2155
 
2156
endmodule
2157
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.