© Yamacraw, 2001 Minimum-Buffered Routing of Non-Critical Nets for Slew Rate and Reliability A. Zelikovsky GSU Joint work with C. Alpert (IBM), A. B. Kahng, B. Liu, I. Mandoiu (UCSD)
© Yamacraw, 2001 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 REFERENCES C. 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-2001 C. 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
© Yamacraw, 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.
© Yamacraw, 2001 Given: net N with –Source r, sinks S –Input capacitance C s for each sink s in S –Unit length wire capacitance C w –Inverting or non-inverting buffer type, with Buffer input capacitance C b Load cap upper-bound C U –Sink polarities (optional) –Buffer-skew bound (optional) Find: buffered routing tree for N such that –Load cap of each buffer and of the source r is at most C U –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 Min-Buffered Routing CUCU 0.75C U C w =C b =0 +C U +0.75C U C w =C b =0 CUCU 0.75C U C w =C b =0 =0
© Yamacraw, 2001 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 source Optimum solution source 62 3 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 S RSMTOptimum source 2 S3 4 S1 S source 2 S3 4 S1 S C U = 8, sink/buffer input cap = 1 C U = 14, sink/buffer input cap = 0
© Yamacraw, 2001 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(T p ) > C U by a post-order traversal of the tree –Find a heaviest child u of p, i.e., a vertex u such that c(T u ) + c(u,p) c(T v ) + c(v,p) for every other child v of p –Insert buffer b on edge (u,p) such that c(u,b) = min{C U -c(T u ), c(u,p)} –Recursively find an optimum buffering B’ of T -- T b –Return B = B’ U {b} Insert buffer on edge (u,p) if C U c(T u )+c(u,p) Insert buffer at top of heaviest edge if C U > c(T u )+c(u,p) Non-Inverting Buffering
© Yamacraw, 2001 Linear time dynamic programming algorithm (DPI): –Traverse tree in postorder –Insert buffer b on edge (u,p) if c(T u ) < C U < c(T u ) + 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 rc is 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
© Yamacraw, 2001 Optimal dynamic programming algorithm (runs in O(n 3 OPT 2 ) 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 Tellez 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 bufferingOptimum buffering CUCU Buffer skew = 1, sink input cap C u =C U, C v =C x =0.75C U Interconnect and buffer have zero cap 0.75C U CUCU
© Yamacraw, 2001 source 1 RSMT + KM source Fill heuristic Routing and Buffering Provably 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 < C U Find Steiner tree and add first buffer b using KM Fill b’s subtree with nearby sinks up to cap = C U Cut&Connect heuristic: - Find Steiner tree, add buffers using KM - For each buffer b with load cap < C U Cut b’s subtree, then reconnect it and relocate b such that driven cap is as close to C U as possible C U = 8, sink/buffer input cap = 1
© Yamacraw, 2001 Benchmark MST+KM MST+Cut&Connect MST+ Fill MST+DPI Lower #sinks C U #buffers runtime #buffers runtime #buffers runtime #buffers runtime Bound 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