fast buffering for optimizing worst slack and resource consumption in repeater trees
We present a very fast algorithm for buffering repeater trees. We scan a given preliminary topology in a bottom-up fashion and insert buffers and inverters, respecting the parities of the sinks. Information obtained by preprocessing allows for very fast decisions. To bound the number of shielding repeaters, they are only used where necessary to maximize the worst slack. Furthermore, instead of using a fixed set of repeater positions, they are computed on the fly based on the already buffered subtrees. Another key feature of our algorithm is that we modify the preliminary topology while buffering in order to avoid parallel wires or too many inverters. Experimental results on industrial designs illustrate the speed, quality, practicality, and flexibility of our procedure. In particular, we buffer about 100,000 repeater trees per minute and obtain results that are close to the theoretical optimum in several respects.
repeater tree timing closure repeater insertion interconnect buffering physical design