100 likes | 239 Views
Optimal Non-Manhattan Bubble Sort Channel Router. Sean Pieper ECE556 Final Project. Manhattan Routing. Non-Manhattan Routing. Use Vertical and Horizontal Constraint Graphs (VCG and HCG) If VCG has a cycle, need to add extra columns and rows. can use +/- 45 degree paths
E N D
Optimal Non-Manhattan Bubble Sort Channel Router Sean Pieper ECE556 Final Project
Manhattan Routing Non-Manhattan Routing • Use Vertical and Horizontal Constraint Graphs (VCG and HCG) • If VCG has a cycle, need to add extra columns and rows. • can use +/- 45 degree paths • “X” routing requires one track and no extra columns • No need for VCG or HCG 1 2 1 2 2 1 2 1
How to cash in: • Constrain problem to two-terminal nets • Each net crosses the channel • Rename terminals so that top is numbered in order • Bottom can now be viewed as a permutation of the top • At each track: • swap adjacent wires that are out of order with respect to each other • For N terminals, this router requires N columns and at most N tracks 58324 43258 12345 53412
Better idea: Sort Routing • Swap router only allows wires to move one column per track • We have horizontal tracks available, so this is an artificial constraint • Bubble sort will move tracks horizontally 1 2 3 4 5 6 7 8 9 2 3 4 5 6 7 8 9 1
Optimize it: • At each new track, can sort left or right • Left sort moves tracks left rapidly, right sort moves tracks right • Previous example would take 9 layers with only right sort • Want to use optimal combination of left and right sort steps
Breadth first search: • Ordering of left and right sorts does not matter: • Full tree has redundant nodes • Collapse redundant nodes to get DAG • Remove redundant paths from DAG Order dependent tree DAG Vector of Vectors
Code flow: Parse input file: use hashtable to accelerate renaming of pins All leaves generated Expand main vector Expand Left sub-vectors Not sorted Perform one right sort step Perform one left sort step Check for sorted leaf Done When a sorted leaf is found, the number of left and right steps that generated it is returned. This uniquely identifies the sequence of intermediate routing steps Generate ASCII art of routing
Sample Output: 1 1 1 1 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 | | | | | / / | | | | | | | | | | | | o---o | | | | | | | | 1 | | | | / / | | | | | | | | | | | | | | | | | | / / | \ / | | | | o---o | | o---o | \ | 2 | | | / / | | | / / | | / \ | | / / | | | | | | | | | | / | o-------o | | o---o | o---o | 3 / / / / | | | / / | | / / | | \ \ \ \ \ \ \ | | \ \ | \ \ | o-------------o | o---o o---o 4 | \ \ \ \ \ \ \ | | \ \ | \ \ 9 1 2 5 6 0 3 4 1 1 7 8 1 1 1 0 3 4 2 1