AMC13
Firmwares for the different applications of the AMC13 uTCA board made at Boston University
Main Page
Design Unit List
Files
File List
All
Classes
Variables
src
common
DDR
ddr3_1_9_a
controller
mig_7series_v1_9_arb_mux.v
1
//*****************************************************************************
2
// (c) Copyright 2008 - 2013 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
// ____ ____
50
// / /\/ /
51
// /___/ \ / Vendor : Xilinx
52
// \ \ \/ Version : %version
53
// \ \ Application : MIG
54
// / / Filename : arb_mux.v
55
// /___/ /\ Date Last Modified : $date$
56
// \ \ / \ Date Created : Tue Jun 30 2009
57
// \___\/\___\
58
//
59
//Device : 7-Series
60
//Design Name : DDR3 SDRAM
61
//Purpose :
62
//Reference :
63
//Revision History :
64
//*****************************************************************************
65
66
67
`timescale
1ps/1ps
68
69
module
mig_7series_v1_9_arb_mux
#
70
(
71
parameter
TCQ
=
100
,
72
parameter
EVEN_CWL_2T_MODE
=
"OFF"
,
73
parameter
ADDR_CMD_MODE
=
"1T"
,
74
parameter
BANK_VECT_INDX
=
11
,
75
parameter
BANK_WIDTH
=
3
,
76
parameter
BURST_MODE
=
"8"
,
77
parameter
CS_WIDTH
=
4
,
78
parameter
CL
=
5
,
79
parameter
CWL
=
5
,
80
parameter
DATA_BUF_ADDR_VECT_INDX
=
31
,
81
parameter
DATA_BUF_ADDR_WIDTH
=
8
,
82
parameter
DRAM_TYPE
=
"DDR3"
,
83
parameter
CKE_ODT_AUX
=
"FALSE"
,
//Parameter to turn on/off the aux_out signal
84
parameter
EARLY_WR_DATA_ADDR
=
"OFF"
,
85
parameter
ECC
=
"OFF"
,
86
parameter
nBANK_MACHS
=
4
,
87
parameter
nCK_PER_CLK
=
2
,
// # DRAM CKs per fabric CLKs
88
parameter
nCS_PER_RANK
=
1
,
89
parameter
nRAS
=
37500
,
// ACT->PRE cmd period (CKs)
90
parameter
nRCD
=
12500
,
// ACT->R/W delay (CKs)
91
parameter
nSLOTS
=
2
,
92
parameter
nWR
=
6
,
// Write recovery (CKs)
93
parameter
RANKS
=
1
,
94
parameter
RANK_VECT_INDX
=
15
,
95
parameter
RANK_WIDTH
=
2
,
96
parameter
ROW_VECT_INDX
=
63
,
97
parameter
ROW_WIDTH
=
16
,
98
parameter
RTT_NOM
=
"40"
,
99
parameter
RTT_WR
=
"120"
,
100
parameter
SLOT_0_CONFIG
=
8'b0000_0101
,
101
parameter
SLOT_1_CONFIG
=
8'b0000_1010
102
)
103
(
/*AUTOARG**/
104
// Outputs
105
output
[
ROW_WIDTH
-
1
:
0
]
col_a
,
// From arb_select0 of arb_select.v
106
output
[
BANK_WIDTH
-
1
:
0
]
col_ba
,
// From arb_select0 of arb_select.v
107
output
[
DATA_BUF_ADDR_WIDTH
-
1
:
0
]
col_data_buf_addr
,
// From arb_select0 of arb_select.v
108
output
col_periodic_rd
,
// From arb_select0 of arb_select.v
109
output
[
RANK_WIDTH
-
1
:
0
]
col_ra
,
// From arb_select0 of arb_select.v
110
output
col_rmw
,
// From arb_select0 of arb_select.v
111
output
col_rd_wr
,
112
output
[
ROW_WIDTH
-
1
:
0
]
col_row
,
// From arb_select0 of arb_select.v
113
output
col_size
,
// From arb_select0 of arb_select.v
114
output
[
DATA_BUF_ADDR_WIDTH
-
1
:
0
]
col_wr_data_buf_addr
,
// From arb_select0 of arb_select.v
115
output
wire
[
nCK_PER_CLK
-
1
:
0
]
mc_ras_n
,
116
output
wire
[
nCK_PER_CLK
-
1
:
0
]
mc_cas_n
,
117
output
wire
[
nCK_PER_CLK
-
1
:
0
]
mc_we_n
,
118
output
wire
[
nCK_PER_CLK
*
ROW_WIDTH
-
1
:
0
]
mc_address
,
119
output
wire
[
nCK_PER_CLK
*
BANK_WIDTH
-
1
:
0
]
mc_bank
,
120
output
wire
[
CS_WIDTH
*
nCS_PER_RANK
*
nCK_PER_CLK
-
1
:
0
]
mc_cs_n
,
121
output
wire
[
1
:
0
]
mc_odt
,
122
output
wire
[
nCK_PER_CLK
-
1
:
0
]
mc_cke
,
123
output
wire
[
3
:
0
]
mc_aux_out0
,
124
output
wire
[
3
:
0
]
mc_aux_out1
,
125
output
[
2
:
0
]
mc_cmd
,
126
output
[
5
:
0
]
mc_data_offset
,
127
output
[
5
:
0
]
mc_data_offset_1
,
128
output
[
5
:
0
]
mc_data_offset_2
,
129
output
[
1
:
0
]
mc_cas_slot
,
130
output
[
RANK_WIDTH
-
1
:
0
]
rnk_config
,
// From arb_select0 of arb_select.v
131
output
rnk_config_valid_r
,
// From arb_row_col0 of arb_row_col.v
132
output
[
nBANK_MACHS
-
1
:
0
]
sending_row
,
// From arb_row_col0 of arb_row_col.v
133
output
[
nBANK_MACHS
-
1
:
0
]
sending_pre
,
134
output
sent_col
,
// From arb_row_col0 of arb_row_col.v
135
output
sent_col_r
,
// From arb_row_col0 of arb_row_col.v
136
output
sent_row
,
// From arb_row_col0 of arb_row_col.v
137
output
[
nBANK_MACHS
-
1
:
0
]
sending_col
,
138
output
rnk_config_strobe
,
139
output
insert_maint_r1
,
140
output
rnk_config_kill_rts_col
,
141
142
// Inputs
143
input
clk
,
144
input
rst
,
145
input
init_calib_complete
,
146
input
[
6
*
RANKS
-
1
:
0
]
calib_rddata_offset
,
147
input
[
6
*
RANKS
-
1
:
0
]
calib_rddata_offset_1
,
148
input
[
6
*
RANKS
-
1
:
0
]
calib_rddata_offset_2
,
149
input
[
ROW_VECT_INDX
:
0
]
col_addr
,
// To arb_select0 of arb_select.v
150
input
[
nBANK_MACHS
-
1
:
0
]
col_rdy_wr
,
// To arb_row_col0 of arb_row_col.v
151
input
insert_maint_r
,
// To arb_row_col0 of arb_row_col.v
152
input
[
RANK_WIDTH
-
1
:
0
]
maint_rank_r
,
// To arb_select0 of arb_select.v
153
input
maint_zq_r
,
// To arb_select0 of arb_select.v
154
input
maint_sre_r
,
// To arb_select0 of arb_select.v
155
input
maint_srx_r
,
// To arb_select0 of arb_select.v
156
input
[
nBANK_MACHS
-
1
:
0
]
rd_wr_r
,
// To arb_select0 of arb_select.v
157
input
[
BANK_VECT_INDX
:
0
]
req_bank_r
,
// To arb_select0 of arb_select.v
158
input
[
nBANK_MACHS
-
1
:
0
]
req_cas
,
// To arb_select0 of arb_select.v
159
input
[
DATA_BUF_ADDR_VECT_INDX
:
0
]
req_data_buf_addr_r
,
// To arb_select0 of arb_select.v
160
input
[
nBANK_MACHS
-
1
:
0
]
req_periodic_rd_r
,
// To arb_select0 of arb_select.v
161
input
[
RANK_VECT_INDX
:
0
]
req_rank_r
,
// To arb_select0 of arb_select.v
162
input
[
nBANK_MACHS
-
1
:
0
]
req_ras
,
// To arb_select0 of arb_select.v
163
input
[
ROW_VECT_INDX
:
0
]
req_row_r
,
// To arb_select0 of arb_select.v
164
input
[
nBANK_MACHS
-
1
:
0
]
req_size_r
,
// To arb_select0 of arb_select.v
165
input
[
nBANK_MACHS
-
1
:
0
]
req_wr_r
,
// To arb_select0 of arb_select.v
166
input
[
ROW_VECT_INDX
:
0
]
row_addr
,
// To arb_select0 of arb_select.v
167
input
[
nBANK_MACHS
-
1
:
0
]
row_cmd_wr
,
// To arb_select0 of arb_select.v
168
input
[
nBANK_MACHS
-
1
:
0
]
rtc
,
// To arb_row_col0 of arb_row_col.v
169
input
[
nBANK_MACHS
-
1
:
0
]
rts_col
,
// To arb_row_col0 of arb_row_col.v
170
input
[
nBANK_MACHS
-
1
:
0
]
rts_row
,
// To arb_row_col0 of arb_row_col.v
171
input
[
nBANK_MACHS
-
1
:
0
]
rts_pre
,
// To arb_row_col0 of arb_row_col.v
172
input
[
7
:
0
]
slot_0_present
,
// To arb_select0 of arb_select.v
173
input
[
7
:
0
]
slot_1_present
// To arb_select0 of arb_select.v
174
175
);
176
177
/*AUTOINPUT**/
178
// Beginning of automatic inputs (from unused autoinst inputs)
179
// End of automatics
180
181
/*AUTOOUTPUT**/
182
// Beginning of automatic outputs (from unused autoinst outputs)
183
184
// End of automatics
185
186
/*AUTOWIRE**/
187
// Beginning of automatic wires (for undeclared instantiated-module outputs)
188
wire
cs_en0
;
// From arb_row_col0 of arb_row_col.v
189
wire
cs_en1
;
// From arb_row_col0 of arb_row_col.v
190
wire
[
nBANK_MACHS
-
1
:
0
]
grant_col_r
;
// From arb_row_col0 of arb_row_col.v
191
wire
[
nBANK_MACHS
-
1
:
0
]
grant_col_wr
;
// From arb_row_col0 of arb_row_col.v
192
wire
[
nBANK_MACHS
-
1
:
0
]
grant_config_r
;
// From arb_row_col0 of arb_row_col.v
193
wire
[
nBANK_MACHS
-
1
:
0
]
grant_row_r
;
// From arb_row_col0 of arb_row_col.v
194
wire
[
nBANK_MACHS
-
1
:
0
]
grant_pre_r
;
// From arb_row_col0 of arb_row_col.v
195
wire
send_cmd0_row
;
// From arb_row_col0 of arb_row_col.v
196
wire
send_cmd0_col
;
// From arb_row_col0 of arb_row_col.v
197
wire
send_cmd1_row
;
// From arb_row_col0 of arb_row_col.v
198
wire
send_cmd1_col
;
199
wire
send_cmd2_row
;
200
wire
send_cmd2_col
;
201
wire
send_cmd2_pre
;
202
wire
send_cmd3_col
;
203
wire
[
5
:
0
]
col_channel_offset
;
204
// End of automatics
205
206
wire
sent_col_i
;
207
208
assign
sent_col
=
sent_col_i
;
209
210
mig_7series_v1_9_arb_row_col
#
211
(
/*AUTOINSTPARAM**/
212
// Parameters
213
.
TCQ
(
TCQ
),
214
.
ADDR_CMD_MODE
(
ADDR_CMD_MODE
),
215
.
CWL
(
CWL
),
216
.
EARLY_WR_DATA_ADDR
(
EARLY_WR_DATA_ADDR
),
217
.
nBANK_MACHS
(
nBANK_MACHS
),
218
.
nCK_PER_CLK
(
nCK_PER_CLK
),
219
.
nRAS
(
nRAS
),
220
.
nRCD
(
nRCD
),
221
.
nWR
(
nWR
))
222
arb_row_col0
223
(
/*AUTOINST**/
224
// Outputs
225
.
grant_row_r
(
grant_row_r
[
nBANK_MACHS
-
1
:
0
]),
226
.
grant_pre_r
(
grant_pre_r
[
nBANK_MACHS
-
1
:
0
]),
227
.
sent_row
(
sent_row
),
228
.
sending_row
(
sending_row
[
nBANK_MACHS
-
1
:
0
]),
229
.
sending_pre
(
sending_pre
[
nBANK_MACHS
-
1
:
0
]),
230
.
grant_config_r
(
grant_config_r
[
nBANK_MACHS
-
1
:
0
]),
231
.
rnk_config_strobe
(
rnk_config_strobe
),
232
.
rnk_config_kill_rts_col
(
rnk_config_kill_rts_col
),
233
.
rnk_config_valid_r
(
rnk_config_valid_r
),
234
.
grant_col_r
(
grant_col_r
[
nBANK_MACHS
-
1
:
0
]),
235
.
sending_col
(
sending_col
[
nBANK_MACHS
-
1
:
0
]),
236
.
sent_col
(
sent_col_i
),
237
.
sent_col_r
(
sent_col_r
),
238
.
grant_col_wr
(
grant_col_wr
[
nBANK_MACHS
-
1
:
0
]),
239
.
send_cmd0_row
(
send_cmd0_row
),
240
.
send_cmd0_col
(
send_cmd0_col
),
241
.
send_cmd1_row
(
send_cmd1_row
),
242
.
send_cmd1_col
(
send_cmd1_col
),
243
.
send_cmd2_row
(
send_cmd2_row
),
244
.
send_cmd2_col
(
send_cmd2_col
),
245
.
send_cmd2_pre
(
send_cmd2_pre
),
246
.
send_cmd3_col
(
send_cmd3_col
),
247
.
col_channel_offset
(
col_channel_offset
),
248
.
cs_en0
(
cs_en0
),
249
.
cs_en1
(
cs_en1
),
250
.
cs_en2
(
cs_en2
),
251
.
cs_en3
(
cs_en3
),
252
.
insert_maint_r1
(
insert_maint_r1
),
253
// Inputs
254
.
clk
(
clk
),
255
.
rst
(
rst
),
256
.
rts_row
(
rts_row
[
nBANK_MACHS
-
1
:
0
]),
257
.
rts_pre
(
rts_pre
[
nBANK_MACHS
-
1
:
0
]),
258
.
insert_maint_r
(
insert_maint_r
),
259
.
rts_col
(
rts_col
[
nBANK_MACHS
-
1
:
0
]),
260
.
rtc
(
rtc
[
nBANK_MACHS
-
1
:
0
]),
261
.
col_rdy_wr
(
col_rdy_wr
[
nBANK_MACHS
-
1
:
0
]));
262
263
mig_7series_v1_9_arb_select
#
264
(
/*AUTOINSTPARAM**/
265
// Parameters
266
.
TCQ
(
TCQ
),
267
.
EVEN_CWL_2T_MODE
(
EVEN_CWL_2T_MODE
),
268
.
ADDR_CMD_MODE
(
ADDR_CMD_MODE
),
269
.
BANK_VECT_INDX
(
BANK_VECT_INDX
),
270
.
BANK_WIDTH
(
BANK_WIDTH
),
271
.
BURST_MODE
(
BURST_MODE
),
272
.
CS_WIDTH
(
CS_WIDTH
),
273
.
CL
(
CL
),
274
.
CWL
(
CWL
),
275
.
DATA_BUF_ADDR_VECT_INDX
(
DATA_BUF_ADDR_VECT_INDX
),
276
.
DATA_BUF_ADDR_WIDTH
(
DATA_BUF_ADDR_WIDTH
),
277
.
DRAM_TYPE
(
DRAM_TYPE
),
278
.
EARLY_WR_DATA_ADDR
(
EARLY_WR_DATA_ADDR
),
279
.
ECC
(
ECC
),
280
.
CKE_ODT_AUX
(
CKE_ODT_AUX
),
281
.
nBANK_MACHS
(
nBANK_MACHS
),
282
.
nCK_PER_CLK
(
nCK_PER_CLK
),
283
.
nCS_PER_RANK
(
nCS_PER_RANK
),
284
.
nSLOTS
(
nSLOTS
),
285
.
RANKS
(
RANKS
),
286
.
RANK_VECT_INDX
(
RANK_VECT_INDX
),
287
.
RANK_WIDTH
(
RANK_WIDTH
),
288
.
ROW_VECT_INDX
(
ROW_VECT_INDX
),
289
.
ROW_WIDTH
(
ROW_WIDTH
),
290
.
RTT_NOM
(
RTT_NOM
),
291
.
RTT_WR
(
RTT_WR
),
292
.
SLOT_0_CONFIG
(
SLOT_0_CONFIG
),
293
.
SLOT_1_CONFIG
(
SLOT_1_CONFIG
))
294
arb_select0
295
(
/*AUTOINST**/
296
// Outputs
297
.
col_periodic_rd
(
col_periodic_rd
),
298
.
col_ra
(
col_ra
[
RANK_WIDTH
-
1
:
0
]),
299
.
col_ba
(
col_ba
[
BANK_WIDTH
-
1
:
0
]),
300
.
col_a
(
col_a
[
ROW_WIDTH
-
1
:
0
]),
301
.
col_rmw
(
col_rmw
),
302
.
col_rd_wr
(
col_rd_wr
),
303
.
col_size
(
col_size
),
304
.
col_row
(
col_row
[
ROW_WIDTH
-
1
:
0
]),
305
.
col_data_buf_addr
(
col_data_buf_addr
[
DATA_BUF_ADDR_WIDTH
-
1
:
0
]),
306
.
col_wr_data_buf_addr
(
col_wr_data_buf_addr
[
DATA_BUF_ADDR_WIDTH
-
1
:
0
]),
307
.
mc_bank
(
mc_bank
),
308
.
mc_address
(
mc_address
),
309
.
mc_ras_n
(
mc_ras_n
),
310
.
mc_cas_n
(
mc_cas_n
),
311
.
mc_we_n
(
mc_we_n
),
312
.
mc_cs_n
(
mc_cs_n
),
313
.
mc_odt
(
mc_odt
),
314
.
mc_cke
(
mc_cke
),
315
.
mc_aux_out0
(
mc_aux_out0
),
316
.
mc_aux_out1
(
mc_aux_out1
),
317
.
mc_cmd
(
mc_cmd
),
318
.
mc_data_offset
(
mc_data_offset
),
319
.
mc_data_offset_1
(
mc_data_offset_1
),
320
.
mc_data_offset_2
(
mc_data_offset_2
),
321
.
mc_cas_slot
(
mc_cas_slot
),
322
.
col_channel_offset
(
col_channel_offset
),
323
.
rnk_config
(
rnk_config
),
324
// Inputs
325
.
clk
(
clk
),
326
.
rst
(
rst
),
327
.
init_calib_complete
(
init_calib_complete
),
328
.
calib_rddata_offset
(
calib_rddata_offset
),
329
.
calib_rddata_offset_1
(
calib_rddata_offset_1
),
330
.
calib_rddata_offset_2
(
calib_rddata_offset_2
),
331
.
req_rank_r
(
req_rank_r
[
RANK_VECT_INDX
:
0
]),
332
.
req_bank_r
(
req_bank_r
[
BANK_VECT_INDX
:
0
]),
333
.
req_ras
(
req_ras
[
nBANK_MACHS
-
1
:
0
]),
334
.
req_cas
(
req_cas
[
nBANK_MACHS
-
1
:
0
]),
335
.
req_wr_r
(
req_wr_r
[
nBANK_MACHS
-
1
:
0
]),
336
.
grant_row_r
(
grant_row_r
[
nBANK_MACHS
-
1
:
0
]),
337
.
grant_pre_r
(
grant_pre_r
[
nBANK_MACHS
-
1
:
0
]),
338
.
row_addr
(
row_addr
[
ROW_VECT_INDX
:
0
]),
339
.
row_cmd_wr
(
row_cmd_wr
[
nBANK_MACHS
-
1
:
0
]),
340
.
insert_maint_r1
(
insert_maint_r1
),
341
.
maint_zq_r
(
maint_zq_r
),
342
.
maint_sre_r
(
maint_sre_r
),
343
.
maint_srx_r
(
maint_srx_r
),
344
.
maint_rank_r
(
maint_rank_r
[
RANK_WIDTH
-
1
:
0
]),
345
.
req_periodic_rd_r
(
req_periodic_rd_r
[
nBANK_MACHS
-
1
:
0
]),
346
.
req_size_r
(
req_size_r
[
nBANK_MACHS
-
1
:
0
]),
347
.
rd_wr_r
(
rd_wr_r
[
nBANK_MACHS
-
1
:
0
]),
348
.
req_row_r
(
req_row_r
[
ROW_VECT_INDX
:
0
]),
349
.
col_addr
(
col_addr
[
ROW_VECT_INDX
:
0
]),
350
.
req_data_buf_addr_r
(
req_data_buf_addr_r
[
DATA_BUF_ADDR_VECT_INDX
:
0
]),
351
.
grant_col_r
(
grant_col_r
[
nBANK_MACHS
-
1
:
0
]),
352
.
grant_col_wr
(
grant_col_wr
[
nBANK_MACHS
-
1
:
0
]),
353
.
send_cmd0_row
(
send_cmd0_row
),
354
.
send_cmd0_col
(
send_cmd0_col
),
355
.
send_cmd1_row
(
send_cmd1_row
),
356
.
send_cmd1_col
(
send_cmd1_col
),
357
.
send_cmd2_row
(
send_cmd2_row
),
358
.
send_cmd2_col
(
send_cmd2_col
),
359
.
send_cmd2_pre
(
send_cmd2_pre
),
360
.
send_cmd3_col
(
send_cmd3_col
),
361
.
sent_col
(
EVEN_CWL_2T_MODE
==
"ON"
?
sent_col_r
:
sent_col
),
362
.
cs_en0
(
cs_en0
),
363
.
cs_en1
(
cs_en1
),
364
.
cs_en2
(
cs_en2
),
365
.
cs_en3
(
cs_en3
),
366
.
grant_config_r
(
grant_config_r
[
nBANK_MACHS
-
1
:
0
]),
367
.
rnk_config_strobe
(
rnk_config_strobe
),
368
.
slot_0_present
(
slot_0_present
[
7
:
0
]),
369
.
slot_1_present
(
slot_1_present
[
7
:
0
]));
370
371
endmodule
Generated on Wed Apr 18 2018 10:55:27 for AMC13 by
1.8.1