Intel® Quartus® Prime Pro Edition User Guide: Scripting

ID 683432
Date 9/26/2022
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

4.1.34.1. derive_clock_uncertainty (::quartus::sdc_ext)

The following table displays information for the derive_clock_uncertainty Tcl command:

Tcl Package and Version

Belongs to ::quartus::sdc_ext

Syntax derive_clock_uncertainty [-h | -help] [-long_help] [-add] [-overwrite]
Arguments -h | -help Short help
-long_help Long help with examples and possible return values
-add Adds results to user-defined clock uncertainty assignments
-overwrite Overwrites user-defined clock uncertainty assignments
Description
Applies inter-clock, intra-clock and I/O interface uncertainties based
on timing model characterization. This command calculates and applies
setup and hold clock uncertainties for each clock-to-clock transfer
found in the design. The calculation of the uncertainties is delayed
until the next update_timing_netlist call.

To get I/O interface uncertainty in addition to inter-clock and
intra-clock uncertainties, create a virtual clock to represent an
off-chip clock for input or output delay specification and assign
delays to input/output ports with set_input_delay and set_output_delay
commands that specify the virtual clock.

If set_input_delay and set_output_delay commands specifying a non-
virtual clock are called, derive_clock_uncertainty applies either
inter-clock or intra-clock uncertainty for that clock transfer since
those transfers represent a clock-to-clock domain rather than an
I/O-to-register clock domain.

The set_clock_uncertainty calls will override the derived values for a
source clock and destination clock pair unless either the
set_clock_uncertainty command or the derive_clock_uncertainty command
specified the -add option, in which case the values are added. Specifying
the -overwrite option will instead cause all set_clock_uncertainty commands
to be ignored. Previous set_clock_uncertainty assignments can also be
manually removed by using the remove_clock_uncertainty command.

Note that this command is called automatically and the user only
needs to manually call it to specify the -add or -overwrite options.
Example Usage
# create a virtual clock
create_clock -name virtual -period 1

# apply input/output delays with the virtual clock to get
# I/O interface uncertainties
set_input_delay -clock virtual -add_delay 0 [all_inputs]
set_output_delay -clock virtual -add_delay 0 [all_outputs]

# call derive_clock_uncertainty. results will be calculated 
# at the next update_timing_netlist call
derive_clock_uncertainty

update_timing_netlist
Return Value Code Name Code String Return
TCL_OK 0 INFO: Operation successful