Pblock Constraints - 2023.1 English

Vivado Design Suite User Guide : Hierarchical Design (UG905)

Document ID
Release Date
2023.1 English
Table 1. Pblock Constraints
Command/Property Name Description
create_pblock Command that creates the initial Pblock for each OOC instance.
resize_pblock Command that defines the site types (SLICE, RAMB36, etc.) and site locations to be owned by the Pblock.
add_cells_to_pblock Command that specifies the instances that will belong to the Pblock. This is typically a level of hierarchy as opposed to individual instances. For OOC implementations, -top can be used to specify all cells under the OOC module instead of specifying cell names.
CONTAIN_ROUTING Pblock property that controls the routing to prevent usage of routing resources not owned by the Pblock. Default value is FALSE. Only paths that are entirely owned by the Pblock range will be contained (for example, no BUFGMUX range exists, paths from/to a BUFGMUX will not be contained. This is the desired behavior for many components like BUFGMUX).
EXCLUDE_PLACEMENT Pblock property that prevents the placement of any logic not belonging to the Pblock inside the defined Pblock range. The default value is FALSE. This property has no effect on the OOC implementation, but it affects the placement of the top-level logic during assembly. AMD recommends you leave this FALSE for the best results during assembly.
PARENT Pblock property that identifies Pblock hierarchy. The value is the name of the parent Pblock in which the child Pblock is fully contained. Any nested Pblocks with the OOC implementation must use the Parent keyword to get correct behavior during Module Reuse.

Pblock Command and Property Examples

  • create_pblock <pblock_name>
  • add_cells_to_pblock [get_pblocks <pblock_name>] -top
  • resize_pblock [get_pblocks <pblock_name>] -add {SLICE_X0Y0:SLICE_X100Y100}
  • resize_pblock [get_pblocks <pblock_name>] -add {RAMB18_X0Y0:RAMB18_X2Y20}
  • set_property CONTAIN_ROUTING true [get_pblocks <pblock_name>]

The cells added to the Pblock are specified using -top. This is because in an out-of-context implementation, the OOC instance is the top level, and the entire OOC instance must be contained by the Pblock. Using -top also allows the Pblock to be properly translated to the correct level of hierarchy when the OOC module is imported into the top-level design.

Nested Pblocks are permitted for floorplanning logic within an OOC module. Any child Pblock must be completely contained within the parent. The parent-child relationship between Pblocks is declared using the PARENT property, as shown here:

set_property PARENT <parent_pblock_name> [get_pblocks <child_pblock_name>]

Because the PARENT Pblock property references another Pblock, the order in which the constraints are processed does not matter. The parent Pblock (which uses -top) must be defined before the child Pblock which references it.

In addition to timing and physical constraints shown above, there are constraints to define context for an OOC.