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.33.28. set_max_time_borrow (::quartus::sdc)

The following table displays information for the set_max_time_borrow Tcl command:

Tcl Package and Version

Belongs to ::quartus::sdc

Syntax set_max_time_borrow [-h | -help] [-long_help] [-exact] <value> <targets>
Arguments -h | -help Short help
-long_help Long help with examples and possible return values
-exact Forces the time borrowed to be the exact value provided (if physically possible)
<value> Time Value
<targets> Collection or list of latches
Description
Specifies the maximum borrowed time for level-sensitive latches. The actual borrowed time
will be determined automatically, but will never exceed the amount you specify. For any
latches without a set_max_time_borrow constraint, no limit will apply (except for the physical
limit of what is possible on the device, as described below).

By using the -exact option, you can bypass the automatic algorithm and specify the exact
amount of borrowing at a given latch. For optimum results, using the automatic algorithm
is recommended (ideally, without any set_max_time_borrow constraints).

Time borrowing is specified with respect to the earliest possible time a signal can be
clocked into the latch node. For example, for a positive latch, if the earliest possible
arrival time of the rising clock edge is 1.025ns, then a signal that has an arrival time
of 1.035ns (where this arrival time already includes the micro-setup time of the latch)
will require at least 0.010ns of time borrowing.

Regardless of how the borrowed time is determined (automatically without a limit, automatically
with a set_max_time_borrow constraint, or manually with a set_max_time_borrow -exact constraint),
the borrowed time can never exceed what is physically possible to borrow on the device.
The maximum amount that can be borrowed is the period of time when the latch is open
(e.g. half the clock period if the clock has a 50% duty cycle), but this time is reduced
by clock propagation time spread and clock uncertainty between the latch-opening and 
latch-closing clock edges, and is further reduced by the closing-edge setup time of the latch.
Some of these factors vary from corner to corner, as well as from clock to clock
(if multiple clocks drive the latch).

Time borrowing analysis will only occur in the Timing Analysis (Signoff) stage, or when
manually running the Timing Analyzer. The Fitter will not utilize time borrowing information
and will assume zero time borrowed. Thus, the use of level-sensitive latches with high-speed
clocks is not recommended, unless other constraints (such as set_max_delay) are manually set
to ensure optimal Fitter behavior.

The targets of this command must be level-sensitive latches (all other targets will
be ignored).

The targets can be specified as either a collections or a Tcl list of wildcards
used to create collections of appropriate types. The values used must follow
standard Tcl or Timing Analyzer-extension substitution rules. See help for the
use_timing_analyzer_style_escaping command for details.
Example Usage
# Borrow at most 3ns at all "lat*" latches:
set_max_time_borrow 3 [get_registers lat*]
Return Value Code Name Code String Return
TCL_OK 0 INFO: Operation successful
TCL_ERROR 1 ERROR: Option <string> has illegal value: <string>. Specify a legal option value.