create_derived_vias
create_derived_vias
[ -cut_layers {[existing] [{s_cutLayerName…}]} ]
[ -replace [ true | false | derivedVias | stdVias | customVias | all ] ]
[ -include_via_variants [ true | false ] |
-discard_via_variants [ true | false ] ]
[ -single_cut [ true | false ] ]
[ -non_pref [ true | false ] ]
[ -use_taper_rule [ true | false ] ]
[ -top_of_stack [ true | false ] ]
[ -asymmetric_tos [ true | false ] ]
[ -align_tos [ true | false ] ]
[ -max_cuts [ true | false ] ]
[ -min_num_cuts [ true | false ] ]
[ -align_extensions [ true | false ] ]
[ -large_cut_space [ true | false ] ]
[ -std_via_def [ true | false ] ]
[ [ -force_std_via_def [ true | false ] | -max_std_via_def [ true | false ] ] [ -keep_extensions [ true | false ] ] ]
[ -use_extension_entry {i_tableColIndex…} ]
[ -offset_origin [ true | false ] | -offset_origin_center_cut [ true | false ] ]
[ -pre_clear [ true | false ] ]
[ [ -cut_class {f_x f_y} [ -cut_class_num_cuts i_numCut] ]
| [ -cut_class_names {s_cutClassName…} [ -cut_class_rotate [ true| false ] ] ]
[ -cut_columns i_colCount ]
[ -cut_rows i_rowCount ]
[ -group s_groupName [ -taper_spec s_taperSpecName ]
[ -count [ true | false ] ] ]
[ -hardness {hard | soft} ]
[ -report [ true | false ] ]
[ -report_all [ true | false ] ]
[ -right_way {top | bottom | both | none} ]
[ -silent [ true | false ] ]
[ -warn [ true | false ] ]
[ -use_cut_class [ true | false ] ]
[ -right_way [ top | bottom | both | none ] ]
[ -use_allowed_cut_classes [ true | false ] ]
Description
Creates vias that are design rule compliant for the standard vias specified in the validRoutingVias list for each routespec that is used in the current cellview. The derived vias are also referred to as parameterized vias.
Most of the Boolean arguments determine which via types will be created and default to true. No command arguments are necessary to create these via variations. To eliminate some variations, specify one or more arguments with a false setting, and/or use -use_extension_entry. To create vias from cutClass settings, you must specify a cut class argument (-cut_class or -cut_class_names).
The types of vias that are created are dependent on whether certain constraints are set or can be derived from the default oaStdViaDef parameters. These constraints are listed in the following table.
Constraints for create_derived_vias
|
minWidth minSpacing minSameNetSpacing oaMinViaSpacing minLargeViaArraySpacing minLargeViaArrayCutSpacing minLargeViaArrayWidth minAdjacentViaSpacing minNeighborViaSpacing minParallelViaSpacing minParallelWithinViaSpacing minExtension minDualExtension minEdgeLength minEdgeAdjacentLength minEdgeMaxCount validRoutingLayers validRoutingVias minArea minRectArea minAreaEdgeLength minNumCut oaPreferredRoutingDirection preferredExtensionDirection inlineViaPreferred preferredViaOrigin cutClass
|
The constraints specify cut dimensions, spacings, and metal enclosures. They also specify metal edge and area for top-of-stack vias, and preferred routing directions. Only vias that are design rule compliant will be created. If there are dual extensions, a preferred via is created with the greater extent in the preferred routing direction of the corresponding metal layer. By default, a non-preferred via is also created with the greater extension oriented wrong-way.
The new vias are added to the extendedValidRoutingVias constraint, making them available for use by the router and other Space-based Router and Chip Optimizer functions. The new vias are given the name of the existing standard via appended with _derived_x where x is a unique number. If the extendedValidRoutingVias constraint did not previously exist, it is set by this command and will include the new vias. The validRoutingVias constraint values can also be included in the extendedValidRoutingVias constraint, depending on the -replace and -hardness argument settings.
Although you cannot directly set extendedValidRoutingVias, you can get the current value using:
get_constraint -constraint extendedValidRoutingVias -group s_groupName
You can also unset extendedValidRoutingVias using:
unset_constraint -constraint extendedValidRoutingVias -group s_groupName
If a standard via definition did not exist for a layer pair, then the technology database will be updated with the newly created standard via definition (oaStdViaDef). All new derived vias (oaStdVia) are saved to the design database. If you load a design that was saved with derived vias, you must re-issue the create_derived_vias command to set the extendedValidRoutingVias constraint and enable the derived vias.
Arguments
|
-align_extensions [ true | false ]
|
|
|
Creates vias with aligned top and bottom metal extensions.
Default: true
|
|
-align_tos [ true | false ]
|
|
|
Creates top-of-stack vias with aligned top and bottom metal extensions.
Default: false
|
|
-asymmetric_tos [ true | false ]
|
|
|
Creates top-of-stack vias with asymmetric metal extensions.
Default: true
|
|
-count [ true | false ]
|
|
|
Reports the number of extended valid vias per cut layer for a given constraint group, then quits. No vias are created.
Default: false
|
|
-cut_class {f_x f_y}
|
|
|
Creates vias with the specified directional cut class dimensions {f_x f_y}.
|
|
-cut_class_names {s_cutClassName…}
|
|
|
Creates vias with dimensions from the cutClass constraint with the given names. By default, both cut orientations (x, y) and (y, x) are created.
|
|
-cut_class_num_cuts i_numCut
|
|
|
Specifies the equivalent number of cuts for the given directional cut class. This value is ignored if the given cut class dimensions match an existing cutClass constraint.
Default: 1
|
|
-cut_class_rotate [ true | false ]
|
|
|
(Applies only with -cut_class_names) When true, creates both cut orientations (x, y) and (y, x) for non-square cut classes. Set this to false to create only the {x, y} orientation given by the cutClass names.
Default: true
|
|
-cut_columns i_colCount
|
|
|
Specifies the number of cut columns.
Default: 1
|
|
-cut_layers {[existing][{s_cutLayerName…}]}
|
|
|
When only the list is given, creates vias only for the cut layers in the list. When only existing is given, creates vias for the same cut layers as the existing standard vias in validRoutingVias. When existing is given with a list of cut layers, creates vias only for the cut layers in the list that also have existing standard vias in validRoutingVias.
Default: Creates vias for all cut layers
|
|
-cut_rows i_rowCount
|
Specifies the number of cut rows.
Default: 1
|
|
-discard_via_variants [ true | false ]
|
|
|
When processing validRoutingVias, discard (true) or keep (false/default) existing via variants.
|
|
-force_std_via_def [ true | false ]
|
|
|
If true, derives vias using parameter values from the applicable oaStdViaDef instead of using constraint values for the cut layer. No vias will be created using via parameters that violate existing via rules.
Default: (false) oaStdViaDef settings are only used when required constraints are not defined.
|
|
-group s_groupName
|
Specifies the name of the constraint group, or rule spec, for which to create the derived vias, based on the rules for the group.
Default: All constraint groups of type net, route, and default
|
|
-hardness {hard | soft}
|
|
|
Determines whether the resulting extendedValidRoutingVias with the new derived vias is a hard or soft (preferred) constraint and whether hard or soft validRoutingVias are considered when creating the extendedValidRoutingVias.
Default: Both hard and soft extendedValidRoutingVias constraints are created or updated to include the new vias.
|
|
-include_via_variants [ true | false ]
|
|
|
When processing validRoutingVias, derive vias from via variants in validRoutingVias (true), or keep the existing via variants in validRoutingVias (false/default).
|
|
-keep_extensions [ true | false ]
|
|
|
(Applies only with -force_std_via_def or -max_std_via_def) If true, keep extension orientation of the applicable oaStdViaDef.
Default: false
|
|
-large_cut_space [ true | false ]
|
|
|
Creates multi-cut vias with large cut spacing.
Default: true
|
|
-max_cuts [ true | false ]
|
|
|
Creates vias with the maximum number of cuts for the widths of each layer pair.
Default: true
|
|
-max_std_via_def [ true | false ]
|
|
|
When true, use the maximum of via parameters from the applicable oaStdViaDef and existing via rules.
Default: false
|
|
-min_num_cuts [ true | false ]
|
|
|
When true and -cut_rows and -cut_columns are not given (or are set to 1), creates multi-cut vias based on the minNumCut rules.
Default: true
|
|
-non_pref [ true | false ]
|
|
|
When true, creates additional vias for the non-preferred (wrong-way) routing direction. When false, wrong-way extension variations are not created.
Default: true
|
|
-offset_origin [ true | false ]
|
|
|
(Applies only to 1xN and Nx1 cut vias with N>1) When true, the via origin is offset such that wires connect at the edge of via metal. When false, the via origin is placed at the center of the cuts.
Default: false
|
|
-offset_origin_center_cut [ true | false ]
|
|
|
(Applies only to 1xN and Nx1 cut vias with N>1) When true, the via origin is offset such that wire centers connect at the center of an end cut. If false, the via origin is placed at the center of all cuts.
Default: false
|
|
-pre_clear [ true | false ]
|
|
|
If true, clears all derived vias before creating new vias for the applicable constraint groups.
Default: false
|
|
-replace [ true|false | derivedVias | stdVias | customVias | all ]
|
|
|
Chooses whether the new derived vias will replace existing vias or will be added to the existing derived vias.
|
|
|
all
|
Replaces all existing vias with the new derived vias.
|
|
|
customVias
|
Replaces custom vias with the new derived vias.
|
|
|
derivedVias
|
Replaces existing derived vias with the new derived vias. Has the same function as true.
|
|
|
false
|
Adds new derived vias to the existing derived vias. This is the default.
|
|
|
stdVias
|
Replaces standard vias, including existing derived vias, with the new derived vias.
|
|
|
true
|
Replaces existing derived vias with the new derived vias. Has the same function as derivedVias.
|
|
-report [ true | false ]
|
|
|
Reports the via parameters for existing derived vias. No vias are created when this argument is given.
Default: false
|
|
-report_all [ true | false ]
|
|
|
If true, reports detail information for all existing standard and custom vias, then quits. No vias are created.
Default: false
|
|
-right_way s_orient
|
Specifies the orientation for cut pattern and extensions when creating vias.
|
|
|
top
|
Creates vias with cut pattern and extensions oriented only in the preferred routing direction of the top metal layer.
|
|
|
bottom
|
Creates vias with cut pattern and extensions oriented only in the preferred routing direction of the bottom metal layer.
|
|
|
both
|
Creates vias with cut pattern and extensions oriented only in the preferred routing direction of each metal layer.
|
|
|
none
|
Creates vias with all possible cut patterns and extension orientations. This is the default.
|
|
-silent [ true | false ]
|
|
|
If true, most output messages are suppressed.
Default: false
|
|
-single_cut [ true | false ]
|
|
|
Creates basic single-cut vias if -cut_rows and -cut_columns are not specified.
Default: true
|
|
-std_via_def [ true | false ]
|
|
|
If minWidth, minSpacing, or one of minExtension or minDualExtension is not defined for the cut layer, this option allows these constraints to be derived from the default oaStdViaDef. If set false and minSpacing and minWidth constraints are not specified for the cut layer, no derived vias are created.
Default: true
|
|
-taper_spec s_taperSpecName
|
|
|
(Applies only with -group) Specifies the name of the constraint group, or rule spec, to use as a taper rule. Allows you to temporarily substitute/override a group’s taper rule when creating vias for taper rules.
|
|
-top_of_stack [ true | false ]
|
|
|
Creates top-of-stack vias with symmetric extensions. Default: true
|
|
-use_extension_entry {i_tableColIndex…}
|
|
|
Limits the creation of derived vias to the metal extensions from a OneDDualArrayTblValue whose column index is in this list. By default, all entries in the table are used. Entry values are non-negative integers from 0 to N-1, where N is the number of extension pair entries in the minDualExtension table.
For example,
-OneDDualArrayTblValue {0 2 0.05 0.20 0.10 0.10}
specifies two extension pairs {0.05 0.20} and {0.10 0.10}.
If you use -use_extension_entry {0}, then only {0.05 0.20} extensions will be used to create the derived vias.
|
|
-use_taper_rule [ true | false ]
|
|
|
Creates vias for taper rules.
Default: true
|
|
-warn [ true | false ]
|
Specifies whether warnings are output.
Default: true
|
|
-use_cut_class [ true | false ]
|
|
|
Creates vias with dimensions from the cut class constraints for the smallest number of equivalent cuts.
Default: true
|
|
-right_way [ top | bottom | both | none ]
|
|
|
Creates vias with cut pattern and extensions oriented only for right-way metal on top, bottom, both, or none.
Default: none
|
|
-use_allowed_cut_classes [ true | false ]
|
|
|
Creates vias using the allowed cut classes in the allowedCutClass constraint.
Default: value of db.cdv_use_allowed_cut_classes, if defined, else false.
|
Examples
The following example sets the minWidth (which is not typically set for vias in the LEF) and minDualExtension constraints for creating parameterized Via1 vias. In this case, the minSpacing rule for Via1 was set in the LEF.
set_layerpair_constraint -constraint minDualExtension -DualValue { 0.00 0.05} \
-layer1 Metal1 -layer2 Via1
set_layer_constraint -layer Via1 -constraint minWidth -hardness hard -Value 0.1
dump_ctu_constraints -constraint s_name can be used to check these settings, or get_layerpair_constraint and get_layer_constraint for the individual settings.
With these values, Space-based Router and Chip Optimizer creates parameterized vias when the following command is issued:
create_derived_vias
Space-based Router and Chip Optimizer creates derived vias based on the available or derived constraints and outputs messages to the Transcript area to indicate the vias that are generated. For example,
Creating preferred via (offset=0,0) (rows: 1 cols: 1 cutX: 600 cutY: 600 spcX: 600 spcY: 600) - Metal1 ext: N:200 S:200 E:200 W:200 <==> Metal2 ext: N:200 S:200 E:200 W:200
where
-
offset is the origin offset (x,y)
-
rows is the number of cut rows
-
cols is the number of cut columns
-
cutX is the horizontal cut dimension
-
cutY is the vertical cut dimension
-
spcX is the horizontal spacing between adjacent cuts
-
spcY is the vertical spacing between adjacent cuts
-
ext are the extensions for the given metal layer in the (N)orth, (S)outh, (E)ast and (W)est directions
Use the following command to output the list of valid routing vias, including derived vias:
get_constraint -constraint extendedValidRoutingVias
Additional special 4-cut vias for wide nets (assigned to the WIDE constraint group) can be created by ignoring the minNumCut rule using the following commands:
create_derived_vias -group WIDE -cut_rows 1 -cut_columns 4
create_derived_vias -group WIDE -cut_rows 4 -cut_columns 1
create_derived_vias -group WIDE -cut_rows 2 -cut_columns 2
Derived Vias from MinDualExtension OneDDualArrayTblValue
If both metal layers for a via have OneDDualArrayTblValue minDualExtension extension values, then the extension pairs of one metal layer will only be matched with the corresponding table column for the other metal layer.
In the following example, both M2 and M3 have three extension pairs for a width of 0.0 and three extension pairs for a width of 0.7.
set_layerpair_constraint -constraint minDualExtension -layer1 M2 -layer2 VIA2 -OneDDualArrayTblValue {0.0 3 0.01 0.10 0.01 0.16 0.10 0.10 0.7 3 0.02 0.20 0.02 0.32 0.20 0.20}
set_layerpair_constraint -constraint minDualExtension -layer1 M3 -layer2 VIA2 -OneDDualArrayTblValue {0.0 3 0.02 0.10 0.18 0.18 0.10 0.10 0.7 3 0.04 0.20 0.36 0.36 0.20 0.20}
The VIA2 derived vias will consist of three sets of vias for each given width, no additional pair combinations will be created. It is assumed that the first extension pair of M2 corresponds to the first extension pair on M3. The first extension pair on M2 will not be combined with the second extension pair on M3 to form a via.
For width 0.0,
Extensions in Set 0 = M2 (0.01 0.10) - M3(0.02 0.10)
Extensions in Set 1 = M2 (0.01 0.16) - M3(0.18 0.18)
Extensions in Set 2 = M2 (0.01 0.10) - M3(0.10 0.10)
Derived Top-of-Stack Vias Examples
Origin Variations for create_derived_vias
Right-way Variations for create_derived_vias
Related Topics
Design Configuration Commands
create_via_variant
dump_ctu_constraints
get_constraint
get_layer_constraint
get_layerpair_constraint
set_layer_constraint
set_layerpair_constraint
Return to top