Adding Reconfigurable Module Constraints - 2024.2 English - UG909

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

Document ID
UG909
Release Date
2024-12-13
Version
2024.2 English

All the constraints in the primary constraint set (constrs_1 by default) are applied through synthesis and implementation of the parent run. All constraints for the static portion of the implemented parent run are then contained within that locked static checkpoint so there is no need to reapply these static constraints for subsequent child runs. While the DFX Wizard shows constraints sets specified for child runs (default or any other constraint set), these child runs do not apply constraints unless explicitly requested in each run by setting the APPLY_CONSTRSET run property. Constraints specific to any Reconfigurable Module must be applied for any child run, whether they are constraints in the default constraint set or any new constraint set.

If constraints unique to individual RMs are required, they can be applied in different XDC sources added as sources within each Reconfigurable Module under the partition definition and then scoped to that module. Follow these steps to add and associate RM-level constraints.

  1. Add or create a new constraint file. This can be done by clicking Add Sources in the Flow Navigator or clicking the + sign in the Sources window. Select as many XDC files as are required.
    Generated by Your Tool

    These newly added XDC sources are added to the active top-level constraint file (unless another exists and has been selected in the dialog box in the previous figure), even if the Add Sources action was requested from the Partition Definition pane.



  2. For each XDC source, right-click and select the Move to Reconfigurable Module command.

    In the resulting dialog box, select the Reconfigurable Module from the list.



    This action removes the selected XDC from the top-level constraint set and places it in the file set for the target RM. The result can be seen by examining the RM within the Partition Definitions tab. Repeat for all RM-level XDC added to the project



    Note: This process can be undone by right-clicking on an XDC file in the Partition Definitions pane and selecting Move to Design Sources. This returns that XDC to the active top-level constraint set.
  3. Select the XDC within the Partition Definition tab and examine the Source File Properties. Set the SCOPED_TO_REF property to the name of the design module. This allows all the constraints within this module to include hierarchical references starting at the RM top rather than the design top. The USED_IN properties can be set for these constraint files the same as they can for constraints in the top-level constraint set, and the PROCESSING_ORDER can be used to shift when the constraint file is processed by the tools.

    Alternatively, the SCOPED_TO_CELLS property can be used to achieve the same result by identifying the hierarchical path to the module instance rather than calling out the module name. Either are valid methodologies for designs with single instantiations of a partition definition.

    With the SCOPED_TO_REF or SCOPED_TO_CELLS value set, all hierarchical instances within the XDC can omit the top-level path to the target RM. This XDC is applied whenever this particular Reconfigurable Module is included in a DFX configuration. No single RM-specific design constraints should be stored in the top-level constraint set; that set should be reserved for static constraints as well as RM-level constraints that are common to all variants within a given RP.

    Note: If a single partition definition is used to define multiple RP instantiations in a design, any RM-level constraints is applied for each instance when only using SCOPED_TO_REF. This means that any physical location constraints (for example Pblock ranges and LOC assignments) is applied each time. This would be impossible to achieve as each RP has a different physical location, so physical assignments must be tied to a specific RM in a specific RP. This can be done by using the SCOPED_TO_CELLS property in addition to the SCOPED_TO_REF property.


For more information on constraints scoping, see Constraints Scoping in the Vivado Design Suite User Guide: Using Constraints (UG903). For a DFX example, see Lab 3 in the Vivado Design Suite Tutorial: Dynamic Function eXchange (UG947).

By placing constraints that apply only to a single RM within the source set for that RM, you have the ability to build any possible DFX configuration and have the appropriate constraints applied for that parent or child run. No additional manipulation of source sets is necessary.