wishbone_bram_wrapper ram_addr_bits is 1 bit off
authorAnton Blanchard <anton@linux.ibm.com>
Thu, 17 Mar 2022 07:03:29 +0000 (18:03 +1100)
committerAnton Blanchard <anton@ozlabs.org>
Thu, 17 Mar 2022 07:10:36 +0000 (18:10 +1100)
log2ceil() returns the number of bits required to store a value, so we
need to pass in memory_size-1, not memory_size.

Every other user of log2ceil() gets this right.

Signed-off-by: Anton Blanchard <anton@linux.ibm.com>
wishbone_bram_wrapper.vhdl

index 182fd29d745c1eb0b1943334204056ce949a48ff..a45790fe55ac0255af09ea2452f175e9f5aef681 100644 (file)
@@ -24,7 +24,7 @@ entity wishbone_bram_wrapper is
 end entity wishbone_bram_wrapper;
 
 architecture behaviour of wishbone_bram_wrapper is
-    constant ram_addr_bits : integer := log2ceil(MEMORY_SIZE) - 3;
+    constant ram_addr_bits : integer := log2ceil(MEMORY_SIZE-1) - 3;
 
     -- RAM interface
     signal ram_addr : std_logic_vector(ram_addr_bits - 1 downto 0);