Optimizing Pin Queries - Optimizing Pin Queries - 2026.1 English - UG903

Vivado Design Suite User Guide: Using Constraints (UG903)

Document ID
UG903
Release Date
2026-07-01
Version
2026.1 English

Because designs contain many more pins than cells, using get_pins instead of get_cells can significantly impact runtime. You can see this degradation when processing XDC constraints (for example, open_checkpoint runtime) or when executing a Tcl script. To improve runtime for large numbers of pin queries, leverage the relationship between pin and cell objects.

First find the cells that own the pins you need, then refine the query by filtering the pins from those cells.

Recommended Pin Queries

  • Original pin query:
    get_pins –hier * -filter {NAME=~xx*/yy*}
  • Recommended efficient pin query:
    get_pins –filter {REF_PIN_NAME=~yy*} –of [get_cells –hier xx*]
  • Alternate recommended pin query:
    get_pins –filter {REF_PIN_NAME=~yy*} –of [get_cells –hier * -filter {NAME=~xx*}]

Example

For example, you can start with this constraint:

set_max_delay 15 -from [get_pins -hier -filter {NAME=~*/aclk_dpram_reg*/*/CLK}] \
-to [get_cells -hier -filter {NAME=~*/bclk_dout_reg*}] \
-datapath_only

Rewrite it to improve query runtime, especially on larger designs:

set_max_delay 15 -from [get_pins -of [get_cells -hier –filter
{NAME =~ *aclk_dpram_reg*/*}] -filter {REF_PIN_NAME == CLK}] \
-to [get_cells -hier bclk_dout_reg*] \
-datapath_only