An exact algorithm for difficult detailed routing problems
Download
1 / 45

An Exact Algorithm for Difficult Detailed Routing Problems - PowerPoint PPT Presentation


  • 113 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' An Exact Algorithm for Difficult Detailed Routing Problems' - parson


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
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
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


Motivation channel routing for automated leaf cell generation
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


Motivation channel routing for automated leaf cell generation1
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


Motivation channel routing for automated leaf cell generation2
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


Motivation channel routing for automated leaf cell generation3
Motivation:channel routing for automated leaf cell generation

  • a channel in a leaf cell is much smaller


Motivation channel routing for automated leaf cell generation4
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


Motivation channel routing for automated leaf cell generation5
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


Motivation channel routing for automated leaf cell generation6
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


Problem formulation routing model
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)


Problem formulation example channel segment
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


Problem formulation example channel segment1
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


Algorithmic approach decision problem
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)


Algorithmic approach dynamic programming
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


Algorithm pseudo code
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;

    }

    }


Algorithm example
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


Algorithm example1
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


Algorithm example2
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


Algorithm example3
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


Algorithm example4
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


Algorithm example5
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


Algorithm example6
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


Algorithm details of column processing
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);

}

}

}


Removerightedgeterminals addleftedgeterminals
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


Removerightedgeterminals addleftedgeterminals1

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


Removerightedgeterminals addleftedgeterminals2

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


Connectterminals
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


Doglegs
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


Computational complexity worst case
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


Data structures mdds
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


Data structures mdd example

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.


Data structures mdd example1

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


Data structures mdd example2

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


Data structures mdd example3

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


Data structures mdd example4

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


Data structures mdd example5

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


Data structures mdd example6

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


Data structures mdd example leftedgeports

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


Data structures mdd example leftedgeports1

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


Data structures mdd example leftedgeports2

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


Data structures mdd example leftedgeports3

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


Data structures mdd example leftedgeports4

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


Data structures mdd example leftedgeports5

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


Experimental results
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


Conclusion
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


ad