Global Clocking Rules - 2023.1 English

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

Document ID
UG909
Release Date
2023-05-24
Version
2023.1 English

Most of the clocking guidelines of UltraScale+ stay the same for Versal devices. However, the Versal device clocking structure provides more clocking primitives and guidelines to better manage skew and meet timing closure more easily. For more information on the clocking structure in Versal devices, see this link in the Versal Adaptive SoC Hardware, IP, and Platform Development Methodology Guide (UG1387).

This section lists possible clocking topologies supported in the DFX flow. In general, DFX designs clocks can be categorized into two types: boundary clocks and internal clocks.
Table 1. DFX Designs Clocks Categorization
Clock type Description
Internal clocks Clocks with driver and loads inside the reconfigurable partition
Boundary clocks Clocks with nets crossing the reconfigurable module cell boundary
  • Driver in the static region and loads in the RM.
  • Driver in the RM and loads in the static region.
  • Driver in the static region and loads distributed between RM and static region.
  • Driver in the RM region and loads distributed between RM and static region.
Figure 1. DFX Design Clocks

Following is the DFX behavior for different categories of clock nets:

  • Internal RM Clock Net
    • Clock root is placed at the center of loads inside RP Pblock.
    • More flexibility for placement and routability of the internal clock of RM in subsequent implementation.
    • Global clock partitioning is only required to allocate enough clock regions for a given net to drive RM loads. This can reduce the chance of clock partitioning errors.
    • This is recommended whenever possible to achieve better skew and optimal clock root placement.
  • Boundary Clock Net
    • Boundary clock net track gets locked down after first implementation.
    • The PPLOCs of the boundary clock nets are distributed to all clock regions covered by the RP Pblock.
    • Global clock partitioning requires prerouting boundary clocks to every clock region within the RP even if the loads can fit into a single clock region.
    • The clock root of the boundary clock net can be placed anywhere in the device, because it can drive both static and RP loads. If the loads of boundary clock are located more in static region, it is possible that the clock root is placed in static region.
    • If the first implementation is done using training logic in the RP Pblock, it is possible that boundary clock nets are locked down after first implementation with sub-optimal clock root location. AMD recommends using the USER_CLOCK_ROOT constraint on the boundary clock net to manually constrain the CLOCK_ROOT location.