BeginnerQuestion 15 of 95

What does set_output_delay do?

From PDVerse STA Mentor Guide, part of the pdVerse Mentor Guide

Short Answer

set_output_delay (SDC) tells the tool how much time must be left over, after a signal leaves the chip's output port, for the board and the receiving device's own setup or hold needs. Like set_input_delay, it's a timing assertion the tool uses for its math, not a delay it physically inserts.

Technical Reference DiagramWhat does set_output_delay do?

Technical Explanation

This command constrains the far end of the chip boundary, the mirror image of what set_input_delay does at the near end.

  • What it models. A downstream chip on the board needs the signal to arrive before its own capturing clock edge, and to stay stable a bit after. set_output_delay reserves that needed time on the far side, so the internal path budget shrinks by exactly that amount.
  • Basic syntax:
# [SDC]  constraints.sdc
  set_output_delay -max 1.4 -clock EXT_CLK [get_ports data_out]
  set_output_delay -min -0.2 -clock EXT_CLK [get_ports data_out]
  • -max feeds the setup check on the reg2out path โ€” it's the time the downstream device needs before its own clock edge, subtracted from the internal budget.
  • -min feeds the hold check and can legitimately be negative, if the interface specification calls for it โ€” the sign has to match how the downstream device's own hold requirement was defined.
  • A virtual clock covers a receiver with no on-chip clock reference. If the downstream device runs off its own separate oscillator, defining a virtual clock with create_clock (no port or pin attached) and referencing it here gives the tool a timing frame for that interface without pretending the external clock is part of this design.

Common Mistake

  • The trap: entering a positive value for the minimum output delay when the receiving device's interface spec actually calls for a negative hold requirement.
  • Positive numbers feel like the natural default, since most delay values in a constraint file are positive.
  • Getting the sign wrong makes the tool's hold check either too strict or, worse, silently too lenient โ€” it's worth checking the interface specification's sign convention directly instead of guessing.

Follow-up Question & Model Response

How does set_output_delay interact with a virtual clock?

Candidate Model Response: The virtual clock stands in for a clock that exists on the receiving device but has no pin or port anywhere in this design. Defining it with create_clock and no attached object gives the tool a named timing reference with a period and phase, and referencing that virtual clock's name in set_output_delay lets the tool compute a correct required time at the output port โ€” exactly as if the real external clock had been visible to the design, without ever pretending the design actually contains it.

Practical Example

On a high-speed SPI master interface, set_output_delay -max 1.8 -clock SPI_CLK [get_ports spi_mosi] reserves 1.8 ns of setup margin for an external flash memory chip reading that same signal, ensuring the internal path driving spi_mosi finishes early enough to meet the flash's own timing requirement.

Complete STA Handbook

Get the complete 10-chapter STA handbook covering setup/hold margins, clock modeling, OCV/POCV, crosstalk noise, and PrimeTime closure.

Offline PDF Bundle

Want all 1109 questions offline?

Get the complete 4-book PDF bundle (PnR, STA, MMMC, Low Power) with a clickable table of contents - no ads, no internet needed.

See what's inside the bundle
VLSI Physical Design Planning Handbook โ€” fourteen chaptersDesign PlanningFourteen chapters, floorplanning through timing budgets.