set_output_delay - 2023.2 English

Vivado Design Suite Tcl Command Reference Guide (UG835)

Document ID
Release Date
2023.2 English

Set output delay on ports


set_output_delay [‑clock <args>] [‑reference_pin <args>] [‑clock_fall]
    [‑rise] [‑fall] [‑max] [‑min] [‑add_delay] [‑network_latency_included]
    [‑source_latency_included] [‑quiet] [‑verbose] <delay> <objects>


Name Description
[-clock] Relative clock
[-reference_pin] Relative pin or port
[-clock_fall] Delay is relative to falling edge of clock
[-rise] Specifies rising delay
[-fall] Specifies falling delay
[-max] Specifies maximum delay
[-min] Specifies minimum delay
[-add_delay] Don't remove existing input delay
[-network_latency_included] Specifies network latency of clock already included
[-source_latency_included] Specifies source latency of clock already included
[-quiet] Ignore command errors
[-verbose] Suspend message limits during command execution
<delay> Delay value
<objects> List of ports




Tip: The XDC > Timing Constraints language templates and the Timing Constraints Wizard in the Vivado™ IDE offer timing diagrams and additional details around defining specific timing constraints. You can refer to these sources for additional information.

Specifies the external system-level path delay on a primary output port relative to a clock edge at the interface of the design. The output delay value is specified in nanoseconds (ns), and can be positive or negative, depending on the clock and data relative phase outside the FPGA device.

To accurately model the system-level timing of your FPGA design, you must assign timing delays for objects external to the FPGA onto the primary input or output ports in your design. These delays are defined by the set_input_delay and set_output_delay commands.

Important: If the output port also has a set_max_delay constraint assigned, the specified output delay value is considered part of the max_delay computation. That is, the output delay consumes a portion of the max delay on the timing path that includes the output port.

This command returns nothing if successful, or returns an error if it fails.


-clock <arg> - (Optional) Indicates that the delay is relative to the rising edge of the specified clock.

-reference_pin <arg> - (Optional) Specifies that the delay is relative to the specified pin rather than a clock.

-clock_fall - (Optional) Specifies that the delay is relative to a falling edge of the clock rather than rising edge.

-rise - (Optional) Specifies that the delay is for a rising edge.

-fall - (Optional) Specifies that the delay is for a falling edge

-max - (Optional) Specifies that the delay specified should be treated as a maximum threshold.

-min - (Optional) Specifies that the delay specified should be treated as a minimum threshold.

-add_delay - (Optional) Add the specified delay constraint to the port, to coexist with any other set_output_delay constraints already defined on the port. The default behavior is to replace the existing delays.

-network_latency_included - (Optional) Indicates that the clock network latency of the reference clock is included in the delay value. The Vivado timing engine considers the clock edge reaching the capture flop after the clock latencies unless the specified input or output delay value includes the source latency or network latency.

-source_latency_included - (Optional) Specifies that the source latency of the reference clock is included in the specified delay value.

-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.
Note: Any errors encountered on the command-line, while launching the command, will be returned. Only errors occurring inside the command will be trapped.
-verbose - (Optional) Temporarily override any message limits and return all messages from this command.
Note: Message limits can be defined with the set_msg_config command.

<delay> - (Optional) The delay specified in nanoseconds (ns) to apply to the listed ports. Valid values are floating point numbers, with a default value of 0.

<objects> - (Required) A list of ports to which the delay applies.


The following example sets an output delay on ports relative to the specified clock:

set_output_delay 5.0 -clock [get_clocks cpuClk] [get_ports]

The next example is the same as the prior example except that network latency is now included:

set_output_delay 5.0 -clock [get_clocks cpuClk] \
   -network_latency_included [get_ports]

This example creates a clock named clk_ddr, and defines output delay constraints from data launched by both rising and falling edges of the clock outside the device to the data output of the internal flip-flop that is sensitive to both rising and falling clock edges:

create_clock -name clk_ddr -period 6 [get_ports DDR_CLK_IN]
set_output_delay -clock clk_ddr -max 2.1 [get_ports DDR_OUT]
set_output_delay -clock clk_ddr -max 1.9 [get_ports DDR_OUT] -clock_fall -add_delay
set_output_delay -clock clk_ddr -min 0.9 [get_ports DDR_OUT]
set_output_delay -clock clk_ddr -min 1.1 [get_ports DDR_OUT] -clock_fall -add_delay
Note: The use of the -add_delay option allows the new min and max delay constraints to exist alongside the first delays on the same port.