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_rank_mach.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 : rank_mach.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
// Top level rank machine structural block. This block
67
// instantiates a configurable number of rank controller blocks.
68
69
`timescale
1ps/1ps
70
71
module
mig_7series_v1_9_rank_mach
#
72
(
73
parameter
BURST_MODE
=
"8"
,
74
parameter
CS_WIDTH
=
4
,
75
parameter
DRAM_TYPE
=
"DDR3"
,
76
parameter
MAINT_PRESCALER_DIV
=
40
,
77
parameter
nBANK_MACHS
=
4
,
78
parameter
nCKESR
=
4
,
79
parameter
nCK_PER_CLK
=
2
,
80
parameter
CL
=
5
,
81
parameter
CWL
=
5
,
82
parameter
DQRD2DQWR_DLY
=
2
,
83
parameter
nFAW
=
30
,
84
parameter
nREFRESH_BANK
=
8
,
85
parameter
nRRD
=
4
,
86
parameter
nWTR
=
4
,
87
parameter
PERIODIC_RD_TIMER_DIV
=
20
,
88
parameter
RANK_BM_BV_WIDTH
=
16
,
89
parameter
RANK_WIDTH
=
2
,
90
parameter
RANKS
=
4
,
91
parameter
REFRESH_TIMER_DIV
=
39
,
92
parameter
ZQ_TIMER_DIV
=
640000
93
)
94
(
/*AUTOARG**/
95
// Outputs
96
periodic_rd_rank_r
,
periodic_rd_r
,
maint_req_r
,
inhbt_act_faw_r
,
inhbt_rd
,
97
inhbt_wr
,
maint_rank_r
,
maint_zq_r
,
maint_sre_r
,
maint_srx_r
,
app_sr_active
,
98
app_ref_ack
,
app_zq_ack
,
col_rd_wr
,
maint_ref_zq_wip
,
99
// Inputs
100
wr_this_rank_r
,
slot_1_present
,
slot_0_present
,
sending_row
,
101
sending_col
,
rst
,
rd_this_rank_r
,
rank_busy_r
,
periodic_rd_ack_r
,
102
maint_wip_r
,
insert_maint_r1
,
init_calib_complete
,
clk
,
app_zq_req
,
103
app_sr_req
,
app_ref_req
,
app_periodic_rd_req
,
act_this_rank_r
104
);
105
106
/*AUTOINPUT**/
107
// Beginning of automatic inputs (from unused autoinst inputs)
108
input
[
RANK_BM_BV_WIDTH
-
1
:
0
]
act_this_rank_r
;
// To rank_cntrl0 of rank_cntrl.v
109
input
app_periodic_rd_req
;
// To rank_cntrl0 of rank_cntrl.v
110
input
app_ref_req
;
// To rank_cntrl0 of rank_cntrl.v
111
input
app_zq_req
;
// To rank_common0 of rank_common.v
112
input
app_sr_req
;
// To rank_common0 of rank_common.v
113
input
clk
;
// To rank_cntrl0 of rank_cntrl.v, ...
114
input
col_rd_wr
;
// To rank_cntrl0 of rank_cntrl.v, ...
115
input
init_calib_complete
;
// To rank_cntrl0 of rank_cntrl.v, ...
116
input
insert_maint_r1
;
// To rank_cntrl0 of rank_cntrl.v, ...
117
input
maint_wip_r
;
// To rank_common0 of rank_common.v
118
input
periodic_rd_ack_r
;
// To rank_common0 of rank_common.v
119
input
[(
RANKS
*
nBANK_MACHS
)-
1
:
0
]
rank_busy_r
;
// To rank_cntrl0 of rank_cntrl.v
120
input
[
RANK_BM_BV_WIDTH
-
1
:
0
]
rd_this_rank_r
;
// To rank_cntrl0 of rank_cntrl.v
121
input
rst
;
// To rank_cntrl0 of rank_cntrl.v, ...
122
input
[
nBANK_MACHS
-
1
:
0
]
sending_col
;
// To rank_cntrl0 of rank_cntrl.v
123
input
[
nBANK_MACHS
-
1
:
0
]
sending_row
;
// To rank_cntrl0 of rank_cntrl.v
124
input
[
7
:
0
]
slot_0_present
;
// To rank_common0 of rank_common.v
125
input
[
7
:
0
]
slot_1_present
;
// To rank_common0 of rank_common.v
126
input
[
RANK_BM_BV_WIDTH
-
1
:
0
]
wr_this_rank_r
;
// To rank_cntrl0 of rank_cntrl.v
127
// End of automatics
128
129
/*AUTOOUTPUT**/
130
// Beginning of automatic outputs (from unused autoinst outputs)
131
output
maint_req_r
;
// From rank_common0 of rank_common.v
132
output
periodic_rd_r
;
// From rank_common0 of rank_common.v
133
output
[
RANK_WIDTH
-
1
:
0
]
periodic_rd_rank_r
;
// From rank_common0 of rank_common.v
134
// End of automatics
135
136
/*AUTOWIRE**/
137
// Beginning of automatic wires (for undeclared instantiated-module outputs)
138
wire
maint_prescaler_tick_r
;
// From rank_common0 of rank_common.v
139
wire
refresh_tick
;
// From rank_common0 of rank_common.v
140
// End of automatics
141
142
143
output
[
RANKS
-
1
:
0
]
inhbt_act_faw_r
;
144
output
[
RANKS
-
1
:
0
]
inhbt_rd
;
145
output
[
RANKS
-
1
:
0
]
inhbt_wr
;
146
output
[
RANK_WIDTH
-
1
:
0
]
maint_rank_r
;
147
output
maint_zq_r
;
148
output
maint_sre_r
;
149
output
maint_srx_r
;
150
output
app_sr_active
;
151
output
app_ref_ack
;
152
output
app_zq_ack
;
153
output
maint_ref_zq_wip
;
154
155
wire
[
RANKS
-
1
:
0
]
refresh_request
;
156
wire
[
RANKS
-
1
:
0
]
periodic_rd_request
;
157
wire
[
RANKS
-
1
:
0
]
clear_periodic_rd_request
;
158
159
genvar
ID
;
160
generate
161
for
(
ID
=
0
;
ID
<
RANKS
;
ID
=
ID
+
1
)
begin
:
rank_cntrl
162
mig_7series_v1_9_rank_cntrl
#
163
(
/*AUTOINSTPARAM**/
164
// Parameters
165
.
BURST_MODE
(
BURST_MODE
),
166
.
ID
(
ID
),
167
.
nBANK_MACHS
(
nBANK_MACHS
),
168
.
nCK_PER_CLK
(
nCK_PER_CLK
),
169
.
CL
(
CL
),
170
.
CWL
(
CWL
),
171
.
DQRD2DQWR_DLY
(
DQRD2DQWR_DLY
),
172
.
nFAW
(
nFAW
),
173
.
nREFRESH_BANK
(
nREFRESH_BANK
),
174
.
nRRD
(
nRRD
),
175
.
nWTR
(
nWTR
),
176
.
PERIODIC_RD_TIMER_DIV
(
PERIODIC_RD_TIMER_DIV
),
177
.
RANK_BM_BV_WIDTH
(
RANK_BM_BV_WIDTH
),
178
.
RANK_WIDTH
(
RANK_WIDTH
),
179
.
RANKS
(
RANKS
),
180
.
REFRESH_TIMER_DIV
(
REFRESH_TIMER_DIV
))
181
rank_cntrl0
182
(.
clear_periodic_rd_request
(
clear_periodic_rd_request
[
ID
]),
183
.
inhbt_act_faw_r
(
inhbt_act_faw_r
[
ID
]),
184
.
inhbt_rd
(
inhbt_rd
[
ID
]),
185
.
inhbt_wr
(
inhbt_wr
[
ID
]),
186
.
periodic_rd_request
(
periodic_rd_request
[
ID
]),
187
.
refresh_request
(
refresh_request
[
ID
]),
188
/*AUTOINST**/
189
// Inputs
190
.
clk
(
clk
),
191
.
rst
(
rst
),
192
.
col_rd_wr
(
col_rd_wr
),
193
.
sending_row
(
sending_row
[
nBANK_MACHS
-
1
:
0
]),
194
.
act_this_rank_r
(
act_this_rank_r
[
RANK_BM_BV_WIDTH
-
1
:
0
]),
195
.
sending_col
(
sending_col
[
nBANK_MACHS
-
1
:
0
]),
196
.
wr_this_rank_r
(
wr_this_rank_r
[
RANK_BM_BV_WIDTH
-
1
:
0
]),
197
.
app_ref_req
(
app_ref_req
),
198
.
init_calib_complete
(
init_calib_complete
),
199
.
rank_busy_r
(
rank_busy_r
[(
RANKS
*
nBANK_MACHS
)-
1
:
0
]),
200
.
refresh_tick
(
refresh_tick
),
201
.
insert_maint_r1
(
insert_maint_r1
),
202
.
maint_zq_r
(
maint_zq_r
),
203
.
maint_sre_r
(
maint_sre_r
),
204
.
maint_srx_r
(
maint_srx_r
),
205
.
maint_rank_r
(
maint_rank_r
[
RANK_WIDTH
-
1
:
0
]),
206
.
app_periodic_rd_req
(
app_periodic_rd_req
),
207
.
maint_prescaler_tick_r
(
maint_prescaler_tick_r
),
208
.
rd_this_rank_r
(
rd_this_rank_r
[
RANK_BM_BV_WIDTH
-
1
:
0
]));
209
end
210
endgenerate
211
212
mig_7series_v1_9_rank_common
#
213
(
/*AUTOINSTPARAM**/
214
// Parameters
215
.
DRAM_TYPE
(
DRAM_TYPE
),
216
.
MAINT_PRESCALER_DIV
(
MAINT_PRESCALER_DIV
),
217
.
nBANK_MACHS
(
nBANK_MACHS
),
218
.
nCKESR
(
nCKESR
),
219
.
nCK_PER_CLK
(
nCK_PER_CLK
),
220
.
PERIODIC_RD_TIMER_DIV
(
PERIODIC_RD_TIMER_DIV
),
221
.
RANK_WIDTH
(
RANK_WIDTH
),
222
.
RANKS
(
RANKS
),
223
.
REFRESH_TIMER_DIV
(
REFRESH_TIMER_DIV
),
224
.
ZQ_TIMER_DIV
(
ZQ_TIMER_DIV
))
225
rank_common0
226
(.
clear_periodic_rd_request
(
clear_periodic_rd_request
[
RANKS
-
1
:
0
]),
227
/*AUTOINST**/
228
// Outputs
229
.
maint_prescaler_tick_r
(
maint_prescaler_tick_r
),
230
.
refresh_tick
(
refresh_tick
),
231
.
maint_zq_r
(
maint_zq_r
),
232
.
maint_sre_r
(
maint_sre_r
),
233
.
maint_srx_r
(
maint_srx_r
),
234
.
maint_req_r
(
maint_req_r
),
235
.
maint_rank_r
(
maint_rank_r
[
RANK_WIDTH
-
1
:
0
]),
236
.
maint_ref_zq_wip
(
maint_ref_zq_wip
),
237
.
periodic_rd_r
(
periodic_rd_r
),
238
.
periodic_rd_rank_r
(
periodic_rd_rank_r
[
RANK_WIDTH
-
1
:
0
]),
239
// Inputs
240
.
clk
(
clk
),
241
.
rst
(
rst
),
242
.
init_calib_complete
(
init_calib_complete
),
243
.
app_ref_req
(
app_ref_req
),
244
.
app_ref_ack
(
app_ref_ack
),
245
.
app_zq_req
(
app_zq_req
),
246
.
app_zq_ack
(
app_zq_ack
),
247
.
app_sr_req
(
app_sr_req
),
248
.
app_sr_active
(
app_sr_active
),
249
.
insert_maint_r1
(
insert_maint_r1
),
250
.
refresh_request
(
refresh_request
[
RANKS
-
1
:
0
]),
251
.
maint_wip_r
(
maint_wip_r
),
252
.
slot_0_present
(
slot_0_present
[
7
:
0
]),
253
.
slot_1_present
(
slot_1_present
[
7
:
0
]),
254
.
periodic_rd_request
(
periodic_rd_request
[
RANKS
-
1
:
0
]),
255
.
periodic_rd_ack_r
(
periodic_rd_ack_r
));
256
257
258
endmodule
Generated on Sun Mar 6 2016 12:24:19 for AMC13 by
1.8.1