An%20Exact%20Algorithm%20for%20Difficult%20Detailed%20Routing%20Problems PowerPoint PPT Presentation

presentation player overlay
About This Presentation
Transcript and Presenter's Notes

Title: An%20Exact%20Algorithm%20for%20Difficult%20Detailed%20Routing%20Problems


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

2
Motivationrouting 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
Motivationchannel routing for automated leaf
cell generation
  • a typical routing channel in a standard cell
    layout looks like this
  • long channel with many tracks

4
Motivationchannel 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
Motivationchannel 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
Motivationchannel routing for automated leaf
cell generation
  • a channel in a leaf cell is much smaller

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

8
Motivationchannel 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
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

12
Problem 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

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 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
17
Algorithmexample
  • 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
18
Algorithmexample
  • 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
19
Algorithmexample
  • 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
20
Algorithmexample
  • 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
21
Algorithmexample
  • 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
22
Algorithmexample
  • 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
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
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
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 0 4 2
1 2 4 0
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(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

30
Data 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

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

32
Data 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
33
Data 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
34
Data 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
35
Data 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
36
Data 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
37
Data 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
38
Data 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
39
Data 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
40
Data 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
41
Data 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
42
Data 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
43
Data 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
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.
  • gt heuristically select a set of maybe a few
    hundred track assignments for each column
Write a Comment
User Comments (0)
About PowerShow.com