Input and Output Delays in Static Timing Analysis (STA)
set_input_delay
and set_output_delay
in Synopsys Design Constraints (SDC) format are used to specify these timing characteristic-clock clock_name
: Specifies the reference clock that triggers the signal reaching the input port. This is typically the clock that drives the launching flip-flop or latch.-clock_fall
: By default, it is assumed that the delay specified is with respect to the positive edge of the clock mentioned. However, if the flop F1 is triggered by negative edge of the clockthen option -clock_fall needs to be added.-level_sensitive
: Used when the launching device is a latch. It accounts for time borrowing by the launching latch.
Delay Type:
-min
: Qualifies the delay value as the earliest arrival time, used for hold checks.-max
: Qualifies the delay value as the latest arrival time, used for setup checks. Without-min
or-max
, the specified value is used for both.-add_delay
: Allows specification of input delays with respect to multiple reference events on the same port.
Output Delay
For output ports, the set_output_delay
command specifies the timing for signals traveling outside the block before being sampled by the receiving flip-flop.
Clock Specification for Output Delay:
- Reference clock for output delay is typically the clock that triggers the sampling flip-flop or latch at the receiving end.
Common Mistakes:
- New designers often confuse the reference clocks for
set_input_delay
andset_output_delay
. The launching clock should be used forset_input_delay
, while the sampling clock should be used forset_output_delay
.
- New designers often confuse the reference clocks for
Miniman and Maximin Delay
Data valid window |
Data Valid Window
The designer needs to specify the earliest time at which a signal can change at the input port. This also means the minimum time before which the input signal will not reach the input port. Consequently, the previous value will be held at the input port until this time. This minimum value is useful for ensuring that the input signal does not violate the hold requirement on a flip-flop. The designer also needs to specify the maximum time within which the input signal will surely be available at the input port. This also means the latest time within which all changes to the signal will be available at the input port. This maximum time is used to ensure that the signal meets the setup requirement of the flip-flop.
Common Mistakes for New Designers
Example Commands
Copy Code Example
# Example of set_input_delay
set_input_delay -clock clk1 -max 5.0 [get_ports in1]
set_input_delay -clock clk1 -min 2.0 [get_ports in1]
# Example of set_output_delay
set_output_delay -clock clk2 -max 6.0 [get_ports out1]
set_output_delay -clock clk2 -min 3.0 [get_ports out1]
# Example of setting input transition
set_drive 1 [get_ports in1]
set_driving_cell -lib_cell AND2X1 [get_ports in1]
set_input_transition 0.5 [get_ports in1]
# Example of setting output load
set_fanout_load 4 [get_ports out1]
set_load 0.1 [get_ports out1]
# Example of setting wire load model
set_wire_load_model -name "wlm1"
# Example of set_input_delay
set_input_delay -clock clk1 -max 5.0 [get_ports in1]
set_input_delay -clock clk1 -min 2.0 [get_ports in1]
# Example of set_output_delay
set_output_delay -clock clk2 -max 6.0 [get_ports out1]
set_output_delay -clock clk2 -min 3.0 [get_ports out1]
# Example of setting input transition
set_drive 1 [get_ports in1]
set_driving_cell -lib_cell AND2X1 [get_ports in1]
set_input_transition 0.5 [get_ports in1]
# Example of setting output load
set_fanout_load 4 [get_ports out1]
set_load 0.1 [get_ports out1]
# Example of setting wire load model
set_wire_load_model -name "wlm1"
0 Comments