com.sun.electric.tool.routing
Class SeaOfGatesEngine

java.lang.Object
  extended by 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)


Constructor Summary
SeaOfGatesEngine()
           
 
Method Summary
 void routeIt(Job job, Cell cell, java.util.List<ArcInst> arcsToRoute, SeaOfGates.SeaOfGatesOptions prefs)
          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
 

Constructor Detail

SeaOfGatesEngine

public SeaOfGatesEngine()
Method Detail

routeIt

public void routeIt(Job job,
                    Cell cell,
                    java.util.List<ArcInst> arcsToRoute,
                    SeaOfGates.SeaOfGatesOptions prefs)
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.