Professional Documents
Culture Documents
Verification
HDL
RTL
Synthesis
netlist
a 0 d
q
b 1
Library s clk
logic
optimization
a 0 d
q
netlist b 1
s clk
physical
design
layout
2
Design Process
Verify:
verify the Implement:
correctness of refine the
design and design
implementation through all
phases
Implementation Verification
HDL
RTL manual
Synthesis design
netlist a
b
0
1
d
q
Is the
Library/
logic
s clk
implementation
module
generators optimization consistent
with the original
netlist
a
b
0
1
d
q design intent?
s clk
physical Is what I
design implemented
what I
layout
wanted?
4
Implementation verification for ASIC’s
functionality:
b 1
Library/
module logic
s clk
• 0-1 behavior on
generators optimization a 0 d
regression test
b 1
q
set
s clk
layout
Software Simulation
a
Simulation
Simulation
0 d
q
monitor
driver 1
(yes/no)
b
and
(vectors)
s
clk
speed
6
Alternative - Static Sign-off
HDL Use static
analysis
RTL manual techniques to
Synthesis design verify:
netlist a 0 d
q
functionality:
• formal
b 1
Library/
module logic
s clk
equivalence-
generators optimization a 0 d
checking
b 1
q
techniques – we’ll
s clk talk about this
netlist later
ASIC
physical signoff and timing:
design • use static timing
analysis
layout
8
Approach of Static Timing Verification
Combinational
Combinational Combinational logic
logic logic
clk
clk clk
Q1 Q2
Tmax + Tsetup ≤ T
Q1 Q2
Q1 Q2
critical path,
Tclock1 ~5 logic levels Tclock2
clock
1212
Cycle Time - Clock to Q
Q1 Q2
Q1 Q2
hold time –
D stable
after clock
When signal
may change
15
Delay calculation
z Delay numbers for gates
z Delay numbers for wires
16
Delay Modeling and Delay Computation
Single path delay computation
tG1 tG2
tW1 tG3
D D
To simulate complex circuits, need accurate models of
z Gate delay
z Interconnect delay
Path delay = sum of 50%
Vdd
100% propagation delays
50%
18
Gate Timing Characterization
A
CL
B D F
CL
19
tslew
Vdd
tpd
Time
20
Scope of Variation
Inter-Die Variation
Intra-Die Variation
• As an ASIC vendor we
must ensure that our
%
N(µ,σ)
chips work across this
range of variation
• This is a very restrictive
condition and will be
responsible for many
conservative
assumptions throughout
timing analysis
21
3 corner Model:
TT, SS, FF
Corners from SPICE document
5 corner model:
Must use worst case assumptions for all
Slow/set-up and Fast/hold analysis 22
How Is Gate Delay Computed?
Non-linear effects reflected in tables
DG = f (CL, Sin) and Sout = f (CL, Sin)
z Non-linear
Output Output
Capacitance Capacitance
Vdd
A
D
A F
B tpd F
B CL
Time
Vdd
A
tpd F
Time 24
Elements of Timing Verification
Delay calculation
z Delay numbers for gates
z Delay numbers for wires
25
Jan M. Rabaey
Anantha Chandrakasan
Borivoje Nikolic
26
Wire-Dominated Chips
Wiring requirements grow dramatically
Interconnect effects
z Large RC and RLC delays
z Inter-wire coupling
Interconnect becomes a
dominant factor in
limiting chip performance
Lumped RC model
z Simple: R – total resistance, Vin R Vout
C – total capacitance
z Pessimistic and inaccurate C
z Spurious oscillations
Distributed RC model
z Required for longer interconnect lines
z Exact solution requires solving “diffusion equation”
z No closed-form solution - approximations
R1 R2 RN
C1 C2 CN
28
Wire Delay Modeling: Elmore Constant
R1 R2 RN
C1 C2 CN
N i
τN = ∑ Ci ∑ R j = C1R1 + C2 (R1 + R2 ) + ... + Ci (R1 + R2 + ... + Ri )
i =1 j =1
29
C12 S W
C11 C11 T
C10 H
31
Current flow
W Electrical-field lines
ε di S 1
cint = WL SCwire = =
t di S ⋅ SL SL
32
Interwire Capacitance
fringing parallel
33
34
Wire Load Models
Synthesis must produce circuits that meet the designer’s timing
constraints
1
100 500 1000 2000 3000
block size (gates)
35
36
Library (.lib) Embodies Gate/Wire Delay Info
Contains for each cell:
z Functional information: cell = a *b * c
z Timing information: function of
z input slew
z intrinsic delay
z output capacitance
Library
non-linear models used in tabular approach
z Physical footprint (area)
z Power characteristics
37
Delay calculation
z Delay numbers for gates
z Delay numbers for wires
38
Elements of Static Timing Verification - 2
Combinational
Combinational Combinational logic
logic logic
clk
clk clk
Clocking issues
z Regimes: single-phase, two-phase, multi-phase
z overlapping, non-overlapping
z qualified clocks, clock skew
39
Clock Skew
The clock may be delivered to each FF at a different,
unsynchronized, time
Combinational
Combinational Combinational logic
logic logic
clk
clk clk
Typical Simplifications
Clocking issues
z clocking regime treated as orthogonal issue
Delay modeling
z gate - fixed pin-to-pin delays,
z interconnect - non-linear effects captured in tables
z Process-voltage-temperature - worst-case values used
Delay calculation
z ``extract’’ combinational logic from sequential circuit
z Choose for accuracy
z Simple ``longest-path analysis’’
z Boolean analysis excluding false paths
42
Elements of Timing Verification
Delay calculation
z Delay numbers for gates
z Delay numbers for wires
43
Combinational
Combinational Combinational logic
logic logic
clk
clk clk
original circuit
Combinational
logic
extracted block
Each combinational block
.05 X
Arrival time in 0
green A .20
W 2
.10 1
.05 Z
Interconnect 0 C Y 2 f
delay in red .15
.20
2
B .20
1 .05
Gate delay in
blue
What’s the right
mathematical
object to use to
represent this
physical object?
45
Problem formulation - 1
Use a labeled .05 X
0
directed graph .20
W
A 2
G = <V,E> 1
.10 Z
.05
Vertices represent 0 C Y 2 f
gates, primary .15
.20
2
inputs and B .20
primary outputs 1 .05
Edges represent
A
0 X
wires 2
0 1 .20
Labels represent 0
C .1 .05 2 .15
W f
delays .2 Z
.20
Now what do we do 1 2
1 Y
with this? B
46
Problem formulation - Arrival Time
Arrival time A(v) for a node v is time when signal arrives at
node v
X
A(X) dx → z
A(Z)
Z
A(Y) dY → z
Y
A( υ) = max (A(u) + du →υ )
u∈FI( υ )
47
Problem formulation - 2
Use a labeled .05 X
0
directed graph .20
W
A 2
G = <V,E> 1
.10 Z
.5
Enumerate all paths 0 C Y 2 f
- choose the .15
.20
2
longest? B .20
1 .05
A
0 X 2
0 1 .20
0
C .1 .5 2 .15
W f
.2 Z
.20
1
1 Y 2
B
48
Problem formulation - 3
0 A (Kirkpatrick 1966, IBM JRD)
0 X
2 Complexity?
0 1 .20
0
0 C0 .1 .5 2 .15 0
W f
.2 Z
Origin .1 0 .20
Y 2
1
B
Compute the longest path in a graph G = <V,E,delay,Origin> (delay is set of labels, Origin is the super-source
of the DAG)
Forward-prop(W){
for each vertex v in W
for each edge <v,w> from v
Final-delay(w) = max(Final-delay(w), delay(v) + delay(w) + delay(<v,w>))
if all incoming edges of w have been traversed
add w to W
}
Longest path(G)
Forward_prop(Origin)
}
49
Algorithm Execution
0 AO
0 X
2
0 1 .20
0
0 C0 .1 .5 2 .15 0
W f
.2 Z
Origin .1 0 .20
Y 2
1
B
Compute the longest path in a graph G = <V,E,delay,Origin> (delay is set of labels, Origin is the super-source
of the DAG)
Forward-prop(W){
for each vertex v in W
for each edge <v,w> from v
Final-delay(w) = max(Final-delay(w), delay(v) + delay(w) + delay(<v,w>))
if all incoming edges of w have been traversed
add w to W
}
Longest path(G)
Forward_prop(Origin)
}
50
Algorithm Execution
0 AO
0 X
2
0 1 .20
0 .15 0
0 0C .1 .5 2
0 W f
.2 Z
Origin .1 0 .20
Y 2
1
B
Compute the longest path in a graph G = <V,E,delay,Origin> (delay is set of labels, Origin is the super-source
of the DAG)
Forward-prop(W){
for each vertex v in W
for each edge <v,w> from v
Final-delay(w) = max(Final-delay(w), delay(v) + delay(w) + delay(<v,w>))
if all incoming edges of w have been traversed
add w to W
}
Longest path(G)
Forward_prop(Origin)
}
51
Algorithm Execution
0 AO
0 X
2
0 1 .20
0
0
0 C0 .1 .5 2 .15 0
W f
.2 Z
Origin .1 0 .1 .20
Y 2
1
B
Compute the longest path in a graph G = <V,E,delay,Origin> (delay is set of labels, Origin is the super-source
of the DAG)
Forward-prop(W){
for each vertex v in W
for each edge <v,w> from v
Final-delay(w) = max(Final-delay(w), delay(v) + delay(w) + delay(<v,w>))
if all incoming edges of w have been traversed
add w to W
}
Longest path(G)
Forward_prop(Origin)
}
52
Algorithm Execution
0 AO 2 X
0 2.0
0 1 .20
0
0
0 C0 .1 .5 2 .15 0
W f
.2 Z
Origin .1 0 .1 .20
Y 2
1
B
Compute the longest path in a graph G = <V,E,delay,Origin> (delay is set of labels, Origin is the super-source
of the DAG)
Forward-prop(W){
for each vertex v in W
for each edge <v,w> from v
Final-delay(w) = max(Final-delay(w), delay(v) + delay(w) + delay(<v,w>))
if all incoming edges of w have been traversed
add w to W
}
Longest path(G)
Forward_prop(Origin)
}
53
Algorithm Execution
AO
0 X
2
0 1 1.1 .20
0
0 C0 .1 .5 2 .15 0
W f
.2 Z
Origin .1 .1 .20
Y 2
1
B
Compute the longest path in a graph G = <V,E,delay,Origin> (delay is set of labels, Origin is the super-source
of the DAG)
Forward-prop(W){
for each vertex v in W
for each edge <v,w> from v
Final-delay(w) = max(Final-delay(w), delay(v) + delay (w) + delay(<v,w>))
if all incoming edges of w have been traversed
add w to W
}
Longest path(G)
Forward_prop(Origin)
}
54
Algorithm Execution
AO
0 X
2
0 1 1.1 .20
0
0 C0 .1 .5 2 .15 0
W f
2.2
.2 Z
Origin .1 .1 .20
1 Y 2
B
Compute the longest path in a graph G = <V,E,delay,Origin> (delay is set of labels, Origin is the super-source
of the DAG)
Forward-prop(W){
for each vertex v in W
for each edge <v,w> from v
Final-delay(w) = max(Final-delay(w), delay(v) + delay(w) + delay(<v,w>))
if all incoming edges of w have been traversed
add w to W
}
Longest path(G)
Forward_prop(Origin)
}
55
Algorithm Execution
AO
0 X
2
0 1 1.1 .20
0
0 C0 .1 .5 2 .15 0
W f
.2 3 Z
Origin .1 .1 .20
1 Y 2
B
Compute the longest path in a graph G = <V,E,delay,Origin> (delay is set of labels, Origin is the super-source
of the DAG)
Forward-prop(W){
for each vertex v in W
for each edge <v,w> from v
Final-delay(w) = max(Final-delay(w), delay(v) + delay(w) + delay(<v,w>))
if all incoming edges of w have been traversed
add w to W
}
Longest path(G)
Forward_prop(Origin)
}
56
Algorithm Execution
AO 2 X
0 3.6
0 1 1.1 .20
0
0 C0 .1 .5 2 .15 0
W f
.2 3 Z
Origin 1 0
2
.20
1 Y
B
Compute the longest path in a graph G = <V,E,delay,Origin> (delay is set of labels, Origin is the super-source
of the DAG)
Forward-prop(W){
for each vertex v in W
for each edge <v,w> from v
Final-delay(w) = max(Final-delay(w), delay(v) + delay(w) + delay(<v,w>))
if all incoming edges of w have been traversed
add w to W
}
Longest path(G)
Forward_prop(Origin)
}
57
Algorithm Execution
AO 2 X
0 3.6
0 1 1.1 .20
0
0 C0 .1 .5 2 5.8 .15
0
W f
2
.2 Z
Origin 1 0 .20
Y 3
1
B
Compute the longest path in a graph G = <V,E,delay,Origin> (delay is set of labels, Origin is the super-source
of the DAG)
Forward-prop(W){
for each vertex v in W
for each edge <v,w> from v
Final-delay(w) = max(Final-delay(w), delay(v) + delay(w) + delay(<v,w>))
if all incoming edges of w have been traversed
add w to W
}
Longest path(G)
Forward_prop(Origin)
}
58
Algorithm Execution
AO 2 X
0 3.6
0 1 1.1 .20
0
0 C0 .1 .5 2 5.8 .15
0
W f
2
.2 Z
Origin 1 0 .20
Y 3
1
B
Compute the longest path in a graph G = <V,E,delay,Origin> (delay is set of labels, Origin is the super-source
of the DAG)
Forward-prop(W){
for each vertex v in W
for each edge <v,w> from v
Final-delay(w) = max(Final-delay(w), delay(v) + delay(w) + delay(<v,w>))
if all incoming edges of w have been traversed
add w to W
}
Longest path(G)
Forward_prop(Origin)
}
59
Algorithm Execution
AO 2 X
0 3.6
0 1 1.1 .20 5.95
0
0 C0 .1 .5 2 5.8 .15
W f
2
.2 Z
Origin 1 0 .20 0
Y 3
1
B
Compute the longest path in a graph G = <V,E,delay,Origin> (delay is set of labels, Origin is the super-source
of the DAG)
Forward-prop(W){
for each vertex v in W
for each edge <v,w> from v
Final-delay(w) = max(Final-delay(w), delay(v) + delay(w) + delay(<v,w>))
if all incoming edges of w have been traversed
add w to W
}
Longest path(G)
Forward_prop(Origin)
}
60
Critical Path (sub-graph)
AO 2 X
0 3.6
0 1 1.1 .20 5.95
0
0 C0 .1 .5 2 5.8 .15
W f
2
.2 Z
Origin 1 0 .20 0
Y 3
1
B
Compute the longest path in a graph G = <V,E,delay,Origin> (delay is set of labels, Origin is the super-source
of the DAG)
Forward-prop(W){
for each vertex v in W
for each edge <v,w> from v
Final-delay(w) = max(Final-delay(w), delay(v) + delay(w) + delay(<v,w>))
if all incoming edges of w have been traversed
add w to W
}
Longest path(G)
Forward_prop(Origin)
}
61
clock
62
Required Time
Then recursively
R( υ) = min (R(u) − dυ→u )
u∈FO( υ )
AO 2 X
0 3.6
0 1.45 1 1.1 .20 5.95
0 C 0 .1 .5 3.45 2 5.8 .15
0
0.95
W f
2 Z 5.65 5.80
-0.15 .2
Origin 0 .20 0
1 3
1 Y
0.45 3.45
B
64
Timing Slack
From arrival and required time can compute slack. For each
node v:
S( υ) = R( υ) − A( υ)
A
X
1.45
C -0.15
-0.15
W f
-0.15 Z -0.15 -0.15
Origin
Y
0.45 0.45
B
66
Timing Slack Properties R. Nair et al, “Generation of Performance
Constraints for Layout”, TCAD 1989.
Lemma 1: For any path ρ =< v1,v 2 ,...,vk > through circuit,
S(vi ) ≤ S(ρ), for 1 ≤ i ≤ k
By increasing delay on only one cell in the path, can set path
slack to zero -> other cells also have zero slack.
67
Combinational
Combinational Combinational logic
logic logic
clk
clk clk
68
Elements of Timing Verification
Delay calculation
z Delay numbers for gates
z Delay numbers for wires
69
co c1 0 c2
Full Adder Full Adder
p1
p0 co 1
a0 b0 a1 b1
and
70
Inside Carry Bypass Adder - 1
late arriving
ci-1
ai
bi si+1
ai 1 ci+1
bi 0
ai+1
bi+1
ai+1
bi+1
71
ai 1 needed 1 ci+1
bi 0
1 needed
ai+1
bi+1
1 created
ai+1
bi+1
72
Capturing Functional Behavior in Analysis
73
74
Chen-Du Path Sensitization Condition
Path from a gate input to the gate output is true iff the input
gives
1. The earliest controlling value
2. The latest non-controlling value if all inputs are non-
controlling
a a
b b
75
Incremental timing
76
Current Status of Static Timing Verification
Static timing verification is now the principal method for verifying
timing in the majority of digital circuits
z ASICs:
z Gate-level models from Semiconductor vendors
z Driven by fast interpolation from tables
z Estimated (wire-load model) or back-annotated
capacitances
z Custom (e.g. Intel microprocessor)/COT (e.g. nVidia, ATI graphics
chips)
z Mixture of above and transistor-level static-timing
verification
z Transistor level based on extracted device and wiring
attributes
z Simulation of each transistor network builds accurate
model
77
Extras
Rent’s rule
RC Models
78
Statistical Wire Length Estimation
79
Rent’s Rule
(J. Davis)
Wirelength (gate pitches) 81
C2
R2
4
s R1 1
C4
R3 R4
C1
3
C3 Ri
i
Ci