AR# 58130

Vivado write_bitstream: After setting bitstream related properties, how can I generate the bitstream directly without re-synthesizing and re-implementing?


In Vivado, when I set a property (for example, BitGen properties) which affects bitstream generation only, the design still goes out-of-date.

For example:

Enable bitstream encryption:

set_property BITSTREAM.ENCRYPTION.ENCRYPT Yes [current_design] 

Or enable bitstream compression:

set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]

Even if the design is forced up-to-date, it seems to be necessary to re-synthesize and re-implement to have the property take effect.


Possible work-arounds for this issue include the following:

After implementation:

1) Add the "set_property" commands (example below) related to bitstream properties in the XDC file in Vivado, then force processes up-to-date:

set_property BITSTREAM.ENCRYPTION.ENCRYPT YES [current_design]
set_property BITSTREAM.ENCRYPTION.KEY0 256'h1234567812345678123456781234567812345678123456781234567812345678 [current_design]

A process can be forced up-to-date by clicking on the "more info" link of the process status in the upper right corner of the design window, and then selecting "Force up-to-date".

Alternatively, run the Tcl commands below to force up-to-date:

set_property needs_refresh false [get_runs synth_1]
set_property needs_refresh false [get_runs impl_1]

Now, open the implemented design and run the same "set_property" bitstream commands as mentioned above via the Tcl console. 

Then, run the "write_bitstream" Tcl command rather than using the GUI button.

2) Create a Tcl file with the "set_property" commands (as mentioned above) and source it in the pre.tcl BitGen settings file. 

Bitstream setting options can be found in the project settings.

3) After implementation, open the post routed DCP. 

In the Tcl console, run the "set_property" commands related to the bitstream properties.

For example, if you want to compress the bitstream, run the following in the Tcl console:

set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]

Then, run the "write_bitstream" Tcl command.

AR# 58130
Date 12/18/2018
Status Active
Type General Article