com.sun.electric.tool.routing
Class SeaOfGatesEngine
java.lang.Object
com.sun.electric.tool.routing.SeaOfGatesEngine
public class SeaOfGatesEngine
- extends java.lang.Object
Class to do sea-of-gates routing.
This router replaces unrouted arcs with real geometry. It has these features:
> The router only works in layout, and only routes metal wires.
> The router uses vias to move up and down the metal layers.
> Understands multiple vias and multiple via orientations.
> The router is not tracked: it runs on the Electric grid
> Favors wires on full-grid units
> Tries to cover multiple grid units in a single jump
> Routes power and ground first, then goes by length (shortest nets first)
> Prefers to run odd metal layers on horizontal, even layers on vertical
> Routes in both directions (from A to B and from B to A) and chooses the one that completes first
> Serial method alternates advancing each wavefront, stopping when one completes
> Parallel option runs both wavefronts at once and aborts the slower one
> Users can request that some layers not be used, can request that some layers be favored
> Routes are made as wide as the widest arc already connected to any point
> User preference can limit width
> Cost penalty also includes space left in the track on either side of a segment
Things to do:
At the end of routing, try again with those that failed
Detect "river routes" and route specially
Ability to route to any previous part of route when daisy-chaining?
Lower cost if running over existing layout (on the same net)
Ability to connect to anything on the destination net
Rip-up
Global routing(?)
Sweeping cost parameters (with parallel processors) to find best, dynamically
Forcing each processor to use a different grid track
Characterizing routing task (which parallelism to use)
Method Summary |
void |
routeIt(Job job,
Cell cell,
java.util.List<ArcInst> arcsToRoute)
This is the public interface for Sea-of-Gates Routing when done in batch mode. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
SeaOfGatesEngine
public SeaOfGatesEngine()
routeIt
public void routeIt(Job job,
Cell cell,
java.util.List<ArcInst> arcsToRoute)
- This is the public interface for Sea-of-Gates Routing when done in batch mode.
- Parameters:
cell
- the cell to be Sea-of-Gates-routed.arcsToRoute
- a List of ArcInsts on networks to be routed.