Step 3: Compiling the Design - 2021.2 English

Vivado Design Suite Tutorial: Dynamic Function eXchange (UG947)

Document ID
UG947
Release Date
2022-04-18
Version
2021.2 English

The DFX Controller IP is created, but the design is not yet compiled. In order to create the PROM image with all the necessary full and partial images, source the following scripts in Tcl mode using the commands below.

vivado -mode tcl -source design.tcl
Sourcing design.tcl generates all the necessary IP (including the DFX Controller), synthesizes and implements the entire design (three configurations), updates the vs_count VSM using the DFX Controller Tcl API, and generates bitstreams.
Note: The customization of the IP is scripted. Examine the gen_ip_vcu108.tcl script (in <Extract_Dir>/Sources/scripts) to see all these parameters defined for automated IP creation, the DFX Controller, and others. The DFX Controller instance you create using the IP GUI is not actually used for the full design processing, so you do not have to complete Step 2 to compile the entire design.
vivado -mode tcl -source create_prom_file_vcu108.tcl

Sourcing create_prom_file_vcu108.tcl creates the PROM image for the VCU108 target. This script contains hard-coded values for bitstream address for the entire project. If this design is modified in such a way that changes bitstream sizes, full or partial, then these values must also change. Changes that affect bitstream sizes include changing the target device, changing the size or shape of the Pblocks, or introducing bitstream options such as compression or per-frame CRC.

This script defines PROM file options by setting properties and then making calls to write_cfgmem. The DFX Controller works in byte addresses because the data is stored in bytes in AXI. This linear flash PROM uses half word addresses because it stores data in half words (16 bits). Divide the ROM address by 2 to get the AXI address. For example, the shift_left address is given as 00B00000 during DFX Controller customization and 00580000 (half that value) for write_cfgmem. Note that the starting addresses are always multiples of 1024 (0x0400) to ensure that each bitstream starts on a byte address boundary.

Supplied in the lab directory is a file called dfxc_bitstream_sizes_lab6.xlsx. In this file, bitstream sizes are entered by the user based in the yellow highlighted fields. It calculates the starting address in hex for each partial bitstream at the next byte boundary. Values in blue are to be supplied for DFX Controller IP customization, in either the DFX Controller IP GUI, in the gen_ip_vcu108.tcl script, or in dfx_info_vcu108.tcl which is used for post-route API modification. The values in green are addresses divided by two to be used in PROM file generation in the create_prom_file_vcu108.tcl script.