Product Documentation
Virtuoso Unified Custom Constraints User Guide
Product Version IC23.1, November 2023

A


Default Constraint Types

A constraint type is a formal definition of a design annotation that describes required electrical or physical relations between a set of design objects (constraint members) through a set of pre-defined constraint parameters.

In addition to the default system constraint types discussed in this appendix, you can create your own custom constraint types by using the UI configuration file, config.xml. You can also use this file to override definitions of the existing custom constraint types and extend definitions of any system constraint type. For detailed information, refer to Customizing Constraint Types Using a Configuration File in the Virtuoso Unified Custom Constraints Configuration Guide.

This appendix contains information on the following:

Constraints in Virtuoso Schematic and Layout Editing Environment

Schematic Constraint Manager Toolbar Layout Constraint Manager Toolbar

Electrical menu

Max Resistance

Electrical menu

Max Resistance

Max Voltage Drop

Max Voltage Drop

Max Capacitance

Max Capacitance

Matched Capacitance

Matched Capacitance

Max Coupling Capacitance

Max Coupling Capacitance

High Precision C Extraction

High Precision C Extraction

High Precision R Extraction

High Precision R Extraction

Voltage Synced Net

Delta Voltage

Correlation

Matched Parameters

Matched Parameters

Matched LDE Parameters

Matched LDE Parameters

Placement menu

Alignment

Placement menu

Alignment

Cell Boundary

Cell Boundary

Rail

Rail

Cluster

Cluster

Cluster Boundary

Cluster Boundary

Disable Permutation

Disable Permutation

Distance

Distance

Guard Ring

Guard Ring

Matched Orientation

Matched Orientation

Modgen

Fixed

Orientation

Locked

Symmetry

Modgen

Placement Path

Orientation

Symmetry

Placement Path

Area Pin Group Guide

Edge Pin Group Guide

Routing menu

Bus

Routing menu

Bus

Diff Pair

Diff Pair

Matched Length

Fixed

Net Class

Locked

Net Class Group

Matched Length

Net Class Hier Group

Net Class

Net Priority

Net Class Group

Shielding

Net Class Hier Group

Symmetry

Net Priority

Process Rule Overrides

Shielding

The Constraint Manager does not allow certain infeasible combinations of constraint and constraint parameters. For example, an orientation constraint with allowed orientation parameter set to R0 on two instances that have a Symmetry constraint with the Mirror parameter set to true. It does not create such constraints and generates a warning message in the CIW.

Alignment

Definition

The Alignment constraint defines alignment between members of the constraint. Its most important parameters are side and use, which define the reference for the alignment.

  • Parameter side defines what the reference point for the alignment is. In case parameter side has the value edgeNumber, the parameter edge has an effect and must be specified on the member.
    Currently, the side parameter on individual constraint members are ignored, except by the Virtuoso Floorplanner.
  • Parameter use specifies whether the member’s boundary or one of its layers shall be used as reference for alignment. In case parameter use is set to layer, parameter layer has an effect and must be specified.

The parameter anchor may be set to the value true for zero or one members. If a member’s anchor parameter is set to true, then it is defined as the “leader” in the member set. The preserveOrder parameter keeps the members in the same spacial order along the axis of alignment.

The alignment constraint accepts an Axis Parameter. If no axis is specified, the constraint uses a default axis. Two alignment constraints that have a default axis do not always or necessarily share the same axis.

Only VLM supports shapes as members. All other applications, such as Analog Placer, Constraint Aware Editing, Digital Placer, and Floorplanning will ignore them.

Parameters

In addition to the parameters Name, Enabled, and Notes, you can set the following parameters:

There is no way to disable the status value in schematic. Users should ignore it, except for Matched Parameter.
  • Axis (see Axis Parameter)
    For alignment constraints, the only information read off of the axis is the direction of the axis. The alignment constraint does not look at the realizedCoordinate, coordinate or axisLocation sub-parameters.
  • Side
    Type: enum
    Default: “left” (when vertical axis selected), “top” (when horizontal axis selected)
    Valid Values: “top”, “center”, “bottom”, “right”, “origin”, “edgeNumber”, “orderOnly” (for vertical axis) “left”, “center”, “origin”, “edgeNumber”, “orderOnly” (for horizontal axis)
    The “center” parameter value specifies that members be aligned using their centers, and not their edges. If a constraint has both pin and PR boundary members, the “center” value is currently undefined. However, if the alignment constraint has pin members, but no PR boundary member, then the “center” value instructs that the pins should be aligned with regard to their centers. The side parameter value “edgeNumber” is only valid as a constraint parameter if the members are a polygonal (non-rectangular) PR boundary and pins. In the latter case, the side parameter of the pins must be set to “edgeNumber” and the value of the edge parameter of the pins must be set to the corresponding edge number of the polygonal PR Boundary for alignment.

For more information on the use of “edgeNumber”, and its use in the Virtuoso Custom Digital Placer, see the Placement Constraints section in the Introduction chapter.

On Constraint: Y

On Member: Y

Display: Y

User Units: N

  • PreserveOrder
    Type: boolean
    Default: false
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: N
    If PreserveOrder is set to true, then the Analog Placer will place the pins in the order that they appear as members in the alignment constraint. If you want a different order to be preserved you must change the order that the pin members appear in the constraint.
    Value cannot be false when side = orderOnly
  • pitchReference
    Type: enum
    Default: “center”
    Valid Values: “edge” and “center”
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: N

  • pitch
    Type: integer
    Default: (not set)/-1
    Valid Values: positive
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: Y
    The parameter pitch is a center-to-center distance.
  • use
    Type: enumerated
    Default: “boundary”
    Valid Values: “boundary” “layer”
    On Constraint: Y
    On Member: Y
    Display: Y
    User Units: N
    Alignment should use a layer (with layer name) for alignment instead of the boundary as the same side applies.

  • layerName
    Type: integer
    Default: 0
    Valid Values: layer names
    On Constraint: Y
    On Member: Y
    Display: Y
    User Units: N
    The layerName parameter has a drop-down list box in the Constraint Manager for its field value. This menu contains a list of all possible layer selections that can be used to align alignment constraint members. Currently, this drop-down list box is populated using all the layers that are defined in the technology file. This includes regular and derived layers.
    If the use parameter is specified to be “layer”, then the layerName parameter will be referenced by Constraint Aware Editing (in Virtuoso Layout Suite XL). If that is the case, the alignment will occur using the specified layer’s bounding box, as opposed to the figure’s bounding box.

Members

Two or more instances, modgen constraints or figGroups, or regular figGroups, pins, terminals, shapes. One or more pins can be members along with a boundary.

Alignment constraints that have pins as members, should align to the PR Boundary edge specified by the side parameter on the constraint (left, right, top, bottom) only if a PR Boundary is also a member of the constraint. If an alignment constraint contains pins as members, but has no PR Boundary object as a member, the pins should align anywhere on the canvas, but not snap to PR Boundary edge.

Each individual member of an alignment constraint can have a different set of parameters, for example, one member can be placed ABOVE and one member BELOW the horizontal axis, using the side parameter of each member. If the value is specified on the member, then that value will be user, otherwise the value set on the constraint will be inherited for all members that do not have an explicit value. Alignment algorithms will respect the individual values of each member.

Member order is important when the parameter preserveOrder is set to true.

Supporting Applications

  • Virtuoso Custom Digital Placer (uses all parameters except use, layerName, and anchor)
  • Virtuoso Floorplanner (uses all parameters except use and layerName)
  • Virtuoso Analog Auto Placer (all parameters except pitch and edge)
  • Virtuoso Layout Suite XL / Constraint Aware Editing (all parameters except preserveOrder(pins), pitch, edge, and anchor
preserveOrder is only supported when it is applicable to pins. That is, when the alignment constraint has pin members.

Area Pin Group Guide

Definition

The Area Pin Group Guide constraint defines the placement of pin members within the guide regions defined by its area boundary members.

Parameters

In addition to the parameters Name, Enabled, and Notes, you can set the following parameters:

  • Default Group (Constraint Group)
    The Default Group contains the following parameters: Valid Layers, Widths Minimum, Spacing, layerPriorityOrder, preserveOrder, spreadPins, and pinGroupType.
    • Valid Layers defines the layers that can be used when placing the member pins.
    • Widths Minimum defines the default minimum width for member pins in the pin group guide. Width is defined per layer in user units.
    • Spacing defines the default minimum spacing for the pin group guide. Spacing is defined per layer in user units.
    • layerPriorityOrder defines whether the Valid Layers are listed in the order of preference.
      Type: Boolean
      Default: false
    • preserveOrder defines whether the member pins are placed in the same order as the members.
      Type: Boolean
      Default: false
    • spreadPins defines whether the member pins are evenly spaced.
      Type: Boolean
      Default: false

    • pinGroupType defines whether the group is inclusive or exclusive. It specifies if other non-member pins are allowed in the regions specified by the group's area boundary members.
      Type: enum
      Default: AllowForeignPins
      Values: This parameter accepts one of the following values:
      • AllowForeignPins means other pins are allowed in the whole region.
      • ExcludeOnAllLayers means exclude other pins between members on all layers.
      • ExcludeOnPinLayers means exclude other pins between members on pin layers.
      • ExcludeForeignPins means exclude other pins from whole region on all layers.
  • Within Group (Constraint Group)
    The Within Group contains the Spacing parameter. The Within Group parameters are used to enter process rules between pin members in the group.
    • Spacing defines the minimum spacing between a pin and other member pins. Spacing is defined per layer in user units.
  • Group to Outside (Constraint Group)
    The Group to Outside contains the Keep Out Spacing parameter. The Group to Outside parameters are used to enter process rules between pin members and other pins in the design.
    • Keep Out Spacing defines the minimum spacing between the pin group guide members and other pins. Spacing is defined per layer in user units.

Members

The Area Pin Group Guide members are one or more pins, plus one or more area boundaries. The area boundary members define the regions in which the pin members can be placed.

Supporting Applications

  • Virtuoso Floorplanner
    • Pin Group Guide commands to Create/Edit and Compare
      For detailed information, refer to the Creating Pin Group Guides chapter in the Virtuoso Floorplanner User Guide.
    • Pin Planning and Pin Optimization
      For detailed information, refer to the following sections of the Pin Placement chapter in the Virtuoso Floorplanner User Guide:
  • Innovus™ Digital Implementation System (Innovus)
    This constraint type is interoperable with Innovus and validated by PVS-CV.

Bus

Definition

The Bus constraint is used to create new groups of nets that routers can then use as buses. The nets constrained will therefore be routed physically as a bus in the layout, following the same topology and spacing.

The Process Rule Editor can be used to apply process constraints on the spacing between the bussed nets, as well as the spacing between the bus and all other nets.

Parameters

In addition to the parameters Status, History, Name, Enabled, and Notes, you can set the following parameters:

  • Default Group (Constraint Group)
    The Default Group category contains the following parameters: Top Layer, Bottom Layer, Purposes, Vias Allowed, Widths Minimum, Cuts Minimum, Spacing.
    The above parameters are used to reflect the contents of a Bus default constraint group. Constraints may be placed here to locally override foundry rules obtained through standard lookup. Adding a constraint parameter to a Bus’s default constraint group is equivalent to adding the same constraint in each net member’s default constraint group. If there are similar constraints in the default constraint group of the net and the bus, then the net’s default constraint group parameter settings takes the precedence. A typical use here would be to route a set of nets with a specific wider width or a net with a specific number of via cuts, or to modify the valid layers for all nets in a bus.
    The Default Group category is available only when the members of a Bus constraint are nets (that is, not a nested net class).
    In addition to the parameters listed above, the Default Group category has the Wire Types parameter that can be used to define a set of wire types for each layer. For more information, see Assigning a Wire Type to a Net.

For more information on the Default Group, see The Process Rule Editor.

For more information on customizing constraint groups, see Customizing a Constraint Group.

  • Within Group (Constraint Group)
    The Within Group category contains the following parameter: Spacing.
    The Spacing parameter is used to enter process rules between net members in a Bus constraint.
    The Within Group category is available only when the members of a Bus are nets (that is, not a nested net class).
    For more information on the Within Group, see The Process Rule Editor.

  • Group to Outside Group (Constraint Group)
    The Group to Outside Group category contains the following parameters: Spacing, Tolerance, hierarchicalScope.
    The parameters available in the Group to Outside Group category are used to specify spacing for the routed bus to everything else in the design.
    The Group to Outside Group category can be used to enter process rules between nets in a bus constraint and those nets that are not part of that constraint.
    For more information on Group to Outside Group, see The Process Rule Editor.

Members

Two or more nets.

Supporting Applications

  • Constraint Aware Editing (Create Wire)
  • Virtuoso Space-based Router

Cell Boundary

Definition

The Cell Boundary constraint defines implicitly the aspect ratio for floorplanning tools using the following parameters:

  • minWidth
  • maxWidth
  • minHeight
  • maxHeight
  • mode

By default, all the parameters have a range from zero to positive infinite.

Parameters

In addition to the parameters Name, Enabled, and Notes, you can set the following parameters:

  • minWidth
    Type: float
    Default: 0 [Database Units]
    Valid Values: positive
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: Y

  • maxWidth
    Type: float
    Default: 0 [Database Units]
    Valid Values: positive
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: Y
  • minHeight
    Type: float
    Default: 0 [Database Units]
    Valid Values: positive
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: Y
  • maxHeight
    Type: float
    Default: 0 [Database Units]
    Valid Values: positive
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: Y

  • mode
    The mode parameter allows you to specify feasible combinations as a range (min/max):
    Width, Height, Aspect Ratio, Area Utilization, and Area.
    • minWidth and maxWidth only shows up when mode contains Width.
      Default for minWidth is 0
      Default for maxWidth is 50
    • minHeight and maxHeight only shows up when mode contains Height.
      Default for minHeight is 0
      Default for maxHeight is 50
    • minAspectRatio and maxAspectRatio only shows up when mode contains AspectRatio.
      Type: float
      User Unit: N
      Default for minAspectRatio is 0.8
      Default for maxAspectRatio is 1.2
    • minUtilization and maxUtilization only shows up when mode contains AreaUtilization. The percentage of devices area inside total boundary area is 50, which means 50%.
      Type: float
      User Unit: N
      Default for minUtilization is 70
      Default for maxUtilization is 80

    • Area user desired area and does not have any min/max range.
      User Unit: Y
      Default value is 10000

The allowable parameter combinations are:

    • Width & Height
    • Width & AreaUtilization
    • Width & AspectRatio
    • Width & Area
    • Height & AreaUtilization
    • Height & AspectRatio
    • Height & Area
    • AreaUtilization & AspectRatio
    • AspectRatio & Area

Members

A Cell Boundary constraint can be created without any selection having been made in the design canvas in both schematic and layout. The newly created constraint will be displayed in the Constraint Manager with one member, PR Boundary.

The Cell Boundary constraint menu entry will be grayed out if you select a PR Boundary other than that belonging to the current cellview.

Supporting Applications

  • Virtuoso Floorplanner
  • Virtuoso Layout Suite XL (Constraint Aware Editing)
  • Virtuoso Analog Auto Placer (Partial Support): Supports all parameters of the Cell Boundary constraint, but only the following values of the mode parameter:
    • Width & Height
    • Width & AspectRatio
    • Height & AspectRatio
    • Height & Area
    • Width & Area
    • AspectRatio & Area

Cluster

Definition

The Cluster constraint defines sets of instances and/or other clusters that exist in relatively close proximity. Both cluster selection and creation can be achieved using the Constraint Manager assistant.

Clusters can be created on a single schematic instance, hierarchical or otherwise, and successfully transferred to layout following the physConfig. To do this, use one of the following methods:

  • At an instance level, do one of the following:
    • select the individual hierarchical instance in the canvas to create a Cluster constraint.
    • expand the hierarchical node in the Navigator and select the members to create a Cluster constraint.
  • At a cell level, descend into the instance and select members to create a Cluster constraint. This can then be changed to a single occurrence if required (see Moving a Constraint to the Current Cell).

When you select a member of a Cluster constraint in the canvas, it gets cross-highlighted in the Constraint Manager. If the associated Cluster constraint is a member of a Cluster Boundary constraint, then that Cluster Boundary constraint also gets highlighted. The image below illustrates these scenarios from the Layout XL canvas.

As illustrated below, when a cluster constraint is selected in the Constraint Manager assistant, the cluster boundary of which the constraint is a member gets cross-highlighted. The cluster boundary also gets haloed in the canvas.

The Constraint Manager assistant also supports the creation of hierarchical clusters, that is, clusters within clusters. For example, you can create a hierarchical cluster based upon the selection of existing clusters in the Constraint Manager assistant.

The constraint checker cannot recognize certain types of user-defined Pcell guard ring instances and as a result, reports them as violating cluster constraints. To ensure that the constraint checker ignores such Pcell guard ring instances, set the caeIgnoreInCluster property on the specific guard ring instance or its supermaster (to ignore all instances of that supermaster).

Parameters

Name, Enabled, and Notes parameter information can be set.

Members

One or more instances, modgen constraints or figGroups, regular figGroups (equivalent to adding the individual members), and/or other clusters. Membership follows oaCluster rules and the cluster tree must be a partition (one member in one cluster at most).

In the front-end, Cluster constraints can only be created on scalar instances and vector bit instances, not on vector instances. This is because scalar and vector bit instances accurately describe the layout objects and design intent, while also being natively supported in the database.

Clusters that are selected in the Constraint Manager assistant should form part of the selected set. This is important in allowing constraints to be created containing hierarchical clusters.

The Constraint Manager will also consider any clusters currently selected to be part of the selected set when a Guard Ring constraint is created. This allows clusters to be members of Guard Ring constraints. For example:

  1. Select existing Cluster constraint in Constraint Manager.
  2. Use the Shift key to also select the net that is to be connected to the guard ring (for example, a wire of this net in the schematic).
  3. Select the Guard Ring option from the Constraint Generator drop-down list box.
  4. Select the net member in the Constraint Manager.
  5. Edit the newly generated Guard Ring constraint to enter a valid MPP name that is to be used by the guard ring.

A Cluster constraint can also be a constraint container. That is, it can contain its own members and also be used as a member itself for other constraints.

Supporting Applications

  • Virtuoso Custom Digital Placer
  • Constraint Aware Editing
  • Virtuoso Floorplanner

Example: How to Add Cluster Members

The following example details how to include additional members on a cluster constraint using the ciConUpdateMembers API:

procedure(doClusterBoundaries(cv cache name align)
  let((conname1 conname2)
    printf("name in doClusterBoundariess is %L\n" name)
    if(align then
      if((conname1 = ciConFind(cache name)) then
    printf("adding in doClusterBoundariess is %L\n" align)
        ciConUpdateMembers(conname1 append(align foreach(mapcar x ciConListMembers(conname1) list(car(x) cadr(x)))))
      else
    printf("creating in doClusterBoundariess is %L\n" align)
        conname1 = ciConCreate(cache 'cluster
                    ?members align
                    ?name name
        )
        ciConCreate(cache 'clusterBoundaryDef
                  ?members list(list(name 'cluster))
                  ?params  list(list("boundary"  x=getBoundary(cv "upper")) list("flexibleFlag" 1))
        )
      )
    )
    printf("names = %L\n" ciConListMembers(conname1))
  )
)

Cluster Boundary

Definition

The Cluster Boundary constraint represents a boundary which its member cluster must respect.

When you select a cluster boundary in the canvas, the corresponding Cluster Boundary constraint gets highlighted in the Constraint Manager assistant, as shown below.

Similarly, on selecting a Cluster Boundary constraint in the Constraint Manager assistant, the associated cluster boundary and all members related to the cluster get haloed in the canvas, as shown below.

Parameters

In addition to the parameters Name, Enabled, and Notes, you can set the following parameters:

  • flexibleFlag
    Type: Boolean
    Default: 0
    Valid Values: (0, 1)
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: N

  • boundary
    Type: float(4) - 4 indicating the number of float types
    Default: (0 0) (0 0.001) (0.001 0.001) (0.001 0)
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: N

Members

One cluster

Supporting Applications

  • Virtuoso Custom Digital Placer
  • Virtuoso Floorplanner
  • Constraint Aware Editing

Correlation

Definition

The Correlation constraint is used to define the coefficient of correlation between two devices for Monte Carlo simulation.

Parameters

In addition to the parameters Name, Enabled, and Notes, you can set the following parameters:

  • Coefficient
    Type: float
    Default: 0.0
    Valid Values: in [-1.0 1.0]
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: N
  • correlatedParameters
    Type: string1DTable
    Valid Values: space separated list of names
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: N

Members

Two or more unique instances. These instances cannot be used in another Correlation constraint. Any instance can be used in any number of Correlation constraints.

Supporting Applications

  • Monte Carlo Analysis

Diff Pair

Definition

The Diff Pair constraint defines a specialty routing relationship between two nets. The nets should be routed together in order to minimize variations from spacial dependent effects.

For more information, see The Process Rule Editor.

Parameters

See also Diff Pair Parameters and the Process Rule Editor for additional Diff Pair parameter information.

In addition to the parameters Name, Enabled, and Notes, you can set the following parameters:

  • Default Group (Constraint Group)
    Which contains the following parameters:
    Top Layer, Bottom Layer, Purposes, Vias Allowed, Widths Minimum, Cuts Minimum, Spacing.
    These constraint group parameters include information on the layers to use for Diff Pair. Parameters correspond to a valid layers constraint in the PRE. The layers parameters should always contain a contiguous set of layers to use for this net (/net group). The router should route using only these layers. Additionally, the spacing (for each layer) represents the min spacing default constraint group for Diff Pair.
    In addition to the parameters listed above, Default Group has the Wire Types parameter that can be used to define a set of wire types for each layer. For more information, see Assigning a Wire Type to a Net.
    For more information on Default Group, see The Process Rule Editor.

  • Within Group (Constraint Group)
    The Within Group parameters help to define the process rules for the net members in a Diff Pair constraint. These parameters include Spacing and Tolerance. For more information on the Within Group parameters, see The Process Rule Editor.
    • The Tolerance parameter describes the percentage allowed deviation from specification when implementing a given constraint. This parameter applies only to symmetry (and other constraints) on nets, for the purpose of routing.
    • In addition to the Spacing and Tolerance parameters, you can define the Same Mask parameter to ensure all shapes on a given layer for a net are on the same mask. This parameter allows you to specify the color of the nets in the net class. This can also have a hard or a soft attribute.
      The Same Mask parameter is equivalent to using the msSameMask constraint. If you reset the value of this constraint, the color of the nets should be reset accordingly.
    • Optionally, in addition to the Same Mask parameter, you can set the Mask Name parameter to ensure that the shapes will be on the specified color mask for each routing layer for the nets in the Symmetry constraint.

    For more information, refer to Specifying the Color Mask for Critical Nets in Schematic.

  • Group to Outside Group (Constraint Group)
    Which contains the following parameters:
    Spacing, Tolerance, hierarchicalScope.
    The Group to Outside Group constraint group is used to enter process rules between nets in a Diff Pair constraint and those nets that are not part of that constraint.
    For more information on Group to Outside Group, see The Process Rule Editor.

Members

Two nets only.

A given net may belong to only 1 specialty routing constraint (for example, Symmetry, Diff Pair, or Matched Length).

A Diff Pair constraint can also be a constraint container. That is, it can contain its own members and also be used as a member itself for other constraints.

Supporting Applications

  • Constraint Aware Editing (Create Wire)
  • Virtuoso Space-based Router
  • Innovus System

Diff Pair Parameters and the Process Rule Editor

The following Diff Pair constraint parameters allow to edit the process rules in The Process Rule Editor. That is, changing the value of these parameters in the Constraint Manager assistant make equivalent changes in the PRE and conversely. Each parameter tooltip also provides information on where, in the constraint lookup, a value was found.

Diff Pair Parameter PRE Equivalent Parameter Name Notes

diffPair layers

Valid Layers on diffPair default constraint group

Specifies the min and max of a range of valid layers that routers should use on a net when tapering. If the database does not currently contain a sequential list of layers then these fields will be blank.

In the UI, enter a top and bottom layer entry to the specify the range.

gap spacing

Gap Spacing in diffPair Within Group

Specifies the spacing to use per layer between the diffPair wires.

Disable Permutation

Definition

The Disable Permutation constraint allows you to stop permutation on a device without having write access to the schematic. It can also provide additional visibility when permutation is important.

Note:
    • The Disable Permutation constraint will override the permuteRule. Permutation constraints which are not met are ignored and do not disable permutation.
    • One constraint is applied per instance and is used to check that the schematic and layout permutations are the same. This can be used to preserve current direction.
    • The instance’s permuteRule will return nil when the constraint is active, and met.
    • Global permute operates as normal when the constraint is deleted.
    • Permute constraints apply throughout the flow.
    • The Disable Permutation constraint has been created to keep the connectivity of a device in the layout the same as it is in the schematic.

Parameters

Name, Enabled, and Notes parameter information can be set.

Members

One instance only.

It can be useful to apply the Disable Permutation constraint to any instance with connectivity and a permute rule. Typically the Disable Permutation constraint is used with transistors.

Supporting Applications

  • Virtuoso Layout Suite XL (Constraint Aware Editing)
The Disable Permutation constraint is also preserved in the Analog Auto Placer.

Distance

Definition

The Distance constraint defines the distance between two or more constraint members. The parameters Min and Max define the range for the distance. The parameter reference can be used as a constraint parameter or as a member parameter, and specifies the reference to be used for distance constraining, for example one of “edge”, “center” or “origin”.

When a Distance constraint has more than two members the Distance constraint applies between the first and any of the following objects. That is, each of the second and following objects must be within the specified range from the first object.

The Distance constraint accepts an Axis Parameter. Specifying an axis will restrict the constraint to one particular direction. If no axis is specified then the Distance constraint is bidirectional, applying in two dimensional space as a Manhattan distance.

The same pair of objects can be part of two Distance constraints as long as both specify an axis and the axes are orthogonal. Two constraints with the same members, but orthogonal axes, should be used to set different vertical and horizontal allowed distances.

See also: Measuring a Distance Constraint When No Axis is Specified.

Only VLM supports shapes as members. All other applications, such as Analog Placer, Constraint Aware Editing, Digital Placer, and Floorplanning will ignore them.

Parameters

In addition to the parameters Name, Enabled, and Notes, you can set the following parameters:

  • Axis (see Axis Parameter)
  • Min
    Type: float
    Default: (not set) / 0
    Valid Values: positive
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: Y
  • Max
    Type: float
    Default: (not set) / INT_MAX
    Valid Values: positive
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: Y
For the Min and Max parameters, see also Example Uses of the Min and Max Distance Parameters.

  • use
    Type: enumerated
    Default: “boundary”
    Valid Values: “boundary” “layer”
    On Constraint: Y
    On Member: Y
    Display: Y
    User Units: N
    The use parameter should use a layer (with layer name) for distance instead of the boundary as the same side applies.
  • layerName
    Type: integer
    Default: 0
    Valid Values: layer names
    On Constraint: Y
    On Member: Y
    Display: Y
    User Units: N
    The layerName parameter has a drop-down list box in the Constraint Manager for its field value. This list box contains a list of all possible layer selections that can be used to drive distant constraint members. Currently, this drop-down list box is populated using all the layers that are defined in the technology file. This includes regular and derived layers.
    If the use parameter is specified to be “layer”, then the layerName parameter will be referenced by Constraint Aware Editing (in Virtuoso Layout Suite XL). If that is the case, the distance will occur using the specified layer’s bounding box, as opposed to the figure’s bounding box.

  • reference
    Type: enum
    Default: “edge”
    Valid Values: “edge”, “center”, “origin”
    On Constraint: Y
    On Member: Y
    Display: Y
    User Units: N

Notes:

  • min and max are distance range parameters, where the same values on both min and max indicates a fixed distance
  • there is no ordered parameter to specify whether the order of objects should be preserved. An ordering constraint is required (distance: order only) to order devices.
  • reference is one of “edge”, “center”, or “origin”. If reference is not set on members, the reference value for the constraint is used.
  • When PRBoundary is a member, only “edge” is currently supported (by the Virtuoso Floorplanner). Parameter “edge” is also supported by Analog Auto Placer and Constraint Aware Editing.

Members

One or more instances, pins, shapes, modgen constraints or figGroups, or regular figGroups. PRBoundary can also be defined as a member, but this is only supported by the Virtuoso Floorplanner.

Member Order is important. When more than two objects are members, the distance between the first and any of the following objects has to be within the (min max) range for the constraint to be enforced.

Supporting Applications

  • Virtuoso Custom Digital Placer
  • Virtuoso Floorplanner
  • *Virtuoso Analog Auto Placer
  • *Virtuoso Layout Suite XL (Constraint Aware Editing)

* For target optimization only and not guaranteed to be met.

Example Uses of the Min and Max Distance Parameters

Both the Min and Max parameters display a default value of (not set) in the Constraint Manager, for Min that default equates to 0 and for Max it equates to INT_MAX.

The following examples show how you can also set one of these parameters without the need to set the other.

Measuring a Distance Constraint When No Axis is Specified

A Distance constraint can still be measured if only one Axis Parameter has been specified or if neither axis has been specified.

The figure below shows the following examples of this:

Where objects are no closer than min and no further than max. If an axis is specified, the measurement is taken along the direction of the axis.

Both Min and Max parameters have a default of (not set) which equates to 0 and INT_MAX respectively.

The figure above contains examples of the Distance constraint with single or bi-directional axis specified.

If more than two objects form part of a Distance constraint, the distance will be measured between the first object and any other member. The direction in which the distance is measured is unspecified, but wherever necessary should be specified with an ordered Alignment constraint.

The Distance constraint also uses a reference parameter that specifies whether a measurement is in respect to the closest edge orthogonal to the measurement direction (set as, edge), the object bBox center (center), or the origin points (origin).

Edge Pin Group Guide

Definition

The Edge Pin Group Guide constraint defines the placement of pin members on an edge of the PR boundary.

Parameters

In addition to the parameters Name, Enabled, and Notes, you can set the following parameters:

  • Default Group (Constraint Group)
    The Default Group contains the following parameters: Widths Minimum, Spacing, preserveOrder, spreadPins, edgeName, startOffset, endOffset, and pinGroupType
    • Widths Minimum defines the default minimum width for member pins in the pin group guide. Width is defined per layer in user units.
    • Spacing defines the default minimum spacing for the pin group guide. Spacing is defined per layer in user units.
    • preserveOrder defines whether the member pins are placed in the same order as the members.
      Type: Boolean
      Default: false
    • spreadPins defines whether the member pins are evenly spaced.
      Type: Boolean
      Default: false
    • edgeName defines the name of the PR Boundary edge. The edgeName choices are defined by the PR Boundary.
    • startOffset defines the start of the boundary edge region in user units.
    • endOffset defines the end of the boundary edge region in user units.

    • pinGroupType defines whether the group is inclusive or exclusive. It specifies if other non-member pins are allowed in the regions specified by the PR Boundary edge start and end offsets.
      Type: enum
      Default: AllowForeignPins
      Values: This parameter accepts one of the following values:
      • AllowForeignPins means other pins are allowed in the whole region.
      • ExcludeOnAllLayers means exclude other pins between members on all layers.
      • ExcludeOnPinLayers means exclude other pins between members on pin layers.
      • ExcludeForeignPins means exclude other pins from whole region on all layers.
  • Within Group (Constraint Group)
    The Within Group contains the Spacing parameter. The Within Group parameters are used to enter process rules between pin members in the group.
    • Spacing defines the minimum spacing between a pin and other member pins. Spacing is defined per layer in user units.
  • Group to Outside (Constraint Group)
    The Group to Outside contains the Keep Out Spacing parameter. The Group to Outside parameters are used to enter process rules between pin members and other pins in the design.
    Keep Out Spacing defines the minimum spacing between the pin group guide members and other pins. Spacing is defined per layer in user units.

Members

The Edge Pin Group Guide members are one or more pins, plus the PR boundary. The PR boundary edge and offsets define the region in which the pin members can be placed.

Supporting Applications

  • Virtuoso Floorplanner
    • Pin Group Guide commands to Create, Edit, and Compare
      For detailed information, refer to the Creating Pin Group Guides chapter in the Virtuoso Floorplanner User Guide.
    • Pin Planning and Pin Optimization
      For detailed information, refer to the following sections of the Pin Placement chapter in the Virtuoso Floorplanner User Guide:
  • Innovus System
    This constraint type is interoperable with Innovus and validated by PVS-CV.

Fixed

Definition

Sets the placement status on instances and pins, and the routing status on paths, pathSegs, and vias.

You can create a Fixed constraint on a Modgen or a figGroup, which in turn creates the necessary Fixed constraint status on the individual member objects.

The Fixed constraint does not support parameter notes and history (timestamp) tracking (see Constraint History). Any fixed constraints that are out-of-context will be purged when the cache is closed.

Parameters

Name information can be set. Constraint Owner (Lib/Cell/View) information is also provided

Members

One or more instances, pins, nets or oaPinFigs(dbPinFig).

Supporting Applications

  • Virtuoso Analog Auto Placer
  • Constraint Aware Editing
  • Virtuoso Custom Digital Placer
  • Virtuoso Floorplanner
  • Virtuoso Space-based Router
The fixed constraint cannot be stored as a template as it is an Open Access object attribute and does not have independent OA storage. For more information, see Constraint Template Storage in the Virtuoso Unified Custom Constraints Configuration Guide.

Adding and Deleting Nets from a Fixed Constraint

When a net is added to a fixed constraint, all existing shapes on that net will be marked as fixed. However, any new shapes added to that net, after a fixed constraint has already been applied, will not be deemed to be fixed unless the fixed constraint is again re-applied.

A net will appear in a fixed constraint if any of its shapes are marked as fixed. When a net is deleted from a fixed constraint, all shapes will be marked as normal.

You can use the Property Editor assistant or constraint haloing to see which shapes are fixed (where only fixed shapes will be haloed).

Guard Ring

Definition

The Guard Ring constraint defines rails, rings or guard rings for a modgen or boundary. Its members are either a modgen or a boundary and any number of nets for each of the rings or stripes of the guard ring.

You can create a guard ring constraint by selecting either a modgen or a cluster constraint in the Constraint Manager, along with the relevant net.

If the parameter mppName is specified a multi-part path, as defined in the technology file, will be used for the guard ring. Otherwise layerNumber must be specified to define the layer for the guard ring. In both cases the parameter width defines the width of the multi-part path (MPP) or the layer.

The offset parameter defines the distance to be kept between modgen or boundary and guard ring.

The spacing parameter on members specifies the distance between members of the guard ring. This follows the order of the members. For example, the first member is a modgen or boundary, and the second, third, and so on, members are nets. The parameter spacing on the second member, which is the first net, refers to the spacing between modgen or boundary (first member) and the first net (second member). All subsequent nets get a parameter spacing that is relative to the previous net.

Offset is a parameter used in combination with rails to determine the rail offset from the boundary in case the rail does not abut the design boundary. When an offset is specified, it takes precedence over the spacing parameter.

If the parameter chamfer has a value greater than zero, 45 degree angles will be used at each corner of the guard ring. The value of chamfer then gives the size of the 45 degree corner.

Parameters

In addition to the parameters Status, History, Name, Enabled, and Notes, you can set the following parameters:

  • shape
    Type: enum
    Default: rectangular
    Valid Values: “rectangular”, “rectilinear”
    On Constraint: N
    On Member: Y
    Display: Y
    User Units: N
  • mppName
    Type: cyclic
    Valid Values: drop-down list box that lists all the MPPs in the technology file.
    A number of other Guard Ring parameter fields, for example offset, layer and chamfer, will not have an impact when the guard ring is a MPP that has been created using the Modgen user-interface.
    On Constraint: N
    On Member: Y
    Display: Y
    User Units: N

  • spacing
    Type: int
    Default: 0
    Valid Values: separation of this ring from contents
    On Constraint: N
    On Member: Y
    Display: Y
    User Units: Y

  • leftSpacing
    Type: int
    Default: 0
    Valid Values: left separation of this ring from contents.
    On Constraint: N
    On Member: Y
    Display: Y
    User Units: Y
  • layerNumber
    Type: string
    Valid Values: layer number when not MPP.
    On Constraint: N
    On Member: Y
    Display: Y
    User Units: Y

  • width
    Type: int
    Default: 0
    Valid Values: layer width when not MPP.
    On Constraint: N
    On Member: Y
    Display: Y
    User Units: Y
  • rightSpacing
    Type: int
    Default: 0
    Valid Values: right separation of this ring from contents.
    On Constraint: N
    On Member: Y
    Display: Y
    User Units: Y

  • bottomSpacing
    Type: int
    Default: 0
    Valid Values: bottom separation of this ring from contents.
    On Constraint: N
    On Member: Y
    Display: Y
    User Units: Y

  • topSpacing
    Type: int
    Default: 0
    Valid Values: top separation of this ring from contents.
    On Constraint: N
    On Member: Y
    Display: Y
    User Units: Y

  • offsets
    Type: intRange
    Default: (0 0)
    Valid Values: VCP offsets
    On Constraint: N
    On Member: Y
    Display: Y
    User Units: Y

  • chamfer
    Type: int
    Default: 0
    Valid Values: positives
    On Constraint: N
    On Member: Y
    Display: Y
    User Units: Y

Members

A single modgen or cluster to put the guard ring around any number of nets, one for each guard ring. The same net may appear multiple times.

Supporting Applications

  • Virtuoso Analog Auto Placer
  • Virtuoso Layout Suite XL (Constraint Aware Editing)
  • Modgen Editor (shape, mppName, spacing parameters only)
The only parameters currently supported are shape (both values), mppName and the various spacing parameters. Note also that the Analog Placer and Constraint Aware Editing will support layerNumber and width, rather than mppName.

High Precision C Extraction

Definition

The High Precision C Extraction constraint is used to specify the nets that should be extracted with higher accuracy and define a convergence goal (optional) to be used by the extraction engine.

Parameters

In addition to the parameter given below, you can set the Name parameter.

  • Convergence Target
Type: float
Default: 1
Valid Values: any numerical value greater than 0
On Constraint: Y
On Member: N
Display: Y
User Units: N

Members

Minimum of one net.

Supporting Applications

  • Electrically Aware Design (EAD) Flow

High Precision R Extraction

Definition

The High Precision R Extraction constraint is used to specify the nets that should be extracted with higher accuracy and define the mesh density (optional) required for the extraction engine.

Parameters

In addition to the parameter given below, you can set the Name parameter.

  • Mesh Density
Type: float
Default: 1
Valid Values: any numerical value greater than 0
On Constraint: Y
On Member: N
Display: Y
User Units: N

Members

Minimum of one net.

Supporting Applications

  • Electrically Aware Design (EAD) Flow

Locked

Definition

Sets the placement status on instances and pins, and the routing status on paths, pathSegs, and vias.

You can create a Locked constraint on a Modgen or a figGroup, which in turn creates the necessary Locked constraint status on the individual member objects.

The Locked constraint does not support parameter notes and history (timestamp) tracking (see Constraint History). Any locked constraints that are out-of-context will be purged when the cache is closed.

Parameters

Name information can be set. Constraint Owner (Lib/Cell/View) information is also provided

Members

One or more instances, pins, nets, or oaPinFigs(dbPinFig).

Supporting Applications

  • Virtuoso Space-based Router
  • Virtuoso Analog Auto Placer
  • Virtuoso Custom Digital Placer
  • Virtuoso Layout Suite XL (Constraint Aware Editing)
  • Virtuoso Layout Suite XL (Create Wire Editing)
  • Virtuoso Floorplanner
The locked constraint cannot be stored as a template as it is an Open Access object attribute and does not have independent OA storage. For more information, see Constraint Template Storage in the Virtuoso Unified Custom Constraints Configuration Guide.

Adding and Deleting Nets from a Locked Constraint

When a net is added to a locked constraint, all existing shapes on that net will be marked as locked. However, any new shapes added to that net, after a locked constraint has already been applied, will not be deemed to be locked unless the locked constraint is again re-applied.

A net will appear in a locked constraint if any of its shapes are marked as locked. When a net is deleted from a locked constraint, all shapes will be marked as normal.

You can use the Property Editor assistant or constraint haloing to see which shapes are locked (where only lock shapes will be haloed).

Matched Capacitance

Definition

The Matched Capacitance constraint is used to define the absolute or relative difference permissible between total or coupled capacitances for the selected nets.

Parameters

In addition to the parameters Name, Enabled, and Notes, you can set the following parameters:

  • Diff. Type
Type: enum
Default: absolute
Valid Values: absolute, percent
On Constraint: Y
On Member: N
Display: Y
User Units: N
  • Difference
Type: float
Default: 0.0
Valid Values: for absolute, the difference should be greater than or equal to 0; for percent, the difference should be greater than or equal to 0, but less than or equal to 100
On Constraint: Y
On Member: N
Display: Y
User Units: N

Members

Minimum two unique nets. The same net can be used in any number of Matched Capacitance constraints; however, the same combination of nets cannot be used more than once.

Supporting Applications

  • Electrically Aware Design (EAD) Flow

Matched Instance Color

Definition

Checks whether the instances have matching color.

Parameters

In addition to the parameters Name, Enabled, and Notes, you can set the following parameters:

  • Align Mask Color

Type: boolean

Default: true

On Constraint: (Y/N)

On Member: (Y/N)

Display: (Y/N)

User Units: (Y/N)

Members

The matchedInstanceColor constraint type cannot share members with the same constraint type.

Supporting Applications

None.

Matched LDE Parameters

Definition

The Matched Parameters constraint performs a matching analysis of the drive current across the schematic and the layout views.

To create the Matched LDE Parameters, you need to perform the following steps:

  1. Select at least two instances from the Navigator assistant or the design area.

  1. In the Constraint Manager assistant toolbar, select Electrical -Matched LDE Parameters option.

  1. Select the constraint created in the Constraint Manager to display the Constraint Parameter Editor pane.
  2. Now, to save the constraint, click the Save icon in the Constraint Manager toolbar, as shown below.

Parameters

In addition to the parameters Name, Enabled, and Notes, you can set the following parameters:

  • Tolerance
    Type: string
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: N
  • Mode
    Type: enum
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: N
The MATCH mode compares across layout devices. For example, if a matching constraint has a threshold of 5%, then any two devices in layout with a saturation current difference of greater than 5% are flagged. The schematic devices are ignored.

In the GROUP mode, each layout device is compared with its schematic version and anything greater than the specified threshold is flagged. Similar to the LDE analysis command carried out using the main LDE GUI, except this comparison is only applied for the selected devices. Use GROUP mode when a general schematic matching of 5% is obtained using the LDE GUI, as this comparison could do a 1% (tighter) check on a sub-set of devices in the layout.

  • Ratio
    Type: float
    On Constraint: N
    On Member: Y
    Display: Y
    User Units: N
  • Range: 0.0 to maxFloat. Here, maxFloat is the maximum float value displayed when you move the pointer over the parameter in the Constraint Manager assistant.
  • Comparison
    Type: enum
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: N
    The Comparison parameter is a dynamic parameter that is hidden by default. To make it visible in the parameter list, perform the following steps in the config.xml file:
    1. Search the Param tag associated to the Matched LDE Parameter constraint.
    2. Reset the visibleInEditor attribute to true in the GUIName tag within this Param tag.

  • Method
    Type: enum
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: N
    The Method parameter is a dynamic parameter that can be added using the ciRegisterDynamicParamDef function and appears in the Constraint Parameter Editor pane as shown in the figure below. It can be used to fetch the method list from the list previously defined in libInit.il.

The Method parameter works as the differentiating factor between two Matched LDE constraints with same set of members. However, this happens only when you enable this parameter.

Members

Instances of a Device.

Supporting Applications

  • Virtuoso Layout Suite XL
  • Virtuoso Schematic Editor XL

Matched Length

Definition

A Matched Length constraint defines a specialty routing relationship between two or more nets. The nets should have the equivalent lengths.

It is used to choose the style that the router should use to match length. Each constraint parameter corresponds to the existence of the same named constraint in the Matched Length default constraint group.

For more information, see The Process Rule Editor.

Parameters

In addition to the parameters Status, History, Name, Enabled, and Notes, you can set the following parameters:

  • Default Group (Constraint Group)
    The Default Group contains the following parameters: Top Layer, Bottom Layer, Purposes, Vias Allowed, Widths Minimum, Cuts Minimum, Spacing.
    The Default Group (Constraint Group) is used to enter process rules containing parameters that are concerned with how nets should be matched.
    These constraint group parameters include information on the layers to use for Matched Length. Parameters correspond to a valid layers constraint in the PRE. The layers constraints should always contain a contiguous set of layers to use for this net (/net group). The router should route using only these layers.

Additionally, the spacing (for each layer) represents the min spacing default constraint group for Matched Length. Therefore, the Default Group also includes the following parameters: lengthPatternAccordion, lengthPatternDangle, lengthPatternRWAccordion, lengthPatternTrombone, lengthPatternEndRun, msMatchPerLayer, routeMinLength, and routeMaxLength.

In addition to the parameters listed above, Default Group has the Wire Types parameter that can be used to define a set of wire types for each layer. For more information, see Assigning a Wire Type to a Net.

For more information on the Default Group parameters, see The Process Rule Editor.

  • Within Group (Constraint Group)
    The Within Group contains the following parameters: Spacing, matchTolerance, and Tolerance.
    For more information on Within Group, see The Process Rule Editor.

  • Group to Outside Group (Constraint Group)
    The Group to Outside Group contains the following constraints: Spacing and hierarchicalScope.
    Here, the Group to Outside Group constraint group parameters are used to enter process rules between nets in a Matched Length constraint, and those nets that are not part of that constraint.
    For more information on Group to Outside Group, see The Process Rule Editor.

Members

Two or more nets.

A given net may belong to only 1 specialty routing constraint (for example, Symmetry, Diff Pair, or Matched Length).

Supporting Applications

  • Virtuoso Space-based Router
  • Innvus System
VLO/VLM support is currently limited to “matching the length”. It does not, for example, look at Default or Group to Outside Group parameters.

Matched Length Parameters and the Process Rule Editor

The following Matched Length parameters allow to edit the process rules in The Process Rule Editor (PRE). That is, changing the value of these parameters in the Constraint Manager assistant make equivalent changes in the PRE and conversely. Each parameter tooltip also provides information on where, in the constraint lookup, a value was found.

Matched Length Parameter PRE Equivalent Parameter Name Notes

length Pattern Accordion, length Pattern RW Accordion, length Pattern Trombone, length Pattern End Run

All of the above parameters are boolean.

constraints by the same name in matched length default constraint group.

Specifies the type of length pattern that routers should use to match length. The router should only attempt to use the patterns that have been checked for use (or all if no patterns have been checked).

match per layer (boolean), match tolerance (int), route min length (int), route max length (int)

constraints by the same name in the matched length default constraint group.

Matched Orientation

Definition

The Matched Orientation constraint implies that the Orientation or the direction is to be matched (that is, identical) for the member instances.

Parameters

Name, Enabled, Notes, and Match information can be set.

Members

Two or more instances, modgen constraints or figGroups, or regular figGroups.

Member order is not currently important, given that "R0" is the only valid orientation value.

Supporting Applications

  • Virtuoso Analog Auto Placer
  • Virtuoso Layout Suite XL (Constraint Aware Editing)

Using the Match Parameter of Matched Orientation Constraint in Layout

The Match parameter of the Matched Orientation constraint helps you to evaluate the selected member instances based on two match criteria, Orientation and Direction.

The Matched Orientation constraint can be seen in both schematic and layout. However, only in layout, you see a Status parameter that displays whether the matching passed or failed on the basis of the specified match criteria.

The following steps show how you can use the Match parameter in layout.

  1. Select the member instances that need to be evaluated.
  2. Choose Constraint CreationPlacementMatched Orientation. Refer to the figure below.

The generated Matched Orientation constraint is displayed in the Constraint Browser, as shown in the figure above. By default, the Match parameter is set to orientation. If the orientation of the selected member instances matches, the Status parameter displays passed. Otherwise, the Status is displayed as failed. In the latter case, you can initiate re-evaluation by resetting the Match parameter to direction from the list box, as shown above. The selected member instances then get evaluated on the basis of direction and the Status changes to passed if their orientation matches.

In the Property Editor, you can use the Rotation attribute to check and update the orientation or direction values of the selected member instances. For more information, see the Property Editor in the Virtuoso Schematic Editor User Guide

The members of a Matched Orientation constraint can also have the parameter, Match, that too accepts one of the following values: orientation or direction.

The table below lists the expected behavior when the Match parameter is set for a Matched Orientation constraint and is set or not set for its member(s):

Constraint’s Match Parameter Device’s mFactor or iteration

Member’s Match Parameter

Behavior

orientation

=1

not set

All devices share the same orientation, whatever it is, as shown in the examples below.

orientation

>1

not set

All devices share the same orientation, whatever it is, as shown in the examples below.

direction

>=1

direction

All devices can have multiple orientations as long as they share the same direction, as shown in the examples below.

direction

=1

not set

Constraint’s members take the same direction; while the members’ Match parameter has no meaning, as shown in the examples below.

direction

>1

orientation

Constraint’s members take the same direction; while the members’ mFactored devices share the same orientation, as shown in the examples below.

Matched Parameters

Definition

The Matched Parameters constraint defines which parameters must match with respect to its members.

By default, all parameters must match, but a subset of parameters to be matched can also be specified using the matchSubset constraint parameter.

When specifying a subset of parameters to match, names must be separated by one or more space and/or comma characters. No quotes or double quotes should be used.

If a ratio parameter is set on the first parameter, a warning will be issued by the consistency checker. The constraint will still, however, be accepted and the ratio value ignored for the first member.

For information on how you can check for any mismatched parameters, using the Setup Schematic Rules Check form, see Constraints Checks in the Virtuoso Schematic Editor User Guide.

Parameters

In addition to the parameters Name, Enabled, and Notes, you can set the following parameters:

  • Match Subset (see also Setting Match Subset Parameter Values)
    Type: string1DTbl
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: N
    The Match Subset parameter is used to specify the list of parameter names that must have the same respective value (or ratio value) for all members of the constraint. If a parameter does not exist for one of its members its value is nil. A non-existing parameter is considered as a match only if the parameter name is not defined for any of the members. All values for the given parameter names must match - or ratio match - respectively for the constraint to pass. If the Match Subset parameter does not specify any parameter name (empty), the values of all existing parameter names of the constraint members must match - or ratio match - respectively.
  • ratio (see also Ratio Parameter)
    Type: float
    Default: 1.0
    Valid Values: float
    On Constraint: Y
    On Member: Y
    Display: Y
    User Units: N

The matching of parameters may not always be defined with a 1:1 ratio. For example, the ratio of the number of fingers for each device member of a current mirror versus the driver member (reference) can be the same ratio of the respective current that they each drive.

The ratio parameter is defined as:

Ratio = (parameter value of the member) / (parameter value of the reference)

Members

Two or more instances.

A reference member will always have a ratio parameter setting of 1 (see Ratio Parameter).

Supporting Applications

  • Virtuoso Analog Auto Placer
    Does not support the ratio parameter.
  • Virtuoso Layout Suite XL (Constraint Aware Editing)

Setting Match Subset Parameter Values

The Match Subset parameter field lists all the parameter names whose corresponding values must match - or ratio match - for all object members.

By default, the list of parameter names to be matched is set by the following default procedure:

procedure( ciDefaultParamToMatchFilter(inst simulator)
    prog((param2DList)
        if( ciIsDevice(inst "fet") then
            param2DList= ciGetMatchParam2DList(inst "fetParamListForMatching")
        )
        if( ciIsDevice(inst "resistor") then
            param2DList = ciGetMatchParam2DList(inst "resistorParamListForMatching")
        )
        if( ciIsDevice(inst "capacitor") then
            param2DList = ciGetMatchParam2DList(inst "capacitorParamListForMatching")
        )
        return(param2DList)
    )
)

with the list of parameter names per device type defined by:

ciMapParam("fetParamListForMatching" '("model" "w" "l" "m"))
ciMapParam("resistorParamListForMatching" '("model" "w" "l" "r" "m"))
ciMapParam("capacitorParamListForMatching" '("model" "w" "l" "c" "m"))

You can override the above default filter with a different ciDefaultParamToMatchFilter function or create a new filter associated with a new function and register it with:

ciRegisterCustomDeviceFilter(name func)

For example:

ciRegisterCustomDeviceFilter("myDefault" `CstMyFilter)

In the Constraint Manager editor, you can also change these values manually by editing the Match Subset parameter field directly. Alternatively, you can edit this list using the Edit Match Subset form which tabulates different sets of parameter names to be matched.

To edit Match Subset parameter values in the Edit Match Subset form:

  1. Select the ... (Click to expand editor) option adjacent to the Match Subset parameter.
    This will display the Edit Match Subset form.
  2. In the Edit Match Subset form, select/deselect the parameters that you want to have set by checking/unchecking the available parameters.
    You can narrow the parameter options available by selecting a filter (CDF Parameters, CDF Editable, or Default) from the Default drop-down list box, or also quickly select or deselect all of the available parameters by checking the All Parameters option.
  3. Once your selection is complete, click OK.
    Your new selection will now be displayed in the Match Subset parameter field.

Ratio Parameter

Ratio can be a constraint parameter and its value applies to all members except the first one. Alternatively, it can be a member parameter.

Its value is set to 1 by default.

For example, if NumberOfFingers is set as matchSubset and the Ratio of the second member is set to 4, the value of NumberOfFingers for that member must be 4 times the value of NumberOfFingers for the first, or reference, member.

Also, if you changed the Ratio value in the parameter editing table to, for example, 0.7, this will be reflected in the Parameters column of the Constraint browser for each constraint member.

Max Capacitance

Definition

The Max Capacitance constraint is used to define the permissible maximum capacitance of the following types for the selected net:

  • Total capacitance
  • Coupled capacitance
  • Ground capacitance

Parameters

In addition to the parameters Name, Enabled, and Notes, you can set the following parameters:

  • Total Capacitance
Type: float
Default: 5f (5e - 15)
Valid Values: any numerical value greater than 0
On Constraint: Y
On Member: N
Display: Y
User Units: N
  • Coupled Capacitance
Type: float
Default: 0.0
Valid Values: any numerical value greater than 0
On Constraint: Y
On Member: N
Display: Y
User Units: N

  • Ground Capacitance
Type: float
Default: 0.0
Valid Values: any numerical value greater than 0
On Constraint: Y
On Member: N
Display: Y
User Units: N

Members

Maximum one net. If you select more than one net, the maximum capacitance will be defined for each net separately.

Supporting Applications

Electrically Aware Design (EAD) Flow

Max Coupling Capacitance

Definition

The Max Coupling Capacitance constraint is used to define the maximum coupled capacitances between one of the following: two nets, two net classes, or a combination of a net and a net class.

Parameters

In addition to the parameters Name, Enabled, and Notes, you can set the following parameter:

  • Coupled Capacitance
Type: float
Default: 0.0
Valid Values: any numerical value greater than 0
On Constraint: Y
On Member: N
Display: Y
User Units: N

Members

Two unique nets or net classes. A combination of a net and a net class is also accepted.

The same net or net class can be used in any number of Max Coupling Capacitance constraints; however, the same combination of nets cannot be used more than once directly or indirectly using net classes.

Supporting Applications

Electrically Aware Design (EAD) Flow

Max Resistance

Definition

The Max Resistance constraint is used to define the maximum resistance permissible between either two terminals or instance terminals or, between a terminal or instance terminal and all the terminals or instance terminals connected to it.

This constraint can only be created on the schematic and transferred to layout because VLS XL does not allow selection of instance terminals.

Parameters

In addition to the parameters Name, Enabled, and Notes, you can set the following parameter:

  • Max Resistance
Type: float
Default: 0.5
Valid Values: any numerical value greater than 0
On Constraint: Y
On Member: N
Display: Y
User Units: N

Members

There are two options available depending on the terminals selected:

  • One terminal. The constraint is paired between the selected terminal or instance terminal and each terminal or instance terminal connected to it. The selected terminal works like a reference.
  • Two unique terminals or instance terminals that are attached to the same net. In this case, a terminal or instance terminal can be used in any number of Max Resistance constraints; however, a pair of the same members cannot be used more than once.

Important Points to Note:

  • When you create a Max Resistance constraint with one member terminal or instance terminal, it should not be included in any other two member constraint.
  • You can create more than one single-member Max Resistance constraint using different terminals or instance terminals on a common net only if they have the same maximum resistance value. Multiple single-member constraints on a net cannot have different maximum resistance values.

Supporting Applications

Electrically Aware Design (EAD) Flow

Max Voltage Drop

Definition

The Max Voltage Drop constraint is used to specify the maximum voltage drop between a reference instance terminal/pin and one or more other instance terminals/pins.

Parameters

In addition to the parameters Name, Enabled, and Notes, you can set the following parameters:

  • Voltage
    Sets the default voltage drop for all member instance terminals/pins with respect to reference instance terminal/pin.
Type: float
Default: 500m
Valid Values: any float value in decimal, engineering, scientific notation, or ratio format.
On Constraint: Y (Voltage specified on the constraint is the default for all members.)
On Member: Y (Voltage specified on a member overrides the default for that member.)
Display: Y
User Units: Y

  • reference
    Resets the member instance terminal/pin as a reference instance terminal/pin if set to true.
    By default, the reference parameter of the first selected instance terminal/pin is set to true to identify it as the reference and the other member instance terminals/pins have this parameter set to false.
Type: Boolean
Default: true for first selected instance terminal/pin and false for the other instance terminals/pins
Valid Values: true or false
On Constraint: N
On Member: Y
Display: Y
User Units: N

In layout, due to mfactors or fingers, there can be multiple reference instance terminals that are associated with a single schematic instance terminals.

Members

One or more unique instance terminals or pins. If more than one member is being used, they must be attached to the same net.

Supporting Applications

Electrically Aware Design (EAD) Flow

Overriding Voltage Drop of a Constraint Member

The voltage parameter on the constraint is the default voltage drop for all member instance terminals/pins with respect to the reference instance terminal/pin.

The value set for the constraint voltage parameter can be overridden on individual instance terminal/pin members by setting the member voltage parameter, as shown below.

When you set the member voltage parameter to zero, the voltage value specified for the constraint is used. In addition, the member reference instance terminal must have its voltage set to zero.

Modgen

Definition

The Modgen constraint defines a two-dimensional arrangement of instances and internal routing for a set of devices.

When you select any dummies from the list displayed on expanding a Modgen constraint in the Constraint Manager assistant, the selected dummies get cross-highlighted in the Modgen canvas editor. Similarly, this useful feature of cross-probing dummies, highlights any selections made on the Modgen canvas editor back in the Constraint Manager assistant.

Parameters

In addition to the parameters Name, Enabled, and Notes, you can set the following parameters:

All member parameters are only valid for instance and LCV members unless noted otherwise.
  • Nb of Rows
    Type: integer
    Default: 0
    Valid Values: >=0
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: N
  • Nb of Cols
    Type: integer
    Default: 0
    Valid Values: >=0
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: N

  • router
    Type: enum
    Default: none
    Valid Values: none, pinToTrunk
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: N
  • Merge Layers
    Specify the Merge Layer, for example default, none, well, Row, or Group.
    In the constraint parameters pane, if you click the value corresponding to Merge Layers, the Select merge layers... dialog box is displayed.
    This dialog box provides the same functionality as explained in the Specifying Merge Layers for Generated Modgen section.

In addition to the parameters described above, you can view the Pattern parameter. By default, it is hidden for a Modgen constraint. To make it visible again, you need to set the attribute visibleInEditor to true in the config.xml file as shown below.
<ConstraintType>
   <Name>modgen</Name>
   <GUIName menu="Placement">Modgen</GUIName>
....
   <Param> 
      <Name>pattern</Name>
      <GUIName summary="ValOnly"
visibleInEditor="true">Pattern</GUIName>
   </Param>
....
</ConstraintType>

If the Pattern parameter is made visible, it has the following associated attributes:

Type: string

Default: Null (specified using "")

Valid Values: (AA BB ...)

On Constraint: Y

On Member: N

Display: Y

User Units: N

Remembers last pattern entered.

Members

One or more instances and nets (for dummies and body contacts), and/or LCVs (for dummies). MFactor means the same schematic instance can be a member more than one time.

Instances may not appear in more than one Modgen constraint.

A Modgen constraint can also be a constraint container. That is, it can contain its own members and also be used as a member itself for other constraints.

Supporting Applications

Modgen Editor

The figGroup created by modgen is preserved in Constraint Aware Editing, Analog Auto Placer, Digital Placer, and the Floorplanner.

Net Class

Definition

The Net Class constraint is used to create groups of nets that have a specific set of constraints (typically process rule overrides) on or between its members, or with respect to other nets in the design. A net class constraint can contain nets.

Creation of nested Net Class constraints is not allowed from IC6.1.7 ISR5 and ICADV12.2 ISR5 onwards. If you have any existing nested Net Class constraints in your design and you try to update them, a warning is displayed in the CIW. To be able to update such constraints, you need to convert one or all nested Net Class constraints in a cache to corresponding Net Class Hier Group constraints by using the ciConvertNestedNetClassToNetClassHierGroup SKILL function.

The Process Rule Editor can be used to apply process constraints on:

  • all members of a net class (default)
  • between net members of the net class (within Group)
  • between all net members of the net class and other nets in a design (group to outside)
  • between members of two or more other member net classes (group to group)
    In the last case listed above, the net class can contain other net classes as its members.

This group of nets is not useful for any supporting applications until process rules have been added to the group. Collecting the nets in a net class does not have any special meaning for the router. When process rules are applied to the net class, the router respects them (as detailed here).

The pinProximity parameter is used to place all pins, on the listed nets, close to each other.

Process rules can be added to the net class to define more parameters.

Parameters

In addition to the parameters Name, Enabled, and Notes, you can set the following parameters:

  • pinProximity
    Type: bool
    Default: false
    Valid Values: t
    On Constraint: N

On Member: Y

Display: N

User Units: Y

  • Default Group (Constraint Group)
    Contains the following parameters: Top Layer, Bottom Layer, Purposes, Vias Allowed, Widths Minimum, Cuts Minimum, Spacing.
    The above parameters are used to reflect the contents of a Net Class’s default constraint group. Constraints may be placed here to locally override foundry rules obtained through standard lookup. Adding a constraint parameter to a Net Class’s default constraint group is equivalent to adding the same constraint in each net member’s default constraint group.

If there are similar constraints in the net’s default constraint group, and the Net Class default constraint group, then the net’s default constraint group parameter settings will have precedence. A typical use here would be to route a set of nets with a specific wider width or a net with a specific number of via cuts, or to modify the valid layers for all nets in a netclass.

The Default Group parameters will only be available when the members of a Net Class constraint are nets (that is, not a nested net class).

In addition to the parameters listed above, Default Group has the Wire Types parameter that can be used to define a set of wire types for each layer. For more information, see Assigning a Wire Type to a Net.

For more information on the Default Group, see The Process Rule Editor.

For more information on customizing constraint groups, see Customizing a Constraint Group.

  • Within Group (Constraint Group)
    The Within Group parameters help to define the process rules for the net members in a Net Class constraint. These parameters include Spacing and Tolerance.

In addition to these two parameters, you can define the Same Mask parameter to ensure all shapes on a given layer for a net are on the same mask. This parameter allows you to specify the color of the nets in the net class. This can also have a hard or a soft attribute.

The Same Mask parameter is equivalent to using the msSameMask constraint. If you reset the value of this constraint, the color of the nets should be reset accordingly.

The Same Mask drop-down list has two options:

    • true: This option ensures that the same mask is used for all nets.
    • false: This option allows you to use the different mask.

The layout below shows the implementation of a Net Class constraint on a single net when Same Mask is set to true.

The layout below shows the implementation of a Net Class constraint on multiple nets when Same Mask is set to true.

The Within Group parameters are available only when the members of a net class are nets (that is, not a nested net class).

For more information on the Within Group parameters, see The Process Rule Editor.

  • Group to Outside (Constraint Group)
    The Group to Outside parameter includes specification of only the Spacing parameters, which define the spacing between the net class members and everything else in the design.
    These parameters can be used to enter the process rules between the nets in a net class constraint and those nets that are not members of that constraint.
    It is available only when the members of a net class are nets (that is, not a nested net class).
    For more information on Group to Outside, see The Process Rule Editor.
    See also the figure at the end of this description.
  • hierarchicalScope
    Specifies the current hierarchical scope of the constraint, that is, whether local, below, or above the current cell level. To edit this parameter, click the displayed value and then click the button displayed on the right. This displays the Edit hierarchicalScope form with the local, below, and above check boxes available for selection.

Members

  • A Net Class constraint that contains nets.
    The Default, Within Group and Group to Outside parameters will be available in this case.
  • A Net Class constraint that contains other Net Class constraints, that is a nested net class.
    The only available parameter here will be Group to Group. The Group to Group parameter details process rules that are enforced between any net in a sub-group and all members in all other sub-groups.

Supporting Applications

  • Virtuoso Layout Suite XL (Constraint Aware Editing)
  • Virtuoso Layout Suite XL (Create Wire Editing)
  • Virtuoso Space-based Router

The following figure shows constraints applied between nets in a net class and all other nets:

Net Class Group

Definition

The Net Class Group constraint is used to create a group of one or more members belonging to the following routing-related constraint types: Diff Pair, Bus, Matched Length, Net Class, Strand, and Symmetry.

To create a Net Class Group constraint,

  1. Select the required constraint types in the Constraint Browser, as shown below.
  2. Click the Constraint Creation menu and place the pointer on Routing to expand and view the related constraint types.

  1. Select Net Class Group. You can now see the newly-created constraint listed in the Constraint Browser.
For a video demonstration, see Creating Net Class Hier Group Constraints on Cadence Online Support.

Parameters

You can set the following parameters: Name, Enabled, and Notes.

Members

One or more constraints of the following types: Diff Pair, Bus, Matched Length, Net Class, Strand, and Symmetry (containing only nets as members).

Supporting Applications

  • Virtuoso Layout Suite XL (Constraint Aware Editing)
  • Virtuoso Layout Suite XL (Create Wire Editing)
  • Virtuoso Space-based Router

Important Points to Note During Net Class Group Constraint Creation

Net Class Hier Group

Definition

The Net Class Hier Group constraint is used to create a group of one or more members belonging to the following routing-related constraint types: Diff Pair, Bus, Matched Length, Net Class, Net Class Group, Strand, and Symmetry. A Net Class Hier Group constraint has no limitation to the number of members that can be added to it.

To create a Net Class Hier Group constraint,

  1. Select the required constraint types in the Constraint Browser, as shown below.
    You can create a Net Class Hier Group without creating a Net Class Group constraint. For example, in the figure above, two constraints – Diff Pair and Net Class – have been selected to group and space out by creating a Net Class Hier Group constraint.
  2. Click the Constraint Creation menu and place the pointer on Routing to expand and view the related constraint types.

  1. Select Net Class Hier Group. You can now see the newly-created constraint listed in the Constraint Browser.

Creation of a Net Class Hier Group constraint is useful when there is a need to define spacing between a set of different constraint types. The defined spacing applies to each member of a Net Class Hier Group constraint if it does not contains a Net Class Group constraint, as shown below.

If the Net Class Hier Group constraint contains a Net Class Group constraint, the members of the Net Class Group constraint are treated as a single entity. Therefore, the spacing applies to the complete Net Class Group and not its individual members.

You can also define spacing between the existing member constraints of a Net Class Hier Group and another constraint that is not a member already. For example, in the illustration above, you added Diff Pair (Constr_14) and Net Class (Constr_21) to a Net Class Hier Group (Constr_38). Now, you want to define the spacing between this Net Class Hier Group and a Symmetry constraint, Constr_41. To do this, select the Symmetry constraint and drag it towards the Net Class Hier Group constraint, as shown below.

When the pointer starts to show a plus (+) sign on the Net Class Hier Group constraint, release the mouse button to drop and add to it the Symmetry constraint.

The Net Class Hier Group constraint starts to reflect the new addition, as shown below.

If you want to space out a constraint from a set of constraints, first create a Net Class Group constraint on the combined set of constraints and then create a Net Class Hier Group constraint with that Net Class Group constraint and the other constraint as members, as shown below.

For a video demonstration of the process discussed above, see Creating Net Class Hier Group Constraints on Cadence Online Support.

Parameters

In addition to the parameters Name, Enabled, and Notes, you can set the following parameter:

  • Group to Group (Constraint Group)
    It contains the Spacing parameter that defines the minimum spacing between the members of the Net Class Hier Group constraint. Spacing is defined per layer in user units.

Members

One or more constraints of the following types: Diff Pair, Bus, Matched Length, Net Class, Net Class Group, Strand, and Symmetry (containing only nets as members).

Supporting Applications

  • Virtuoso Layout Suite XL (Constraint Aware Editing)
  • Virtuoso Layout Suite XL (Create Wire Editing)
  • Virtuoso Space-based Router

Important Points to Note During Net Class Hier Group Constraint Creation

See also the Important Points to Note During Net Class Group Constraint Creation section.

Net Priority

Definition

The Net Priority constraint defines the order of priority when routing a net. The higher the value, the higher the priority.

A higher priority implies that the net is more critical and therefore needs to be routed more optimally (in terms of wire length as well as any user defined constraint on it), even if that makes routing of the lower priority nets less optimal.

When a placement tool supports the net priority constraint, it will place together the devices that are inter-connected with high priority nets to minimize the length of these nets.

When you attempt to create a Net Priority constraint in the Constraint Manager, the Create Priority window will be displayed prompting you to enter a Priority for the constraint being created. Do not enter a value of 0 here, as this will be rejected as an invalid value and the constraint will not be created. The valid value range is -128, 128.

If you create a Net Priority constraint using the Create Default Constraints option in the Circuit Prospector assistant, a default priority value of 64 will be set for non-supply nets.
The net priority constraint does not support parameter notes and history (timestamp) tracking (see Constraint History). Any Net Priority constraints that are out-of-context will be purged when the cache is closed.

Parameters

  • priority
    Type: Int
    Default: 64
    Valid Values: (-128, 128) except 0
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: N

Members

One or more nets.

Supporting Applications

  • Virtuoso Space-based Router
  • Virtuoso Analog Auto Placer
  • Virtuoso Floorplanner
  • Constraint Aware Editing
  • Virtuoso Custom Digital Placer
The net priority constraint cannot be stored as a template as it is an Open Access object attribute and does not have independent OA storage. For more information, see Constraint Template Storage in the Virtuoso Unified Custom Constraints Configuration Guide.

Orientation

Definition

The Orientation constraint defines the allowed orientations for the members of the constraint via its parameter Orientations. More than one orientation is allowed.

Parameters

In addition to the parameters Name, Enabled, and Notes, you can set the following parameters:

  • Orientations
    Type: enumSet
    Valid Values: All, Vertical, Horizontal, Other
    See also: Pre-Set and Custom Orientations
    On Constraint: Y
    On Member: N
    Default: ALL (which means that all orientations are allowed)
    Display: Y
    User Units: N
    When a Symmetry constraint is set for two instances, the value of the Orientations parameter, for each instance, must include the legal pairs of values required by the Symmetry constraint.
    For example, a Mirror Symmetry constraint with a vertical axis requires one of the following pairs of respective orientations:
    - R0 and MY - R90 and MXR90 - R180 and MX - R270 and MYR90

For a Mirror Symmetry constraint with a horizontal axis, the legal pairs of respective orientations are:

- R0 and MX - R90 and MYR90 - R180 and MY - R270 and MXR90

Members

One or more instances, modgen constraints or figGroups, or regular figGroups.

In the case of an orientation and Matched Orientation constraint sharing two members, any implicit matched orientation specified in an Orientation constraint is required to be explicit in a Matched Orientation constraint.

Supporting Applications

  • Virtuoso Custom Digital Placer
  • Virtuoso Floorplanner
  • Virtuoso Analog Auto Placer
  • Virtuoso Layout Suite XL (Constraint Aware Editing)

Pre-Set and Custom Orientations

The Orientations parameter of the Orientation constraint provides four options to choose from: All, Vertical, Horizontal, and Other.

When you create the Orientation constraint, the Orientations parameter in the Constraint Parameter Editor pane shows All as selected by default.

Clicking the button adjacent to the Orientations parameter or selecting Other... from the drop-down list box opens the Select Allowed Orientations form. When All is selected and you click the button to open this form, all check boxes on the form appear selected, as shown in the figure below.

The All setting applies all possible orientations to the selected Orientation constraint, whereas selecting Vertical or Horizontal applies only the pre-set associated orientations to the constraint. For example, if you change the Orientations parameter selection in the Constraint Parameter Editor pane from ALL to Horizontal, the constraint orientation settings change automatically.

When you move the cursor over the Orientations parameter value, a tooltip is displayed providing more information related to the current orientation setting.

In addition to being able to choose orientation settings of All, Horizontal, or Vertical, you can select Other... that displays the Select Allowed Orientations form with all check boxes deselected, as shown below.

From here, you can choose your own, single or multiple, custom orientations.

When you open the Select Allowed Orientations form for an existing Orientation constraint, on initial display, the form appears pre-populate with the orientation settings that you saved for it last, as illustrated below.

Once you have selected the required orientation, the orientations are applied to the selected Orientation constraint and listed in the Orientation’s parameter drop-down list box for future use.

Different Orientation Options on the Select Allowed Orientations Form

By default, devices are considered as:

When you open the Select Allowed Orientations form for a constraint that contains only 'default', the form has the orientation options shown in the following figure:

Devices registered as 'r0isHorizontal' are considered as:

When you open the Select Allowed Orientations form for a constraint that contains only device registered as 'r0isHorizontal', the form has the orientation options shown in the following figure:

When you open the Select Allowed Orientations form for a constraint that contains both types of devices (that is horizontal and vertical), the form has the orientation options shown in the following figure:

In this situation, the meaning of horizontal and vertical cannot be applied because the orientations are inverted for devices registered as r0isHorizontal compared to default device. The vertical and horizontal preset does not appear in the drop-down list box to edit the constraint value.

Placement Path

Definition

The Placement Path constraint enables you to place instances of a given current path in a straight and ordered manner.

It identifies current paths in the active schematic cellview and creates a Placement Path constraint in the schematic Constraint Manager.

Parameters

In addition to the parameters Name, Enabled, and Notes, you can set the following parameters:

  • direction
    Type: enum
    Default: auto
    Valid Values: auto, horizontal, vertical
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: N
  • ordering
    Type: enum
    Default: strict
    Valid Values: strict, bulknet
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: N

  • exclusive
    Type: enum
    Default: auto
    Valid Values: true, false
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: N
  • Row
    This parameter is enabled only when the Placement Path members are instances and the direction = horizontal, ordering = strict, and exclusive = true. It is not available for nested Placement Paths.

    Type: float
    Default: 1
    Valid Values: any numerical value greater than 0
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: N

Members

Placement Path constraints can be created on a single or multiple instances. The constraint member order determines the placement order for path members.

A Placement Path constraint can contain a Placement Path as a member as long as that member contains only Placement Path objects.

The placer follows the Direction parameter to place the path members in the horizontal or vertical direction.

  • If set to Auto, the placer determines the direction automatically. Depending on the location of pins, one of the following placement direction is followed:
    • Top to Bottom (default)
    • Bottom to Top
    • Left to Right
    • Right to Left
  • If no pin shape on the net is found, the direction is set to vertical.
  • If direction = horizontal, ordering = strict, and exclusive = true, the Row parameter will also be enabled.

There are two implied priority levels of the Placement Path constraint and ordering is maintained in both cases:

  • High: When Placement Path constraint has the following settings
    • Exclusive = true (Restrict non-path member instance insertion)
    • Ordering = strict (Restrict overlap in path order direction)

  • Low: When Placement Path constraint has the following settings
    • Exclusive = false (Allows non-path member instance insertion)
    • Ordering = bulknet (Allows overlap in path order direction)

Supporting Applications

  • Virtuoso Analog Auto Placer

Process Rule Overrides

Definition

Process Rule Overrides (PRO) can be used to override, on a given object, the generic foundry and design process rules with specific, more stringent, rules as defined in Constraint Groups (which are stored in designs or technology files and act as a collection of process constraints that are applicable to the objects in a design).

A PRO constraint can be created for an entire design if nothing is currently selected (using the Constraint Creation pull-down in the Constraint Manager or the right-mouse button context menu). Here, the parameters will be the same as those available for PRO constraints created on nets.

The status (passed or failed) of Process Rule Override constraints will be updated when the Verify – Design command is run in VLS (the Process Rules tab is used to configure verification settings).

When DRD (design rule driven) markers exist in a design, they should be read, processed, and then have their Constraint Status updated to ensure that their display setting is current for Process Rule Override constraints.

When a process rule violation exists, any process rule override constraint on a net, or on a net class associated with a marker created, will be marked as failed. All other process rule override constraints will be considered as passed if no violation is found on any shapes associated with their nets.

When PRO constraint is created or transferred, it immediately takes the name of its constraint group, which is generated as CG_<number>.

The process rule override status is not persistent. It cannot be saved in the database.

See also:

Parameters

See also Process Rule Override Parameters and the Process Rule Editor (PRE) for more information on the PRO parameters detailed below and also additional PRO parameters.
  • Default Group (Constraint Group)
    It contains the following parameters: Top Layer, Bottom Layer, Purposes, Vias Allowed, Widths Minimum, Cuts Minimum, Spacing.
    The Default Group parameters are used to reflect the contents of a net’s default constraint group. Constraints can be placed here to locally override foundry rules obtained through standard lookup. Typical use here would be to route a net with a specific wider width or a net with a specific number of via cuts, or to modify the spacing value for a net or the valid layers.
    The lookup order used to populate the Default Group parameters is default wire constraint group – design constraint group – foundry. You will not be able to edit values coming from the default wire constraint group. A tooltip for such values explicitly prompts you to edit them in PRE to override.
    In addition to the parameters listed above, Default Group has the Wire Types parameter that can be used to define a set of wire types for each layer. For more information, see Assigning a Wire Type to a Net.
    See also Custom Parameter Value (for Process Rule Override Parameters).
    For more information on customizing constraint groups, see Customizing a Constraint Group.
  • Input Taper (Constraint Group)
  • Output Taper (Constraint Group)
    Both these constraint group parameters contain the following parameters: Halo, Top Layer, Bottom Layer, Purposes, Vias Allowed, Widths Minimum, Cuts Minimum, Spacing.

The Input/Output Taper constraint group parameters are used to reflect the contents of the nets Input/Output taper default constraint group.

Constraints can be placed here to locally override rules obtained through standard lookup. Overridden rules in this location are only valid when set within a halo on a net near an Input/Output pin. The halo is specified using a Halo parameter in either of these constraint groups. Typical use here would be to allow routing in poly near poly pins, or some other relaxation of standard constraints to be able to route to a pin.

See also Custom Parameter Value (for Process Rule Override Parameters)

    • Halo
    • Top Layer
    • Bottom Layer
      Corresponds to a valid layers constraint in the PRE. The valid layers constraint should always contain a contiguous set of layers to use for this net/net group. The router should route using only these layers.
    • Purposes
      Specify purpose of use, for example (all), high_voltage, low_voltage.
    • Vias Allowed
      Corresponds to a valid vias constraint in the PRE.
    • Widths Minimum (for each valid layer)
      minWidth constraints (for each layer matching a valid layer).
    • Cuts Minimum (for each cut layer)
      The min num cuts constraints (for each cut layer matching a valid via).
    • (Input Taper) Halo

    • (Output Taper) Halo
      Taper halo constraint (in input or output group).
    • Spacing
      Specify the (Input/Output) taper spacing.
      The constraint parameter editor will display table for table values.

The above parameters can be used as shortcuts to edit process rules with the PRE. You can edit the most commonly changed parameters for routing constraints directly in the Constraint Manager. Furthermore, if there are no overrides in the PRE for these values, a lookup is performed to let you know which values the router will use for routing (if you hover over them, the associated tooltip will indicate what the value for each parameter will be along with a note about where in the lookup that parameter can be found). The constraints created by these parameters will always be in the constraint group above it in the list (or found via lookup).

Members

A single net or design.

No selection is required for a PRO constraint to be created on a design, as it is the default should no other valid member be selected.
A PRO constraint can also be created on a net class, via its default CG parameter, but it will be displayed as Net Class constraint, not a separate PRO constraint.

Supporting Applications

  • Virtuoso Layout Suite XL (Create Wire Editing)
  • Virtuoso Space-based Router
  • Modgen Editor

Process Rule Override Parameters and the Process Rule Editor

The following process rule override constraint parameters are reflected in The Process Rule Editor. That is, changing the value of these parameters in the Constraint Manager will make equivalent changes in the PRE and vice versa.

Each parameter tooltip also provides information on where, in the constraint lookup, a value was found.

PRO Parameter PRE Equivalent Parameter Name Notes

allowed layers, input taper layer, output taper layer

Valid Layers in default, input taper, and output taper constraint groups respectively.

Specifies the min and max of a range of valid layers that routers should use on a net when tapering. If the database does not currently contain a sequential list of layers then these fields will be blank.

In the UI, enter a top and bottom layer entry to the specify the range.

allowed vias

Valid Vias on default constraint group.

Specifies a list of vias that a router should use when routing a net.

layer widths, input widths, output taper widths

Minimum Width for net’s default, input taper, and output taper constraint group respectively.

Specifies the minimum width that the router should use for each valid layer.

The UI tree display, when unexpanded, will show a summary if there are different values, or a single numeric if the values are all the same value. Changes made to the value here will collectively change all of the values. If you expand the tree you will see the individual layer values.

via min num cut

Min number of cuts on the net constraint group.

Specifies the minimum number of cuts that a router should use when routing. This parameter is a table-based rule, where the entry in the Constraint Manager supports only the setting/viewing of the first entry in that table. If a table is found with more than one entry, it will not be shown in the Constraint Manager (in this case you should use the PRE to edit or view it). The Constraint Manager will allow the setting of min num cut for each cut layer that participates in at least one valid via.

In the UI, enter the number of “counts” (rather than measurements in user units).

input taper halo, output taper halo

Taper Halo Input/Output in taper constraint group.

Specifies a halo within a router that should follow other process rules inside the taper constraint group.

In the UI, enter the user unit measurement.

Custom Parameter Value (for Process Rule Override Parameters)

The Custom parameter value can be used for a number of Process Rule Override constraint parameters including Default, Input Taper, and Output Taper.

This can be used in cases where a net’s default constraint group contains a mixture of individual constraints and references to one, or more, constraint groups (from design or technology information in the Constraint Manager. The Constraint Manager will display this scenario by listing what is currently present, separated by “+”.

For example, if the default constraint group of a net contained 2xWidthDoubleCuts and a further valid via constraint, to additionally restrict vias specifically on this net, then the Constraint Manager assistant would display this as “2xWidthDoubleCuts + Custom”.

Rail

Definition

The Rail constraint allows you to specify rails in the layout for nets, such as power and ground. It can be specified in the Constraint Manager in either schematic or layout window.

To specify a rail constraint, you just need to select a net in the design. The constraint will be created with the net and the prBoundary as members.

Parameters

In addition to the parameters Name, Enabled, and Notes, you can set the following parameters:

  • Direction
    Type: enum
    Default: horizontal
    Valid Values: horizontal, vertical
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: N
  • layerName
    Type: integer
    Default: 0
    Valid Values: layer names
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: N

  • Width
    Default: 0 [Database Units]
    Valid Values: positive
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: Y
  • OffsetType
    Type: enum
    Default: "left" (when vertical Direction selected) "top" (when horizontal Direction selected)
    Valid Values: "left" "right" (when vertical Direction selected) "top" "bottom" (when vertical Direction selected)
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: N
  • Offset:
    Type: float
    Default: 0 [Database Units]
    Valid Values: positive
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: Y

Members

The Rail constraints can be modified at any time either in schematic (and transferred to layout) or directly in layout. Once the modification is done, the constraints show up as failed in the Constraint Manager window.

Supporting Applications

  • Virtuoso Analog Auto Placer
  • Virtuoso Layout Suite XL (Constraint Aware Editing)

Shielding

Definition

A Shielding constraint enables specialty routing between nets.

The unique net member in the constraint is considered as the “shielded” (or protected) net. That is, it is the net that will be surrounded by a different net. The “different net” that protects the shielded net is considered as the “shield” (or protective) net.

A “shield” net can be used in other Shielding constraints, but only as a shield net, never as a “shielded” net. A “shielded” net can belong only to one Shielding constraint.

When specifying the net width and spacing from the shielded net to the shielding nets, you should use The Process Rule Editor.

Parameters

For additional information on the available shielding parameters see Shielding Parameters and the Process Rule Editor.
  • Shield Net
    The Shield Net parameter is used to specify the net that is to be considered as the “shield” net.
    For more information, see Creating a Shielding Constraint and Setting a Shield Net.
  • Shield Net2
    The Shield Net2 parameter is used to specify the second net that is to be considered as the “shield” net.
  • Shielding
    This constraint group contains the following parameters: msShieldStyle, Parallel Widths, Parallel Space, Tandem Width, and Use Existing Shape As Shield.

The Shielding parameter is used to enter process rules related to how nets should be shielded.

    • msShieldStyle
      Specifies the shielding style. You have the following choices of styles: Default, Parallel, Tandem, Coaxial, TandemSplit, ParallelViaAlign, TandemSplitViaAlign, and crossTie.
      The crossTie shielding style is not supported in Virtuoso Space-based Router and Wire Editor.
      The msShieldStyle constraint parameter set within the Constraint Manager assistant is in the Shielding constraint group of a net, similar to other overrides such as minWidth. If no msShieldStyle has been specified, Default is displayed and is treated as equivalent to Parallel by the Virtuoso Space-based Router.
      msShieldStyle is an EDI-specific parameter.
    • Parallel Widths (for each layer)
      Minimum width in the shielding constraint group in the PRE. Specifies the width of the parallel shield on both sides of the signal net in tandem or parallel shield style.
    • Parallel Space (for each layer)
      Minimum spacing in shielding constraint group. Specifies the spacing between the shielded net and the shields, on either side, in tandem or parallel shield style.
    • Tandem Width (for each layer)
      Tandem width in shielding constraint group. Specifies the width of the shield when it is used above or below the signal net.
    • Use Existing Shapes As Shield
      When this parameter is set to true and power rails exist adjacent to a shielded net, then these power rails are used as shielding nets. New shielding nets are created if no existing power rails are found.

    • Ignore Shielding On Layers
      Available only if the msShieldStyle constraint parameter is set to Parallel.
      Techfile Name: ignoreShieldingOnLayers
      Specifies the layers on which shielding should be ignored. When you click the field adjacent to this constraint parameter, the Select Layers form is displayed to enable selection of the specific layers to be ignored. By default, this constraint parameter is set to none.
    • Style Around Vias
      Available only if the msShieldStyle constraint parameter is set to coaxial, parallel, or crossTie.
      Techfile Name: styleAroundVia
      Determines the shielding style that should be used to add shield wires around the vias. The drop-down list box lets you select one of the following values: none, around, allAround, and enclose.
      By default, this constraint parameter is set to enclose. Selecting this value adds shield wires all around the vias in the preferred direction.
      When you select none, shield wires are not added around the vias.
      around determines whether shield wires should be added around vias.
      allAround ensures that shield wires are used all around vias even in the wrong direction, if specified.

    • Tie Shield
      Available only if the msShieldStyle constraint parameter is set to coaxial, parallel, or crossTie.
      Techfile Name: tieShield
      Specifies whether ties should be added for tying the new shield wires to their shield nets. By default, this constraint parameter is set to true to ensure that shield ties are added.
    • Cross Tie Interval (for each layer)
      Available only if the msShieldStyle constraint parameter is set to crossTie.
      Techfile Name: msLayerCrossTieInterval
      Cross-tie intervals can be specified for individual cross-tie shielding layers associated with a net. This defines a new OA layer constraint, msLayerCrossTieInterval.
      The Cross Tie Interval constraint parameter specifies how often cross-ties should be built on a per-layer basis. The value is an integer that specifies the intervals as a number of tracks between cross-ties (not microns) built on a given layer. For example, a value of 0 (default) results in a cross-tie on all tracks. A value of 1 results in a cross-tie on the alternate tracks. A value of 2 results in a cross-tie after every two tracks.

    • Cross Tie Shield Layers
      Available only if the msShieldStyle constraint parameter is set to crossTie.
      Techfile Name: msShieldingLimit
      Specifies the shielded layers that should have cross-ties on them. This is done to ensure that specific layers are available for other purposes. The layer pair specified and the layers in between define the continuous set of layers that can be used to build cross-tie shields. For example, if the specified layer pair is Metal2 and Metal7, the cross-tie shields can be built on Metal2, Metal3, Metal4, Metal5, Metal6, and Metal7, but not on Metal8 or above layers.
      The Top Layer should be above or same as the Bottom Layer.
    • Cross Tie Layers
      Available only if the msShieldStyle constraint parameter is set to crossTie.
      Techfile Name: msCrossTieLayers
      Setting this constraint parameter indicates that the cross-tie shields should be built for routes on the net on Top Layer, Bottom Layer, and the layers in between. For example, if the layer pair specified is Metal3 and Metal6, then the cross-tie shields will be built for routes on the net on Metal3, Metal4, Metal5, and Metal6.
      The Top Layer should be above or same as the Bottom Layer.
    • Tolerance

  • hierarchicalScope

For more information, see The Process Rule Editor and Shielding Parameter Values.

Members

One net only.

Supporting Applications

  • Virtuoso Space-based Router
  • Innovus System
  • Create Wire (supported in pathSeg mode but not path mode)
    For Create Wire to work successfully, ensure that Constraint Aware Editing mode is enabled.

Shielding Parameters and the Process Rule Editor

The following shielding constraint parameters allow for editing of process rules in The Process Rule Editor. That is, changing the value of these parameters in the Constraint Manager will make equivalent changes in the PRE and vice versa.

Each parameter tooltip also provides information on where, in the constraint lookup, a value was found.

Shielding Parameters PRE Equivalent Parameter Name Notes
  • parallel width
  • parallel space
  • tandem width

Shield Width, Shield Space, Tandem Width, respectively, on the shielding constraint group.

  • Shield Width specifies the parallel shield width to be used if parallel shielding is performed by the router.
  • Shield Space specifies the parallel shield spacing to be used if parallel shielding is performed by the router.
  • Tandem Width specifies the tandem shield width to use if tandem shielding is to be performed by the router.
All are set on a per layer basis.

Creating a Shielding Constraint and Setting a Shield Net

To create a Shielding constraint and set the associated shielding net:

  1. Select the net that is to be shielded.
    If you select multiple nets, and try to apply a Shielding constraint, a consistency check warning message is displayed in the CIW.
    This selection can be made using the Navigator assistant, Search results, or directly from the design canvas.
  2. Select the Shielding (Routing drop-down menu) constraint from the Constraint Generator menu on the Constraint Manager.
    This will create a Shielding constraint for the selected net.
  3. Select the newly created Shielding constraint in the Constraint Manager.
    The Shielding constraint will have one member, the net you selected in Step 1.
  4. Using the Shield Net and Shield Net2 parameters, in the Constraint Parameter Editor section of the Constraint Manager, select the net that is to be used as a shielding net by either:
    1. Choosing the net from the drop-down list box for the Shield Net parameter.
      You will be displayed a list of all the nets which have been registered with the Circuit Prospector as supply nets or have their sigType set to power or ground.
    2. Entering the shielding net name manually into the Shield Net parameter entry field.
    3. Clicking the white arrow icon to the right of the Shield Net parameter which will allow you to interactively select, using the mouse, a shielding net from the Navigator, Search toolbar/assistant results, or directly from the design canvas.
      When in interactive selection mode, you can still use other commands such as copy, move, or zoom. Press the ESC key to exit interactive selection.

Shielding Parameter Values

See also The Process Rule Editor

The following values can be set for the Shielding parameter:

When one of these “generator” values has been selected, the associated option in the PRE pull-down menu will change from generate to design. This indicates that the associated process rule has been created and it is now in the design (for example, Coaxial (Generate) will change to Coaxial (Design)).

Symmetry

Definition

The Symmetry constraint is used to define symmetries of instances, nets, modgens and pins about an axis. It allows mirrored and non-mirrored symmetries which can be specified via the constraint’s parameter mirror. The Symmetry constraint accepts an axis. If no axis is specified, a default axis that has default parameters is considered.

When you select a symmetry constraint in the Constraint Manager, the members as well as the associated axis are also highlighted (haloed) in the Layout graphical area.

Parameters

In addition to the parameters Name, Enabled, and Notes, you can set the following parameters:

  • Axis (see Axis Parameter)
  • Mirror
    Type: Boolean
    Default: true
    Valid Values: true/false
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: N
    The mirror parameter is only used on objects that have an orientation, such as instances. For example, as pins are shapes, and do not therefore have an orientation, the mirror parameter would be ignored in their case.
  • scope
    Type: enumSet
    Default: boundary
    Valid Values: “boundary”, “contents”
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: N

  • Check With Halo
    This parameter applies to instance and net members. The value of this parameter defines the type of symmetry check that needs to be applied to the constraint:
    • nil: Simple check without halo
    • boundary: Check with halo based on cell boundary
    • per-layer: Check with per-layer halo
      For net symmetry only nil and boundary values are valid. In this case boundary should be interpreted as check with halo, which must be applied to the constraint with net members.
      The constraint groups discussed below are also applicable to net symmetry constraints.
  • hierarchicalScope
    This parameter is visible only when the Symmetry constraint includes net members.
    Specifies the current hierarchical scope of the constraint: local, below, or above the current cell level.
  • Default Group (Constraint Group)
    This parameter is visible only when the Symmetry constraint includes net members.
    The Default Group category contains the following parameters: Top Layer, Bottom Layer, Purposes, Vias Allowed, Widths Minimum, Cuts Minimum, and Spacing. These parameters are used to reflect the contents of a Symmetry (including Net Symmetry) default constraint group.

Constraints can be placed in the default constraint group to locally override foundry rules obtained through standard lookup. Adding a constraint parameter to a Symmetry default constraint group is equivalent to adding the same constraint in each net member’s default constraint group. If there are similar constraints in the net’s default constraint group, and the Symmetry default constraint group, then the net’s default constraint group parameter settings will have precedence.

A typical use here would be to route a set of nets with a specific wider width or a net with a specific number of via cuts, or to modify the valid layers for all nets in a symmetry constraint.

In addition to the parameters listed above, the Default Group category has the Wire Types parameter that can be used to define a set of wire types for each layer. For more information, see Assigning a Wire Type to a Net.

For more information on the Default Group, see The Process Rule Editor.

For more information on customizing constraint groups, see Customizing a Constraint Group.

  • Within Group (Constraint Group)
    This category is visible only when the Symmetry constraint contains nets as its members (that is, not a nested net class).
    The parameters available in the Within Group category help to define the process rules for the net members in a Symmetry constraint. These parameters include Spacing and Tolerance. For more information on the Within Group parameters, see The Process Rule Editor.
    • The Tolerance parameter describes the percentage allowed deviation from specification when implementing a given constraint. This parameter applies only to symmetry (and other constraints) on nets, for the purpose of routing.

    • In addition to the Spacing and Tolerance parameters, you can define the Same Mask parameter to ensure all shapes on a given layer for a net are on the same mask. This parameter allows you to specify the color of the nets in the net class. This can also have a hard or a soft attribute.
      The Same Mask parameter is equivalent to using the msSameMask constraint. If you reset the value of this constraint, the color of the nets should be reset accordingly.
    • Optionally, in addition to the Same Mask parameter, you can set the Mask Name parameter to ensure that the shapes will be on the specified color mask for each routing layer for the nets in the Symmetry constraint.

  • Group to Outside Group (Constraint Group)
    This parameter is visible only when the Symmetry constraint includes net members.
    It contains the following parameters: Spacing, Tolerance, and hierarchicalScope.
    The Group to Outside Group parameters are used to specify spacing for the routed symmetry constraint to everything else in the design. These parameters can be used to enter process rules between nets in a Symmetry constraint and those nets that are not part of that constraint. For more information on the Group to Outside Group parameters, see The Process Rule Editor.

Members

One (self-symmetry) or two objects of the same object type. The object type can be: instance, net, modgen constraint (selected in the Constraint Manager), modgen figGroup, regular figGroup, terminal, shape, or pin.

  • Any self-symmetrical object can be in two orthogonal constraints.
  • Any object in a symmetrical pair can be in four symmetrical constraints (two vertical and two horizontal) as long as the two vertical and horizontal axes are different.
For sharing object members, the constraint must have explicit symmetry axes and not the default Axis Parameter.

Member order is important. When multiple pair or objects, for example, (A B) (C D) and (net1 net2), share the same symmetry axis, the object order may be important to analog placers and routers. If the order of the objects is (A B) (C D), that implies that A and C are on the same side of the symmetry axis and B and D on the opposite side.

A symmetry (net) constraint can also be a constraint container. That is, it can contain its own members and also be used as a member itself for other constraints.

Supporting Applications

  • Virtuoso Custom Digital Placer (all)
  • Virtuoso Space-based Router (net symmetry only)
  • Virtuoso Analog Auto Placer (not shape symmetry)
  • Virtuoso Layout Suite XL / Constraint Aware Editing (not shape symmetry)

Voltage Synced Net

Definition

The Voltage Synced Net constraint identifies whether a pair of synced nets transition in phase with each other, and their delta voltage is calculated differently to the default minVoltageSpacing calculation. The calculation for synced nets is deltaV =

Max(abs(net1_maxV - net2_maxV), abs(net1_minV – net2_minV))

The constraint acts as a placeholder for DRD (Design Rule Driven Editing) by identifying the synced nets that require their delta voltage checked. DRD generates spacing markers for any shapes on synced nets that fail minVoltageSpacing based on this calculation of deltaV.

Additionally, it is not possible to have multiple voltage synced net constraints on the same net.

(IC23.1 EXL and Higher Tiers) Virtuoso’s VDR flow generates voltage synced shapes on the appropriate LPP for each pair of nets in a group that has this Voltage Synced Net constraint. For more details see Defining and Checking Voltage Synced Nets.

Note: The voltageLayerMarkerMapping and voltageLayerPairMarkerMapping constraints specify the LPPs on which the voltage synced nets are generated.

Parameters

In addition to the parameters Name, Enabled, and Notes, you can set the following parameter:

  • hierarchicalScope
Specifies the current hierarchical scope of the constraint as local, below, or above the current cell level.
For more details see Pushing and Pulling Constraints in a Schematic or Layout Hierarchy.

Members

Two or more nets.

Supporting Applications

  • Virtuoso Design Rules
  • Virtuoso Voltage Dependent Rules Flow
The fixed constraint cannot be stored as a template as it is an Open Access object attribute and does not have independent OA storage. For more information, see Constraint Template Storage in the Virtuoso Unified Custom Constraints Configuration Guide.

Delta Voltage

Definition

Specifies the delta voltage between two nets.

To create a delta voltage constraint, you need to specify a valid value, which should not be a negative value. For more information, see Creating Delta Voltage Constraints between Nets.

The constraint defines the maximum voltage difference that can exist between two nets. Any value greater than the defined value results into constraint violation.

Delta Voltage option is greyed out when only a single net or more than two nets are selected.

A warning displays in CIW if one net (out of the two) is deselected from the deltaVoltage constraint. Same is the case if a net is added in an already existing deltaVoltage constraint.

Parameters

In addition to the parameters Name, Enabled, and Notes, you can set the following parameter:

  • deltaVoltage
Specifies the current delta voltage of the constraint.

Members

Two nets only.

Supporting Applications

  • Virtuoso Design Rules
  • Virtuoso Voltage Dependent Rules Flow

Assigning a Wire Type to a Net

In the Constraint Manager assistant, the following constraint types allow you to assign a specific set of wire types for each layer: Bus, Diff Pair, Matched Length, Net Class, Process Rule Overrides, and Symmetry. To do this, use the Wire Types parameter listed in the Constraint Parameter Editor pane under the Default Group category, as shown in the figure below.

The wire types should be specified as a comma-separated list of strings, as shown in the figure below.

If a comma appears in the wire type name, add a backslash just before the comma to create an escape sequence. For example: myWire\,1and2,myWire3.

If a layer does not have a corresponding entry in the technology file, its value is shown as blank in the Constraint Parameter Editor pane. See Metal6 to Metal11 in the figure above. You can manually add the required wire types for such layers.

If the wire types assigned to each layer are different, (various) is displayed in the cell adjacent to the Wire Types parameter.

To modify the values for all layers simultaneously, enter the required values in the cell adjacent to the Wire Types parameter.

When you view the details of a constraint in the CIW, the Wire Types parameter is identified as allowedWireTypes. It is of string type and is displayed in the following format:

"rowNumber1=list of values:rowNumber2=list of values…"

Here, any comma or colon in the name of a wire type will be displayed in an escape sequence.

For example, if you want to view the details of constraint Constr_0, run the following commands in the CIW:

constraint=ciConFind(ciGetCellView() "Constr_0")
constraint~>parameters

The following result is displayed:

Specifying the Color Mask for Critical Nets in Schematic

Critical nets can be identified in the schematic and then routed on a single mask for each layer. In addition, you can optionally specify the color mask.

To specify color-specific constraints, in the Constraint Manager assistant accessed from Schematic XL, the following parameters are available for setting in the Within Group category for the Diff Pair, Net Class, and Symmetry constraints that contain critical nets:

To update constraints in the layout to match those set in the schematic, do one of the following in the layout view:

Using colorMask Constraint Parameter of msSameMask

Add the colorMask parameter to the msSameMask constraint definition to specify the color mask. This parameter is represented by an integer value as shown in the table below:

Value Selection Description

0

any

Shapes on the nets will be on the same color mask for each routing layer. This is the default.

1

mask1

Shapes for the nets will be on mask1 for each routing layer.

2

mask2

Shapes for the nets will be on mask2 for each routing layer.

Constraints in Virtuoso Parasitic Aware Design Environment

The following constraints are related to Virtuoso Parasitic Aware Design:

Parasitic Estimate

The Parasitic Estimate constraint is not accessible from the Constraint Generator drop-down menu. For more information on the use and application of parasitic estimates, see the Parasitic Estimates Assistant in the Virtuoso Parasitic Aware Design User Guide.

Definition

The Parasitic Estimate constraint is used to specify R/C parasitic estimates to be met by the layout software. Backannotation will issue warnings when parasitics are not met.

Estimates are in the form of a star-shaped model for each (flattened) net. A resistance can be associated with each leaf-level instance terminal. Capacitance is connected between the central nodes of nets. Each constraint specifies one resistance or capacitance estimate and the parameters R and C are mutually exclusive. Consequently, a number of constraints may be needed to specify a complete model for a net.

Parameters

In addition to the parameters listed below History and Notes information can also be set.
  • R
    Type: float
    Valid Values: positive
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: N

  • C
    Type: float
    Valid Values: positive
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: N

Members

For resistance estimates, one net or two or more terminals.

For capacitance estimates two members are required, both nets. This expresses a coupled capacitance estimate if both are signal nets.

Supporting Applications

  • Virtuoso Parasitic Aware Design

Parasitic Filter

The Parasitic Filter constraint is not accessible from the Constraint Generator drop-down menu. For more information on the use and application of parasitic filters, see the Parasitic Filters Assistant in the Virtuoso Parasitic Aware Design User Guide.

Definition

The Parasitic Filter constraint allows reduction of parasitic data in extracted views by filtering out parasitic instances. Its members are nets, instances or cell views. Filters always apply to parasitic instances attached to nets. The use of an instance or cellview master is a short-cut for specifying nets contained by that instance or cellview.

The parameter isCoupled specifies whether the filter applies to any parasitic attached to the net, or only to coupling parasitics between two specific nets (in the latter case, two members are required).

Parameter type defines which type of parasitic should be filtered, for example, one of “R”, “coupledC”, “decoupledC”, “L” and “K”. Multiple filters, each of a different type, can be applied to the same members.

Using parameter include it is possible to define that:

  • none of the parasitics should be included.
  • all parasitics should be included.
  • all parasitics over a certain threshold should be included.

In the last case listed above, the parameter threshold needs to be defined to give the threshold for the parasitics to be included.

Parameters

  • isCoupled
    Type: bool
    Valid Values: false
    Valid Values: “true”, “false”
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: N
  • type
    Type: enum
    Valid Values: R
    Valid Values: “R”, “coupledC”, “decoupledC”, “L”, “K”
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: N
  • include
    Type: enum
    Valid Values: threshold
    Valid Values: “none”, “all”, “threshold”
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: N

  • threshold
    Type: float
    Valid Values: 0.0
    Valid Values: positive
    On Constraint: Y
    On Member: N
    Display: Y
    User Units: N
Legal only when include = threshold.

Members

Two members if isCoupled is true, otherwise one member. Each member is either a net, instance, or master.

  • If the member is a net, the filter applies to all parasitic instances on the net at all levels of hierarchy.
  • If the member is an instance, the filter applies to all parasitic instances on all nets that are contained by the instance (i.e. do not escape above it in the design hierarchy).
  • If the member is a master, the filter applies to all parasitic instances on all nets contained by all occurrences of the cell view.

Supporting Applications

  • Virtuoso Parasitic Aware Design

Axis Parameter

An axis is a reference line that is used by some constraints to better describe the relationship of the constraint members. There can be any number of axes in a design, and multiple constraints may reference the same axis. Constraints that use an axis, such as symmetry, alignment, and distance, have an expandable Axis parameter which specifies the axis name.

When expanded, the Axis parameter displays the following sub-parameters:

When transferring axis information, for example on an alignment constraint from schematic to layout, all sub-parameter values will be reset apart from realizedCoordinate which will remain unchanged.

Widths Minimum Parameter

The Widths Minimum parameter in the Constraint Parameter Editor defines a particular set of width values for a given layer-purpose pair (LPP) instead of defining a minimum and maximum width. A width is defined as the shorter dimension of a rectangle.

If the technology database contains width definitions, each LPP listed below the Widths Minimum parameter displays the corresponding minimum width value in the cell adjacent. You can make the required modifications to these width values as detailed in Overriding the Widths Parameter Values.

When you place the pointer on any LPP name listed below the Widths Minimum parameter, the corresponding width values are displayed in the tooltip. If multiple width values are defined, they are all displayed.

Overriding the Widths Parameter Values

To override a single width value, click the cell adjacent to the corresponding net LPP name and enter the required Widths Minimum parameter value.

Multiple width values from a defined range of valid widths associated to a net LPP can be selected for net type constraints: Bus, Diff Pair, Matched Length, Net Class, Process Rule Overrides, and Symmetry. It requires the constraint allowedWidthRanges to have been defined for the layers.

To override a multiple width value, click the cell adjacent to the corresponding net LPP name to display an ellipsis button. Click the button to open the Allowed Width Ranges Form where you can select and deselect multiple widths from a defined range of valid widths associated to a net LPP.

Although a range of widths may be selected, only the smallest width will be displayed on the Constraint Parameter Editor.

Allowed Width Ranges Form

The constraint allowedWidthRanges needs to be defined for each net LPP in order for this form to be enabled.

This form lets you select and deselect multiple widths from a defined range of valid widths associated with a net LPP. It is accessed from the Constraint Parameter Editor by clicking the cell adjacent to a LPP under the Widths Minimum Parameter and clicking the ellipsis button that is displayed.

The range is displayed, grouped by the direction in which it is measured; horizontal or vertical (if specified). By default, the horizontal range is displayed followed by the vertical range.

oaSpacingDirection

If specified, this is the direction in which the width of the rectangle is measured. This can be Vertical or Horizontal. If a horizontal and a vertical width range have been set, they are both displayed.

AWR Values

You can select and deselect the widths required from a defined range of valid widths associated for the net LPP.

Show/Hide disabled

Toggles the display of the selected widths.

Select All

Selects all widths in the range.

Deselect All

De-selects all widths in the range.

Spacing Parameter

The Spacing parameter in the Constraint Parameter Editor defines the minimum spacing between a pin and other member pins. It is defined for each layer-purpose pair (LPP) in user units.

If the technology database contains spacing definitions, the cell adjacent to each LPP listed below the Spacing parameter displays the corresponding spacing values. The display of spacing values depends on how they have been defined in the technology database, that is, as a single value or as a one- or two-dimensional table. If an LPP has a single spacing value, it is displayed in the adjacent cell; otherwise, the text view/edit table is displayed. You can make the required modifications to these spacing values as detailed in the Overriding the Spacing Parameter Values section.

When you place the pointer on any LPP name listed below the Spacing parameter, the corresponding spacing values are displayed in the tooltip. The figure below illustrates the display of a tooltip with a two-dimensional table of spacing values for Metal4.

Overriding the Spacing Parameter Values

To override a single spacing value, click the cell adjacent to the corresponding LPP name and enter the required Spacing parameter value, as shown below.

If the LPP’s spacing values are defined in a one- or two-dimensional table, clicking the adjacent cell displays the view/edit table field and the button, as shown below. These two widgets provide you the flexibility to enter a single override value in the displayed field or to view and edit the spacing table in the Layer Spacings form opened by clicking the button.

When you enter a single override value in the view/edit table field, it modifies the table values that are less than the entered value and the rest of the values remain unchanged. In addition, the override value starts to show within angular brackets corresponding to view/edit table in the Constraint Parameter Editor, as highlighted below, and the tooltip display gets updated accordingly.

When you access the Layer Spacings form, the section corresponding to the selected LPP expands by default and contains the spacing table for that LPP. The sections containing details corresponding to the remaining LPPs appear as collapsed. For example, when you click the button adjacent to the view/edit table field for Metal1, the Layer Spacings form opens with the Metal1 section expanded to show the relevant spacing table. The other sections such as Poly, Metal2, Metal3, and so on are collapsed, as shown below.

You can expand the other LPP-specific sections to view and edit the related spacing values, as shown below.

In the spacing table, you can edit only the spacing values. You cannot modify the width or length thresholds or the type of the spacing table. In two-dimensional spacing tables, the labels representing the rows and columns signify the type of the spacing table, that is, widthLength, widthWidth, or twoWidthParallelRunLength.

The expanded section for each LPP has an Override by field where you can specify a single value by which the existing spacing values should be overridden. This field has the same impact on the table values as the view/edit table field.

Every time an override value is provided, it is compared with the reference table and based on that, only those table cell values are modified that are less than the override value. The reference table is obtained from the look-up order Design Process Rule Override --> technology Constraint Group --> Foundry. The figure below illustrates how this is done:

The override value displayed in the Override by field of the Layer Spacings form and the cell adjacent to an LPP listed under the Spacing parameter are always in sync regardless of where you entered the override value.

By default, the Override by field displays the minSpacing value; otherwise, it displays the overridden value. If you delete the displayed value from this field and try to leave it blank, the field’s border changes to red, as shown below, and the focus stays on it until you specify a valid value.

Pressing the Enter key after specifying a valid override value in the Override by field, replaces the table values that are less than the entered value. However, if the specified override value is invalid, the table values get reset to the default as per the technology database regardless of any previous valid override (as can be seen in the table of the figure above) and the Override by field gets reset, as shown below.

In addition to overriding spacing values by specifying a single value as explained above, in the Layer Spacings form, you can edit an individual cell value in the spacing table. Each cell of the spacing table has its own minimum spacing value threshold. Therefore, while editing a cell in the spacing table, if you enter a value that is less than the minimum allowable spacing value or greater than the maximum allowable spacing value, the border of the edited cell changes to red and will remain like this until a valid value is entered.

The Layer Spacings form can be saved with invalid values.

When you place the pointer on a cell, a tooltip displays the minimum allowable spacing value, as shown below.

When you input a spacing value that is not an integral multiple of the manufacturing grid resolution specified in the technology database, the value is rounded off to the nearest integral multiple. For example, if the specified manufacturing grid resolution is 0.005, then the expected spacing values are calculated as follows:

User Input Expected Spacing Value

0.05

0.05

0.052

0.055

0.055

0.055

0.057

0.06

The expected spacing values are rounded off to three decimal places.

The modified spacing value is not saved in the technology database. It is instead saved as a process rule override at the object level.

The spacing value can also be viewed or edited from the Process Rule Editor. Any updates are automatically synchronized between the Process Rule Editor and the layer spacing table in the Constraint Parameter Editor.

Keyboard Shortcuts Useful while Editing Values in the Spacing Table

Keyboard Keys Use

Enter, up arrow, or down arrow

Shifts the focus from one cell to the other in the same column.

Tab

Shifts the focus to the next column in the same row.

Esc

Discards the edited spacing value. However, this works only as long as the focus is on the edited cell.

Suppose you modified the spacing table values or its semantics, that is, you added or removed rows or columns, or changed the table type by using the Process Rule Editor (PRE), such that the object-level constraint has no match with the reference table defined in the technology file or Design-Level Process Rule. You will see the following behavior:

To discard the edits done by using PRE, change the value of the Default Group tab from Custom to Empty. This restores the valid default table values.

Parameter Types

The following constraint parameter types are available:

int

bool

float

enum

(one value from enumerated list)

enumset

(a set from an enumerated list)

intRange

floatRange

string

string1DTbl

Support of Shapes

It should be noted that the constraints system will only support shapes as constraint members if they have connectivity. That is, if they exist on a net. Currently, the constraint system will not support constraints on shapes, for any application, if they are not on a net.


Return to top
 â €
X