In UltraScale and UltraScale+ devices, there is no RESET_AFTER_RECONFIG
option. Instead, GSR is always issued
at the end of a partial reconfiguration, and there are no Pblock size/shape requirements
to enable this like there are in 7 series devices. However, to ensure that the Pblock does not
violate any rules for minimum PU sizes, the SNAPPING_MODE
property is also always on by default, and automatically
adjusts the Pblock to make sure it is valid for PR.
The following figures provide an example of how SNAPPING_MODE
adjusts the Pblock for PU alignment. Despite the larger
outer rectangle, only the selected tiles belong to the RP Pblock. The upper block RAM
and DSP sites are not included because they are not fully contained in the Pblock, and
the associated CLB sites are not included either, based on the PU rules. There are also
CLB sites on both the left and right edge that are not included in the Pblock because
the adjacent CLBs are not owned by the original rectangle.
While SNAPPING_MODE
made the above Pblock legal for the RP, it is possible that the intent was to include all of these sites. By making a small adjustment to the original Pblock rectangle, you can prevent SNAPPING_MODE
from removing sites that are intended for the dynamic region. In Automatic Adjustments for PU on Pblocks the Pblock has been expanded by one CLB on the left, right, and top edges. The shaded tiles that are owned by the RP Pblock now match the outer rectangle.
While shading shows what is included in a reconfigurable partition (RP), you can best visualize the sites owned by a RP by using highlighting scripts that the Vivado Design Suite tools create automatically for Pblocks of RPs. The following steps can be used for debugging/verifying Pblocks:
- Create or make an adjustment to an RP. The cell assigned to the Pblock must have the
HD.RECONFIGURABLE
property set. - Source the highlighting script that was generated by the Vivado tools.
source ./hd_visual/<pblock_name>_AllTiles.tcl
Note: The scripts in thehd_visual
directory are updated any time the Pblock constraints are processed. This includes opening a design that contains Pblocks and creating or modifying Pblocks in an open design.