Product Documentation
Virtuoso Layout Suite SKILL Reference
Product Version IC23.1, November 2023

vrtRouteDesign

vrtRouteDesign(
d_cvid
[ layers l_layers ]
[ ?nets l_nets ]
[ ?regionBox l_regionBox ]
[ ?reorderNets g_reorderNets ]
[ ?excludeNets t_excludeNets ]
[ ?constraintPriority g_constraintPriority ]
[ ?preferredLayers l_preferredLayers ]
[ ?viaCost f_viaCost ]
[ ?connectBothGates g_connectBothGates ]
[ ?preferConstraintViolationToOpen g_preferConstraintViolationToOpen ]
[ ?postFixTrim g_postFixTrim ]
[ ?postFixMinLength g_postFixMinLength ]
[ ?postFixEolKeepout g_postFixEolKeepout ]
[ ?enableDRDChecker g_enableDRDChecker ]
[ ?appendDeviceLayers g_appenDeviceLayers ]
[ ?deleteUnlockedShapes g_deleteUnlockedShapes ]
[ ?logFile g_logFile ]
[ ?appendToLog g_appendToLog 
[ ?createFigGroup g_createFigGroup ]
) 
=> t / nil

Description

Runs the device router on the selected design.

Arguments

d_cvid

Database ID of the cellview on which routing is to be run. The database ID can be obtained using the geGetEditCellView SKILL function. The default value is the cellview of the current window.

layerList l_layerList

The layers to be included for routing provided as a list of strings. By default, all device layers are included in this list, as specified by the appendDeviceLayers argument.

?nets l_nets

A list of net names to be routed. If no net is specified, it routes all the nets in the cellview.

?regionBox l_regionBox

The bounding box on which to run the router. All pins outside of this bounding box are ignored.

?reordernets g_reordernets

Whether or not to allow the routing algorithm to optimize the order in which nets are routed. If set to nil, the nets are routed in the order in which they are provided.

?excludeNets t_excludeNets

A string of net names not to be routed. This takes precedence over the nets parameter if the same net name is provided in both.

?constraintPriority g_constraintPriority

Considers each net’s priority constraint when determining the order in which to route nets. If set to nil, nets are ordered without considering priority. If reorderNets is set to nil, setting constraintPriority has no effect because nets are not reordered. The default is t.

?preferredLayers l_preferredLayers

A list of layer names that the router preferably uses. The list must contain two elements, the lower layer provided before the higher layer. If set to nil, all layers have same preference and are routed.

?viaCost f_viaCost

The cost that the routing algorithm uses when considering creating a via. If the cost is 1, each via’s cost is equivalent to that of a pathseg with the same length and track width. If set to nil, the cost is determined by the routing algorithm.

?connectBothGates g_connectBothGates

Forces nets to connect to all the pins on the same poly gate, or to allow only one connection per gate.

?preferConstraintViolationToOpen g_preferConstraintViolationToOpen

Determines whether the router should generate wires with constraint violations or instead leave them unrouted.

?postFixTrim g_postFixTrim

Automatically adds trim shapes to routed nets to fix end-of-line (EOL) constraint violations.

?postFixMinLength g_postFixMinLength

Automatically extend routed pathseg and via shapes to satisfy various min length constraints, such as minLength, minArea, minRectArea, etcetera.

?postFixEolKeepout g_postFixEolKeepout

Determines whether or not to fix end-of-line keepout DRC violations after routing.

?enableDRDChecker g_enableDRDChecker

Determines whether or not to generate constraint markers for all the nets that are included in this route. If t, the returned summary lists the DRCs field that contains the number of markers.

?appendDeviceLayers g_appenDeviceLayers

Indicates whether to automatically include all device layers in the design in the list of layers to route.

?deleteUnlockedShapes g_deleteUnlockedShapes

Determines whether or not to allow the router to improve the quality of solution by deleting any prerouted shapes that are not locked.

?logFile g_logFile

Specifies the name of a log file in which router messages are captured.

?appendToLog g_appendToLog

Specifies that new messages are appended to the log file if it already exists. If set to nil, the existing file is overwritten.

?createFigGroup g_createFigGroup

The name of the fig group to be created that contains all oaFigs included during this routing run. If set to nil, no fig group is created.

Value Returned

t

Returns a list containing several metrics about the routing run.

nil

Routing was unsuccessful due to errors.

Examples

The following example routes net018 on layers M1, M2, M3, and M4, with layers M3 and M4 used preferentially. It also verifies that the number of opens is 0.

res = vrtRouteDesign(geGetEditCellView() ‘(“M1” “M2” “M3” “M4”) ?nets ‘(“net018”) ?preferredLayers ‘(“M3” “M4”))
res
=> (("Time" "00:00:28") 
    ("Opens" "0") 
    ("Instances" "12") 
    ("Shorts" "") 
    ("Nets" "1")
    ("Wire Length" "10.97") 
    ("DRCs" "Not Run") 
    ("Vias" "30")
)
opensEntry = assoc(“Opens” res)
=> (“Opens” “0”)
numOpens = atoi(cadr(opensEntry))
=>  0

The following example route nets net01 and net02 under default settings. Any device layer is automatically included in the list of layers along with M1, M2, and M3.

vrtRouteDesign(geGetEditCellView() '("M1" "M2" "M3") ?nets("net01" "net02"))

The following example routes all of the nets in the design except for net01 on the provided layers, considering only the pins in the bounding box defined by list(1:1 5:5). The order in which nets are routed is determined by the number of constraints, each gate's pins must be strongly connected, opens are preferred to constraint violations, and the design fixer attempts to fix trims and minLength violations. Although the device layer Poly is provided, any additional device layers are not included.

vrtRouteDesign(geGetEditCellView() '("Poly" "M1" "M2" "M3" "M4" "M5")
?nets nil
?excludeNets '("net01")
?reorderNets t
?regionBox list(1:1 5:5)
?viaCost 5
?prefferedLayers '("M3" "M4")

Related Topics

Virtuoso Automated Placement and Routing SKILL Functions

vrtCheckDesign


Return to top
 ⠀
X