1 / 27

Advanced Interconnect Optimizations

Advanced Interconnect Optimizations. Buffers Improve Slack. RAT = 300 Delay = 350 Slack = -50. slack min = -50. RAT = 700 Delay = 600 Slack = 100. RAT = Required Arrival Time Slack = RAT - Delay. RAT = 300 Delay = 250 Slack = 50. Decouple capacitive load from critical path.

Download Presentation

Advanced Interconnect Optimizations

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. AdvancedInterconnect Optimizations

  2. Buffers Improve Slack RAT = 300 Delay = 350 Slack = -50 slackmin = -50 RAT = 700 Delay = 600 Slack = 100 RAT = Required Arrival Time Slack = RAT - Delay RAT = 300 Delay = 250 Slack = 50 Decouple capacitive load from critical path slackmin = 50 RAT = 700 Delay = 400 Slack = 300

  3. 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

  4. Candidate Buffering Solutions

  5. Candidate Solution Characteristics • Each candidate solution is associated with • vi: a node • ci: downstream capacitance • qi: RAT vi is a sink ciis sink capacitance vis an internal node

  6. Van Ginneken’s Algorithm Candidate solutions are propagated toward the source Dynamic Programming

  7. Solution Propagation: Add Wire • c2 = c1 + cx • q2 = q1 – rcx2/2 – rxc1 • r: wire resistance per unit length • c: wire capacitance per unit length x (v1, c1, q1) (v2, c2, q2)

  8. Solution Propagation: Insert Buffer (v1, c1, q1) (v1, c1b, q1b) • c1b = Cb • q1b = q1 – Rbc1– tb • Cb: buffer input capacitance • Rb: buffer output resistance • tb: buffer intrinsic delay

  9. Solution Propagation: Merge • cmerge = cl + cr • qmerge = min(ql , qr) (v, cl , ql) (v, cr , qr)

  10. Solution Propagation: Add Driver (v0, c0, q0) (v0, c0d, q0d) • q0d = q0 – Rdc0 = slackmin • Rd: driver resistance • Pick solution with max slackmin

  11. Example of Solution Propagation • r = 1, c = 1 • Rb = 1, Cb = 1, tb = 1 • Rd = 1 2 2 (v1, 1, 20) Add wire (v2, 3, 16) (v2, 1, 12) v1 v1 Insert buffer Add wire Add wire (v3, 5, 8) (v3, 3, 8) v1 v1 slack = 3 slack = 5 Add driver Add driver

  12. Example of Merging Left candidates Right candidates Merged candidates

  13. 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

  14. Pruning When Insert Buffer They have the same load cap Cb, only the one with max q is kept

  15. (1) (2) (3) Generating Candidates From Dr. Charles Alpert

  16. (3) (b) (a) Both (a) and (b) “look” the same to the source. Throw out the one with the worst slack (4) Pruning Candidates

  17. (4) (5) Candidate Example Continued

  18. (5) At driver, compute which candidate maximizes slack. Result is optimal. Candidate Example Continued After pruning

  19. Left Candidates Right Candidates Merging Branches

  20. Critical With pruning Pruning Merged Branches

  21. Van Ginneken Example (20,400) Buffer C=5, d=30 Wire C=10,d=150 (30,250) (5, 220) (20,400) Buffer C=5, d=50 C=5, d=30 Wire C=15,d=200 C=15,d=120 (30,250) (5, 220) (45, 50) (5, 0) (20,100) (5, 70) (20,400)

  22. Van Ginneken Example Cont’d (30,250) (5, 220) (45, 50) (5, 0) (20,100) (5, 70) (20,400) (5,0) is inferior to (5,70). (45,50) is inferior to (20,100) Wire C=10 (30,250) (5, 220) (20,100) (5, 70) (30,10) (15, -10) (20,400) Pick solution with largest slack, follow arrows to get solution

  23. Basic Data Structure Worse load cap (c1, q1) (c2, q2) (c3, q3) Better timing • Sorted list such that • c1 < c2 < c3 • If there is no inferior candidates q1 < q2 < q3

  24. Prune Solution List Increasing c (c1, q1) (c2, q2) (c3, q3) (c4, q4) N N q1 < q2? q1 < q3? q1 < q4? Prune 2 Prune 3 Y Y N q2 < q4? Prune 3 q2 < q3? Y N Prune 4 q3 < q4? N Prune 4 q3 < q4?

  25. Pruning In Merging Left candidates Right candidates ql1 < ql2 < qr1 < ql3 < qr2 (cl1, ql1) (cl2, ql2) (cl3, ql3) (cr1, qr1) (cr2, qr2) (cl1, ql1) (cl2, ql2) (cl3, ql3) (cr1, qr1) (cr2, qr2) Merged candidates (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)

  26. 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

  27. Multiple Buffer Types • r = 1, c = 1 • Rb1 = 1, Cb1 = 1, tb1 = 1 • Rb2 = 0.5, Cb2 = 2, tb2 = 0.5 • Rd = 1 2 2 (v1, 1, 20) (v2, 3, 16) v1 (v2, 2, 14) (v2, 1, 12) v1 v1

More Related