Timing Constraints - 2022.1 English

Vivado Design Suite User Guide : Hierarchical Design (UG905)

Document ID
Release Date
2022.1 English
Table 1. Timing Constraints
Constraint Name Description
set_max_delay Defines input and output delays to budget the time allowed for the OOC module. Helps control placement in the OOC implementation and ease timing closure at the top level.
create_clock Defines clocks on the OOC module ports. A create_clock constraint should exist for every clock port, whether the clock buffer is instantiated in the top level or the OOC module.
set_clock_uncertainty Defines clock uncertainty for a clock that is an input to an OOC module. This constraint should be defined for all clocks of an OOC module to ensure accurate timing analysis. Failure to do so could result in failing paths when a module is imported.
set_system_jitter Defines system jitter value. This constraint should be set to zero when defining user clock uncertainty (set_clock_uncertainty) based on the top-level design. Otherwise, the system jitter is factored into the uncertainity calculations for the OOC implementation, making the final value different from the user-defined value.
set_clock_latency Defines latency for a clock that is an input to an OOC module. This constraint is needed to correctly model clock delay when the entire clock path is not known.
set_clock_groups Defines asynchronous clocks (-asychnronous), or clocks driven by the same global buffer (-physically_exclusive).

Timing Constraint Examples

  • create_clock -period 8.000 -name clk -waveform {0.000 4.000} [get_ports clk] 
  • set_max_delay -from [get_ports <ports>] -to [get_pins <synchronous pin>] -datapath_only <delay>
  • set_max_delay -from [get_pins <synchronous pin>] -to [get_ports <ports>] -datapath_only <delay> 
  • set_system_jitter 0.0
  • set_clock_latency -source -min 0.10 
  • set_clock_latency -source -max 0.20
  • set_clock_groups -physically_exclusive -group [clk1] -group [clk2] 
  • set_clock_groups -asynchronous -group [clk1] -group [clk2] 

These timing constraints are applied to the OOC module itself. The OOC implementation should constrain all timing into, out of, and internal to the instance. This includes special case paths such as false paths and multicycle path.