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_clocksis far more efficient because the multicycle path constraint references a single clock object instead of potentially hundreds of thousands of sequential elements.
set_multicycle_path –from [all_inputs] –to [all_registers –clock clk1]
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.