The procedure of local tree construction is listed in Figure 3.2. First of all, the pseudo sink is found in line 1. The pseudo sink is an artificial sink representing all sinks within a voltage island, and also the root of a local tree. Secondly, grid lines are constructed in line 2. Thirdly, grid nodes are initialized in line 3. Finally, in lines 5–15, we iteratively propagate solutions from each sink and prune redundant solutions if necessary until finding a feasible solution. We use a priority queue Qs
and a working queue Qw in these while loops. Qw maintains the ordering of sinks according to the distances between sinks and the pseudo sink. Qw records grid nodes which should propagate solutions to neighbors. We detail the procedure as follows.
14
15
Figure 3.1: The overview of our flow.
3.1.1 Finding the Pseudo Sink
We connect sinks within a voltage island at this local level. However, for sinks outside the island of the source, we do not know where is the source or the upstream net. Therefore, the pseudo sink is to guide the direction of local tree construction. We expect that the upstream of the local trees can approach to the source of the net to reduce delays. Therefore, we consider several nodes which are relatively close to the source within the current island to be the pseudo sink.
According to the geometry relation between the voltage island of the source V Isrc and the current island, a set of pseudo sink candidates are selected. If the current island is overlapped with the horizontal or vertical centerlines of V Isrc, grid
Algorithm: Local Tree Construction Input: Voltage island V Ii
Timing constraints
Output: A local buffered routing tree 1. Find the pseudo sink Ti of V Ii
2. Construct grid lines within V Ii
3. Initialize grid nodes
4. Push sinks within V Ii into priority queue Qs
5. while Qs is not empty do
6. Select sink tj with max. distance to Ti from Qs
7. Push sink tj into queue Qw
8. while Qw is not empty and
no feasible solution is found do 9. Select node w from Qw
10. Propagate solution from w to its neighbor u 11. if a feasible solution is found then
12. Update solution
13. else
14. Prune redundant solutions on u 15. Push neighbor u into Qw
Figure 3.2: The procedure of local tree construction.
nodes on the side closed to V Isrc are selected (indicated by red lines in Figure 3.3).
Otherwise, candidates are selected as shown in Figure 3.4. Considering obstacle penalties, the pseudo sink is the candidate with the shortest distance to the source.
The obstacle penalty is estimated by the smaller overhead on these two L-shaped paths in the worst case as shown in Figure 3.5 [18]. In Figure 3.5(a), the obstacle penalty of the left-up path between x and y is zero, and that of the right-bottom one is H1. Thus, the obstacle penalty is zero. Moreover, in Figure 3.5(b), the obstacle penalty of left-up path is W 1, and that of right-bottom one is H2. Thus, the obstacle penalty is min{W 1, H2}. The total distance between x and y is the Manhattan distance plus the obstacle penalty.
17
Figure 3.3: Dotted gray lines are centerlines of the source voltage island V Isrc. Red lines indicate the set of pseudo sink candidates if the current island is overlapped with centerlines.
Table 3.1: Parameters used in a solution.
Parameter Description
R Driving resistance
C Loading capacitance
rat Required arrival time
P OW Power
HW Hardware cost
BV Voltage level
P P Propagated path
3.1.2 Grid Line Construction
Horizontal and vertical grid lines are constructed not only at sinks and the pseudo sink but also around blockages. As shown in Figure 3.6, T is the pseudo sink, t1, t2 and t3 are three sinks, and blue lines are grid lines of given voltage island.
These grid lines are bounded by the voltage island for local tree construction to reduce the time complexity.
Figure 3.4: Dotted gray lines are centerlines of the source voltage island V Isrc. Red lines indicate the set of pseudo sink candidates if the current island is not overlapped with centerlines.
Figure 3.5: The obstacle penalty between x and y in (a) is zero, and that in (b) is min{W 1, H2}.
3.1.3 Grid Node Initialization
A seven-tuple (R, C, rat, P OW, HW, BV, P P ) is used to represent a solution.
Parameters are listed in Table 3.1. Each grid node is initialized according to the type of the node.
• For being a sink, node i is initialized with a loading capacitance:
Solution(0, Cl, rati, P OWCl, 0, BVi, {node i}).
• Otherwise, node i is initialized with a buffer:
Solution(Rb, Cb, ∞, P OWb, HWb, BVi, {node i}),
19
Figure 3.6: Blue lines are grid lines of the pseudo sink T , three sinks t1–t3 and a blockage (black block). All intersections on grid lines are grid nodes.
and without buffer:
Solution(0, 0, ∞, 0, 0, BVi, {node i}).
Each grid node is allowed to insert a buffer. For the case with restricted buffer locations, a grid node on an infeasible buffer location is initialized without buffer only. In addition, if a pseudo sink is located at a high voltage island, it is also initialized with a level converter, in case it would be driven by low voltage cells.
3.1.4 Solution Propagation
For local tree construction, solutions are propagated from sinks to the pseudo sink. Solutions of a grid node w are propagated to its neighbors until reaching the pseudo sink or the partially routed tree. For a neighbor grid node u, the current solutions of u and those of w are combined to a new one for u. If a solution is propagated to a routed grid node and the required arrival time is met, the result should be updated to the root, i.e., the pseudo sink. Otherwise, solutions are kept propagating to other grid nodes for forming a feasible solution. We detail how to generate a new solution as follows.
For propagating to an un-routed node u:
• If node u is inserted a buffer:
ratnew = ratw− Di− Ru· (cw · L + Cw)
−rw· L · (1
2· cw· L + Cw).
• If node u is without buffer:
ratnew = ratw− rw· L · (1
2· cw· L + Cw).
For propagating to a routed node u:
• If node u is inserted a buffer:
rat1 = ratu− Ru· (cw· L + Cw),
rat2 = ratw− Di− Ru· (Cx+ cw· L + Cw)
−rw· L · (1
2· cw· L + Cw), ratnew = min{rat1, rat2},
where Cx is loading from other branches.
• If node u is without buffer:
rat1 = ratu,
rat2 = ratw − rw · L · (1
2 · cw· L + Cw), ratnew = min{rat1, rat2}.
21
3.1.5 Redundancy Pruning
During solution propagation, we only store some prior solutions to save mem-ory space. Therefore, if solution A has smaller required arrival time, and larger power and capacitance than solution B, then A is pruned. However, if solution A has smaller required arrival time, but smaller power and/or capacitance than solu-tion B, then A is kept. In addisolu-tion, in a high voltage island, a solusolu-tion with level converter at the pseudo sink is kept for maintaining signal integrity in the global buffered tree.
We summary this subsection with an example. Figure 3.7, demonstrates how to propagate solutions for the case in Figure 3.6. First of all, we select sink t3 which has the maximum distance to the pseudo sink T . Then, a solution with capacitance loading of t3 is propagated to its neighbor grid nodes as shown in Figure 3.7(a), and then solutions of these neighbors are propagated to their neighbors in Figure 3.7(b). Gray circles indicate the progress of propagations. Figure 3.7(c) shows the result of two more propagation steps after Figure 3.7(b). The propagation is repeated until a feasible solution from t3 to T is found, then solutions are updated as in Figure 3.7(d). Secondly, sink t2 is selected, as demonstrated in Figure 3.8(a), solutions are propagated in the similar manner with sink t3 until the partially routed tree indicated by red circle is reached. If the required arrival time of the pseudo sink is satisfied, solutions are updated to T . Figure 3.8(b) is the resulting tree of connecting t2 and t3.