set clock uncertainty
Syntax
set_clock_uncertainty [‑setup] [‑hold] [‑from <args>] [‑rise_from <args>]
[‑fall_from <args>] [‑to <args>] [‑rise_to <args>] [‑fall_to <args>]
[‑quiet] [‑verbose] <uncertainty> [<objects>]
Usage
Name | Description |
---|---|
[-setup]
|
Specify clock uncertainty for setup checks |
[-hold]
|
Specify clock uncertainty for hold checks |
[-from]
|
Specify inter-clock uncertainty source clock |
[-rise_from]
|
Specify inter-clock uncertainty source clock with rising edge |
[-fall_from]
|
Specify inter-clock uncertainty source clock with falling edge |
[-to]
|
Specify inter-clock uncertainty destination clock |
[-rise_to]
|
Specify inter-clock uncertainty destination clock with rising edge |
[-fall_to]
|
Specify inter-clock uncertainty destination clock with falling edge |
[-quiet]
|
Ignore command errors |
[-verbose]
|
Suspend message limits during command execution |
<uncertainty>
|
Uncertainty of clock network |
[<objects>]
|
List of clocks, ports or pins |
Description
This command is used to add to the uncertainty of a clock in the design, and does not override the default jitter calculation. This is referred to as the user clock uncertainty. The set_clock_uncertainty
command provides a convenient means to over-constrain some clocks in the design without changing the clock definitions and relationships. It can constrain setup and hold paths separately using the -setup
and -hold
options.
Clock uncertainty is the maximum variation, specified in nanoseconds (ns), between two clock edges at registers within a single clock domain, or crossing between clock domains.
The clock uncertainty is used during setup and hold analysis, where uncertainty is calculated for each timing path based on the clock edges used by the analysis and the clock tree topology. For example, for a path where the startpoint and endpoint are connected to the same clock net, the clock uncertainty is null because the same clock edge is used for both source and destination, unless the set_clock_uncertainty
command is used to add uncertainty for the min delay analysis. The Vivado™ timing engine uses clock uncertainty in the slack calculation as determined by the following equation:
- Setup Slack = Setup Path Requirement - Data Delay - Clock Uncertainty + Clock Skew
Clock Uncertainty is a function of different elements of jitter, as determined by the following equation which is returned by the report_timing_summary
or report_timing
commands:
- Clock Uncertainty = (√(Tsj 2 + Dj 2))/2 + PE + UU
Where:
- Tsj = Total System Jitter as calculated using the system jitter. See
set_system_jitter
. - Dj = Discrete jitter is the amount of jitter introduced by hardware primitives such as MMCM or PLL. Discrete jitter is a feature of clocks generated by the MMCM, which includes the input jitter defined on the primary clock. See
set_input_jitter
. - PE = Phase Error, which comes from the MMCM/PLL device model.
- UU = User Uncertainty, which defines the user clock uncertainty specified by this
set_clock_uncertainty
command.
get_property
or report_property
commands. Jitter and clock uncertainty are reported by the report_timing_summary
and report_timing
commands.This command returns nothing if successful, or returns an error if it fails.
Arguments
-setup
- (Optional) The specified clock uncertainty is applied during setup checks.
-hold
- (Optional) The specified clock uncertainty is applied during hold checks.
-from
<source_clock_name> - (Optional) Specify inter-clock uncertainty source clock.
-rise_from
<source_clock_name> - (Optional) Specify inter-clock uncertainty source clock with rising edge.
-fall_from
<source_clock_name> - (Optional) Specify inter-clock uncertainty source clock with falling edge.
-to
<destination_clock_name> - (Optional) Specify inter-clock uncertainty destination clock.
-rise_to
<destination_clock_name> - (Optional) Specify inter-clock uncertainty destination clock with rising edge.
-fall_to
<destination_clock_name> - (Optional) Specify inter-clock uncertainty destination clock with falling edge.
-quiet
- (Optional) Execute the command quietly, returning no messages from the command. The command also returns TCL_OK regardless of any errors encountered during execution.
-verbose
- (Optional) Temporarily override any message limits and return all messages from this command.
set_msg_config
command.
<uncertainty>
- (Required) Uncertainty of the clock network, specified in nanoseconds.
<objects>
- (Optional) List of clocks to define uncertainty for.
Examples
The following example defines the uncertainty between all clock domains:
set_clock_uncertainty 0.225 -from [get_clocks] -to [get_clocks]
set_clock_uncertainty -setup 0.213 [get_clocks wbClk]
set_clock_uncertainty -hold 0.167 [get_clocks wbClk]