© KLMH Multi-Threaded Collision Aware Global Routing Lienig Bounded Length Maze Routing © KLMH Contributions Optimal Bounded Length Maze Routing Heuristic Bounded Length Maze Routing Lienig Parallel Multi-Threaded Collision Aware Strategy for Multi-core Platforms © KLMH Bounded Length vs Bounded Box Bounded Length Bounded Box Algo : Algo : 1. While(!viol) { 1. While(!viol) { 2. viol = Route(net, BL); 2. viol = Route(net, BB); 3. if(!viol) { 3. if(!viol) { increase BL; 5. 6. } } Start with Manhattan distance 4. increase BB; 5. 6. } } Start with the MBB Lienig 4. © KLMH Maze Routing Dijkstra Algorithm (G, E, s, t) 1. curr_node = s; 2. Parent[u] = NULL; // parent of all nodes is null initially 3. Q : Fibonacci heap with no nodes initially; 4. cost[s] = 0; 5. cost[u] = infinity for all nodes except s 6. While(curr_node != t) { 7. //might have multiple copies of a node for (each neighbour u of curr_node) { 8. if (cost[curr_node] + w(curr_node, u) < cost[u]) { 9. parent[u] = curr_node; 10. cost[u] = cost[curr_node] + w (curr_node, u); 11. insert_to_Q(u); 12. } 13. } 14. curr_node = Extract_min(Q); 15. //extracts the min cost node from Q } Lienig Complexity : O(|E| + |V|log|V|) 1. MST Decomposition 2. Congestion Graph G = Route(net, viol) 3. While(!viol) { 4. NCRRoute(net, BL); 5. if(!viol) { 6. BL = Relax(BL) 7. 8. 9. FLOW DIAGRAM © KLMH PROPOSED ROUTER } } Post Refinement 10. Layer Assignment Lienig NCR Route : Negotiation Based Congestion Rip up & Route © KLMH Optimal Bounded Length Maze Routing Idea : Discard a path Pi(s,v) if, wl(Pi) + Manh(v,t) > BL Comparison to Traditional Routing: 1. Prunes all paths with BL violations, thereby making the search space smaller Lienig 2. Keep more than one path unlike Traditional routing. © KLMH OPTIMAL BLMR Cont’d What happens if keep the paths with lower cost. In this figure, cost(P1) = 80, cost(P2) = 90 wl(P1) = 11, wl(P2) = 5 BL = 16 If we keep only P1 (lower cost), then it does not have enough slack to detour the congested graph around t. Thus, keep both P1 & P2. However, if cost(Pi) < cost(Pj) and wl(Pi) < wl(Pj), Lienig then Pj is inferior to Pj, can discard Pj. © KLMH Heuristic BLMR Problem with Optimal BLMR May have any number of paths that meet the criteria. Thus, slower Solution Need a Heuristic to select a single path. Examine each path if it has the required wire-length Select the lowest cost path with enough slack. If no candidate path have enough slack, select shortest Lienig path. © KLMH Heuristic BLMR cont. Heuristic : ewk (v,t) = Manh(v, t) × (Lk-1(s, t) / Manh(s, t)) --1 Condition : wl(Pi )+ ewk (v, t) ≤ BL ---------------------------------2 ewk (v,t) : estimated wire length from v to t in kth iteration Lk-1(s, t) : actual routed wirelength from s to t in k-1th iteration Pi(s,v) : Path from s to v wl(Pi ) : wirelength of Path Pi Manh(v, t) : Manhattan distance from v to t Manh(s, t) : Manhattan distance from s to t The heuristic keeps on getting better with each iteration : 1.Overestimated wl from v to t in kth iteration : Path might be discarded by equation 2, thus in (k+1)th iteration, it gets better. Lienig 2.Under-estimated wl from v to t in kth iteration, actual wl (LK) corrects it in the next iteration © KLMH Bounded Length Relaxation With each iteration of rip-up & re-route, 1. Overflow decreases 2. Wire-length increases For the nets to be routed in the next iteration, BL is relaxed BLnk = Manh (s n , t n ) × (arctan(k − α ) + β) Lienig α, β are user defined (use 9,2.5 for this paper) © KLMH Task-Based Concurrency Parallelism Rip & Re-route still takes 99.6% of total routing time on one of the difficult benchmarks (ISPD2007) Task Based vs Partition Based Concurrency Lienig Load might not be shared evenly between the threads because of differing congestions in different parts of the grid graph. TASK BASED CONCURRENCY & © KLMH CHALLANGES Each entry in Task Q is a 2 pin routing task All threads pull one task out of Q Issues Same routing resource can be used by two threads unaware of each other. No Common Routing Resources (search restricted by partition) Lienig Partition vs TCS Lienig © KLMH Challenges Cont’d © KLMH Maze Routing & Collisions Maze routing happens in two phases : 1. Wave Propagation : explore every possible move. 2. Back-Tracing : Identify new routing path based on the paths explored. Not clear at Wave propagation Not clear at BackTracing Clear after BackTracing – both the threads have used the resource. Lienig When will it be clear that collision occurred ? © KLMH Collision Aware RR 1. Nets closer are the most likely candidates for collisions. 2. About 41% of overflow nets in RR are due to collisions. 3. An overflow net has few overflow edges 4. It reuses most of its edges (80% of edges re-used) Lienig Observations : © KLMH Using Observations in Collision Aware RR Thread T2 : marks the edges previously used by the net Lienig Thread T1 : see the increased cost of the common edges Collision Aware RR 1. © KLMH ALGORITHMS Collision Aware BLMR Algorithm Collision-aware Rip-up and Reroute 1. Algorithm Collision-aware BLMR 2. Input: 2. 3. TaskQueue TQ; Input: grid graph G, net N, bounded-length BL 4. while ( G has overflows) 3. mark_grid_edge( path(N) ,G); 5. update(TQ) // insert overflow net to TQ; 4. ripup(path(N) ,G); 6. //parallel by each thread 5. 7. while (TQ is not empty); collision_aware_wave_propagation( N, G, BL); 8. N ←extract_a_task(TQ); 6. newPath←back_tracing(N, G); 9. k BL n 7. unmark_grid_edge(path(N) ,G); 10. collision_aware_BLMR(G, N, BLkn ); 8. path(N)←newPath; 11. end while end grid graph G ←relax_bounded_length(N); Lienig end Lienig © KLMH Evaluation Lienig © KLMH Evaluation cont. © KLMH Summary BLMR Bounded length Maze Routing Optimal BLMR : paths based on slack left to reach the target Heuristic BLMR : select a single path based on heuristic The heuristic gets better with each iteration of rip-up & reroute Task Based Concurrency Better for load sharing compared to partition based concurrancy Collision may occur due to same resource used by more than one thread Lienig Collision Aware RR : avoid overflow due to race conditions. Lienig © KLMH THANK YOU