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.35.80. update_timing_netlist (::quartus::sta)

The following table displays information for the update_timing_netlist Tcl command:

Tcl Package and Version

Belongs to ::quartus::sta

Syntax update_timing_netlist [-h | -help] [-long_help] [-dynamic_borrow] [-full] [-no_borrow] [-recompute_borrow]
Arguments -h | -help Short help
-long_help Long help with examples and possible return values
-dynamic_borrow Use time borrowing values that are correct for the current clock constraints
-full Forces creation of an updated timing netlist to ensure correctness
-no_borrow Turn off all time borrowing
-recompute_borrow Recompute optimal time borrowing values
Description
Updates and applies SDC commands to the timing netlist.  The
update_timing_netlist command expands and validates generated clocks,
warns about sources in the design that require clock settings,
identifies and removes combinational loops, and warns about undefined
input/output delays.

Most Tcl commands (e.g., report_timing) automatically update the
timing netlist when necessary.  You can use the update_timing_netlist
command explicitly to control when updating occurs, or to force a full
update using the -full option.

The update_timing_netlist command can also be used to control time borrowing 
behavior. Time borrowing is a technique whereby certain flip-flops in certain 
device families are allowed to have signals that arrive late 
(thus improving upstream slack), at the expense of downstream slack. The amount 
of time borrowing allowed at each flip-flop is hardware-dependent.

By default, optimal time borrowing values are computed at the end of the Fitter 
(Finalize) stage (if enabled by your compilation settings), and these are the values 
you will see in the timing reports. To turn off time borrowing support, use the 
-no_borrow option. This is not recommended,	as it may result in significantly 
pessimistic timing results.

If you have changed clock constraints after compiling your design, pre-computed
optimal time borrowing values may no longer be valid. Time borrowing will be turned 
off for the changed clocks, resulting in pessimistic timing. To get optimal results 
once again, run update_timing_netlist with the -recompute_borrow option. 
This may take significant time on large designs, but the results will be saved 
and available the next time you run update_timing_netlist without any time borrowing options.

The time borrowing optimization algorithm has a few limitation - for example, 
it never borrows any time on sources of cross-clock transfers, sources of paths
with set_max_delay or set_max_skew constraints, or in any clock domain containing
at least one level-sensitive latch. If your design is correctly constrained, you
may overcome these limitations and get better timing results with the 
-dynamic_borrow option, which calculates time borrowing amounts based on your actual 
clock constraints (rather than optimizing for highest FMax within each clock domain). 
Note that -dynamic_borrowing is not recommended for overconstrained designs.
Example Usage
project_open top
create_timing_netlist
read_sdc
update_timing_netlist

report_timing -to_clock clk1
report_timing -to_clock clk2

delete_timing_netlist
project_close
Return Value Code Name Code String Return
TCL_OK 0 INFO: Operation successful
TCL_ERROR 1 ERROR: Timing netlist does not exist. Use create_timing_netlist to create a timing netlist.