Specify maximum delay for timing paths
Syntax
set_max_delay [‑rise] [‑fall] [‑reset_path] [‑from <args>]
[‑rise_from <args>] [‑fall_from <args>] [‑to <args>] [‑rise_to <args>]
[‑fall_to <args>] [‑through <args>] [‑rise_through <args>]
[‑fall_through <args>] [‑datapath_only] [‑quiet] [‑verbose] <delay>
Usage
Name | Description |
---|---|
[-rise]
|
Delay value applies to rising path delays |
[-fall]
|
Delay value applies to falling path delays |
[-reset_path]
|
Reset this path before setting max delay |
[-from]
|
List of path startpoints or clocks |
[-rise_from]
|
Apply to paths rising from the list of startpoints or clocks |
[-fall_from]
|
Apply to paths falling from the list of startpoints or clocks |
[-to]
|
List of path endpoints or clocks |
[-rise_to]
|
Apply to paths with rise transition at the list of endpoints or clocks |
[-fall_to]
|
Apply to paths with fall transition at the list of endpoints or clocks |
[-through]
|
List of through pins, cells or nets |
[-rise_through]
|
Apply to paths rising through pins, cells or nets |
[-fall_through]
|
Apply to paths falling through pins, cells or nets |
[-datapath_only]
|
Remove clock skew and jitter from calculation |
[-quiet]
|
Ignore command errors |
[-verbose]
|
Suspend message limits during command execution |
<delay>
|
Delay value |
Description
Sets the maximum delay allowed on a timing path, specified in nanoseconds (ns). The specified delay value is assigned to both the rising and falling edges of the defined timing paths unless the -rise
or -fall
arguments are specified.
The maximum rising and falling delay cannot be less than the minimum rising and falling delay on the same path, as defined by the set_min_delay
command. If this happens, the first assigned constraint is removed from the timing path as a conflict, and the delay value specified by the removed constraint is set to 0.
The delay value must be assigned to a timing path as defined by at least one -from
, -through
, or -to
argument. A general path delay such as -to
endpoint will be over written by a more specific path definition such as -from/-to
, or -from/-through/-to
path definition.
set_input_delay
or set_output_delay
is considered part of the maximum delay.This command returns nothing if successful, or returns an error if it fails.
Arguments
-rise
- (Optional) Apply the delay value to the rising edge of the timing path.
-fall
- (Optional) Apply the delay value to the falling edge of the timing path.
-rise
nor -fall
is specified, the delay is applied as both rising and falling edge path delay.
-reset_path
- (Optional) Indicates that existing rising or falling edge false path or max delays should be cleared before applying the new specified path delay. If only -to
is specified all paths leading to the specified endpoints are cleared. If only -from
is specified, all paths leading from the specified start points are cleared. When -from/-to
or -from/-through/-to
are specified, the defined paths are reset.
-from <value>
- (Optional) A list of path start points or clocks. A valid startpoint is a primary input or inout port, or the clock pin of a sequential element. If a clock is specified then all the primary input and inout ports related to that clock as well as all the clock pin of the registers connected to that clock are used as startpoints.
-rise_from
<element_name> - (Optional) The max delay applied to paths rising from the list of origins or clocks.
-fall_from
<element_name> - (Optional) The max delay applied to paths falling from the list of origins or clocks.
-to
<element_name> - (Optional) A list of path endpoints or clocks. A valid endpoint is a primary output or inout port, or the data pin of a sequential element. If a clock is specified then all the primary output and inout ports related to that clock as well as all the data pins of the registers connected to that clock are used as endpoints.
-rise_to
<element_name> - (Optional) The max delay applied to paths with rise transition at the list of endpoints or clocks.
-fall_to
<element_name> - (Optional) The max delay applied to paths with fall transition at the list of endpoints or clocks.
-through
<element_name> - (Optional) A list of through pins, cells, or nets.
-rise_through
<element_name> - (Optional) The max delay applied to paths rising through pins, cells or nets.
-fall_through
<element_name> - (Optional) The max delay applied to paths falling through pins, cells or nets.
-datapath_only
- (Optional) Exclude clock skew and jitter from the delay calculation for the specified path. This option is used to constrain the delay between sequential elements that have different clocks, where you do not want to consider clock skew and jitter in the delay calculation. Only the Clock-to-Q delay of the first flop, the wire delay between the flops, and the setup time of the second flop should be considered.
-datapath_only
must use the -from
option to define the startpoint for the path. The hold check for the specified path is automatically defined as a false path when using the -datapath_only
option.-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.<delay> - (Required) Specifies the maximum delay value specified in nanoseconds. The <delay> is specified in nanoseconds (ns) as a positive or negative floating point number, with a default value of 0.
Examples
The following example defines a maximum delay of 60 ns between all the input and output ports (feedthrough paths):
set_max_delay 60 -from [all_inputs] -to [all_outputs]
The following example clears the existing max delay and specifies a new > maximum delay for paths to endpoints clocked by the specified clock:
set_max_delay -reset_path 50 -to [get_clocks spi_clk]
The set_max_delay command is often used with -datapath_only to constrain asynchronous clock domains crossing when a simple synchronizer is used on the destination clock domain. In the following example, two flops (FF1 and FF2) are clocked by different clocks, and FF1/Q connects directly to FF2/D through net1. To limit the delay on this connection to 4.0 ns use the following constraints:
set_max_delay -from FF1/C -to FF2/D -datapath_only 4.0