resize_pblock - 2023.2 English

Vivado Design Suite Tcl Command Reference Guide (UG835)

Document ID
Release Date
2023.2 English

Move, resize, add and remove Pblock site-range constraints


resize_pblock [‑add <args>] [‑remove <args>] [‑from <args>] [‑to <args>]
    [‑replace] [‑locs <arg>] [‑quiet] [‑verbose] <pblock>


Name Description
[-add] Add site ranges(s)
[-remove] Remove site ranges(s)
[-from] Site range(s) to move
[-to] Site range destination(s)
[-replace] Remove all existing ranges
[-locs] LOC treatment Default: keep_all
[-quiet] Ignore command errors
[-verbose] Suspend message limits during command execution
<pblock> Pblock to resize


Floorplan, XDC


Place, resize, move, or remove the specified Pblock. The Pblock must have been created using the create_pblock command.

A Pblock consists of a group of cells that can be assigned to one or more independent or overlapping rectangles. Using the various options defined below, you can add sites to a rectangle, or remove sites from a rectangle, or define a new rectangle to be associated with an existing Pblock.


-add <args> - (Optional) Add the specified range of sites to the Pblock. The range is specified as a rectangle from one corner to the diagonally opposite corner. The specific objects that can be used to define a Pblock range include the following: SLICE, DSP48, RAMB18, RAMB36, CLOCKREGION. For example SLICE_X0Y0:SLICE_X20Y12.

Note: Multiple site types are added as separate rectangles.

-remove <args> - (Optional) Remove the specified range of sites from the Pblock. Removing sites from a Pblock may result in the Pblock being broken into multiple smaller rectangles to enforce the requirement that Pblocks are defined as one or more rectangles.

-from <args> - (Optional) The -from and -to options must be used as a pair, and specify a site or range of sites to relocate from one location to another.

-to <args> - (Optional) The -from and -to options must be used as a pair, and specify a site or range of sites to relocate from one location to another.

-locs <args> - (Optional) Specifies how the placed logic in the Pblock will be handled as the Pblock is moved or resized. Valid values are:

  • keep_all - leave all locs placed as they are currently. This is the default setting when -locs is not specified. Logic that is placed outside of the Pblock will no longer be assigned to the Pblock.
  • keep_only_fixed - Specifies that only user-placed logic (fixed) will be preserved. Unfixed placed logic will be unplaced.
  • keep_none - Unplace all logic.
  • move - Specifies that all locs should be moved relative to the coordinates of the Pblock.
  • move_unfixed - Specifies that only the unfixed placed elements should be moved. Logic placed by the user (fixed) will not be moved.
  • trim - Specifies that logic that falls outside of the new Pblock boundaries will be unplaced. Any placed logic that still falls inside of the Pblock boundary will be left placed as it is.
  • trim_unfixed - Trim only the unfixed placed logic.

-replace - (Optional) Remove all rectangles associated with the Pblock.

-quiet - (Optional) Execute the command quietly, returning no messages from the command. The command also returns TCL_OK regardless of any errors encountered during execution.
Note: Any errors encountered on the command-line, while launching the command, will be returned. Only errors occurring inside the command will be trapped.
-verbose - (Optional) Temporarily override any message limits and return all messages from this command.
Note: Message limits can be defined with the set_msg_config command.

<pblock> - (Required) Specify the Pblock to be resized, moved, or removed.


The following example resizes the Pblock by adding a range of SLICEs, and removing other SLICEs, but keeps all instances placed at their current location:

resize_pblock block3 -add SLICE_X6Y67:SLICE_X11Y71 \
   -remove SLICE_X6Y71:SLICE_X7Y71 -locs keep_all

This example create a Pblock region, and defines the Pblock area by adding a range of CLOCKREGIONs:

create_pblock pblock_1
resize_pblock pblock_1 -add {CLOCKREGION_X0Y10:CLOCKREGION_X1Y11}

The following example moves the specified Pblock by adding a range of SLICEs, removing the existing range of SLICEs, and trims any placed logic that falls outside the new Pblock. Then it adds a new range of SLICEs and block ram to the specified Pblock in a second separate rectangle:

resize_pblock block3 -add SLICE_X3Y8:SLICE_X10Y3 \
   -remove SLICE_X6Y67:SLICE_X11Y71 -locs trim
resize_pblock block3 -add {SLICE_X6Y67:SLICE_X11Y71 \

The following example defines an SLR Pblock by specifying complete SLR:

resize_pblock pblock_SLR0 -add SLR0

Create a Pblock region and define the Pblock area by adding SLRs.

create_pblock pblock_slr0 
    resize_pblock pblock_slr0 -add SLR0