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_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 Wed Apr 18 2018 10:55:27 for AMC13 by
1.8.1