UPGRADE YOUR BROWSER

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

Description

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.


Solution

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
Tools
  • Vivado Design Suite