Step 9: Adding an Additional Reconfigurable Module and Corresponding Configuration - 2020.2 English

Vivado Design Suite Tutorial: Dynamic Function eXchange

Document ID
UG947
Release Date
2021-02-23
Version
2020.2 English

In this step, you will add a third RM and implement its configuration. This new RM is the same multiplier function but with the ILA instantiation commented out. Even though there are no debug cores in this module, the Debug-specific port names (and corresponding attributes if used) are still required for consistency across all RMs. These ports are tied off via LUTs much like the greybox flow.

  1. Open the Dynamic Function eXchange Wizard.
  2. On the Edit Reconfigurable Modules page, click the + button to add a new RM.
    Figure 1. Adding a new RM mult_no_ila

  3. Select the mult_no_ila.v file in <Extract_Dir>\Sources\hdl\multiplier_without_ila, name the Reconfigurable Module mult_no_ila, and then click OK and Next.
    Figure 2. Creating the mult_no_ila configuration

    Note that on the Edit Configurations page, there is no longer an option to automatically create configurations, as you already have two existing ones. You can re-enable this option by removing all existing configurations, but this recreates all configurations and removes all existing results.

  4. Create a new configuration by clicking the + button, entering the name config_mult_no_ila, then clicking OK. Select mult_no_ila as the Reconfigurable Module.
    Figure 3. Creating a new Configuration Run

  5. Click Next to advance to the Configuration Runs. Use the + button to create a new configuration with these properties:
    • Run: child_1_impl_1 – this matches the existing convention, although it can be named anything.
    • Parent: impl_1 – this makes this configuration a child run of the existing parent run
    • Configuration: config_mult_no_ila – this is the one with the new RM

    Click OK to accept this new configuration.

    Figure 4. Creating a new Configuration Run

    This new configuration, as a child of the existing impl_1, will reuse the static design implementation results, just like config_add did. Three runs now exist, with two as children of the initial parent. The green check marks indicate that two of the runs are currently complete.

    Figure 5. The config_mult_no_ila Configuration Added as a New Child Run

  6. Click Next then Finish to build this new configuration run.
    Figure 6. New OOC Synthesis Run and Configuration Run Added

  7. Select this new child implementation run, right-click and select Launch Runs. This runs OOC synthesis on the mult_no_ila module, then implements this module within the context of the locked static design.
    CAUTION:
    Do not select Run Implementation from the Flow Navigator. It will rerun all the implementation runs, even those that have completed.
  8. Click Cancel on the dialog that opens after implementation completes.

    Right-click on child_1_impl_1 and select Open Run. In the device view note two things:

    1. The static logic is locked and therefore appears orange.
    2. In the Design Runs tab, notice that the amount of logic in the RP Pblock is much smaller than for the other configurations.
  9. Select Tools > Schematic (or seelct F4) to open the schematic view. Descend into the math_rp instance to see that all the BSCAN ports are tied to LUTs and no ILA or Dbg_Hub cores are inserted.