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.
- 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
<greybox>for each Reconfigurable Partition instance.Figure 1. Adding the New config_greybox Configuration
- Click Next to get to the
Configuration Runs page, then create another new configuration run, this time
for the greybox configuration.
Figure 2. Creating an Independent Greybox Configuration Run
- 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
- Click Next then Finish to create this
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.
- 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.