stage2 [option ... ]
where option is one or more of the following:mask none
mask auto
mask bbox
mask value
debug
route net
force
step
limit number
tries number
effort number
The stage2 command performs the second stage routing, in which each net that has been placed in the "failed nets" list after the first stage routing is routed. The second stage routing allows collisions, although it attempts to minimize collisions by placing a high cost on routing over other nets. Any other nets which collided with the net during routing are removed ("ripped up") and added to the end of the "failed nets" list.Routes that are not blocked by non-routing contraints (such as having taps completely blocked by obstructions) will always find an acceptable routing solution. Therefore, it is possible for the second stage to run indefinitely, as other nets are ripped up and added to the list, and need to be routed again. As a result of the possibility of infinite looping, the routing algorithm checks the progress and halts the second stage if the number of failed routes is no longer being reduced. Occasionally it will halt prematurely, and running the stage2 command a second time will suffice to complete the routing.
The option "mask" (one optional argument) sets the type of mask to be used to limit the search space of the net. The value can be an integer number, in which case it represents the size of the mask. The optimal mask is a single route track that either forms an "L" shape between two nodes, or a trunk-and-branch structure between multiple nodes. A value of zero indicates that on the first route pass, only the track that is defined by the mask may be used for routing. If a route is not found, subsequent passes will increase the size of the mask by an additional track pitch in all directions. If the value is one, then the mask is increased by one track pitch before routing begins. If value is 2, then the mask is increased by two track pitches before routing begins, and so forth.
These special keywords for value are recognized:
none --- Indicates that no mask will be used. The entire route space may be searched for solutions, which increases the chance that a route solution will be found, but greatly slows the routing process.When using masks, note that power and ground routes use a different routing method, and will not use the indicated mask.
auto --- This will use a mask value 4 for second stage routing. This is also the default mask size used if the mask option is not specified.
bbox --- This uses a different method for mask generation, in which the entire route bounding box is searched for a route solution. It is faster than using no mask, but slower than using the regular route mask.The option "route" (one mandatory argument) will attempt a second stage route of the net named net only. No other nets are affected, except for nets which collide with the route solution and are therefore ripped up and appended to the "failed nets" list.
The option "debug" (no arguments) creates a visual display of the search algorithm in the graphics window. This greatly slows down the routing process; it is intended only for diagnostic use.
The option "force" (no arguments) tells qrouter to force a connection to a terminal node, even if qrouter has evaluated all grid positions for the terminal as blocked by obstructions. This will enable a route solution, but will likely cause a DRC error. In rare cases this may allow routing where the vendor cell uses tighter DRC rules for the standard cell than are specified for the routing.
Option "limit" (one mandatory integer argument) will limit the number of colliding routes that can be ripped up in order to make way for a single route solution. If stage 2 routing is done with a mask other than "none", then many simple route solutions may require large numbers of routes in the way to be removed, causing the list of unrouted nets to remain constant or even increase over time. With the limit set, such routes are abandoned, but allows stage 2 to reduce the number of unrouted nets without resorting to using "mask none". This option is only available in qrouter version 1.3.31 and higher.
The option "break" (no arguments) changes the rip-up method to rip up only the single node-to-node routes that collide with the net being routed, thus breaking the net across the collision point instead of completely removing the entire network. Generally, this method is more efficient. This option available in qrouter versions 1.3.75 and higher.
The option "effort" (one mandatory integer argument) gives the level of effort to find solutions. The value given is the number of samples of remaining nets to average after each route attempt. Qrouter will average this number twice in succession, and if the newer average is equal to or higher than the older average, then qrouter will stop the third stage routing. In general, value 10 is considered a low level of effort, while value 100 is considered a high level of effort. This option available in qrouter versions 1.3.75 and higher.
The option "tries" (one mandatory integer argument) will make additional routing attempts after qrouter has determined that it is stuck based on its usual criterion (based on the rate of decrease of unrouted nets). This is equivalent to the "-k" command-line option, but it is also equivalent to simply executing the "stage2" command multiple times. This option is only available in qrouter version 1.3.19 to 1.3.74, and was replaced by the "effort" option.
Option "step" runs the second stage routing on a single net. It is similar to the option "route net", but routes the net that is at the top of the list, as the full stage2 run would do.
stage2 is implemented as a built-in command in qrouter, only in the Tcl version.
Return to reference page |
Last updated: June 14, 2017 at 9:23am