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.
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
report_timing_summary
or report_timing
commands:
- Clock Uncertainty = (√(Tsj 2 + Dj 2))/2 + PE + UU
- 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
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]