an exact algorithm for difficult detailed routing problems
Download
Skip this Video
Download Presentation
An Exact Algorithm for Difficult Detailed Routing Problems

Loading in 2 Seconds...

play fullscreen
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