Avoid Disjoint Pblocks Whenever Possible for Versal Devices - 2023.2 English

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

Document ID
Release Date
2023.2 English

AMD highly recommends contiguous floorplanning for static regions and reconfigurable Pblocks for the following reasons:

  • Disjoint Pblocks for either a reconfigurable partition or the static region can result in related logic being placed in separate areas, which has a negative impact on routability and timing closure. Without additional guidance, it is possible for the placer to create a situation that is unroutable if related logic is not kept together.
  • Although static nets can cross through reconfigurable Pblocks to allow communication between two static islands, it is best to limit this approach because locked static nets can block routing during subsequent reconfigurable module implementations. Building contiguous regions and minimizing overlap is the best layout strategy for DFX designs.

The Vivado tools determine that two portions of a Pblock are disjoint if the corresponding expanded routing footprint for a collection of resources has a gap between it and another routing footprint section for the same Pblock. The reconfigurable Pblock does not own general routing resources within this gap. This means that finding a solution that connects these disjoint sections is either difficult or impossible, depending on how the Pblock is created. Use the get_dfx_footprint -route -of_objects <rm cell inst name> command to see the routing footprint of a reconfigurable partition Pblock.

There are some cases in which contiguous Pblocks cannot be used, and disjoint Pblocks must be used instead. The most common case is to accommodate clocking resources in Versal devices due to the layout of the silicon. Clocking resources such as BUFGCE, MMCM, DPLL and XPLL are located along the bottom (or sides) of the device and therefore are physically separated from a dynamic region that must be placed on a different area of the die. If a reconfigurable partition must contain clocking resources and be situated in the device in a location away from the bottom (or sides) of the device, the Pblock for the reconfigurable partition must have two or more disjoint sections. The only routing permitted between the disjoint sections is clock routing, because these resources are not part of the general routing domain. The following figure shows an example.

Figure 1. Disjoint Pblock Example

Following is the constraint syntax for the Pblock in this example:

create_pblock pblock_rp1rm1
add_cells_to_pblock [get_pblocks pblock_rp1rm1] [get_cells -quiet [list design_1_i/rp1rm1]]
resize_pblock [get_pblocks pblock_rp1rm1] -add {CLOCKREGION_X5Y2:CLOCKREGION_X6Y3}
resize_pblock [get_pblocks pblock_rp1rm1] -add {BUFGCE_X0Y0:BUFGCE_X0Y23}
resize_pblock [get_pblocks pblock_rp1rm1] -add {MMCM_X0Y0:MMCM_X0Y0}

The BUFGCE and MMCM instances selected are located in the lower-left corner of the device. Only the reconfigurable partitions with areas that occupy the Y1 row of the device can have a contiguous region that includes these clocking resources.

Note: Other resources, such as IOB, XPIO, and XPHY, are also located in the bottom row of the device but should not be considered in a remote section of a Pblock. Without a contiguous region, the reconfigurable module logic cannot be routed between the disjoint sections.

If design rule checks (for example, HDPR-131 or HDPR-132) indicate that resources such as slices near the clocking site are also required, add these to your primary Pblock. If the required sites are currently occupied by a different reconfigurable partition Pblock, the listed sites must also be removed from that Pblock before adding them to the target Pblock. The DRC messages provide the syntax required. For example:

WARNING: [DRC HDPR-131] DFX pblock blocks MMCM: MMCM tile 'CMT_MMCM_X47Y0' from reconfigurable pblock 'pblock_rp1rm1' requires BLI tiles and its respective frame and PU tiles which are already ranged in by other reconfigurable pblock 'pblock_rp2rm1'. There are two possible resolutions - a) Use other MMCM that will not create overlaps or b) Update the floorplan by using this suggestion:
resize_pblock pblock_rp1rm1 -add {SLICE_X148Y0:SLICE_X151Y43}
resize_pblock pblock_rp2rm1 -remove {BLI_A_GRP0_X64Y0:BLI_A_GRP0_X65Y0 ... SLICE_X148Y0:SLICE_X151Y43}