Transcript
Page 1: Minimum-Buffered Routing of Non-Critical Nets  for Slew Rate and Reliability Control

Annual Review September 2001

Minimum-Buffered Routing of Non-Critical Nets for Slew Rate and Reliability Control B. Liu, A.B. Kahng, I. Mandoiu

Abstract

This poster introduces a new minimum-buffered routing problem formulation which requires that the capacitive load of each buffer and of the source driver be upper-bounded by a given constant. Our contributions include:- A linear time greedy algorithm for optimally buffering a given tree with a single non-inverting buffer type- A linear time dynamic programming algorithm for optimally buffering a given tree with a single inverting buffer type- A dynamic programming algorithm for optimally buffering a given tree under additional buffer skew constraints

- Provably good algorithms with approximation ratios of 2(1+) and 4(1+) for simultaneous routing and buffering with single non-inverting, respectively inverting, buffer type- Heuristics with improved practical performance for simultaneous routing and buffering

REFERENCESC. J. Alpert, A.B. Kahng, B. Liu, I. Mandoiu and A. Zelikovsky, “Minimum-Buffered Routing for Slew Rate and Reliability Control”, to appear in ICCAD-2001C. Albrecht, A. B. Kahng, B. Liu, I. Mandoiu and A. Zelikovsky, “On the Skew Bounded Minimum Buffer Routing Tree Problem”, to appear in SASIMI-2001

Motivation

In order to initiate meaningful placement and timing optimizations , any design flow requires early elimination of all electrical violations (e.g., cap load and slew violations), even for non-critical nets. Bounds on load caps

- Serve as proxies for signal slew rate bound

- Improve coupling noise immunity

- Reduce delay uncertainty due to coupling noise

- Improve reliability with respect to hot-carrier and AC self-heating effects

- Facilitate technology migration since designs are more balanced

- Guarantee bounded input rise/fall times at buffers and sinks

To make progress with any methodology, it is crucial to have a fast and resource efficient method for fixing buffer load violations. Of particular interest are practical methods for buffering non-critical nets that have up to tens of thousands of sinks (e.g., scan enable).

In clock-tree routing it is also necessary to bound the buffer skew, i.e., the difference between the maximum and the minimum number of buffers over all source-to-sink paths in a routing tree, since buffer skew directly affects the actual clock skew.

Given: net N with

– Source r, sinks S

– Input capacitance Cs for each sink s in S

– Unit length wire capacitance Cw

– Inverting or non-inverting buffer type, with• Buffer input capacitance Cb

• Load cap upper-bound CU

– Sink polarities (optional)

– Buffer-skew bound (optional)

Find: buffered routing tree for N such that

– Load cap of each buffer and of the source ris at most CU

– Sink polarity constraints are satisfied

– Buffer-skew is at most – The number of inserted buffers is minimized

Tree buffered with inverters

Tree with zero buffer-skew

Bounded-load Buffered tree

Minimum-Buffered Routing Problem

CU 0.75CU

0.75CU

Cw=Cb=0

+CU +0.75CU

+0.75CU

Cw=Cb=0

CU 0.75CU

0.75CU

Cw=Cb=0=0

• Optimal buffering of the rectilinear Steiner minimum tree (RSMT) is not always optimal

• Optimal solution not always on Hanan grid• NP-hard to approximate within a constant factor better than 2

- Proof by reduction from the RSMT problem

source1 7

7 13

Optimum solution

source

6 23

Hanan grid solution

1 7

Optimum topology not on Hanan gridRSMT topology may be sub-optimal

Hardness Results

Buffered RSMT

source

2

S3

4

S1

S2

12

5

RSMT Optimum

source

2

S3

4

S1

S2

12

5

source

2

S3

4

S1

S2

12

5

CU = 8, sink/buffer input cap = 1CU = 14, sink/buffer input cap = 0

Linear time greedy algorithm (extends tree-partition algorithm of Kundu&Misra):

– Find a critical vertex p, i.e., a bottom-most vertex p such that c(Tp) > CU

by a post-order traversal of the tree

– Find a heaviest child u of p, i.e., a vertex u such that c(Tu) + c(u,p) c(Tv) + c(v,p) for every other child v of p

– Insert buffer b on edge (u,p) such that c(u,b) = min{CU-c(Tu), c(u,p)}

– Recursively find an optimum buffering B’ of T -- Tb

– Return B = B’ U {b}

Insert buffer on edge (u,p) if CU c(Tu)+c(u,p) Insert buffer at top of heaviest edge if CU > c(Tu)+c(u,p)

Non-Inverting Buffering of a Given Tree

Linear time dynamic programming algorithm (DPI):

– Traverse tree in postorder

– Insert buffer b on edge (u,p) if c(Tu) < CU < c(Tu) + c(u,p)

– For each branching point u

• Try to insert 0,1 or 2 buffers at the head of each branch (9 cases for binary tree)

• For each case

– Check feasibility w.r.t. polarity constraints

– Replace subtree u by an equivalent edge (u,v) with parameters (, nb, rc), where is polarity at u, nb is number of buffers and rcis residual capacitance of subtree u

– find solutions with minimum number of buffers and topmost buffer polarity =+/-

– Find the solution at root with min number of buffers

– Insert buffers in top-down order

Inverting Buffering of a Given Tree

Optimal dynamic programming algorithm (runs in O(n3OPT2) time):- Traverse tree T in postorder- Buffer each edge if necessary- Buffer each branching point with all possible skew combinations- Return min-cost buffering

Skew-Bounded Buffering of a Given TreeTellez and Sarrafzadeh (TCAD’97) suggest a greedy algorithm with runtime O(n+OPT), where n is the number of sinks and OPT is the optimum number of buffers. However, greedy is suboptimal for any buffer skew > 0:

Greedy buffering Optimum buffering

CU

Buffer skew = 1, sink input cap Cu=CU, Cv=Cx=0.75CU

Interconnect and buffer have zero cap

0.75CU

0.75CU

CU 0.75CU

0.75CU

source

1

RSMT + KM

21

6

3

2

source

3

25

1

5

Fill heuristic

Simultaneous Routing and BufferingProvably good algorithms:- Construct an -approximate Steiner tree T- Apply the greedy KM algorithm on T- (Replace each buffer by 1 or 2 inverting buffers)

Theorem: Approximation ratio is 2(1+ ) for non-inverting, and 4(1+ ) for inverting buffer type.

Fill heuristic:- Repeat until source load cap < CU

Find Steiner tree and add first buffer b using KMFill b’s subtree with nearby sinks up to cap = CU

Cut&Connect heuristic:- Find Steiner tree, add buffers using KM- For each buffer b with load cap < CU

Cut b’s subtree, then reconnect it and relocate bsuch that driven cap is as close to CU as possible

CU = 8, sink/buffer input cap = 1

Benchmark MST+KM MST+Cut&Connect MST+ Fill MST+DPI Lower#sinks CU #buffers runtime #buffers runtime #buffers runtime #buffers runtime Bound

12000 500 244 2.63 236 9.27 222 106.83 420 3.05 184 12000 1000 116 2.63 113 11.54 106 46.90 207 3.05 8812000 4000 28 2.64 28 13.32 25 10.59 55 3.06 2012000 8000 13 2.63 13 8.10 12 5.82 26 3.07 9

22000 500 1418 4.39 1395 21.62 1305 1172.75 2094 5.10 119722000 1000 674 4.39 656 30.36 613 540.28 1126 5.10 57522000 4000 164 4.39 159 95.40 146 121.24 297 5.11 13922000 8000 80 4.39 78 106.98 72 60.33 145 5.14 68

34000 500 806 6.59 778 39.13 729 890.01 1387 7.74 591 34000 1000 388 6.58 374 58.55 350 424.81 696 7.76 28334000 4000 95 6.57 92 147.62 84 103.59 179 7.74 6834000 8000 45 6.57 44 113.80 42 49.25 85 7.76 33

• Fill, Cut&Connect and KM show different runtime/quality tradeoffs with the best quality achieved by Fill heuristic and the best runtime by KM

• Significant more buffers are needed with polarity constraints (but inverters are smaller than non-inverting buffers)

• Reference implementations are being added to the GSRC bookshelf to facilitate fast dissemination and easy comparison with future competing heuristics

Experimental Results

Top Related