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
Files
Variables
src
common
DDR
ddr3_1_9_a
controller
mig_7series_v1_9_bank_cntrl.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 : bank_cntrl.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
// Structural block instantiating the three sub blocks that make up
67
// a bank machine.
68
`timescale
1ps/1ps
69
70
module
mig_7series_v1_9_bank_cntrl
#
71
(
72
parameter
TCQ
=
100
,
73
parameter
ADDR_CMD_MODE
=
"1T"
,
74
parameter
BANK_WIDTH
=
3
,
75
parameter
BM_CNT_WIDTH
=
2
,
76
parameter
BURST_MODE
=
"8"
,
77
parameter
COL_WIDTH
=
12
,
78
parameter
CWL
=
5
,
79
parameter
DATA_BUF_ADDR_WIDTH
=
8
,
80
parameter
DRAM_TYPE
=
"DDR3"
,
81
parameter
ECC
=
"OFF"
,
82
parameter
ID
=
4
,
83
parameter
nBANK_MACHS
=
4
,
84
parameter
nCK_PER_CLK
=
2
,
85
parameter
nOP_WAIT
=
0
,
86
parameter
nRAS_CLKS
=
10
,
87
parameter
nRCD
=
5
,
88
parameter
nRTP
=
4
,
89
parameter
nRP
=
10
,
90
parameter
nWTP_CLKS
=
5
,
91
parameter
ORDERING
=
"NORM"
,
92
parameter
RANK_WIDTH
=
2
,
93
parameter
RANKS
=
4
,
94
parameter
RAS_TIMER_WIDTH
=
5
,
95
parameter
ROW_WIDTH
=
16
,
96
parameter
STARVE_LIMIT
=
2
97
)
98
(
/*AUTOARG**/
99
// Outputs
100
wr_this_rank_r
,
start_rcd
,
start_pre_wait
,
rts_row
,
rts_col
,
rts_pre
,
rtc
,
101
row_cmd_wr
,
row_addr
,
req_size_r
,
req_row_r
,
req_ras
,
102
req_periodic_rd_r
,
req_cas
,
req_bank_r
,
rd_this_rank_r
,
103
rb_hit_busy_ns
,
ras_timer_ns
,
rank_busy_r
,
ordered_r
,
104
ordered_issued
,
op_exit_req
,
end_rtp
,
demand_priority
,
105
demand_act_priority
,
col_rdy_wr
,
col_addr
,
act_this_rank_r
,
idle_ns
,
106
req_wr_r
,
rd_wr_r
,
bm_end
,
idle_r
,
head_r
,
req_rank_r
,
107
rb_hit_busy_r
,
passing_open_bank
,
maint_hit
,
req_data_buf_addr_r
,
108
// Inputs
109
was_wr
,
was_priority
,
use_addr
,
start_rcd_in
,
110
size
,
sent_row
,
sent_col
,
sending_row
,
sending_pre
,
sending_col
,
rst
,
row
,
111
req_rank_r_in
,
rd_rmw
,
rd_data_addr
,
rb_hit_busy_ns_in
,
112
rb_hit_busy_cnt
,
ras_timer_ns_in
,
rank
,
periodic_rd_rank_r
,
113
periodic_rd_insert
,
periodic_rd_ack_r
,
passing_open_bank_in
,
114
order_cnt
,
op_exit_grant
,
maint_zq_r
,
maint_sre_r
,
maint_req_r
,
maint_rank_r
,
115
maint_idle
,
low_idle_cnt_r
,
rnk_config_valid_r
,
inhbt_rd
,
inhbt_wr
,
116
rnk_config_strobe
,
rnk_config
,
inhbt_act_faw_r
,
idle_cnt
,
hi_priority
,
117
dq_busy_data
,
phy_rddata_valid
,
demand_priority_in
,
demand_act_priority_in
,
118
data_buf_addr
,
col
,
cmd
,
clk
,
bm_end_in
,
bank
,
adv_order_q
,
119
accept_req
,
accept_internal_r
,
rnk_config_kill_rts_col
,
phy_mc_ctl_full
,
120
phy_mc_cmd_full
,
phy_mc_data_full
121
);
122
123
/*AUTOINPUT**/
124
// Beginning of automatic inputs (from unused autoinst inputs)
125
input
accept_internal_r
;
// To bank_queue0 of bank_queue.v
126
input
accept_req
;
// To bank_queue0 of bank_queue.v
127
input
adv_order_q
;
// To bank_queue0 of bank_queue.v
128
input
[
BANK_WIDTH
-
1
:
0
]
bank
;
// To bank_compare0 of bank_compare.v
129
input
[(
nBANK_MACHS
*
2
)-
1
:
0
]
bm_end_in
;
// To bank_queue0 of bank_queue.v
130
input
clk
;
// To bank_compare0 of bank_compare.v, ...
131
input
[
2
:
0
]
cmd
;
// To bank_compare0 of bank_compare.v
132
input
[
COL_WIDTH
-
1
:
0
]
col
;
// To bank_compare0 of bank_compare.v
133
input
[
DATA_BUF_ADDR_WIDTH
-
1
:
0
]
data_buf_addr
;
// To bank_compare0 of bank_compare.v
134
input
[(
nBANK_MACHS
*
2
)-
1
:
0
]
demand_act_priority_in
;
// To bank_state0 of bank_state.v
135
input
[(
nBANK_MACHS
*
2
)-
1
:
0
]
demand_priority_in
;
// To bank_state0 of bank_state.v
136
input
phy_rddata_valid
;
// To bank_state0 of bank_state.v
137
input
dq_busy_data
;
// To bank_state0 of bank_state.v
138
input
hi_priority
;
// To bank_compare0 of bank_compare.v
139
input
[
BM_CNT_WIDTH
-
1
:
0
]
idle_cnt
;
// To bank_queue0 of bank_queue.v
140
input
[
RANKS
-
1
:
0
]
inhbt_act_faw_r
;
// To bank_state0 of bank_state.v
141
input
[
RANKS
-
1
:
0
]
inhbt_rd
;
// To bank_state0 of bank_state.v
142
input
[
RANKS
-
1
:
0
]
inhbt_wr
;
// To bank_state0 of bank_state.v
143
input
[
RANK_WIDTH
-
1
:
0
]
rnk_config
;
// To bank_state0 of bank_state.v
144
input
rnk_config_strobe
;
// To bank_state0 of bank_state.v
145
input
rnk_config_kill_rts_col
;
// To bank_state0 of bank_state.v
146
input
rnk_config_valid_r
;
// To bank_state0 of bank_state.v
147
input
low_idle_cnt_r
;
// To bank_state0 of bank_state.v
148
input
maint_idle
;
// To bank_queue0 of bank_queue.v
149
input
[
RANK_WIDTH
-
1
:
0
]
maint_rank_r
;
// To bank_compare0 of bank_compare.v
150
input
maint_req_r
;
// To bank_queue0 of bank_queue.v
151
input
maint_zq_r
;
// To bank_compare0 of bank_compare.v
152
input
maint_sre_r
;
// To bank_compare0 of bank_compare.v
153
input
op_exit_grant
;
// To bank_state0 of bank_state.v
154
input
[
BM_CNT_WIDTH
-
1
:
0
]
order_cnt
;
// To bank_queue0 of bank_queue.v
155
input
[(
nBANK_MACHS
*
2
)-
1
:
0
]
passing_open_bank_in
;
// To bank_queue0 of bank_queue.v
156
input
periodic_rd_ack_r
;
// To bank_queue0 of bank_queue.v
157
input
periodic_rd_insert
;
// To bank_compare0 of bank_compare.v
158
input
[
RANK_WIDTH
-
1
:
0
]
periodic_rd_rank_r
;
// To bank_compare0 of bank_compare.v
159
input
phy_mc_ctl_full
;
160
input
phy_mc_cmd_full
;
161
input
phy_mc_data_full
;
162
input
[
RANK_WIDTH
-
1
:
0
]
rank
;
// To bank_compare0 of bank_compare.v
163
input
[(
2
*(
RAS_TIMER_WIDTH
*
nBANK_MACHS
))-
1
:
0
]
ras_timer_ns_in
;
// To bank_state0 of bank_state.v
164
input
[
BM_CNT_WIDTH
-
1
:
0
]
rb_hit_busy_cnt
;
// To bank_queue0 of bank_queue.v
165
input
[(
nBANK_MACHS
*
2
)-
1
:
0
]
rb_hit_busy_ns_in
;
// To bank_queue0 of bank_queue.v
166
input
[
DATA_BUF_ADDR_WIDTH
-
1
:
0
]
rd_data_addr
;
// To bank_state0 of bank_state.v
167
input
rd_rmw
;
// To bank_state0 of bank_state.v
168
input
[(
RANK_WIDTH
*
nBANK_MACHS
*
2
)-
1
:
0
]
req_rank_r_in
;
// To bank_state0 of bank_state.v
169
input
[
ROW_WIDTH
-
1
:
0
]
row
;
// To bank_compare0 of bank_compare.v
170
input
rst
;
// To bank_state0 of bank_state.v, ...
171
input
sending_col
;
// To bank_compare0 of bank_compare.v, ...
172
input
sending_row
;
// To bank_state0 of bank_state.v
173
input
sending_pre
;
174
input
sent_col
;
// To bank_state0 of bank_state.v
175
input
sent_row
;
// To bank_state0 of bank_state.v
176
input
size
;
// To bank_compare0 of bank_compare.v
177
input
[(
nBANK_MACHS
*
2
)-
1
:
0
]
start_rcd_in
;
// To bank_state0 of bank_state.v
178
input
use_addr
;
// To bank_queue0 of bank_queue.v
179
input
was_priority
;
// To bank_queue0 of bank_queue.v
180
input
was_wr
;
// To bank_queue0 of bank_queue.v
181
// End of automatics
182
183
/*AUTOOUTPUT**/
184
// Beginning of automatic outputs (from unused autoinst outputs)
185
output
[
RANKS
-
1
:
0
]
act_this_rank_r
;
// From bank_state0 of bank_state.v
186
output
[
ROW_WIDTH
-
1
:
0
]
col_addr
;
// From bank_compare0 of bank_compare.v
187
output
col_rdy_wr
;
// From bank_state0 of bank_state.v
188
output
demand_act_priority
;
// From bank_state0 of bank_state.v
189
output
demand_priority
;
// From bank_state0 of bank_state.v
190
output
end_rtp
;
// From bank_state0 of bank_state.v
191
output
op_exit_req
;
// From bank_state0 of bank_state.v
192
output
ordered_issued
;
// From bank_queue0 of bank_queue.v
193
output
ordered_r
;
// From bank_queue0 of bank_queue.v
194
output
[
RANKS
-
1
:
0
]
rank_busy_r
;
// From bank_compare0 of bank_compare.v
195
output
[
RAS_TIMER_WIDTH
-
1
:
0
]
ras_timer_ns
;
// From bank_state0 of bank_state.v
196
output
rb_hit_busy_ns
;
// From bank_compare0 of bank_compare.v
197
output
[
RANKS
-
1
:
0
]
rd_this_rank_r
;
// From bank_state0 of bank_state.v
198
output
[
BANK_WIDTH
-
1
:
0
]
req_bank_r
;
// From bank_compare0 of bank_compare.v
199
output
req_cas
;
// From bank_compare0 of bank_compare.v
200
output
req_periodic_rd_r
;
// From bank_compare0 of bank_compare.v
201
output
req_ras
;
// From bank_compare0 of bank_compare.v
202
output
[
ROW_WIDTH
-
1
:
0
]
req_row_r
;
// From bank_compare0 of bank_compare.v
203
output
req_size_r
;
// From bank_compare0 of bank_compare.v
204
output
[
ROW_WIDTH
-
1
:
0
]
row_addr
;
// From bank_compare0 of bank_compare.v
205
output
row_cmd_wr
;
// From bank_compare0 of bank_compare.v
206
output
rtc
;
// From bank_state0 of bank_state.v
207
output
rts_col
;
// From bank_state0 of bank_state.v
208
output
rts_row
;
// From bank_state0 of bank_state.v
209
output
rts_pre
;
210
output
start_pre_wait
;
// From bank_state0 of bank_state.v
211
output
start_rcd
;
// From bank_state0 of bank_state.v
212
output
[
RANKS
-
1
:
0
]
wr_this_rank_r
;
// From bank_state0 of bank_state.v
213
// End of automatics
214
215
/*AUTOWIRE**/
216
// Beginning of automatic wires (for undeclared instantiated-module outputs)
217
wire
act_wait_r
;
// From bank_state0 of bank_state.v
218
wire
allow_auto_pre
;
// From bank_state0 of bank_state.v
219
wire
auto_pre_r
;
// From bank_queue0 of bank_queue.v
220
wire
bank_wait_in_progress
;
// From bank_state0 of bank_state.v
221
wire
order_q_zero
;
// From bank_queue0 of bank_queue.v
222
wire
pass_open_bank_ns
;
// From bank_queue0 of bank_queue.v
223
wire
pass_open_bank_r
;
// From bank_queue0 of bank_queue.v
224
wire
pre_wait_r
;
// From bank_state0 of bank_state.v
225
wire
precharge_bm_end
;
// From bank_state0 of bank_state.v
226
wire
q_has_priority
;
// From bank_queue0 of bank_queue.v
227
wire
q_has_rd
;
// From bank_queue0 of bank_queue.v
228
wire
[
nBANK_MACHS
*
2
-
1
:
0
]
rb_hit_busies_r
;
// From bank_queue0 of bank_queue.v
229
wire
rcv_open_bank
;
// From bank_queue0 of bank_queue.v
230
wire
rd_half_rmw
;
// From bank_state0 of bank_state.v
231
wire
req_priority_r
;
// From bank_compare0 of bank_compare.v
232
wire
row_hit_r
;
// From bank_compare0 of bank_compare.v
233
wire
tail_r
;
// From bank_queue0 of bank_queue.v
234
wire
wait_for_maint_r
;
// From bank_queue0 of bank_queue.v
235
// End of automatics
236
237
output
idle_ns
;
238
output
req_wr_r
;
239
output
rd_wr_r
;
240
output
bm_end
;
241
output
idle_r
;
242
output
head_r
;
243
output
[
RANK_WIDTH
-
1
:
0
]
req_rank_r
;
244
output
rb_hit_busy_r
;
245
output
passing_open_bank
;
246
output
maint_hit
;
247
output
[
DATA_BUF_ADDR_WIDTH
-
1
:
0
]
req_data_buf_addr_r
;
248
249
mig_7series_v1_9_bank_compare
#
250
(
/*AUTOINSTPARAM**/
251
// Parameters
252
.
BANK_WIDTH
(
BANK_WIDTH
),
253
.
TCQ
(
TCQ
),
254
.
BURST_MODE
(
BURST_MODE
),
255
.
COL_WIDTH
(
COL_WIDTH
),
256
.
DATA_BUF_ADDR_WIDTH
(
DATA_BUF_ADDR_WIDTH
),
257
.
ECC
(
ECC
),
258
.
RANK_WIDTH
(
RANK_WIDTH
),
259
.
RANKS
(
RANKS
),
260
.
ROW_WIDTH
(
ROW_WIDTH
))
261
bank_compare0
262
(
/*AUTOINST**/
263
// Outputs
264
.
req_data_buf_addr_r
(
req_data_buf_addr_r
[
DATA_BUF_ADDR_WIDTH
-
1
:
0
]),
265
.
req_periodic_rd_r
(
req_periodic_rd_r
),
266
.
req_size_r
(
req_size_r
),
267
.
rd_wr_r
(
rd_wr_r
),
268
.
req_rank_r
(
req_rank_r
[
RANK_WIDTH
-
1
:
0
]),
269
.
req_bank_r
(
req_bank_r
[
BANK_WIDTH
-
1
:
0
]),
270
.
req_row_r
(
req_row_r
[
ROW_WIDTH
-
1
:
0
]),
271
.
req_wr_r
(
req_wr_r
),
272
.
req_priority_r
(
req_priority_r
),
273
.
rb_hit_busy_r
(
rb_hit_busy_r
),
274
.
rb_hit_busy_ns
(
rb_hit_busy_ns
),
275
.
row_hit_r
(
row_hit_r
),
276
.
maint_hit
(
maint_hit
),
277
.
col_addr
(
col_addr
[
ROW_WIDTH
-
1
:
0
]),
278
.
req_ras
(
req_ras
),
279
.
req_cas
(
req_cas
),
280
.
row_cmd_wr
(
row_cmd_wr
),
281
.
row_addr
(
row_addr
[
ROW_WIDTH
-
1
:
0
]),
282
.
rank_busy_r
(
rank_busy_r
[
RANKS
-
1
:
0
]),
283
// Inputs
284
.
clk
(
clk
),
285
.
idle_ns
(
idle_ns
),
286
.
idle_r
(
idle_r
),
287
.
data_buf_addr
(
data_buf_addr
[
DATA_BUF_ADDR_WIDTH
-
1
:
0
]),
288
.
periodic_rd_insert
(
periodic_rd_insert
),
289
.
size
(
size
),
290
.
cmd
(
cmd
[
2
:
0
]),
291
.
sending_col
(
sending_col
),
292
.
rank
(
rank
[
RANK_WIDTH
-
1
:
0
]),
293
.
periodic_rd_rank_r
(
periodic_rd_rank_r
[
RANK_WIDTH
-
1
:
0
]),
294
.
bank
(
bank
[
BANK_WIDTH
-
1
:
0
]),
295
.
row
(
row
[
ROW_WIDTH
-
1
:
0
]),
296
.
col
(
col
[
COL_WIDTH
-
1
:
0
]),
297
.
hi_priority
(
hi_priority
),
298
.
maint_rank_r
(
maint_rank_r
[
RANK_WIDTH
-
1
:
0
]),
299
.
maint_zq_r
(
maint_zq_r
),
300
.
maint_sre_r
(
maint_sre_r
),
301
.
auto_pre_r
(
auto_pre_r
),
302
.
rd_half_rmw
(
rd_half_rmw
),
303
.
act_wait_r
(
act_wait_r
));
304
305
mig_7series_v1_9_bank_state
#
306
(
/*AUTOINSTPARAM**/
307
// Parameters
308
.
TCQ
(
TCQ
),
309
.
ADDR_CMD_MODE
(
ADDR_CMD_MODE
),
310
.
BM_CNT_WIDTH
(
BM_CNT_WIDTH
),
311
.
BURST_MODE
(
BURST_MODE
),
312
.
CWL
(
CWL
),
313
.
DATA_BUF_ADDR_WIDTH
(
DATA_BUF_ADDR_WIDTH
),
314
.
DRAM_TYPE
(
DRAM_TYPE
),
315
.
ECC
(
ECC
),
316
.
ID
(
ID
),
317
.
nBANK_MACHS
(
nBANK_MACHS
),
318
.
nCK_PER_CLK
(
nCK_PER_CLK
),
319
.
nOP_WAIT
(
nOP_WAIT
),
320
.
nRAS_CLKS
(
nRAS_CLKS
),
321
.
nRP
(
nRP
),
322
.
nRTP
(
nRTP
),
323
.
nRCD
(
nRCD
),
324
.
nWTP_CLKS
(
nWTP_CLKS
),
325
.
ORDERING
(
ORDERING
),
326
.
RANKS
(
RANKS
),
327
.
RANK_WIDTH
(
RANK_WIDTH
),
328
.
RAS_TIMER_WIDTH
(
RAS_TIMER_WIDTH
),
329
.
STARVE_LIMIT
(
STARVE_LIMIT
))
330
bank_state0
331
(
/*AUTOINST**/
332
// Outputs
333
.
start_rcd
(
start_rcd
),
334
.
act_wait_r
(
act_wait_r
),
335
.
rd_half_rmw
(
rd_half_rmw
),
336
.
ras_timer_ns
(
ras_timer_ns
[
RAS_TIMER_WIDTH
-
1
:
0
]),
337
.
end_rtp
(
end_rtp
),
338
.
bank_wait_in_progress
(
bank_wait_in_progress
),
339
.
start_pre_wait
(
start_pre_wait
),
340
.
op_exit_req
(
op_exit_req
),
341
.
pre_wait_r
(
pre_wait_r
),
342
.
allow_auto_pre
(
allow_auto_pre
),
343
.
precharge_bm_end
(
precharge_bm_end
),
344
.
demand_act_priority
(
demand_act_priority
),
345
.
rts_row
(
rts_row
),
346
.
rts_pre
(
rts_pre
),
347
.
act_this_rank_r
(
act_this_rank_r
[
RANKS
-
1
:
0
]),
348
.
demand_priority
(
demand_priority
),
349
.
col_rdy_wr
(
col_rdy_wr
),
350
.
rts_col
(
rts_col
),
351
.
wr_this_rank_r
(
wr_this_rank_r
[
RANKS
-
1
:
0
]),
352
.
rd_this_rank_r
(
rd_this_rank_r
[
RANKS
-
1
:
0
]),
353
// Inputs
354
.
clk
(
clk
),
355
.
rst
(
rst
),
356
.
bm_end
(
bm_end
),
357
.
pass_open_bank_r
(
pass_open_bank_r
),
358
.
sending_row
(
sending_row
),
359
.
sending_pre
(
sending_pre
),
360
.
rcv_open_bank
(
rcv_open_bank
),
361
.
sending_col
(
sending_col
),
362
.
rd_wr_r
(
rd_wr_r
),
363
.
req_wr_r
(
req_wr_r
),
364
.
rd_data_addr
(
rd_data_addr
[
DATA_BUF_ADDR_WIDTH
-
1
:
0
]),
365
.
req_data_buf_addr_r
(
req_data_buf_addr_r
[
DATA_BUF_ADDR_WIDTH
-
1
:
0
]),
366
.
phy_rddata_valid
(
phy_rddata_valid
),
367
.
rd_rmw
(
rd_rmw
),
368
.
ras_timer_ns_in
(
ras_timer_ns_in
[(
2
*(
RAS_TIMER_WIDTH
*
nBANK_MACHS
))-
1
:
0
]),
369
.
rb_hit_busies_r
(
rb_hit_busies_r
[(
nBANK_MACHS
*
2
)-
1
:
0
]),
370
.
idle_r
(
idle_r
),
371
.
passing_open_bank
(
passing_open_bank
),
372
.
low_idle_cnt_r
(
low_idle_cnt_r
),
373
.
op_exit_grant
(
op_exit_grant
),
374
.
tail_r
(
tail_r
),
375
.
auto_pre_r
(
auto_pre_r
),
376
.
pass_open_bank_ns
(
pass_open_bank_ns
),
377
.
phy_mc_cmd_full
(
phy_mc_cmd_full
),
378
.
phy_mc_ctl_full
(
phy_mc_ctl_full
),
379
.
phy_mc_data_full
(
phy_mc_data_full
),
380
.
rnk_config
(
rnk_config
[
RANK_WIDTH
-
1
:
0
]),
381
.
rnk_config_strobe
(
rnk_config_strobe
),
382
.
rnk_config_kill_rts_col
(
rnk_config_kill_rts_col
),
383
.
rnk_config_valid_r
(
rnk_config_valid_r
),
384
.
rtc
(
rtc
),
385
.
req_rank_r
(
req_rank_r
[
RANK_WIDTH
-
1
:
0
]),
386
.
req_rank_r_in
(
req_rank_r_in
[(
RANK_WIDTH
*
nBANK_MACHS
*
2
)-
1
:
0
]),
387
.
start_rcd_in
(
start_rcd_in
[(
nBANK_MACHS
*
2
)-
1
:
0
]),
388
.
inhbt_act_faw_r
(
inhbt_act_faw_r
[
RANKS
-
1
:
0
]),
389
.
wait_for_maint_r
(
wait_for_maint_r
),
390
.
head_r
(
head_r
),
391
.
sent_row
(
sent_row
),
392
.
demand_act_priority_in
(
demand_act_priority_in
[(
nBANK_MACHS
*
2
)-
1
:
0
]),
393
.
order_q_zero
(
order_q_zero
),
394
.
sent_col
(
sent_col
),
395
.
q_has_rd
(
q_has_rd
),
396
.
q_has_priority
(
q_has_priority
),
397
.
req_priority_r
(
req_priority_r
),
398
.
idle_ns
(
idle_ns
),
399
.
demand_priority_in
(
demand_priority_in
[(
nBANK_MACHS
*
2
)-
1
:
0
]),
400
.
inhbt_rd
(
inhbt_rd
[
RANKS
-
1
:
0
]),
401
.
inhbt_wr
(
inhbt_wr
[
RANKS
-
1
:
0
]),
402
.
dq_busy_data
(
dq_busy_data
));
403
404
mig_7series_v1_9_bank_queue
#
405
(
/*AUTOINSTPARAM**/
406
// Parameters
407
.
TCQ
(
TCQ
),
408
.
BM_CNT_WIDTH
(
BM_CNT_WIDTH
),
409
.
nBANK_MACHS
(
nBANK_MACHS
),
410
.
ORDERING
(
ORDERING
),
411
.
ID
(
ID
))
412
bank_queue0
413
(
/*AUTOINST**/
414
// Outputs
415
.
head_r
(
head_r
),
416
.
tail_r
(
tail_r
),
417
.
idle_ns
(
idle_ns
),
418
.
idle_r
(
idle_r
),
419
.
pass_open_bank_ns
(
pass_open_bank_ns
),
420
.
pass_open_bank_r
(
pass_open_bank_r
),
421
.
auto_pre_r
(
auto_pre_r
),
422
.
bm_end
(
bm_end
),
423
.
passing_open_bank
(
passing_open_bank
),
424
.
ordered_issued
(
ordered_issued
),
425
.
ordered_r
(
ordered_r
),
426
.
order_q_zero
(
order_q_zero
),
427
.
rcv_open_bank
(
rcv_open_bank
),
428
.
rb_hit_busies_r
(
rb_hit_busies_r
[
nBANK_MACHS
*
2
-
1
:
0
]),
429
.
q_has_rd
(
q_has_rd
),
430
.
q_has_priority
(
q_has_priority
),
431
.
wait_for_maint_r
(
wait_for_maint_r
),
432
// Inputs
433
.
clk
(
clk
),
434
.
rst
(
rst
),
435
.
accept_internal_r
(
accept_internal_r
),
436
.
use_addr
(
use_addr
),
437
.
periodic_rd_ack_r
(
periodic_rd_ack_r
),
438
.
bm_end_in
(
bm_end_in
[(
nBANK_MACHS
*
2
)-
1
:
0
]),
439
.
idle_cnt
(
idle_cnt
[
BM_CNT_WIDTH
-
1
:
0
]),
440
.
rb_hit_busy_cnt
(
rb_hit_busy_cnt
[
BM_CNT_WIDTH
-
1
:
0
]),
441
.
accept_req
(
accept_req
),
442
.
rb_hit_busy_r
(
rb_hit_busy_r
),
443
.
maint_idle
(
maint_idle
),
444
.
maint_hit
(
maint_hit
),
445
.
row_hit_r
(
row_hit_r
),
446
.
pre_wait_r
(
pre_wait_r
),
447
.
allow_auto_pre
(
allow_auto_pre
),
448
.
sending_col
(
sending_col
),
449
.
req_wr_r
(
req_wr_r
),
450
.
rd_wr_r
(
rd_wr_r
),
451
.
bank_wait_in_progress
(
bank_wait_in_progress
),
452
.
precharge_bm_end
(
precharge_bm_end
),
453
.
adv_order_q
(
adv_order_q
),
454
.
order_cnt
(
order_cnt
[
BM_CNT_WIDTH
-
1
:
0
]),
455
.
rb_hit_busy_ns_in
(
rb_hit_busy_ns_in
[(
nBANK_MACHS
*
2
)-
1
:
0
]),
456
.
passing_open_bank_in
(
passing_open_bank_in
[(
nBANK_MACHS
*
2
)-
1
:
0
]),
457
.
was_wr
(
was_wr
),
458
.
maint_req_r
(
maint_req_r
),
459
.
was_priority
(
was_priority
));
460
461
endmodule
// bank_cntrl
Generated on Sun Mar 6 2016 12:24:19 for AMC13 by
1.8.1