Title: An%20Exact%20Algorithm%20for%20Difficult%20Detailed%20Routing%20Problems
1An Exact Algorithm for Difficult Detailed
Routing Problems
- Kolja Sulimma
- Wolfgang Kunz
- J. W.-Goethe Universität Frankfurt
2Motivationrouting 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
3Motivationchannel routing for automated leaf
cell generation
- a typical routing channel in a standard cell
layout looks like this - long channel with many tracks
4Motivationchannel 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
5Motivationchannel 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
6Motivationchannel routing for automated leaf
cell generation
- a channel in a leaf cell is much smaller
7Motivationchannel routing for automated leaf
cell generation
- a channel in a leaf cell is much smaller
- the use of extra area is relatively expensive
8Motivationchannel 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
9Motivationchannel 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
10Problem 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)
11Problem Formulationexample channel segment
1
1
3
3
5
2
4
2
5
1
4
- Connect all terminals that belong to the same net
in a channel of length n and a given height of t
tracks
12Problem Formulationexample channel segment
1
1
1
5
3
3
3
5
2
4
2
1
4
4
- Connect all terminals that belong to the same net
in a channel of length n and a given height of t
tracks
13Algorithmic 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)
14Algorithmic 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
15Algorithmpseudo 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 -
-
-
16Algorithmexample
- Denote a track assignment by a t-tupel of
integers in the range 0, ..., t, where 0 means
an empty track - How can can signals 1 and 2 leave column 5 and
enter column 6?
1
1
1
1
5
3
3
3
5
2
4
2
2
1
4
4
17Algorithmexample
- Denote a track assignment by a t-tupel of
integers in the range 0, ..., t, where 0 means
an empty track - How can can signals 1 and 2 leave column 5 and
enter column 6?
1 0 2 0
1
1
1
1
1
5
3
3
3
5
2
4
2
2
1
4
4
18Algorithmexample
- Denote a track assignment by a t-tupel of
integers in the range 0, ..., t, where 0 means
an empty track - How can can signals 1 and 2 leave column 5 and
enter column 6?
1 0 2 0
0 1 2 0
1
1
1
1
5
3
3
1
3
5
2
4
2
2
1
4
4
19Algorithmexample
- Denote a track assignment by a t-tupel of
integers in the range 0, ..., t, where 0 means
an empty track - How can can 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
5
3
3
3
5
2
4
2
2
1
4
1
4
20Algorithmexample
- Denote a track assignment by a t-tupel of
integers in the range 0, ..., t, where 0 means
an empty track - How can can 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
5
3
3
2
3
5
2
4
2
1
4
4
21Algorithmexample
- Denote a track assignment by a t-tupel of
integers in the range 0, ..., t, where 0 means
an empty track - How can can 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
5
3
3
3
5
2
4
2
1
4
2
4
22Algorithmexample
- Denote a track assignment by a t-tupel of
integers in the range 0, ..., t, where 0 means
an empty track - How can can 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
5
3
3
1
3
5
2
4
2
1
4
2
4
23Algorithmdetails 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)
-
-
24removeRightEdgeTerminals()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
25removeRightEdgeTerminals()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
26removeRightEdgeTerminals()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
27connectTerminals()
- 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
28doglegs()
- 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 0 4 2
1 2 4 0
1
1
1
1
4
4
4
4
2
2
29Computational 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(nt!2t) for a channel of length n
- fixed parameter tractable
- overall runtime linear for a fixed channel height
- runtime exponential in the channel height
30Data StructuresMDDs
- Represent the set of track assignments by its
characteristic function f0, ..., tt ? 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
31Data StructuresMDD example
- MDD representation of the example set in column 6
- connections to the 0-terminal are omitted for
clarity.
32Data StructuresMDD example
1 0 2 0
0 1 2 0
0 0 2 1
1 2 0 0
1 0 0 2
0 1 0 2
- Each path from the root to the 1-terminal
represents a track assignment
1
33Data StructuresMDD example
1 0 2 0
0 1 2 0
0 0 2 1
1 2 0 0
1 0 0 2
0 1 0 2
- Each path from the root to the 1-terminal
represents a track assignment
1
34Data StructuresMDD example
1 0 2 0
0 1 2 0
0 0 2 1
1 2 0 0
1 0 0 2
0 1 0 2
- Each path from the root to the 1-terminal
represents a track assignment
1
35Data StructuresMDD example
1 0 2 0
0 1 2 0
0 0 2 1
1 2 0 0
1 0 0 2
0 1 0 2
- Each path from the root to the 1-terminal
represents a track assignment
1
36Data StructuresMDD example
1 0 2 0
0 1 2 0
0 0 2 1
1 2 0 0
1 0 0 2
0 1 0 2
- Each path from the root to the 1-terminal
represents a track assignment
1
37Data StructuresMDD example
1 0 2 0
0 1 2 0
0 0 2 1
1 2 0 0
1 0 0 2
0 1 0 2
- Each path from the root to the 1-terminal
represents a track assignment
1
38Data StructuresMDD example LeftEdgePorts()
1
4
- 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 ftrack20
1
39Data StructuresMDD example LeftEdgePorts()
1
4
- 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 ftrack20
1
40Data StructuresMDD example LeftEdgePorts()
1 2 0 0
1 0 0 2
0 1 0 2
1
4
- 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 ftrack20
1
41Data StructuresMDD example LeftEdgePorts()
1 2 0 0
1 0 0 2
0 1 0 2
1
4
- To insert signal 4 in the empty track move track
2 edges from 0 to 4
1
42Data StructuresMDD example LeftEdgePorts()
1 2 0 0
1 0 0 2
0 1 0 2
1
4
- To insert signal 4 in the empty track move track
2 edges from 0 to 4
1
43Data StructuresMDD example LeftEdgePorts()
1 2 4 0
1 0 4 2
0 1 4 2
1
4
- To insert signal 4 in the empty track move track
2 edges from 0 to 4
1
44Experimental 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
-
45Conclusion
- 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. - gt heuristically select a set of maybe a few
hundred track assignments for each column