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.13/] [memfifo.srcs/] [sources_1/] [ip/] [mig_7series_0/] [mig_7series_0/] [user_design/] [rtl/] [controller/] [mig_7series_v2_3_bank_cntrl.v] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 ZTEX
//*****************************************************************************
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_v2_3_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_v2_3_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_v2_3_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_v2_3_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

powered by: WebSVN 2.1.0

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