We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 61995

Vivado Synthesis - Sub-optimal inference of block RAM (bad area QoR) when the depth is non-power of 2


When the memory depth is non-power of 2, Vivado Synthesis extends the depth to a power of 2 to do BRAM inference, which results in more BRAMs being inferred than expected. 

An example of this is as follows:

For a RAM with depth=1146880 and width=3, which is 1146880x3 = 70 x (16K x 1) x 3, the expectation is 70x3=210 RAMB18s.
However Vivado Synthesis extends the depth to a power of 2 (2^21 = 2097152), which means it needs 128x3=384 RAMB18s=192 RAMB36s.


Block RAM inference with a supported depth other than power of 2 is on the roadmap for inclusion in a future release.

To work around this in the meantime, manually change code to split the RAM into several parts so that it consists of several small RAMs whose depth is a power of 2.

For the example above, this 1146880x3 RAM can be split into three parts: 1048576 (2^20) x 3 + 65536 (2^16) x 3 + 32768 (2^15) x 3
AR# 61995
Date Created 09/10/2014
Last Updated 10/08/2014
Status Active
Type Known Issues
  • Vivado Design Suite