STA Constraints
STA Constraints
Introduction
Static Timing Analysis Basis
Timing Constraints
Environmental Constraints
Timing exceptions
Large
•
Area
•
•
Small • • •
A D Q OUTZ
CLK
Does not simulate clock cycles and does not use functional
vectors
Introduction
Environmental Constraints
Timing exceptions
TOP
U1 U4
Port A U2
A AIN BUS0 INV0 OUT[1:0]
B Q0 INV D0 Q[1:0]
B BIN
C C U3
CIN BUS1
INV
INV1 D1 Pin
D D Q1
DIN
Clock CLK
ENCODER
CLK REGFILE
CLK
Port
wire INV1,INV0,bus1,bus0; Net
endmodule
Synthesis Process
z Only top level constraints (at the 'current_design' level) are
visible during compile
z Set block level constraints using the complete instance path
name or using the 'current_instance' command
Path X
A D Q OUTZ
Path Y
CLK Z
th
Pa
End-points:
Primary Output ports
Data input pins of sequential devices
Specifying Efficient Constraints
..
Synopsys .. 12
Synopsys Definition : Timing Arc
Pin-to-Pin delay is called a delay timing arc
z net delay arc from cell output pin to next cell input pin
CLK1
path4 path2
Each clock will be associated with a set of paths called a path group
The default path group comprises all paths not associated with a
clock
Specifying Efficient Constraints
..
Synopsys .. 14
Timing Path Exercise
How many timing paths do you see?
How many path groups are there?
set_output_delay 4.0 \
-clock CLK_1 OUTY
OUTY
CLK_1
CLK_2
set_output_delay 4.0 \
-clock CLK_1 OUTY
OUTY
CLK_1 Clock
CLK_2 Clock Group 1 Clock Group 2 Group 1
Specifying Efficient Constraints
..
Synopsys .. 16
Setup and Hold
din
clk
setup
Setup: Minimum time that a data input hold
pin must be stable before the clock Hold: Minimum time that a
transition data input pin must be stable
after the clock transition
Recovery:
clearbar
Recovery
Minimum time that an
asynchronous control input pin
clock must be stable before the clock
active-edge transition
Removal:
clearbar
Removal
Minimum time that an
asynchronous control input pin
must be stable after the clock
clock active-edge transition
minimum minimum
active inactive
pulse width pulse width
CLK CP
TU FF2
TP
CP
TP = clock propagation delay from CLK to FF2/CP TU = clock skew between FF1 and FF2
ff1 ff2
clk clk
CLK
ff1.clk
max clock skew
ff2.clk
ff
E clk
CLK
0 3 6
CLK
glitch due to late
E arrival time of E
ff.clk
Required E
● Link
port load/drive/transition
● Multicycle paths
Specify timing exceptions ● False paths
● Min/max delays,
● Check timing
Perform analysis; create reports ● Constraint reports
● Timing reports
Introduction
Timing Constraints
Environmental Constraints
Timing exceptions
Report example
TO_BE_ANALYZED
D Q M N D Q X D Q S T D Q
FF1 FF2 FF3 FF4
QB QB QB QB
Clk
D Q M N D Q X D Q S T D Q
FF1 FF2 FF3 FF4
QB QB
Clk
1 Clock Cycle
D Q
FF2
Not recommended to use -early / -late to set_clock_uncertainty -hold / -setup Overrides the default '0'
model off-chip jitter apart for advanced transition.
Used if the clock buffers are not present to estimate
tester skew analysis
the delay through the buffers (pre-layout)
Clock uncertainty can model both the Clock Tree Skew
and any off-chip jitter.
Setting latency on a clock object or its physical object
has not the same impact on external delay controlled
by this same clock. Specifying Efficient Constraints
..
Synopsys .. 27
Clock Commands Post-layout
create_clock create_generated_clock
set_dont_touch_network (DC only)
set_clock_uncertainty -hold / -setup
Not recommended to use -early / -late Calculates the Clock Tree latency and uncertainty.
to model off-chip jitter apart for
advanced tester skew analysis Any related generated clock will be automatically
propagated.
TClk-q TM TN TSETUP
Clk DC
You specify calculates
how much time how much
Valid new
is used by A data time
external logic... is left for
(TClk-q + TM) (TN + TSETUP) internal logic
(Input Delay)
TClk-q Ts TT TSETUP
Launch Edge Capture Edge
DC calculates
You specify Clk
how much
how much time Valid new data time
B
is needed by is left for
external logic... internal logic
TClk-q + TS TT + TSETUP
(Output Delay)
TO_BE_ANALYZED
A B
Combo Logic
Clk_virtual Clk_virtual
T1 D Q
TO_BE_ANALYZED
U3 S B Clk_vrt
D Q
T2 D Q
Clk1
External Logic
TEST_Clk a
y Int_Clk
Clk
b
U1
Introduction
Timing Constraints
Environmental Constraints
Timing exceptions
Report example
TO_BE_ANALYZED set_output_delay
set_input_delay
N D Q X D Q S
FF2 FF3
QB QB
CLK
create_clock
set_operating_conditions
set_load
set_driving_cell set_wire_load
OUT
1 5 set_load 5 [get_ports OUT1]
OUT1 A
AN2 set_load [load_of CBA/AN2/A] [get_ports OUT1]
B
TO_BE_SYNTHESIZED
ND2
IN1
worst worst
nominal
Delay nominal Delay Delay worst
best nominal
best
best
A wire load mode specifies the wire load model to use for
nets that cross hierarchical boundaries.
mode = enclosed mode = top
50X50 50X50
40X40 40X40
20x20 30x30 20X20 30X30
50x50
40x40
# Describe environment
set_operating_conditions WCCOM
set_wire_load_mode top A
B Yout
set auto_wire_load_selection false
set_wire_load_model -name 100k_WLM clk
Introduction
Timing Constraints
Environmental Constraints
Timing exceptions
Report example
SYSTEM_SYNCH_SET
FF4
U2
64 x 64
DATA FF1
U1 MULTIPLIER FF2
CLK U3
Solution:
z Add pipeline stage(s) to divide the logic into single-cycle paths
z Ease off the single-cycle requirement & allow more clock cycles
2-cycle example
0 1 2
setup check
wanted default
hold hold
check check
Tp < delay < 2Tp
Introduction
Timing Constraints
Environmental Constraints
Timing exceptions
report_port -verbose
z Returns all attributes and constraints placed on all input and
output ports
report_design
z Returns the current design and environmental attribute such as
operating conditions and wire loads
list_libs / report_lib
z The first command list the library in memory while the second
gives some relevant information regarding a given library
report_disable_timing
z Reports timing arcs which were disabled via set_case_analysis or
set_disable_timing
write_script
z Returns a script with ALL the attributes set on the current_design
z Extremely useful for final sanity checks - File can be large!
check_timing -verbose
z Check for any timing problem such as unmapped logic,
unconstrained paths, missing clocks...
dc_shell-t> check_timing
Warning:
There are 4 register clock pins with no clock.
There are 10 endpoints which are not constrained for maximum delay.
There are timing exceptions which are ignored.
There are max_time_borrow attributes which are ignored.
There are 6 timing loops in the design.
report_constraint
z By default will return the synthesis cost function with all
costs, weights and weighted costs
z Can report all violators for max/min timing and DRC
report_timing
z By default shows the worst max path per path group
report_delay_calculation
z Shows the delay calculation for a pin-to-pin timing arc
Startpoint: U3/OUTPUT_reg[12]
(rising edge-triggered flip-flop clocked by CLOCK)
Endpoint: U2/OUTPUT_reg[2]
(rising edge-triggered flip-flop clocked by CLOCK)
Path Group: CLOCK
Path Type: max
Clk3 Clk4
Clk1
ClkEn U1 Clk Gating Check Setup
Clk Gating Check Hold
Clk2
Timing Model
Max Skew
Min Clk Pulse Width
Min Clk Pulse Width
Data to Data
Setup and Hold
In more detail