Adding Reconfigurable Modules with Sub-Module Netlists - 2023.2 English

Vivado Design Suite User Guide: Dynamic Function eXchange (UG909)

Document ID
Release Date
2023.2 English

If a RM has sub-module netlists, it can be difficult for the Vivado tools to process the sub-module netlists. This is because in the DFX flow the RM netlists are added to a design that is already open in memory. This means the update_design -cells command must be used, which requires the cell name for every EDIF file, which can be troublesome to get.

There are two ways to make loading RM sub-module netlists easier in the Vivado Design Suite.

Method 1: Create a Single RM Checkpoint (DCP)

Create an RM checkpoint (DCP) that includes all netlists. Use add_files to add all of the EDIF (or NGC) files, and use link_design to resolve the EDIF files to their respective cells. Here is an example of the commands used in this process:

add_files [list rm.edf ip_1.edf … ip_n.edf]
# Run if RM XDC exists
add_files rm.xdc
link_design -mode out_of_context -top <rm_module> -part <part>
write_checkpoint rm_v#.dcp
Important: Using this methodology to combine/convert a netlist into a DCP is the recommended way to handle an RM that has one or more NGC source files as well.

Then this newly-created RM checkpoint can be used in the DFX flow. In the commands below, the single read_checkpoint -cell command replaces what could be many update_design -cell commands.

add_files static.dcp
link_design -top <top> part <part>
lock_design -level routing
read_checkpoint -cell <rm_inst> rm_v#.dcp

Method 2: Place the Sub-Module Netlists in the Same Directory as the RM's Top-Level Netlist

When the top-level RM netlist is read into the DFX design using update_design -cell, make sure that all sub-module netlists are in the same directory as the RM top-level netlist. In this case, the lower-level netlists do not need to be specified, but they are picked up automatically by the update_design -cells command. This is less explicit than Method 1, but requires fewer steps. In this case the commands to load the RM netlist would look like the following:

add_files static.dcp
link_design -top <top> part <part>
lock_design -level routing
update_design -cells <rm_inst> -from_file rm_v#.edf

In the last (update_design) command above, the lower-level netlists are picked up automatically if they are in the same directory as rm_v#.edf.