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# 39481

Design Assistant for XST - Inference concerns with dedicated Block RAM

Description

Please refer to this Answer Record for help on understand how or why a dedicatedBlock RAM is inferred.

Note: This Answer Record is a part of the Xilinx Solution Center for XST (Xilinx Answer 38927). The Xilinx Solution Center for XST is available to address all questions related to XST. Whether you are starting a new design or troubleshooting a problem, use the Solution Center for XST to guide you to the right information.

Solution

If you are intending to infer a Dedicated Block RAM and XST is failing to do so, then you may want to double check the following:
  • Compare your RTL to the "RAMs Coding Examples" of the XST user guide. The user guide will show youspecific examples for Block RAM rather than Distributed RAM. See (Xilinx Answer 38931) for XST documentation.
  • Double check in the Synthesis Report that theBlock RAMis not being optimized out.
  • Make sure to not have a keep or save-net-flag constraint on the array that consists of the Block RAM. This will force XST to keep all of the registers instead of inferring a Block RAM.
  • Smaller RAMdepths may cause XST to infer distributed RAM rather than Block RAM. You can force XST to infer a Block RAM by adding the RAM_STYLE constraint to the array. See (Xilinx Answer 39749) for help with attributes.
  • Be sure to not reset the entire array as this can not be done with Block RAM. You can only reset the output of the Block RAM since there are internal registers inside of the Block RAM that are allowed to be reset.

If XST is inferring Dedicated Block RAM and you do not want this, then you can force XST to infer a Block RAM by using the RAM_STYLE constraint. If you want XST to infer registers rather than a RAM macro, then you can place a KEEP constraint on the entire array.

Linked Answer Records

Master Answer Records

Answer Number Answer Title Version Found Version Resolved
38927 Xilinx Solution Center for XST N/A N/A

Associated Answer Records

Answer Number Answer Title Version Found Version Resolved
39134 Design Assistant for XST Inference concerns with RAM and ROM N/A N/A
AR# 39481
Date Created 03/15/2011
Last Updated 12/15/2012
Status Active
Type General Article