1 / 45

An Exact Algorithm for Difficult Detailed Routing Problems

An Exact Algorithm for Difficult Detailed Routing Problems. Kolja Sulimma Wolfgang Kunz J. W.-Goethe Universität Frankfurt. Motivation: routing for automated leaf cell generation. 1-D and 1.5-D cells channel routing seems more adequate than maze routing

parson
Télécharger la présentation

An Exact Algorithm for Difficult Detailed Routing Problems

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. An Exact Algorithm for Difficult Detailed Routing Problems Kolja Sulimma Wolfgang Kunz J. W.-Goethe Universität Frankfurt

  2. Motivation:routing for automated leaf cell generation • 1-D and 1.5-D cells • channel routing seems more adequate than maze routing • Scenario somewhat different from conventional inter cell channel routing

  3. Motivation:channel routing for automated leaf cell generation • a typical routing channel in a standard cell layout looks like this: • long channel with many tracks

  4. Motivation:channel routing for automated leaf cell generation • a typical routing channel in a standard cell layout looks like this: • long channel with many tracks • fast algorithms like “Greedy Router” perform very well: they need only one or two tracks more than the optimal solution

  5. Motivation:channel routing for automated leaf cell generation • a typical routing channel in a standard cell layout looks like this: • long channel with many tracks • fast algorithms like “Greedy Router” perform very well: they need only one or two tracks more than the optimal solution • some algorithms need a few extra columns

  6. Motivation:channel routing for automated leaf cell generation • a channel in a leaf cell is much smaller

  7. Motivation:channel routing for automated leaf cell generation • a channel in a leaf cell is much smaller • the use of extra area is relatively expensive

  8. Motivation:channel routing for automated leaf cell generation • a channel in a leaf cell is much smaller • the use of extra area is expensive • or might simply be not feasible

  9. Motivationchannel routing for automated leaf cell generation small problem instances: • small constant area overhead of heuristical algorithms becomes a large relative area overhead • asymptotically slow algorithms can be practical • difficult instances • obstacles / keep-out regions • dense terminal placement

  10. Problem Formulationrouting model Grid-based over the cell channel routingin the restricted two layer routing model • grid-based • all elements are aligned to a routing grid • over-the-cell-routing • terminals can be located anywhere in the channel, not only at the top or bottom boundary • restricted two layer model • one layer for horizontal connections (trunks) • one layer for vertical connections (doglegs) • arbitrary obstacles • Each signal crosses each column at most once • (no forks or detours)

  11. Problem Formulationexample channel segment • Connect all terminals that belong to the same net in a channel of length n and a given height of t tracks 1 1 3 5 3 5 2 4 2 1 4

  12. Problem Formulationexample channel segment • Connect all terminals that belong to the same net in a channel of length n and a given height of t tracks 1 1 1 3 5 3 3 5 2 4 2 1 4 4

  13. Algorithmic Approachdecision problem • algorithm does not search for a minimum height routing • tries to find a routing for a given channel height of t tracks • this is all that is needed for constant height leaf cells • minimization is done by iterating over t • obviously increases the runtime • in the paper we show that the overhead is only O(1)

  14. Algorithmic Approachdynamic programming • Sweep over the channel from left to right column by column like the “Greedy Router” • Use track assignments to record for each track the signal that leaves the current column on this track • “Greedy Router” heuristically selects one track assignment for each column • We enumerate all reachable track assignments for the column • Dynamic programming prevents an exponential growth of the search space with the channel length

  15. Algorithmpseudo code for (each column) { for (each possible track assignment m of the previous column) { • check if m valid in this column with respect to terminals and obstacles; use m to generate new track assignments by adding all combinations of doglegs; } }

  16. Algorithmexample • Denote a track assignment by a t-tupel of integers in the range [0, ..., t], where 0 means an empty track • How cancan signals 1 and 2 leave column 5 and enter column 6? 1 1 1 1 3 5 3 3 5 2 2 4 2 1 4 4

  17. Algorithmexample • Denote a track assignment by a t-tupel of integers in the range [0, ..., t], where 0 means an empty track • How cancan signals 1 and 2 leave column 5 and enter column 6? 1 0 2 0 1 1 1 1 1 3 5 3 3 5 2 4 2 2 1 4 4

  18. Algorithmexample • Denote a track assignment by a t-tupel of integers in the range [0, ..., t], where 0 means an empty track • How cancan signals 1 and 2 leave column 5 and enter column 6? 1 0 2 0 0 1 2 0 1 1 1 1 3 5 3 1 3 5 2 4 2 2 1 4 4

  19. Algorithmexample • Denote a track assignment by a t-tupel of integers in the range [0, ..., t], where 0 means an empty track • How cancan signals 1 and 2 leave column 5 and enter column 6? 1 0 2 0 0 1 2 0 0 0 2 1 1 1 1 1 3 5 3 3 5 2 4 2 2 1 1 4 4

  20. Algorithmexample • Denote a track assignment by a t-tupel of integers in the range [0, ..., t], where 0 means an empty track • How cancan signals 1 and 2 leave column 5 and enter column 6? 1 0 2 0 0 1 2 0 0 0 2 1 1 2 0 0 1 1 1 1 1 3 5 3 2 3 5 2 4 2 1 4 4

  21. Algorithmexample • Denote a track assignment by a t-tupel of integers in the range [0, ..., t], where 0 means an empty track • How cancan signals 1 and 2 leave column 5 and enter column 6? 1 0 2 0 0 1 2 0 0 0 2 1 1 2 0 0 1 0 0 2 1 1 1 1 1 3 5 3 3 5 2 4 2 1 2 4 4

  22. Algorithmexample • Denote a track assignment by a t-tupel of integers in the range [0, ..., t], where 0 means an empty track • How cancan signals 1 and 2 leave column 5 and enter column 6? 1 0 2 0 0 1 2 0 0 0 2 1 1 2 0 0 1 0 0 2 0 1 0 2 1 1 1 1 3 5 3 1 3 5 2 4 2 1 2 4 4

  23. Algorithmdetails of column processing // takes as input a set Mi-1 of all track assignments of column i-1 and // produces a set Mi of all track assignments for column i next_column(Mi-1, i) { Mi:= Ø; for (each m Mi-1) { m := removeRightEdgeTerminals(m, i-1); m := addLeftEdgeTerminals(m, i); m := connectTerminals(m, i); m := checkForObstacles(m, i); if (m ≠ 0) { Mi := Mi  {m}; Mi := Mi  doglegs(m); } } }

  24. removeRightEdgeTerminals()addLeftEdgeTerminals() • Remove all signals that had their last terminal on the previous column. • Add signals to the assignment that have their first terminal on the current column. • Delete assignment if above is impossible

  25. 1 4 removeRightEdgeTerminals()addLeftEdgeTerminals() • Remove all signals that had their last terminal on the previous column. • Add signals to the assignment that have their first terminal on the current column. • Delete assignment if above is impossible 1 0 2 0 0 1 2 0 0 0 2 1 1 2 0 0 1 0 0 2 0 1 0 2

  26. 1 4 removeRightEdgeTerminals()addLeftEdgeTerminals() • Remove all signals that had their last terminal on the previous column. • Add signals to the assignment that have their first terminal on the current column. • Delete assignment if above is impossible 1 2 4 0 1 0 4 2 0 1 4 2 1 0 2 0 0 1 2 0 0 0 2 1 1 2 0 0 1 0 0 2 0 1 0 2

  27. connectTerminals() • Existing signals might have terminals in this column that are not connected by the incoming assignment. • Add dogleg to connect the signal to the terminal. • Delete the assignment if the track with the terminal is blocked by another signal. 1 2 4 0 1 0 4 2 0 1 4 2 1 2 4 0 1 0 4 2 0 1 4 2 1 1 1 1 4 4 4 4 2 2

  28. doglegs() • Enumerate all the possible dogleg combinations for this assignment. • Multiple layouts might generate the same track assignment. • These layouts are equivalent under routability aspects • only one is selected by dynamic programming • selection can be used to minimize number of vias, wire length, ... 1 0 4 2 1 0 4 2 1 2 4 0 1 0 4 2 1 1 1 1 4 4 4 4 2 2

  29. Computational Complexityworst case • Up to t! possible assignments per column • dogleg() dominates all other subroutines • less than 2t/2 doglegs per assignment • worst case runtime per column O(t!2t) • O(n•t!2t) for a channel of length n • fixed parameter tractable: • overall runtime linear for a fixed channel height • runtime exponential in the channel height

  30. Data StructuresMDDs • Represent the set of track assignments by its characteristic function f:[0, ..., t]t {0, 1} • represent f by an MDD (Multi Valued Decision Diagram) • reduces the size of the representation • typically 1M assignments require 80K MDD-nodes • allows efficient manipulation of the assignments in the set

  31. Track 0 0 0 0 0 0 0 0 0 0 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 1 0 2 0 0 1 2 0 0 0 2 1 1 2 0 0 1 0 0 2 0 1 0 2 Track 1 Track 2 Track 3 1 Data StructuresMDD example • MDD representation of the example set in column 6 • connections to the 0-terminal are omitted for clarity.

  32. Track 0 0 0 0 0 0 0 0 0 0 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 Track 1 Track 2 Track 3 Data StructuresMDD example • Each path from the root to the 1-terminal represents a track assignment 1 0 2 0 0 1 2 0 0 0 2 1 1 2 0 0 1 0 0 2 0 1 0 2 1

  33. Track 0 0 0 0 0 0 0 0 0 0 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 Track 1 Track 2 Track 3 Data StructuresMDD example • Each path from the root to the 1-terminal represents a track assignment 1 0 2 0 0 1 2 0 0 0 2 1 1 2 0 0 1 0 0 2 0 1 0 2 1

  34. Track 0 0 0 0 0 0 0 0 0 0 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 Track 1 Track 2 Track 3 Data StructuresMDD example • Each path from the root to the 1-terminal represents a track assignment 1 0 2 0 0 1 2 0 0 0 2 1 1 2 0 0 1 0 0 2 0 1 0 2 1

  35. Track 0 0 0 0 0 0 0 0 0 0 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 Track 1 Track 2 Track 3 Data StructuresMDD example • Each path from the root to the 1-terminal represents a track assignment 1 0 2 0 0 1 2 0 0 0 2 1 1 2 0 0 1 0 0 2 0 1 0 2 1

  36. Track 0 0 0 0 0 0 0 0 0 0 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 Track 1 Track 2 Track 3 Data StructuresMDD example • Each path from the root to the 1-terminal represents a track assignment 1 0 2 0 0 1 2 0 0 0 2 1 1 2 0 0 1 0 0 2 0 1 0 2 1

  37. Track 0 0 0 0 0 0 0 0 0 0 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 Track 1 Track 2 Track 3 Data StructuresMDD example • Each path from the root to the 1-terminal represents a track assignment 1 0 2 0 0 1 2 0 0 0 2 1 1 2 0 0 1 0 0 2 0 1 0 2 1

  38. Track 0 0 0 0 0 0 0 0 0 0 4 4 4 4 4 4 4 4 4 1 0 2 0 0 1 2 0 0 0 2 1 1 2 0 0 1 0 0 2 0 1 0 2 3 3 3 3 3 3 3 3 3 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 Track 1 Track 2 Track 3 Data StructuresMDD example: LeftEdgePorts() • To be able to connect a new signal to track 2 the subset of assignments with an empty track 2 must be found • calculate cofactor f|track2=0 1 4 1

  39. Track 0 0 0 0 0 0 0 0 0 0 4 4 4 4 4 4 4 4 4 1 0 2 0 0 1 2 0 0 0 2 1 1 2 0 0 1 0 0 2 0 1 0 2 3 3 3 3 3 3 3 3 3 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 Track 1 Track 2 Track 3 Data StructuresMDD example: LeftEdgePorts() • To be able to connect a new signal to track 2 the subset of assignments with an empty track 2 must be found • calculate cofactor f|track2=0 1 4 1

  40. Track 0 0 0 0 0 0 0 0 4 4 4 4 4 4 4 3 3 3 3 3 3 3 1 1 1 1 1 1 1 2 2 2 2 2 2 2 Track 1 Track 2 Track 3 Data StructuresMDD example: LeftEdgePorts() 1 2 0 0 1 0 0 2 0 1 0 2 • To be able to connect a new signal to track 2 the subset of assignments with an empty track 2 must be found • calculate cofactor f|track2=0 1 4 1

  41. Track 0 0 0 0 0 0 0 0 4 4 4 4 4 4 4 3 3 3 3 3 3 3 1 1 1 1 1 1 1 2 2 2 2 2 2 2 Track 1 Track 2 Track 3 Data StructuresMDD example: LeftEdgePorts() 1 2 0 0 1 0 0 2 0 1 0 2 • To insert signal 4 in the empty track move track 2 edges from 0 to 4 1 4 1

  42. Track 0 0 0 0 0 0 0 0 4 4 4 4 4 4 4 3 3 3 3 3 3 3 1 1 1 1 1 1 1 2 2 2 2 2 2 2 Track 1 Track 2 Track 3 Data StructuresMDD example: LeftEdgePorts() 1 2 0 0 1 0 0 2 0 1 0 2 • To insert signal 4 in the empty track move track 2 edges from 0 to 4 1 4 1

  43. Track 0 0 0 0 0 0 0 0 4 4 4 4 4 4 4 3 3 3 3 3 3 3 1 1 1 1 1 1 1 2 2 2 2 2 2 2 Track 1 Track 2 Track 3 Data StructuresMDD example: LeftEdgePorts() 1 2 4 0 1 0 4 2 0 1 4 2 • To insert signal 4 in the empty track move track 2 edges from 0 to 4 1 4 1

  44. Experimental results runtime per column in milliseconds #tracks Hashset MDD 3 2 5 5 4 5 7 100 5 9 6000 20 11 300 13 8000

  45. Conclusion • Intra cell channel routing can be solved exactly by exhaustive enumeration of reachable track assignments • dynamic programming yields a runtime linear in the channel length • Possible application to conventional channel routing: • less than exhaustive search • more than one assignment per column as “Greedy Router” does. • => heuristically select a set of maybe a few hundred track assignments for each column

More Related