AMD highly encourages the following for an UltraScale and UltraScale+ device design using Dynamic Function eXchange:
Recommended Clocking Networks
Are you using Global Clock Buffers or Clock Modifying Blocks (MMCM, PLL)?
These blocks can be reconfigured, but all elements in this frame type must be reconfigured. This includes an entire I/O bank and all clocking elements in that shared region, plus one column of CLBs that share the interconnect.
See Design Elements Inside Reconfigurable Modules for more information, and Global Clocking Rules for complete details on global clock implementation.
In addition, the following restrictions are currently enforced by Vivado Design Suite
DRC rules. The use of clocking resources BUFGCTRL
,
BUFG_CE
and BUFG_GT
is supported with the
following restrictions:
-
AMD recommends using
rectangular Pblock shapes. Non-rectangular shapes are also supported for RPs
with clocking logic, as long as the tallest column of the Pblock is aligned
vertically and horizontally with the clock region. The tallest column of the RP
Pblock must also range the IOB, and this range must cover the full height of all
the rectangles that define the RP Pblock, as shown in Dynamic Function eXchange Checklist for UltraScale and UltraScale+ Device Designs. In other words,
this vertical column of IOB ranges must be able to access all rows of the
Pblock. Pblock shapes like a sideways "L" are not supported unless the vertical
section of the shaped includes the IOB range.Figure 1. Tallest Column of Pblock Clock Region Aligned
- A gap is defined as an unranged site type with ranged sites on both sides of it.
The following gaps are not allowed:
- Gaps in the IOB/XIPHY ranges, such as the gap in the IOB
column shown in Dynamic Function eXchange Checklist for UltraScale and UltraScale+ Device Designs below.Figure 2. Unsupported Gap in the IOB Column
- Gaps in the DSP ranges.
- Gaps in the IOB/XIPHY ranges, such as the gap in the IOB
column shown in Dynamic Function eXchange Checklist for UltraScale and UltraScale+ Device Designs below.
- A clock region cannot be shared by two RP Pblocks if:
- At least one of them has a global clock source.
- The other has ranged a global clock source.
Configuration Feature Blocks
Are you using device feature blocks (BSCAN, DCIRESET, FRAME_ECC, ICAP, STARTUP, USR_ACCESS)?
These featured blocks must be in static logic.
See Design Elements Inside Reconfigurable Modules for more information.
Pblock Boundaries
Have you set the Pblock boundaries?
For UltraScale and UltraScale+ devices, the X-axis boundary of a dynamic region can be set by a PU, including CLB, Block RAM, DSP, and others. The tool adjusts the Pblock automatically for a valid placement. The Y-axis boundary of a PR region can be a clock region and IO bank. However, if BUFGCTRL/BUFG_CE/BUFG_GT are used in the RP, a full clock region must be used.
SSI Technology
Does the Pblock span an SLR of an SSI device?
If using an SSI device it is recommended to keep a dynamic region within a single SLR. However, for UltraScale and UltraScale+ devices, if a RP Pblock must span an SLR, the necessary Laguna sites must be included to allow for routing across this boundary. This requires that at least one full clock region belongs to the dynamic region on both sides of the SLR boundary.
For more information on SSI Technology devices and Laguna, see Devices using Stacked Silicon Interconnect (SSI) Technology in the UltraScale Architecture Configurable Logic Block User Guide (UG574).
High Speed Transceiver Blocks
Do you have high speed transceivers in your design?
High speed transceivers can be reconfigured. An entire quad, including all component types (GT_CHANNEL, GT_COMMON, BUFG_GT) must be reconfigured together.
See Using High Speed Transceivers for UltraScale and UltraScale+ Devices for specific requirements.
System Generator DSP Cores, HLS Cores, or IP Integrator Block Diagrams
Are you using System Generator DSP cores, HLS cores, or IP integrator block diagrams in your Dynamic Function eXchange design?
Any type of source can be used as long as it follows the fundamental requirements for Dynamic Function eXchange. Any code processed by System Generator, HLS, or IP integrator (or other tools) is eventually synthesized. The resulting design checkpoint or netlist must be comprised entirely of reconfigurable elements in order for it to be legally included in an RP.
Packing I/Os into Reconfigurable Partitions
Do you have I/Os in RMs?
I/Os can be partially reconfigured. An entire I/O bank, along with all I/O logic (XiPhy) and clocking resources, must be reconfigured at once. IOSTANDARD and direction cannot change and DCI Cascade rules must be followed. But other I/O characteristics may change from one RM to the next.
See Design Elements Inside Reconfigurable Modules for more information.
Packing Logic into Reconfigurable Partitions
Is all logic that must be packed together in the same RP?
Any logic that must be packed together must be in the same RP and RM.
See Packing Logic for more information.
Packing Critical Paths into Reconfigurable Partitions
Are critical paths contained within the same partition?
RP boundaries limit some optimization and packing, so critical paths should be contained within the same partition.
See Packing Logic for more information.
Floorplanning
Can your RPs be floorplanned efficiently?
See Creating Pblocks for UltraScale and UltraScale+ Devices for more information.
Recommended Decoupling Logic
Have you created decoupling logic on the outputs of your RMs?
During reconfiguration the outputs of RPs are in an indeterminate state, so decoupling logic must be used to prevent static data corruption.
See Decoupling Functionality for more information.
Recommended Reset After Reconfiguration
Are you resetting the logic in an RM after reconfiguration?
Reset After Reconfiguration is always enabled for UltraScale and UltraScale+ devices. This capability cannot be disabled.
See Apply Reset After Reconfiguration for more information.
Debugging with Logic Analyzer Blocks
Are you using the Vivado Logic Analyzer with your Dynamic Function eXchange design?
Vivado logic analyzer (ILA/VIO debug cores) can be used in your Dynamic Function eXchange design, but care must be taken when connecting these cores to debug hubs. Use the automatic inference solution shown in Using Vivado Debug Cores.
Efficient Reconfigurable Partition Pblocks
Have you created efficient RP Pblock(s) for your design?
A RP Pblock can be any height, but multiple RPs cannot be stacked vertically within a single clock region.
See Creating Pblocks for UltraScale and UltraScale+ Devices for more information.
Validating Configurations
How do you validate consistency between configurations?
The pr_verify
command is used to make sure all configurations have
matching imported resources.
See Verifying Configurations for more information.
Configuration Requirements
Are you aware of the particular configuration requirements for Dynamic Function eXchange for your design and device?
Each device family has specific configuration requirements and considerations.
See Configuring the Device for more information.