Replacing all_registers Queries - 2023.2 English

Vivado Design Suite User Guide: Using Constraints (UG903)

Document ID
UG903
Release Date
2023-11-01
Version
2023.2 English

The following are some additional query recommendations:

  • Avoid queries using all_registers whenever possible, as they tend to create large collections of objects. Such queries should be replaced by cells/pins queries with appropriate name patterns.
  • When all_registers must be used and the query is gathering all the sequential elements from a clock domain, all_registers -clock can sometimes have equivalent coverage as directly using a clock object.

    For example, the two commands below are equivalent in terms of coverage. However, the second form using get_clocks is far more efficient because the multicycle path constraint references a single clock object instead of potentially hundreds of thousands of sequential elements.

    Original:

    set_multicycle_path –from [all_inputs] –to [all_registers –clock clk1]

    Optimal:

    set_multicycle_path –from [all_inputs] –to [get_clocks clk1]
Important: Starting with the Vivado Design Suite 2018.3, the all_registers command only returns primitives that have at least one Setup/Hold/Recovery/Removal timing arc that is enabled and a CLK->Q timing arc. This means that buffers such as BUFGCE and BUFGCE_DIV are not returned anymore by the all_registers command.