[prim_ram_2p] Provide read data only if requested
Previously, the 2-port RAM primitive returned read data even for writes.
Simplify the primitive by returning read data only if it is explicitly
requested. This aligns the 2p implementation with the 1p RAM primitive.
Fixes #2201
Signed-off-by: Philipp Wagner <phw@lowrisc.org>
diff --git a/hw/ip/prim_generic/rtl/prim_generic_ram_2p.sv b/hw/ip/prim_generic/rtl/prim_generic_ram_2p.sv
index 2666879..103bbff 100644
--- a/hw/ip/prim_generic/rtl/prim_generic_ram_2p.sv
+++ b/hw/ip/prim_generic/rtl/prim_generic_ram_2p.sv
@@ -60,8 +60,9 @@
a_wdata_i[i*DataBitsPerMask +: DataBitsPerMask];
end
end
+ end else begin
+ a_rdata_o <= mem[a_addr_i];
end
- a_rdata_o <= mem[a_addr_i];
end
end
@@ -74,8 +75,9 @@
b_wdata_i[i*DataBitsPerMask +: DataBitsPerMask];
end
end
+ end else begin
+ b_rdata_o <= mem[b_addr_i];
end
- b_rdata_o <= mem[b_addr_i];
end
end