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