21.8.66 set_output_delay
(Ask a Question)Description
Defines the output delay of an output relative to a clock in the current scenario.
The set_output_delay
command sets output path delays on output ports relative to a clock edge. Output ports have no output delay unless you specify it. For in/out (bidirectional) ports, you can specify the path delays for both input and output modes. The tool adds output delay to path delay for paths ending at primary outputs.
- The behavior of the
-add_delay
option is identical to that of PrimeTime(TM). - If, using the
-add_delay
mechanism, multiple constraints are otherwise identical, except they specify different-max
or-min
values.- the surviving
-max
constraint will be the maximum of the-max
values. - the surviving
-min
constraint will be the minimum of the-min
values.
- the surviving
set_output_delay [-max] [-min] delay_value -clock clock_ref [-clock_fall] [-rise] [-fall] \
[-add_delay] output_list
Arguments
Parameter | Type | Description |
---|---|---|
delay_value | float | Specifies the amount of time before a clock edge for which the signal is required. This represents a combinational path delay to a register outside the current design plus the library setup time (for maximum output delay) or hold time (for minimum output delay). |
clock | string | Specifies the clock reference to which the specified output delay is related. This is a mandatory argument. |
max | None | Specifies that delay_value refers to the longest path from the specified output. If you do not specify -max or -min options, the tool assumes the maximum and minimum output delays to be equal. |
min | None | Specifies that delay_value refers to the shortest path from the specified output. If you do not specify -max or -min options, the tool assumes the maximum and minimum output delays to be equal. |
clock_fall | None | Specifies that the delay is relative to the falling edge of the clock reference. The default is the rising edge. |
rise | None | Specifies that the delay is relative to a rising transition on the specified port(s). If -rise or -fall is not specified, then rising and falling delays are assumed to be equal. |
fall | None | Specifies that the delay is relative to a falling transition on the specified port(s). If -rise or -fall is not specified, then rising and falling delays are assumed to be equal. |
add_delay | None | Specifies that this output delay constraint should be added to an existing constraint on the
same port(s). The -add_delay option capture
information on multiple paths with different clocks or clock edges
leading to the same output port(s). Note:
|
output_list | list of string | Provides a list of output ports in the current design to which delay_value is assigned. If you need to specify more than one object, enclose the objects in braces ({}). |
Return Type | Description |
---|---|
integer | Returns the ID of the clock output delay constraint. |
Error Codes
Error Code | Description |
---|---|
Error: SDC0004 | Invalid output delay constraint: clk does not match any clock name or source. |
Error: SDC0015 | Invalid output delay constraint: port list is incorrect. |
Error: SDC0054 | Invalid I/O delay constraint: the min delay is greater than max delay. |
Error: SDC0061 | Invalid output delay constraint: Missing or Illegal parameter/value. |
Supported Families
PolarFire® |
PolarFire SoC |
SmartFusion® 2 |
IGLOO® 2 |
RTG4™ |
Example
The following example sets an output delay of 1.2 ns for port OUT1 relative to the rising edge of CLK1.
set_output_delay 1.2 -clock [get_clocks CLK1] [get_ports OUT1]
The following example sets a different maximum and minimum output delay for port OUT1 relative to the falling edge of CLK2.
set_output_delay -min {OUT1} 1.0 -clock_fall -clock CLK2
set_output_delay -max {OUT1} 1.4 -clock_fall -clock CLK2
The following example demonstrates an override condition of two constraints. The first constraint is overridden because the second constraint specifies a different clock for the same output.
set_output_delay 1.0 {OUT1} -clock CLK1 -max
set_output_delay 1.4 {OUT1} -clock CLK2 -max
The next example is almost the same as the previous one, however, in this case, the user has specified -add_delay
, so both constraints will be honored.
set_output_delay 1.0 {OUT1} -clock CLK1 –max
set_output_delay 1.4 {OUT1} -add_delay -clock CLK2 -max
- All constraints are for an output to port PAD1 relative to a rising edge clock CLK2. Each combination of {-rise, -fall} x {-max, -min} generates an independent constraint. But the max rise delay of 5 and the max rise delay of 7 interfere with each other.
- For a -max option, the maximum value overrides all lower values. Thus the first constraint will be overridden and the max rise delay of 7 will survive.
set_output_delay 5 [get_clocks CLK2] [get_ports PAD1] -max -rise -add_delay # will be overridden
set_output_delay 3 [get_clocks CLK2] [get_ports PAD1] -min -fall -add_delay
set_output_delay 3 [get_clocks CLK2] [get_ports PAD1] -max -fall -add_delay
set_output_delay 7 [get_clocks CLK2] [get_ports PAD1] -max -rise -add_delay