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.