The sea-of-gates router is able to take an arbitrary set of unrouted arcs and convert them to layout. It also honors the "Routing Exclusion" nodes to restrict certain metal layers (see Section 9-6-1).

To do this, use the Sea-Of-Gates Route this Cell command (in menu Tools / Routing). If there are unrouted arcs selected, these will be the only ones converted. Otherwise, all unrouted arcs in the cell will be converted. If sub-cells below the current cell need to be routed, use Sea-of-Gates Route Sub-Cells.

The router has many features that can be controlled by the Routing Preferences and by cell-specific properties.

### Sea-of-Gates Routing Preferences

The Routing Preferences (in menu File / Preferences..., "Tools" section, "Routing" tab) has these options:

- Maximum arc width lets you set the maximum width of a route segment. By default, each segment is made as wide as the widest arc already connected to that segment. However, sometimes there are very wide arcs, and the connecting routes should not be that wide. By setting the maximum width, this limits the size of generated layout.
- Search complexity limit sets the maximum number of steps that the router will take to find a route. The larger the value, the longer the router will run before it gives up.
- Do Global Routing requests that a global routing preprocessing step be done to plan the path of each route. Global routing divides the cell into a grid, and forces each routes to run in certain grid squares. This distributes congestion uniformly and can give better routing results.
- Do Spine Routing requests that special spine routing techniques be applied where applicable. The Spine routing option finds the longest route in a daisy-chained network and then adds "taps" to the spine for the intermediate points on the daisy-chain. When enabled, spine routing is done on any daisy-chained network with an aspect ratio of 50:1 or more.
- Rerun routing with failed routes requests that the router run again after it finishes in an attempt to complete those routes that failed the first time. You can set a different complexity limit for this step.
- Use two processors per route tells the router to use two threads for each route (one tries to run a path from end 1 to end 2, the other tries to run a path from end 2 to end 1). The thread that completes first terminates the other thread. When not checked, the router alternates steps in the two directions, stopping when one of the directions reaches its goal. Because the router is able to follow both directions in a single thread, this preference is not advised (it is better to use multiple processors for the next option, which runs multiple routes in parallel). However, on many-core systems, where there is excess computation power, this preference may be desirable.
- Do multiple routes in parallel attempts to use as many processors as possible to run multiple routes at once.
- Forced processor count tells the router to ignore the actual number of processors on the machine and to use an appropriate number of threads for the processor count specified here. Set the value back to zero to remove the override.

### Sea-of-Gates Cell Properties

Users can set cell-specific properties that control how a particular cell is routed. Use the Sea-Of-Gates Cell Properties... command in the Tools / Routing menu to control this. The upper-left part of the dialog controls routing properties for the entire cell. Alternating Metal Layer Usage controls the placement of alternating layers for horizontal and vertical wires. You can choose to force this usage, favor the usage (enforces it most of the time, but not always), or ignore the usage. You can then choose whether odd-numbered arcs are horizontal or vertical. Contact inclusion pattern and Contact exclusion pattern let you specify which contacts in the technology to use for routing. For example, to force only contacts that start with the letters "X-", set the inclusion pattern to "X-(\w+)" Do not place rotated contacts Requests that asymmetric contacts not be tried in a rotated orientation. Do not make Steiner Trees (already done) Before routing begins, the unrouted arcs are reorganized so that daisy-chains (multiple arcs on a single network that connect more than two ports) run in the most efficient way. This efficient path is called a "Steiner Tree". If you believe that the routes are already optimized, you can request that this step be skipped. |

The lower-left part of the dialog controls individual layers in the cell. It lets you disable the use of any layer, or favor it above others. You can also override the default width and spacing rules on that layer.

And you can set a grid for placement of the layer. Grid control can be Fixed (with a spacing and an offset) or Arbitrary (with multiple grid coordinates). When editing arbitrary grids, icons on the right let you create new grid coordinates, delete existing ones, and even draw the location on the screen. Click Show to draw the grids on the cell to help you see where the grids actually are.

The right side of the dialog controls individual nets that are to be routed. If nothing is listed on the right, then all selected nets are routed (or all nets, if nothing is selected). Use the "Add Net" button to add a named net and use the "Remove Net" button to remove a listed net. When a net is selected, you can even override the layers that will be used to route that net and you can override the width and spacing rules for that layer on that net.

At the bottom, the "Import..." button reads a command file that can fill this dialog with values.