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

UltraScale - RSA Authentication and block RAM Utilization


When using RSA authentication, certain block RAMs might be used to hold interim rolling keys, which impacts the ability to initialize those blocks. 

For a given block RAM column, each 36K block that resides in the bottom of a clock region is affected. Essentially the first 36K of block RAM starting at the bottom of a device and then every 12th 36K block RAM after that in a column (BRAM36_X*Y0, BRAM36_X*Y12, BRAM36_X*Y24, etc.). 

Those block RAMs can not be initialized to user-defined values when using RSA authentication. They are always initialized to 0 after configuration. 

How do I determine which block RAMs in my design have non-zero initialization values and move them to valid block RAM locations?


Attached to this Answer Record is a script that will detect all of the block RAMs used in a design with non-zero init values and assign valid block RAM range constraints to them. 

This script should be run pre-place (the pre.tcl step of Placement in the GUI flow)


Associated Attachments

Name File Size File Type
rsaBramConstraintGen.tcl 8 KB TCL
AR# 64729
Date Created 06/03/2015
Last Updated 01/06/2016
Status Active
Type General Article
  • Kintex UltraScale
  • Virtex UltraScale
  • Vivado Design Suite - 2015.1