bram block optimization
This commit is contained in:
@@ -13,9 +13,7 @@ module VX_sp_ram #(
|
||||
) (
|
||||
input wire clk,
|
||||
input wire [ADDRW-1:0] addr,
|
||||
input wire wren,
|
||||
input wire [BYTEENW-1:0] byteen,
|
||||
input wire rden,
|
||||
input wire [BYTEENW-1:0] wren,
|
||||
input wire [DATAW-1:0] din,
|
||||
output wire [DATAW-1:0] dout
|
||||
);
|
||||
@@ -34,14 +32,11 @@ module VX_sp_ram #(
|
||||
end
|
||||
|
||||
always @(posedge clk) begin
|
||||
if (wren) begin
|
||||
for (integer i = 0; i < BYTEENW; i++) begin
|
||||
if (byteen[i])
|
||||
mem[addr][i] <= din[i * 8 +: 8];
|
||||
end
|
||||
for (integer i = 0; i < BYTEENW; i++) begin
|
||||
if (wren[i])
|
||||
mem[addr][i] <= din[i * 8 +: 8];
|
||||
end
|
||||
if (rden)
|
||||
dout_r <= mem[addr];
|
||||
dout_r <= mem[addr];
|
||||
end
|
||||
end else begin
|
||||
`USE_FAST_BRAM reg [DATAW-1:0] mem [SIZE-1:0];
|
||||
@@ -51,15 +46,13 @@ module VX_sp_ram #(
|
||||
end
|
||||
|
||||
always @(posedge clk) begin
|
||||
if (wren && byteen)
|
||||
if (wren)
|
||||
mem[addr] <= din;
|
||||
if (rden)
|
||||
dout_r <= mem[addr];
|
||||
dout_r <= mem[addr];
|
||||
end
|
||||
end
|
||||
assign dout = dout_r;
|
||||
end else begin
|
||||
`UNUSED_VAR (rden)
|
||||
if (BYTEENW > 1) begin
|
||||
`USE_FAST_BRAM reg [BYTEENW-1:0][7:0] mem [SIZE-1:0];
|
||||
|
||||
@@ -68,11 +61,9 @@ module VX_sp_ram #(
|
||||
end
|
||||
|
||||
always @(posedge clk) begin
|
||||
if (wren) begin
|
||||
for (integer i = 0; i < BYTEENW; i++) begin
|
||||
if (byteen[i])
|
||||
mem[addr][i] <= din[i * 8 +: 8];
|
||||
end
|
||||
for (integer i = 0; i < BYTEENW; i++) begin
|
||||
if (wren[i])
|
||||
mem[addr][i] <= din[i * 8 +: 8];
|
||||
end
|
||||
end
|
||||
assign dout = mem[addr];
|
||||
@@ -84,7 +75,7 @@ module VX_sp_ram #(
|
||||
end
|
||||
|
||||
always @(posedge clk) begin
|
||||
if (wren && byteen)
|
||||
if (wren)
|
||||
mem[addr] <= din;
|
||||
end
|
||||
assign dout = mem[addr];
|
||||
@@ -102,14 +93,11 @@ module VX_sp_ram #(
|
||||
end
|
||||
|
||||
always @(posedge clk) begin
|
||||
if (wren) begin
|
||||
for (integer i = 0; i < BYTEENW; i++) begin
|
||||
if (byteen[i])
|
||||
mem[addr][i] <= din[i * 8 +: 8];
|
||||
end
|
||||
for (integer i = 0; i < BYTEENW; i++) begin
|
||||
if (wren[i])
|
||||
mem[addr][i] <= din[i * 8 +: 8];
|
||||
end
|
||||
if (rden)
|
||||
dout_r <= mem[addr];
|
||||
dout_r <= mem[addr];
|
||||
end
|
||||
end else begin
|
||||
reg [DATAW-1:0] mem [SIZE-1:0];
|
||||
@@ -119,15 +107,13 @@ module VX_sp_ram #(
|
||||
end
|
||||
|
||||
always @(posedge clk) begin
|
||||
if (wren && byteen)
|
||||
if (wren)
|
||||
mem[addr] <= din;
|
||||
if (rden)
|
||||
dout_r <= mem[addr];
|
||||
dout_r <= mem[addr];
|
||||
end
|
||||
end
|
||||
assign dout = dout_r;
|
||||
end else begin
|
||||
`UNUSED_VAR (rden)
|
||||
if (RWCHECK) begin
|
||||
if (BYTEENW > 1) begin
|
||||
reg [BYTEENW-1:0][7:0] mem [SIZE-1:0];
|
||||
@@ -137,11 +123,9 @@ module VX_sp_ram #(
|
||||
end
|
||||
|
||||
always @(posedge clk) begin
|
||||
if (wren) begin
|
||||
for (integer i = 0; i < BYTEENW; i++) begin
|
||||
if (byteen[i])
|
||||
mem[addr][i] <= din[i * 8 +: 8];
|
||||
end
|
||||
for (integer i = 0; i < BYTEENW; i++) begin
|
||||
if (wren[i])
|
||||
mem[addr][i] <= din[i * 8 +: 8];
|
||||
end
|
||||
end
|
||||
assign dout = mem[addr];
|
||||
@@ -153,7 +137,7 @@ module VX_sp_ram #(
|
||||
end
|
||||
|
||||
always @(posedge clk) begin
|
||||
if (wren && byteen)
|
||||
if (wren)
|
||||
mem[addr] <= din;
|
||||
end
|
||||
assign dout = mem[addr];
|
||||
@@ -166,12 +150,10 @@ module VX_sp_ram #(
|
||||
initial mem = '{default: 0};
|
||||
end
|
||||
|
||||
always @(posedge clk) begin
|
||||
if (wren) begin
|
||||
for (integer i = 0; i < BYTEENW; i++) begin
|
||||
if (byteen[i])
|
||||
mem[addr][i] <= din[i * 8 +: 8];
|
||||
end
|
||||
always @(posedge clk) begin
|
||||
for (integer i = 0; i < BYTEENW; i++) begin
|
||||
if (wren[i])
|
||||
mem[addr][i] <= din[i * 8 +: 8];
|
||||
end
|
||||
end
|
||||
assign dout = mem[addr];
|
||||
@@ -183,7 +165,7 @@ module VX_sp_ram #(
|
||||
end
|
||||
|
||||
always @(posedge clk) begin
|
||||
if (wren && byteen)
|
||||
if (wren)
|
||||
mem[addr] <= din;
|
||||
end
|
||||
assign dout = mem[addr];
|
||||
|
||||
Reference in New Issue
Block a user