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

Vivado Synthesis - How does the synthesis tool deal with the INIT FILE set in the BRAM primitive/Macro attribute?


I instantiate a BRAM primitive (Such as RAMB18E1, RAMB36E1) or BRAM Macro (Such as BRAM_TDP_MACRO, BRAM_SDP_MACRO)  in my design, and set the INIT_FILE attribute in the Verilog / VHDL code. 

However, the content of the initial file is not loaded into the BRAM.

Is this expected behavior?


This is an expected behavior.

Vivado Synthesis uses the contents of the INIT_FILE during RAM inference, not instantiation.

In case of instantiation of the RAM primitives directly by the user, synthesis will just pass on the instantiated primitive to the generated netlist in which case the INIT_FILE name is also passed on with the netlist. 

Synthesis does not load the INIT_FILE values here since there is no inference. 

The tool has not been told to load the values via an external file or via one of the above mentioned procedures for VHDL & Verilog. 

The underlying BRAM will have the default value of 0's for these cases on INIT_XX.

AR# 59795
Date Created 03/16/2014
Last Updated 01/21/2015
Status Active
Type General Article
  • Vivado Design Suite