Advanced Interconnect Optimizations
Post on 31-Dec-2015
45 Views
Preview:
DESCRIPTION
Transcript
Advanced Interconnect Optimizations
Buffers Improve Slack
RAT = 300Delay = 350Slack = -50
RAT = 700Delay = 600Slack = 100
RAT = 300Delay = 250Slack = 50
RAT = 700Delay = 400Slack = 300
slackmin = -50
slackmin = 50Decouple capacitive load from critical path
RAT = Required Arrival Time
Slack = RAT - Delay
Timing Driven Buffering Problem Formulation
• Given– A Steiner tree– RAT at each sink– A buffer type– RC parameters– Candidate buffer locations
• Find buffer insertion solution such that the slack at the driver is maximized
Candidate Buffering Solutions
Candidate Solution Characteristics
• Each candidate solution is associated with– vi: a node
– ci: downstream capacitance
– qi: RAT
vi is a sinkci is sink capacitance
v is an internal node
Van Ginneken’s Algorithm
Candidate solutions are propagated toward the source
Dynamic Programming
Solution Propagation: Add Wire
• c2 = c1 + cx
• q2 = q1 – rcx2/2 – rxc1
• r: wire resistance per unit length
• c: wire capacitance per unit length
(v1, c1, q1)(v2, c2, q2)x
8
Solution Propagation: Insert Buffer
• c1b = Cb
• q1b = q1 – Rbc1 – tb
• Cb: buffer input capacitance
• Rb: buffer output resistance
• tb: buffer intrinsic delay
(v1, c1, q1)(v1, c1b, q1b)
Solution Propagation: Merge
• cmerge = cl + cr
• qmerge = min(ql , qr)
(v, cl , ql) (v, cr , qr)
Solution Propagation: Add Driver
• q0d = q0 – Rdc0 = slackmin
• Rd: driver resistance
• Pick solution with max slackmin
(v0, c0, q0)(v0, c0d, q0d)
Example of Solution Propagation
(v1, 1, 20)22
v1 v1
(v2, 3, 16)
• r = 1, c = 1• Rb = 1, Cb = 1, tb = 1• Rd = 1
(v2, 1, 12)
v1
(v3, 5, 8)
v1
(v3, 3, 8)
slack = 5
slack = 3
Add wire
Add wire
Insert buffer Add wire
Add driver
Add driver
12
Example of Merging
Left candidates
Right candidates
Merged candidates
Solution Pruning
• Two candidate solutions– (v, c1, q1)
– (v, c2, q2)
• Solution 1 is inferior if – c1 > c2 : larger load
– and q1 < q2 : tighter timing
Pruning When Insert Buffer
They have the same load cap Cb, only the one with max q is kept
15
Generating Candidates
(1)
(2)
(3)
From Dr. Charles Alpert
16
Pruning Candidates
(3)
(a) (b)
Both (a) and (b) “look” the same to the source.Throw out the one with the worst slack
(4)
17
Candidate Example Continued
(4)
(5)
18
Candidate Example ContinuedAfter pruning
(5)
At driver, compute which candidate maximizesslack. Result is optimal.
19
Merging Branches
Right Candidates
Left Candidates
20
Pruning Merged Branches
Critical
With pruning
21
Van Ginneken Example
(20,400)
(20,400)(30,250)(5, 220)
WireC=10,d=150
BufferC=5, d=30
(20,400)
BufferC=5, d=50C=5, d=30
WireC=15,d=200C=15,d=120
(30,250)(5, 220)
(45, 50)(5, 0)(20,100)(5, 70)
22
Van Ginneken Example Cont’d
(20,400)(30,250)(5, 220)
(45, 50)(5, 0)(20,100)(5, 70)
(5,0) is inferior to (5,70). (45,50) is inferior to (20,100)
(20,400)(30,250)(5, 220)
(20,100)(5, 70)(30,10)
(15, -10)
Pick solution with largest slack, follow arrows to get solution
Wire C=10
Basic Data Structure
(c1, q1) (c2, q2) (c3, q3)
Sorted list such that
• c1 < c2 < c3
• If there is no inferior candidates q1 < q2 < q3
Worse load cap
Better timing
24
Prune Solution List
(c1, q1) (c2, q2) (c3, q3)
Increasing c
q1 < q2 ?
(c4, q4)
q3 < q4 ?
Y
NPrune 2 q1 < q3 ?
q2 < q3 ?
Y
q3 < q4 ?
Y
Prune 3 q1 < q4 ?
N Prune 3
N
N Prune 4N Prune 4
q2 < q4 ?
25
Pruning In Merging
(cl1, ql1)
(cl2, ql2)
(cl3, ql3)
(cr1, qr1)
(cr2, qr2)
ql1 < ql2 < qr1 < ql3 < qr2
Merged candidate
s
(cl1+cr1, ql1)
(cl2+cr1, ql2)
(cl3+cr1, qr1)
(cl3+cr2, ql3)
(cl1, ql1)
(cl2, ql2)
(cl3, ql3)
(cr1, qr1)
(cr2, qr2)
(cl1, ql1)
(cl2, ql2)
(cl3, ql3)
(cr1, qr1)
(cr2, qr2)
(cl1, ql1)
(cl2, ql2)
(cl3, ql3)
(cr1, qr1)
(cr2, qr2)
Left candidate
s
Right candidate
s
Van Ginneken Complexity
• Generate candidates from sinks to source
• Quadratic runtime
– Adding a wire does not change #candidates
– Adding a buffer adds only one new candidate
– Merging branches additive, not multiplicative
– Linear time solution list pruning
• Optimal for Elmore delay model
Multiple Buffer Types
(v1, 1, 20)22
v1
v1
(v2, 3, 16)
• r = 1, c = 1
• Rb1 = 1, Cb1 = 1, tb1 = 1
• Rb2 = 0.5, Cb2 = 2, tb2 = 0.5
• Rd = 1
(v2, 1, 12)
v1
(v2, 2, 14)
top related