The first unique step in any DFX design flow (project based or otherwise) is to define the parts of the design that will be marked reconfigurable. This is done via context menus in the Hierarchical Source View in project mode. These steps will walk through initial project creation through definition of partitions in a simple design.
- Extract the design from the archive. The
dfx_projectdata directory is referred to in this tutorial as the
- Open the AMD Vivado™ IDE and select Create Project, then click Next.
- Select the
<Extract_Dir>as the Project location. Leave the Project name as
project_1, and leave the Create project subdirectory option checked. Click Next.
- Select RTL Project and ensure the Do not specify sources at this time checkbox is unchecked, then click Next.
- Click the Add Directories
button and select these Sources directories to be added to the design:
- Click Next to get to the
page, then select these files:
Note: These constraint files are full design constraints, scoped to the top level design. If you would like to perform your own floorplanning, only select the top_io_<board>.xdc, omitting the pblocks_<board>.xdc. Stop the flow after synthesis to create your own floorplan.
- Click Next to choose the
part. In the Default
Part page, click Boards and choose the target board matching the constraint
file(s) you have selected. Then click Next and then Finish to
complete project creation. The Sources window shows a standard hierarchical view of
At this point, a standard project is open. Nothing specific to Dynamic Function eXchange has been done.
- Select This prepares the project for the DFX design flow. Once this is set it cannot be undone, so archive your project before selecting this option.
In the ensuing dialog box, click Convert to turn this project into a DFX project.
- Right-click on one of the “shift” instances and select the
Create Partition Definition option.
This action will define both shift instances as Reconfigurable Partitions in the design. Because each instance has come from the same RTL source, they are logically identical. Out-of-context synthesis will be run to keep this module separated from top, and the one post-synthesis checkpoint will be used for both shift instances.Tip: If there are multiple instantiations of the same module within a design, but not all need to be reconfigurable, then the modules must be manually modified to become unique. Then you can independently tag desired instances as Reconfigurable Partitions.
- In the dialog box that appears, give names to both the
Partition Definition and the Reconfigurable Module. The Partition Definition is
the general reference for the workspace into which all Reconfigurable Modules
will be inserted, so give it an appropriate name, such as
shifter. The Reconfigurable Module refers to this specific RTL instance, so give it a name that references its functionality, such as
shift_right, then click OK.
The Sources window has now changed slightly, with both shift instances now shown with a yellow diamond, indicating they are Partitions. You will also see a Partition Definitions tab in this window, showing the list and contents of all Partition Definitions (one at this point) in the design. In addition, an out-of-context module run has been created for synthesizing the shift_right module.
At this point, more Reconfigurable Module sources can be added. This is done via the Dynamic Function eXchange Wizard.Important: After Partitions have been defined, all additional RMs must be added via the DFX Wizard, and any management of RM sources, configurations, and runs must also be done via this wizard.