Line 103... |
Line 103... |
/* Req from bank_ctl */
|
/* Req from bank_ctl */
|
input r2b_req, r2b_start, r2b_last,
|
input r2b_req, r2b_start, r2b_last,
|
r2b_write, r2b_wrap;
|
r2b_write, r2b_wrap;
|
input [`SDR_REQ_ID_W-1:0] r2b_req_id;
|
input [`SDR_REQ_ID_W-1:0] r2b_req_id;
|
input [1:0] r2b_ba;
|
input [1:0] r2b_ba;
|
input [11:0] r2b_raddr;
|
input [12:0] r2b_raddr;
|
input [11:0] r2b_caddr;
|
input [12:0] r2b_caddr;
|
input [`REQ_BW-1:0] r2b_len;
|
input [`REQ_BW-1:0] r2b_len;
|
output b2r_arb_ok, b2r_ack;
|
output b2r_arb_ok, b2r_ack;
|
input sdr_req_norm_dma_last;
|
input sdr_req_norm_dma_last;
|
|
|
/* Req to xfr_ctl */
|
/* Req to xfr_ctl */
|
output b2x_idle, b2x_req, b2x_start, b2x_last,
|
output b2x_idle, b2x_req, b2x_start, b2x_last,
|
b2x_tras_ok, b2x_wrap;
|
b2x_tras_ok, b2x_wrap;
|
output [`SDR_REQ_ID_W-1:0] b2x_id;
|
output [`SDR_REQ_ID_W-1:0] b2x_id;
|
output [1:0] b2x_ba;
|
output [1:0] b2x_ba;
|
output [11:0] b2x_addr;
|
output [12:0] b2x_addr;
|
output [`REQ_BW-1:0] b2x_len;
|
output [`REQ_BW-1:0] b2x_len;
|
output [1:0] b2x_cmd;
|
output [1:0] b2x_cmd;
|
input x2b_ack;
|
input x2b_ack;
|
|
|
/* Status from xfr_ctl */
|
/* Status from xfr_ctl */
|
Line 133... |
Line 133... |
/****************************************************************************/
|
/****************************************************************************/
|
// Internal Nets
|
// Internal Nets
|
|
|
wire [3:0] r2i_req, i2r_ack, i2x_req,
|
wire [3:0] r2i_req, i2r_ack, i2x_req,
|
i2x_start, i2x_last, i2x_wrap, tras_ok;
|
i2x_start, i2x_last, i2x_wrap, tras_ok;
|
wire [11:0] i2x_addr0, i2x_addr1, i2x_addr2, i2x_addr3;
|
wire [12:0] i2x_addr0, i2x_addr1, i2x_addr2, i2x_addr3;
|
wire [`REQ_BW-1:0] i2x_len0, i2x_len1, i2x_len2, i2x_len3;
|
wire [`REQ_BW-1:0] i2x_len0, i2x_len1, i2x_len2, i2x_len3;
|
wire [1:0] i2x_cmd0, i2x_cmd1, i2x_cmd2, i2x_cmd3;
|
wire [1:0] i2x_cmd0, i2x_cmd1, i2x_cmd2, i2x_cmd3;
|
wire [`SDR_REQ_ID_W-1:0] i2x_id0, i2x_id1, i2x_id2, i2x_id3;
|
wire [`SDR_REQ_ID_W-1:0] i2x_id0, i2x_id1, i2x_id2, i2x_id3;
|
|
|
reg b2x_req;
|
reg b2x_req;
|
wire b2x_idle, b2x_start, b2x_last, b2x_wrap;
|
wire b2x_idle, b2x_start, b2x_last, b2x_wrap;
|
wire [`SDR_REQ_ID_W-1:0] b2x_id;
|
wire [`SDR_REQ_ID_W-1:0] b2x_id;
|
wire [11:0] b2x_addr;
|
wire [12:0] b2x_addr;
|
wire [`REQ_BW-1:0] b2x_len;
|
wire [`REQ_BW-1:0] b2x_len;
|
wire [1:0] b2x_cmd;
|
wire [1:0] b2x_cmd;
|
wire [3:0] x2i_ack;
|
wire [3:0] x2i_ack;
|
reg [1:0] b2x_ba;
|
reg [1:0] b2x_ba;
|
|
|
Line 163... |
Line 163... |
reg [2:0] rank_cnt;
|
reg [2:0] rank_cnt;
|
wire [3:0] rank_req, rank_wr_sel;
|
wire [3:0] rank_req, rank_wr_sel;
|
wire rank_fifo_wr, rank_fifo_rd;
|
wire rank_fifo_wr, rank_fifo_rd;
|
wire rank_fifo_full, rank_fifo_mt;
|
wire rank_fifo_full, rank_fifo_mt;
|
|
|
wire [11:0] bank0_row, bank1_row, bank2_row, bank3_row;
|
wire [12:0] bank0_row, bank1_row, bank2_row, bank3_row;
|
|
|
assign b2x_tras_ok = &tras_ok;
|
assign b2x_tras_ok = &tras_ok;
|
|
|
|
|
// Distribute the request from req_gen
|
// Distribute the request from req_gen
|
Line 560... |
Line 560... |
.trp_delay (trp_delay),
|
.trp_delay (trp_delay),
|
.trcd_delay (trcd_delay));
|
.trcd_delay (trcd_delay));
|
|
|
|
|
/* address for current xfr, debug only */
|
/* address for current xfr, debug only */
|
wire [11:0] cur_row = (xfr_bank_sel==3) ? bank3_row:
|
wire [12:0] cur_row = (xfr_bank_sel==3) ? bank3_row:
|
(xfr_bank_sel==2) ? bank2_row:
|
(xfr_bank_sel==2) ? bank2_row:
|
(xfr_bank_sel==1) ? bank1_row: bank0_row;
|
(xfr_bank_sel==1) ? bank1_row: bank0_row;
|
|
|
|
|
|
|