Step 6: Creating and Implementing a Greybox Module - 2022.1 English

Vivado Design Suite Tutorial: Dynamic Function eXchange (UG947)

Document ID
Release Date
2022.1 English

For some designs, the desired initial configuration of the device may be an image with no function resident in a Reconfigurable Partition. Or perhaps there are no Reconfigurable Modules available to implement yet. A greybox configuration can be used to implement just the static design without real RM netlists available.

A greybox is a module that starts off as a blackbox, but then has LUTs automatically inserted for all ports. Output ports are driven to a logic 0 (by default, 1 is selectable via property) so they do not float. This module allows the design to be processed even if no RMs are available. Training scripts are available to create timing budgets for this greybox image, optimizing the implementation results of the static design. A configuration with greybox RMs can be the parent run, but this is only recommended when no other RMs exist and/or when budgeting constraints are used to optimize the RP interface placement.

  1. Open the Dynamic Function eXchange (DFX) Wizard and move to the Configurations page – no new Reconfigurable Modules need to be defined in this case, as this is a dedicated feature. Create a new configuration a name of config_greybox and enter <greybox> for each Reconfigurable Partition instance.
    Figure 1. Adding the New config_greybox Configuration

  2. Click Next to get to the Configuration Runs page, then create another new configuration run, this time for the greybox configuration.
    • Parent: synth_1 – this makes this configuration a new parent, starting from the synthesized top level design
    • Configuration: config_greybox – the RMs consist only of LUT tie-offs
    • Run: impl_greybox
    Figure 2. Creating an Independent Greybox Configuration Run

  3. Click Next then Finish to create this new run.

    Now there are four implementation runs and three out-of-context runs shown in the Design Runs window. Note that the greybox module does not require synthesis – it is an embedded feature in the DFX solution.

    Figure 3. Greybox Implementation Ready to Run

    At this point the greybox configuration can be implemented.

  4. Select the impl_greybox design run, right-click and select Launch Runs. The Flow Navigator will not launch this run as it is not the active parent.
    Important: Because impl_1 and impl_greybox are both parents, their static design results will be different, and their resulting bitstreams will NOT be compatible in hardware. Only bitstreams derived from a single parent (and subsequently confirmed using PR Verify) should ever be delivered through Dynamic Function eXchange (DFX) to a device.