lxComputeViaParams
lxComputeViaParams(
d_viaDefID
d_objID
[ ds_constraintGroup ]
[ l_params ]
[ f_pathWidth1 ]
[ t_pathDirection1 ]
[ f_pathWidth2 ]
[ t_pathDirection2 ]
[ l_options ]
)
=> list_of_params | nil
Description
Returns a list of DRC-correct via parameters for a specified standard via definition or a custom via definition that references either a cdsVia or a correctly-defined syEnhContact. The via parameters returned are: n_cutWidth, n_cutHeight, l_cutSpacing (X and Y), l_layer1Enc and l_layer2Enc (top, bottom, left, and right).
You can pass any of the listed parameters to the function using the params argument. If the parameter value you specify passes the design-rule check (DRC), lxComputeViaParams returns the value unchanged. If the value you specify does not pass DRC, lxComputeViaParams calculates the correct value and returns it instead.
If you specify the width and path parameters, a via is computed using the width and the direction of the two connecting paths. For example, if the path directions are "horizontal" and "vertical", the via is created for two crossing paths. If the directions are "leftToRight" and "vertical", the via is created for a T-junction. If the directions are "topToBottom" and "rightToLeft", the via is created for a corner. If the width and path parameters are not specified, a via is generate without a shape.
If you do not specify any parameter values, lxComputeViaParams takes the default value from the via definition in the technology database. If the default value passes the DRC, lxComputeViaParams returns it. If the default value does not pass the DRC, lxComputeViaParams calculates the correct parameter value and returns it.
Arguments
|
d_viaDefID
|
Database ID of the via definition for which parameters are to be calculated.
|
|
d_objID
|
Cellview ID of the object with which the via definition is associated.
|
|
ds_constraintGroup
|
Name or database ID of the constraint group.
|
|
l_params
|
Optional list of parameter values expressed as name-value pairs. The parameters you can specify are: "cutWidth", "cutHeight", "cutRows", "cutColumns", "cutSpacing","cutSpacingX", "cutSpacingY", "layer1XEnclosure", "layer1YEnclosure", "layer2XEnclosure", "layer2YEnclosure", "layer1EncLeft", "layer1EncRight", "layer1EncTop", "layer1EncBottom",
"layer2EncLeft", "layer2EncRight", "layer2EncTop", "layer2EncBottom", "originOffset", "justification".
If the parameter value you specify passes the design-rule check (DRC), lxComputeViaParams returns the value unchanged. If the value you specify does not pass DRC, lxComputeViaParams calculates the correct value and returns it instead.
|
|
f_pathWidth1
|
Width of the layer1 path in the via definition. This argument defines the width of the first of the two paths to be connected together.
|
|
t_pathDirection1
|
Direction of the layer1 path in the via definition. Valid values are: leftToRight, rightToLeft, topToBottom, bottomToTop, diagRise, diagFall, horizontal, or vertical.
This argument defines the direction of the first of the two paths to be connected together.
|
|
f_pathWidth2
|
Width of the layer2 path in the via definition.
This argument defines the width of the second out of the two paths to be connected together.
|
|
t_pathDirection2
|
Direction of the layer2 path in the via definition. Valid values are: leftToRight, rightToLeft, topToBottom, bottomToTop, diagRise, or diagFall.
This argument defines the direction of the second of the two paths to be connected together.
|
|
l_options
|
Optional list of parameter values expressed as name-value pairs.
The parameters you can specify are: "calcMode", "calcEncMode", "minNumCut", "alignment", "cutBoxDirection", "cutClass", "fillOverlap" and "extendEncBeyondOverlap"
For example, you can specify the parameters t_calcMode and t_calcEncMode. These parameters specify whether the via parameters or only the enclosures are to be calculated, respectively. Both these parameters can take the following values: minRules, minRulesAndViaDef, and viaDefDefaults. The default is minRulesAndViaDef. If you specify only t_calcMode, both t_calcMode and t_calcEncMode are set.
Other supported l_options parameters indicate:
-
minNumCut: Minimum number of cuts in the via
-
alignment: The way the via needs to be aligned. Valid values are:
auto, upperRight, upperCenter, upperLeft, centerLeft, lowerLeft, lowerCenter, lowerRight, centerRight, and centerCenter -
cutBoxDirection: Direction of the cut box. Valid values are:
horizontal, vertical, and auto -
cutClass: Name of the cut class
-
fillOverlap: Boolean specifying whether the overlap should be filled or not. Valid Values:
t or nil -
extendEncBeyondOverlap: Enables the via enclosures to be extended beyond the overlap region of the intersecting shapes in the Single (in Auto mode), Stack (in Auto mode), and Auto via creation modes.
|
Value Returned
|
list_of_params
|
List of parameters for the specified via definition. The parameters listed are specific to each type of via definition. Only those parameters that differ from the technology file defaults are listed.
The parameters returned are: "cutWidth", "cutHeight", "cutRows", "cutColumns", "cutSpacing","cutSpacingX", "cutSpacingY", "layer1XEnclosure", "layer1YEnclosure", "layer2XEnclosure", "layer2YEnclosure", "layer1EncLeft", "layer1EncRight", "layer1EncTop", "layer1EncBottom",
"layer2EncLeft", "layer2EncRight", "layer2EncTop", "layer2EncBottom", "originOffset", "justification"
|
|
nil
|
The viaDefId is not valid for the specified objID or constraintGroup), or the viaDefId is a customViaDef with nonstandard via parameters.
|
Examples
-
cellViewId = geGetEditCellView() -
viaDefs=lxGetValidViaDefs(cellViewId "highYield")
; pick a viaDefId
-
viaId=nth(3 viaDefs) -
viaParams = list(list("cutRows" 3) list("cutColumns" 3)) -
viaParams=append(
viaParams
lxComputeViaParams( viaId cellViewId "highYield" viaParams )
)
-
viaId=dbCreateVia(cellViewId viaId list(5 5) "R0" viaParams)
Creates a via using the lxGetValidViaDefs, lxComputeViaParams, and dbCreateVia commands.
tf=techGetTechFile(ddGetObj("gpdk090"))
via=techFindViaDefByName(tf "M2_M1v")
paramList=lxComputeViaParams(via geGetEditCellView() "virtuosoDefaultSetup" list(list("cutRows" 3) list("cutColumns" 3) list("justification" "lowerLeft")))
Automatically generates the cut spacing parameters for a via using lxComputeViaParams.
(("cutRows" 3)
("cutColumns" 3)
("cutSpacing"
(0.2 0.2)
)
("originOffset"
(0.34 0.34)
)
)
Automatically computes the via parameters and displays them in the CIW.
dbCreateVia(geGetWindowCellView() via 0:0 "R0" paramList)
Uses the computed parameters to create the associated via at 0:0.
Return to top