mirror of
https://github.com/vortexgpgpu/vortex.git
synced 2025-04-23 21:39:10 -04:00
adding read-first mode support to block ram
This commit is contained in:
parent
431c0cfc46
commit
72c63a47f3
7 changed files with 317 additions and 196 deletions
|
@ -158,7 +158,7 @@
|
|||
`define MAX_FANOUT 8
|
||||
`define IF_DATA_SIZE(x) $bits(x.data)
|
||||
`define USE_FAST_BRAM (* ramstyle = "MLAB, no_rw_check" *)
|
||||
`define NO_RW_RAM_CHECK (* altera_attribute = "-name add_pass_through_logic_to_inferred_rams off" *)
|
||||
`define NO_RW_RAM_CHECK (* ramstyle = "no_rw_check" *)
|
||||
`define DISABLE_BRAM (* ramstyle = "logic" *)
|
||||
`define PRESERVE_NET (* preserve *)
|
||||
`elsif VIVADO
|
||||
|
|
|
@ -120,7 +120,7 @@ module VX_mem_unit_top import VX_gpu_pkg::*; #(
|
|||
`ifdef PERF_ENABLE
|
||||
.lmem_perf (lmem_perf),
|
||||
`endif
|
||||
.lsu_mem_in_if (lsu_mem_if),
|
||||
.lsu_mem_if (lsu_mem_if),
|
||||
.dcache_bus_if (mem_bus_if)
|
||||
);
|
||||
|
||||
|
|
|
@ -263,8 +263,8 @@ module VX_operands import VX_gpu_pkg::*; #(
|
|||
VX_dp_ram #(
|
||||
.DATAW (REGS_DATAW),
|
||||
.SIZE (PER_BANK_REGS * PER_ISSUE_WARPS),
|
||||
.READ_ENABLE (1),
|
||||
.OUT_REG (1),
|
||||
.READ_ENABLE (1),
|
||||
.WRENW (BYTEENW),
|
||||
`ifdef GPR_RESET
|
||||
.RESET_RAM (1),
|
||||
|
|
|
@ -48,7 +48,8 @@ module VX_split_join import VX_gpu_pkg::*; #(
|
|||
for (genvar i = 0; i < `NUM_WARPS; ++i) begin : ipdom_stacks
|
||||
VX_ipdom_stack #(
|
||||
.WIDTH (`NUM_THREADS+`PC_BITS),
|
||||
.DEPTH (`DV_STACK_SIZE)
|
||||
.DEPTH (`DV_STACK_SIZE),
|
||||
.OUT_REG (0)
|
||||
) ipdom_stack (
|
||||
.clk (clk),
|
||||
.reset (reset),
|
||||
|
|
|
@ -17,13 +17,13 @@
|
|||
module VX_dp_ram #(
|
||||
parameter DATAW = 1,
|
||||
parameter SIZE = 1,
|
||||
parameter ADDR_MIN = 0,
|
||||
parameter WRENW = 1,
|
||||
parameter OUT_REG = 0,
|
||||
parameter NO_RWCHECK = 0,
|
||||
parameter LUTRAM = 0,
|
||||
parameter NO_RWCHECK = 0,
|
||||
parameter RW_ASSERT = 0,
|
||||
parameter RESET_RAM = 0,
|
||||
parameter RESET_OUT = 0,
|
||||
parameter READ_ENABLE = 0,
|
||||
parameter INIT_ENABLE = 0,
|
||||
parameter INIT_FILE = "",
|
||||
|
@ -48,9 +48,10 @@ module VX_dp_ram #(
|
|||
if (INIT_FILE != "") begin \
|
||||
initial $readmemh(INIT_FILE, ram); \
|
||||
end else begin \
|
||||
initial \
|
||||
initial begin \
|
||||
for (integer i = 0; i < SIZE; ++i) \
|
||||
ram[i] = INIT_VALUE; \
|
||||
end \
|
||||
end \
|
||||
end
|
||||
|
||||
|
@ -61,185 +62,304 @@ module VX_dp_ram #(
|
|||
`RUNTIME_ASSERT(~write || (| wren), ("invalid write enable mask"));
|
||||
end
|
||||
|
||||
wire [DATAW-1:0] rdata_w;
|
||||
|
||||
`ifdef SYNTHESIS
|
||||
if (WRENW > 1) begin
|
||||
`ifdef QUARTUS
|
||||
if (LUTRAM != 0) begin
|
||||
`USE_FAST_BRAM reg [WRENW-1:0][WSELW-1:0] ram [ADDR_MIN:SIZE-1];
|
||||
`RAM_INITIALIZATION
|
||||
always @(posedge clk) begin
|
||||
if (write) begin
|
||||
for (integer i = 0; i < WRENW; ++i) begin
|
||||
if (wren[i])
|
||||
ram[waddr][i] <= wdata[i * WSELW +: WSELW];
|
||||
end
|
||||
end
|
||||
end
|
||||
assign rdata_w = ram[raddr];
|
||||
end else begin
|
||||
if (NO_RWCHECK != 0) begin
|
||||
`NO_RW_RAM_CHECK reg [WRENW-1:0][WSELW-1:0] ram [ADDR_MIN:SIZE-1];
|
||||
`RAM_INITIALIZATION
|
||||
always @(posedge clk) begin
|
||||
if (write) begin
|
||||
for (integer i = 0; i < WRENW; ++i) begin
|
||||
if (wren[i])
|
||||
ram[waddr][i] <= wdata[i * WSELW +: WSELW];
|
||||
end
|
||||
end
|
||||
end
|
||||
assign rdata_w = ram[raddr];
|
||||
end else begin
|
||||
reg [WRENW-1:0][WSELW-1:0] ram [ADDR_MIN:SIZE-1];
|
||||
`RAM_INITIALIZATION
|
||||
always @(posedge clk) begin
|
||||
if (write) begin
|
||||
for (integer i = 0; i < WRENW; ++i) begin
|
||||
if (wren[i])
|
||||
ram[waddr][i] <= wdata[i * WSELW +: WSELW];
|
||||
end
|
||||
end
|
||||
end
|
||||
assign rdata_w = ram[raddr];
|
||||
end
|
||||
end
|
||||
`else
|
||||
// default synthesis
|
||||
if (LUTRAM != 0) begin
|
||||
`USE_FAST_BRAM reg [DATAW-1:0] ram [ADDR_MIN:SIZE-1];
|
||||
`RAM_INITIALIZATION
|
||||
always @(posedge clk) begin
|
||||
if (write) begin
|
||||
for (integer i = 0; i < WRENW; ++i) begin
|
||||
if (wren[i])
|
||||
ram[waddr][i * WSELW +: WSELW] <= wdata[i * WSELW +: WSELW];
|
||||
end
|
||||
end
|
||||
end
|
||||
assign rdata_w = ram[raddr];
|
||||
end else begin
|
||||
if (NO_RWCHECK != 0) begin
|
||||
`NO_RW_RAM_CHECK reg [DATAW-1:0] ram [ADDR_MIN:SIZE-1];
|
||||
`RAM_INITIALIZATION
|
||||
always @(posedge clk) begin
|
||||
if (write) begin
|
||||
for (integer i = 0; i < WRENW; ++i) begin
|
||||
if (wren[i])
|
||||
ram[waddr][i * WSELW +: WSELW] <= wdata[i * WSELW +: WSELW];
|
||||
end
|
||||
end
|
||||
end
|
||||
assign rdata_w = ram[raddr];
|
||||
end else begin
|
||||
reg [DATAW-1:0] ram [ADDR_MIN:SIZE-1];
|
||||
`RAM_INITIALIZATION
|
||||
always @(posedge clk) begin
|
||||
if (write) begin
|
||||
for (integer i = 0; i < WRENW; ++i) begin
|
||||
if (wren[i])
|
||||
ram[waddr][i * WSELW +: WSELW] <= wdata[i * WSELW +: WSELW];
|
||||
end
|
||||
end
|
||||
end
|
||||
assign rdata_w = ram[raddr];
|
||||
end
|
||||
end
|
||||
`endif
|
||||
end else begin
|
||||
// (WRENW == 1)
|
||||
if (LUTRAM != 0) begin
|
||||
`USE_FAST_BRAM reg [DATAW-1:0] ram [ADDR_MIN:SIZE-1];
|
||||
`RAM_INITIALIZATION
|
||||
always @(posedge clk) begin
|
||||
if (write) begin
|
||||
ram[waddr] <= wdata;
|
||||
end
|
||||
end
|
||||
assign rdata_w = ram[raddr];
|
||||
end else begin
|
||||
if (NO_RWCHECK != 0) begin
|
||||
`NO_RW_RAM_CHECK reg [DATAW-1:0] ram [ADDR_MIN:SIZE-1];
|
||||
`RAM_INITIALIZATION
|
||||
always @(posedge clk) begin
|
||||
if (write) begin
|
||||
ram[waddr] <= wdata;
|
||||
end
|
||||
end
|
||||
assign rdata_w = ram[raddr];
|
||||
end else begin
|
||||
reg [DATAW-1:0] ram [ADDR_MIN:SIZE-1];
|
||||
`RAM_INITIALIZATION
|
||||
always @(posedge clk) begin
|
||||
if (write) begin
|
||||
ram[waddr] <= wdata;
|
||||
end
|
||||
end
|
||||
assign rdata_w = ram[raddr];
|
||||
end
|
||||
end
|
||||
end
|
||||
`else
|
||||
// simulation
|
||||
reg [DATAW-1:0] ram [ADDR_MIN:SIZE-1];
|
||||
`RAM_INITIALIZATION
|
||||
|
||||
wire [DATAW-1:0] ram_n;
|
||||
for (genvar i = 0; i < WRENW; ++i) begin
|
||||
assign ram_n[i * WSELW +: WSELW] = ((WRENW == 1) | wren[i]) ? wdata[i * WSELW +: WSELW] : ram[waddr][i * WSELW +: WSELW];
|
||||
end
|
||||
|
||||
reg [DATAW-1:0] prev_data;
|
||||
reg [ADDRW-1:0] prev_waddr;
|
||||
reg prev_write;
|
||||
|
||||
always @(posedge clk) begin
|
||||
if (RESET_RAM && reset) begin
|
||||
for (integer i = 0; i < SIZE; ++i) begin
|
||||
ram[i] <= DATAW'(INIT_VALUE);
|
||||
end
|
||||
end else begin
|
||||
if (write) begin
|
||||
ram[waddr] <= ram_n;
|
||||
end
|
||||
end
|
||||
if (reset) begin
|
||||
prev_write <= 0;
|
||||
prev_data <= '0;
|
||||
prev_waddr <= '0;
|
||||
end else begin
|
||||
prev_write <= write;
|
||||
prev_data <= ram[waddr];
|
||||
prev_waddr <= waddr;
|
||||
end
|
||||
end
|
||||
|
||||
if (LUTRAM || !NO_RWCHECK) begin
|
||||
`UNUSED_VAR (prev_write)
|
||||
`UNUSED_VAR (prev_data)
|
||||
`UNUSED_VAR (prev_waddr)
|
||||
assign rdata_w = ram[raddr];
|
||||
end else begin
|
||||
assign rdata_w = (prev_write && (prev_waddr == raddr)) ? prev_data : ram[raddr];
|
||||
if (RW_ASSERT) begin
|
||||
`RUNTIME_ASSERT(~read || (rdata_w == ram[raddr]), ("read after write hazard"));
|
||||
end
|
||||
end
|
||||
`endif
|
||||
|
||||
if (OUT_REG != 0) begin
|
||||
if (OUT_REG && !READ_ENABLE) begin
|
||||
`UNUSED_PARAM (NO_RWCHECK)
|
||||
reg [DATAW-1:0] rdata_r;
|
||||
always @(posedge clk) begin
|
||||
if (READ_ENABLE && reset) begin
|
||||
rdata_r <= '0;
|
||||
end else if (!READ_ENABLE || read) begin
|
||||
rdata_r <= rdata_w;
|
||||
wire cs = read || write;
|
||||
if (WRENW != 1) begin
|
||||
`ifdef QUARTUS
|
||||
if (LUTRAM != 0) begin
|
||||
`USE_FAST_BRAM reg [WRENW-1:0][WSELW-1:0] ram [0:SIZE-1];
|
||||
`RAM_INITIALIZATION
|
||||
always @(posedge clk) begin
|
||||
if (cs) begin
|
||||
if (write) begin
|
||||
for (integer i = 0; i < WRENW; ++i) begin
|
||||
if (wren[i])
|
||||
ram[waddr][i] <= wdata[i * WSELW +: WSELW];
|
||||
end
|
||||
end
|
||||
if (RESET_OUT && reset) begin
|
||||
rdata_r <= '0;
|
||||
end else begin
|
||||
rdata_r <= ram[raddr];
|
||||
end
|
||||
end
|
||||
end
|
||||
end else begin
|
||||
reg [WRENW-1:0][WSELW-1:0] ram [0:SIZE-1];
|
||||
`RAM_INITIALIZATION
|
||||
always @(posedge clk) begin
|
||||
if (cs) begin
|
||||
if (write) begin
|
||||
for (integer i = 0; i < WRENW; ++i) begin
|
||||
if (wren[i])
|
||||
ram[waddr][i] <= wdata[i * WSELW +: WSELW];
|
||||
end
|
||||
end
|
||||
if (RESET_OUT && reset) begin
|
||||
rdata_r <= '0;
|
||||
end else begin
|
||||
rdata_r <= ram[raddr];
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
`else
|
||||
// default synthesis
|
||||
if (LUTRAM != 0) begin
|
||||
`USE_FAST_BRAM reg [DATAW-1:0] ram [0:SIZE-1];
|
||||
`RAM_INITIALIZATION
|
||||
always @(posedge clk) begin
|
||||
if (cs) begin
|
||||
if (write) begin
|
||||
for (integer i = 0; i < WRENW; ++i) begin
|
||||
if (wren[i])
|
||||
ram[waddr][i * WSELW +: WSELW] <= wdata[i * WSELW +: WSELW];
|
||||
end
|
||||
end
|
||||
if (RESET_OUT && reset) begin
|
||||
rdata_r <= '0;
|
||||
end else begin
|
||||
rdata_r <= ram[raddr];
|
||||
end
|
||||
end
|
||||
end
|
||||
end else begin
|
||||
reg [DATAW-1:0] ram [0:SIZE-1];
|
||||
`RAM_INITIALIZATION
|
||||
always @(posedge clk) begin
|
||||
if (cs) begin
|
||||
if (write) begin
|
||||
for (integer i = 0; i < WRENW; ++i) begin
|
||||
if (wren[i])
|
||||
ram[waddr][i * WSELW +: WSELW] <= wdata[i * WSELW +: WSELW];
|
||||
end
|
||||
end
|
||||
if (RESET_OUT && reset) begin
|
||||
rdata_r <= '0;
|
||||
end else begin
|
||||
rdata_r <= ram[raddr];
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
`endif
|
||||
end else begin
|
||||
if (LUTRAM != 0) begin
|
||||
`USE_FAST_BRAM reg [DATAW-1:0] ram [0:SIZE-1];
|
||||
`RAM_INITIALIZATION
|
||||
always @(posedge clk) begin
|
||||
if (cs) begin
|
||||
if (write)
|
||||
ram[waddr] <= wdata;
|
||||
if (RESET_OUT && reset) begin
|
||||
rdata_r <= '0;
|
||||
end else begin
|
||||
rdata_r <= ram[raddr];
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end else begin
|
||||
reg [DATAW-1:0] ram [0:SIZE-1];
|
||||
`RAM_INITIALIZATION
|
||||
always @(posedge clk) begin
|
||||
if (cs) begin
|
||||
if (write)
|
||||
ram[waddr] <= wdata;
|
||||
if (RESET_OUT && reset) begin
|
||||
rdata_r <= '0;
|
||||
end else begin
|
||||
rdata_r <= ram[raddr];
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
assign rdata = rdata_r;
|
||||
end else begin
|
||||
assign rdata = rdata_w;
|
||||
// OUT_REG==0 || READ_ENABLE=1
|
||||
wire [DATAW-1:0] rdata_w;
|
||||
`ifdef SYNTHESIS
|
||||
if (WRENW > 1) begin
|
||||
`ifdef QUARTUS
|
||||
if (LUTRAM != 0) begin
|
||||
`USE_FAST_BRAM reg [WRENW-1:0][WSELW-1:0] ram [0:SIZE-1];
|
||||
`RAM_INITIALIZATION
|
||||
always @(posedge clk) begin
|
||||
if (write) begin
|
||||
for (integer i = 0; i < WRENW; ++i) begin
|
||||
if (wren[i])
|
||||
ram[waddr][i] <= wdata[i * WSELW +: WSELW];
|
||||
end
|
||||
end
|
||||
end
|
||||
assign rdata_w = ram[raddr];
|
||||
end else begin
|
||||
if (NO_RWCHECK != 0) begin
|
||||
`NO_RW_RAM_CHECK reg [WRENW-1:0][WSELW-1:0] ram [0:SIZE-1];
|
||||
`RAM_INITIALIZATION
|
||||
always @(posedge clk) begin
|
||||
if (write) begin
|
||||
for (integer i = 0; i < WRENW; ++i) begin
|
||||
if (wren[i])
|
||||
ram[waddr][i] <= wdata[i * WSELW +: WSELW];
|
||||
end
|
||||
end
|
||||
end
|
||||
assign rdata_w = ram[raddr];
|
||||
end else begin
|
||||
reg [WRENW-1:0][WSELW-1:0] ram [0:SIZE-1];
|
||||
`RAM_INITIALIZATION
|
||||
always @(posedge clk) begin
|
||||
if (write) begin
|
||||
for (integer i = 0; i < WRENW; ++i) begin
|
||||
if (wren[i])
|
||||
ram[waddr][i] <= wdata[i * WSELW +: WSELW];
|
||||
end
|
||||
end
|
||||
end
|
||||
assign rdata_w = ram[raddr];
|
||||
end
|
||||
end
|
||||
`else
|
||||
// default synthesis
|
||||
if (LUTRAM != 0) begin
|
||||
`USE_FAST_BRAM reg [DATAW-1:0] ram [0:SIZE-1];
|
||||
`RAM_INITIALIZATION
|
||||
always @(posedge clk) begin
|
||||
if (write) begin
|
||||
for (integer i = 0; i < WRENW; ++i) begin
|
||||
if (wren[i])
|
||||
ram[waddr][i * WSELW +: WSELW] <= wdata[i * WSELW +: WSELW];
|
||||
end
|
||||
end
|
||||
end
|
||||
assign rdata_w = ram[raddr];
|
||||
end else begin
|
||||
if (NO_RWCHECK != 0) begin
|
||||
`NO_RW_RAM_CHECK reg [DATAW-1:0] ram [0:SIZE-1];
|
||||
`RAM_INITIALIZATION
|
||||
always @(posedge clk) begin
|
||||
if (write) begin
|
||||
for (integer i = 0; i < WRENW; ++i) begin
|
||||
if (wren[i])
|
||||
ram[waddr][i * WSELW +: WSELW] <= wdata[i * WSELW +: WSELW];
|
||||
end
|
||||
end
|
||||
end
|
||||
assign rdata_w = ram[raddr];
|
||||
end else begin
|
||||
reg [DATAW-1:0] ram [0:SIZE-1];
|
||||
`RAM_INITIALIZATION
|
||||
always @(posedge clk) begin
|
||||
if (write) begin
|
||||
for (integer i = 0; i < WRENW; ++i) begin
|
||||
if (wren[i])
|
||||
ram[waddr][i * WSELW +: WSELW] <= wdata[i * WSELW +: WSELW];
|
||||
end
|
||||
end
|
||||
end
|
||||
assign rdata_w = ram[raddr];
|
||||
end
|
||||
end
|
||||
`endif
|
||||
end else begin
|
||||
// (WRENW == 1)
|
||||
if (LUTRAM != 0) begin
|
||||
`USE_FAST_BRAM reg [DATAW-1:0] ram [0:SIZE-1];
|
||||
`RAM_INITIALIZATION
|
||||
always @(posedge clk) begin
|
||||
if (write) begin
|
||||
ram[waddr] <= wdata;
|
||||
end
|
||||
end
|
||||
assign rdata_w = ram[raddr];
|
||||
end else begin
|
||||
if (NO_RWCHECK != 0) begin
|
||||
`NO_RW_RAM_CHECK reg [DATAW-1:0] ram [0:SIZE-1];
|
||||
`RAM_INITIALIZATION
|
||||
always @(posedge clk) begin
|
||||
if (write) begin
|
||||
ram[waddr] <= wdata;
|
||||
end
|
||||
end
|
||||
assign rdata_w = ram[raddr];
|
||||
end else begin
|
||||
reg [DATAW-1:0] ram [0:SIZE-1];
|
||||
`RAM_INITIALIZATION
|
||||
always @(posedge clk) begin
|
||||
if (write) begin
|
||||
ram[waddr] <= wdata;
|
||||
end
|
||||
end
|
||||
assign rdata_w = ram[raddr];
|
||||
end
|
||||
end
|
||||
end
|
||||
`else
|
||||
// simulation
|
||||
reg [DATAW-1:0] ram [0:SIZE-1];
|
||||
`RAM_INITIALIZATION
|
||||
|
||||
wire [DATAW-1:0] ram_n;
|
||||
for (genvar i = 0; i < WRENW; ++i) begin
|
||||
assign ram_n[i * WSELW +: WSELW] = ((WRENW == 1) | wren[i]) ? wdata[i * WSELW +: WSELW] : ram[waddr][i * WSELW +: WSELW];
|
||||
end
|
||||
|
||||
always @(posedge clk) begin
|
||||
if (RESET_RAM && reset) begin
|
||||
for (integer i = 0; i < SIZE; ++i) begin
|
||||
ram[i] <= DATAW'(INIT_VALUE);
|
||||
end
|
||||
end else begin
|
||||
if (write) begin
|
||||
ram[waddr] <= ram_n;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if (LUTRAM || !NO_RWCHECK) begin
|
||||
assign rdata_w = ram[raddr];
|
||||
end else begin
|
||||
reg [DATAW-1:0] prev_data;
|
||||
reg [ADDRW-1:0] prev_waddr;
|
||||
reg prev_write;
|
||||
|
||||
always @(posedge clk) begin
|
||||
if (reset) begin
|
||||
prev_write <= 0;
|
||||
prev_data <= '0;
|
||||
prev_waddr <= '0;
|
||||
end else begin
|
||||
prev_write <= write;
|
||||
prev_data <= ram[waddr];
|
||||
prev_waddr <= waddr;
|
||||
end
|
||||
end
|
||||
|
||||
assign rdata_w = (prev_write && (prev_waddr == raddr)) ? prev_data : ram[raddr];
|
||||
if (RW_ASSERT) begin
|
||||
`RUNTIME_ASSERT(~read || (rdata_w == ram[raddr]), ("read after write hazard"));
|
||||
end
|
||||
end
|
||||
`endif
|
||||
|
||||
if (OUT_REG != 0) begin
|
||||
reg [DATAW-1:0] rdata_r;
|
||||
always @(posedge clk) begin
|
||||
if (READ_ENABLE && reset) begin
|
||||
rdata_r <= '0;
|
||||
end else if (!READ_ENABLE || read) begin
|
||||
rdata_r <= rdata_w;
|
||||
end
|
||||
end
|
||||
assign rdata = rdata_r;
|
||||
end else begin
|
||||
assign rdata = rdata_w;
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
endmodule
|
||||
|
|
|
@ -17,13 +17,13 @@
|
|||
module VX_sp_ram #(
|
||||
parameter DATAW = 1,
|
||||
parameter SIZE = 1,
|
||||
parameter ADDR_MIN = 0,
|
||||
parameter WRENW = 1,
|
||||
parameter OUT_REG = 0,
|
||||
parameter LUTRAM = 0,
|
||||
parameter NO_RWCHECK = 0,
|
||||
parameter RW_ASSERT = 0,
|
||||
parameter LUTRAM = 0,
|
||||
parameter RESET_RAM = 0,
|
||||
parameter RESET_OUT = 0,
|
||||
parameter READ_ENABLE = 0,
|
||||
parameter INIT_ENABLE = 0,
|
||||
parameter INIT_FILE = "",
|
||||
|
@ -40,20 +40,20 @@ module VX_sp_ram #(
|
|||
output wire [DATAW-1:0] rdata
|
||||
);
|
||||
VX_dp_ram #(
|
||||
.DATAW (DATAW),
|
||||
.SIZE (SIZE),
|
||||
.ADDR_MIN (ADDR_MIN),
|
||||
.WRENW (WRENW),
|
||||
.OUT_REG (OUT_REG),
|
||||
.DATAW (DATAW),
|
||||
.SIZE (SIZE),
|
||||
.WRENW (WRENW),
|
||||
.OUT_REG (OUT_REG),
|
||||
.LUTRAM (LUTRAM),
|
||||
.NO_RWCHECK (NO_RWCHECK),
|
||||
.RW_ASSERT (RW_ASSERT),
|
||||
.LUTRAM (LUTRAM),
|
||||
.RESET_RAM (RESET_RAM),
|
||||
.READ_ENABLE (READ_ENABLE),
|
||||
.INIT_ENABLE (INIT_ENABLE),
|
||||
.INIT_FILE (INIT_FILE),
|
||||
.RW_ASSERT (RW_ASSERT),
|
||||
.RESET_RAM (RESET_RAM),
|
||||
.RESET_OUT (RESET_OUT),
|
||||
.READ_ENABLE(READ_ENABLE),
|
||||
.INIT_ENABLE(INIT_ENABLE),
|
||||
.INIT_FILE (INIT_FILE),
|
||||
.INIT_VALUE (INIT_VALUE),
|
||||
.ADDRW (ADDRW)
|
||||
.ADDRW (ADDRW)
|
||||
) dp_ram (
|
||||
.clk (clk),
|
||||
.reset (reset),
|
||||
|
|
|
@ -168,8 +168,8 @@ module VX_local_mem import VX_gpu_pkg::*; #(
|
|||
.DATAW (WORD_WIDTH),
|
||||
.SIZE (WORDS_PER_BANK),
|
||||
.WRENW (WORD_SIZE),
|
||||
.READ_ENABLE (1),
|
||||
.OUT_REG (1),
|
||||
.READ_ENABLE (0),
|
||||
.NO_RWCHECK (1)
|
||||
) data_store (
|
||||
.clk (clk),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue