HDPR-97 Versal Expanded Routing Splits Programmable Unit - 2023.1 English

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

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

Description

The DRC reports that there is a PU that is common to more than one reconfigurable Pblock, which is not recommended. The expansion of the routing footprint of one of the reconfigurable Pblocks led to sharing of a PU.

Example

The following DRC error can occur in DFX designs with two or more reconfigurable partitions (RPs) on an SSI technology Versal device. In this example, a Versal device has two Pblocks that are stacked on one another: p1_pblock and p2_pblock. The p1_pblock RP is on top, and its clock source originates from the bottom HSR region.

HDPR-97#1 Error
Versal Expanded Routing Splits Programmable Unit  
The reconfigurable Pblock 'p1_pblock' has an expanded routing footprint that splits a Programable Unit. Tile : INTF_ROCF_BL_TILE_X37Y1 is shared by 2 reconfigurable pblock footprints
	- Is in ROUTING footprint of reconfigurable pblock p1_pblock
	  Footprint Expansion Path : 
		 - INTF_ROCF_BL_TILE_X37Y1 tile in ROUTING footprint for PU 
		 - BLI_DSP_ROCF_BL_TILE_X37Y0 tile in PLACEMENT footprint for HSR_ROUTING
		 - CMT_MMCM_X36Y0 tile in PBLOCK
	- Is in ROUTING footprint of reconfigurable pblock p0_pblock
	  Footprint Expansion Path : 
		 - INTF_ROCF_BL_TILE_X37Y1 tile in ROUTING footprint for FRAME_ALIGNMENT 
		 - INTF_ROCF_BL_TILE_X37Y47 tile in PBLOCK
Resolution : Resize pblock to avoid overlaps in footprint using following tcl commands
	 * resize_pblock
	 * get_sites -of [get_tiles <tile in PBLOCK>]  

Debugging

The Tile section of the DRC error indicates that there is an overlapping tile that is shared by two RPs. The error message suggests that expanded routing footprint led to the tile overlap. To show the routing footprint for both Pblocks, use the get_dfx_footprint command. For example:

highlight_objects -color blue [get_dfx_footprint -route -of_objects [get_cells design_1_i/rp2rm1]]
Note: The get_dfx_footprint command is an Early Access feature supported for debugging Versal devices only. For more information, enter get_dfx_footprint -help.

In the following figure, the portion marked in red shows the overlapping tile: INTF_ROCF_BL_TILE_X37Y1. The routing footprint of the p1_pblock is highlighted in blue, and the routing footprint of the p0_pblock is highlighted in yellow.

Figure 1. Device View with Two RPs

The Footprint Expansion Path section of the DRC error shows how the overlapping tile INTF_ROCF_BL_TILE_X37Y1 was included in the p1_pblock:

  • The CMT_MMCM_X36Y0 tile is part of the p1_pblock, and the MMCM/RST site pin in the CMT_MMCM_X36Y0 tile is connected to INTF_ROCF_BL_TILE_X37Y1. To select the sites in the Device view, use the get_nodes command iteratively. For example:
    select_objects [get_nodes -uphill -of_objects [get_nodes CMT_MMCM_X36Y0/CMT_MMCM_TOP_0_RST_PIN]] 
  • BLI_DSP_ROCF_BL_TILE_X37Y0 is part of the p1_pblock routing footprint. The PU of BLI_DSP_ROCF_BL_TILE_X37Y0 includes the same INTF_ROCF_BL_TILE_X37Y1 tile. To highlight the footprint in the Device view, use the get_dfx_footprint command. For example:
    select_objects [get_dfx_footprint -pu -of_objects [get_tiles BLI_DSP_ROCF_BL_TILE_X37Y0]]

The following figure shows the Device view with overlapping tiles and the MMCM/RST pin connection to the fabric interface.

Figure 2. Device View with Overlapping Tiles

The following figure shows the Device view with the PU for the BLI_DSP_ROCF_BL_TILE_X37Y0 tile selected.

Figure 3. Device View with PU

The ROUTING footprint section of the DRC error explains how the INTF_ROCF_BL_TILE_X37Y1 tile was included in the other p0_pblock. In the first figure above, the yellow highlighted portion shows the routing footprint for the p0_pblock.

Resolution

To resolve the violation, at least one Pblock must be resized. This is a design-dependent decision. In this example, one option is to remove CMT_MMCM_X36Y0 from the p1_pblock and add the adjacent CMT tile to avoid the overlap. For example:

resize_pblock [get_pblocks p1_pblock ] -remove [get_sites -of_objects [get_tiles CMT_MMCM_X36Y0]] 
resize_pblock [get_pblocks p1_pblock ] -add  [get_sites -of_objects [get_tiles CMT_MMCM_X25Y0]]