Using the Electric VLSI Design System

Chapter IX: TOOLS

| ## 5: Routing |

The routing tool contains a number of different subsystems for creating wires. Two stitching routers can be used in array-based design to connect adjoining facets. A maze-router runs individual wires. A river-router is also available for running multiple parallel wires.

### Auto Stitching

The auto-stitching router looks for adjoining nodes that make implicit connections, and places wires at those connections to make them explicit. For example, if a facet has power and ground rails at the top and bottom, and there are ports on the left and right of each rail, then the auto-stitching router can be used to connect all of these rails in a horizontal string of these facets.

The auto-stitcher places a wire when all of these conditions are met:

- The design is layout (auto stitching does not work in schematics).
- Ports exist on both nodes. Since wires must run between two ports, you must export ports at every location where wiring may occur.
- The nodes inside of the facets (the ones that were exported to create the ports) must touch or overlap, thus creating an implicit connection. When a pin node is exported, it should be the same size as any wires connected to it inside of the facet. This is because a small pin connected to a wide arc will not make an implicit connection when the arc touches something, because the pin is inside of the arc.
- The ports must not already be connected to each other.

To run the auto-stitcher, use the Enable Auto-Stitching subcommand of the Routing command of the Tools menu. The router will make all necessary connections, and incrementally add wires as further changes are made to the circuit. To stop stitching, use the same menu entry, which now reads Disable Auto-Stitching. To run the auto-stitcher only once, and in the highlighted area only, use the Auto-Stitch Highlighted Now subcommand. Note that this auto-stitches all facet instances that intersect the highlighted area, so even if only a portion of a facet falls into the highlighted area, the entire facet is stitched.

| The auto-stitcher allows you to specify a particular type of wire to use in routing. By default, the router figures out which wire to use. However, with the Routing Options... subcommand, a specified wire can be given (or automatic selection can be resumed by selecting the "DEFAULT ARC" entry).

### Mimic Stitching

One problem with the auto-stitcher is that it may take a different view of the circuit than originally intended. In an area where more than two facets meet, the auto-stitcher may place many wires in an attempt to connect all touching ports. Another problem with the auto-stitcher is that it only makes explicit what is already implicit, and so cannot add all necessary wires.

To more directly control the wiring of arrays of facets, there is the mimic-router. This tool lets the designer place a wire between two facets, and then it adds other wires between all other similarly configured facets in the circuit. Thus, it mimics your actions.

Specifically, it mimics single wires (if you make a multibend wire, that cannot be mimicked) in all situations where the same ports on the same type of nodes exist, separated by the same distance.

The Routing Options... command provides variations on these rules. First, you can request that the mimic stitcher also mimic wire deletions. Second, you can request that the mimic stitcher relax its restriction about mimicing arcs (by allowing the ports to be different, the nodes to be different, or the node sizes to be different). You can also ask the mimic stitcher to work interactively, which causes it to examine all possible restriction sets, offering to route wires with increasingly relaxed acceptance criteria.

To turn on the mimic-stitcher, use the Enable Mimic-Stitching subcommand, and to disable the subsystem, use the command in the same menu location, which now reads Disable Mimic-Stitching. You can also request that the mimic-stitcher run just once (mimicing the very last wire that was created or deleted) by using the Mimic-Stitch Now command.

### Maze Routing

The maze router replaces unrouted wires with actual geometry. The unrouted wire from the Generic technology (see section 7-9) will run at any angle to make a direct connection. To create such a wire, use the Get Unrouted Wire subcommand and then make a connection. Another way to get unrouted wires is to select all or part of an existing route (made with any arc) and use the Unroute subcommand of the Routing command of the Tools menu.

Once unrouted wires have been placed, the router can replace them with real geometry. The Maze-Route Selected subcommand replaces the selected unrouted wires, and the Maze-Route Facet subcommand replaces all unrouted wires in the facet.

Note that maze routing is done one wire at a time, and may fail if no path can be found. Therefore it may be preferable to route the unrouted wires one-at-a-time in order to better control the process.

Note also that maze routing constructs an array which is the size of the circuit, and searches the array for a routing path. Therefore, long wires will use large amounts of memory and time.

For an example of maze routing, open the library file "samples.txt" and edit the facet "tool-RoutingMaze" (you can read the library with the Readable Dump subcommand of the Import command of the File menu). This facet has a number of unrouted wires that can be routed.

### River Routing

River routing is the running of multiple parallel wires between two parallel rows (presumably along facing sides of two facet instances). The wires must remain in sequential order and cannot cross each other. Thus, they appear as a flowing stream of lines, and have the appearance of a river. To specify an intended path for the river-router, every connection must be made with an Unrouted wire from the Generic technology (use the Get Unrouted Wire subcommand before wiring to create this type of arc). The unrouted wire need only make a direct path without concern for design rules. This is because it is replaced with the appropriate geometry during river-routing. Thus, before river-routing, there should be a series of direct (and presumably nonmanhattan) connections.

To convert the unrouted wires into layout, use the Do River-Routing subcommand of the Routing command of the Tools menu. If there are unrouted wires selected, these will be the only ones converted. Otherwise, all unrouted wires in the facet will be converted.

The unrouted arcs will be replaced with proper geometry. If it is necessary, nodes may be moved to make room for the river-routed wires.

The river router always routes to the left or bottom side of the routing channel. Thus, if there is a vertical channel that is very wide, the wires will run to the left side and then jog to their proper location there. The only way to force routing to the right or top side is to rotate the entire circuit so that these sides are on the left and bottom.

For an example of river routing, open the library file "samples.txt" and edit the facet "tool-RoutingRiver" (you can read the library with the Readable Dump subcommand of the Import command of the File menu).

| Previous |  |  | Table of Contents |  | Next |