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

3


The Process Rule Editor

A process rule is a rule that constrains the implementation of a design based on the physical characteristics of the process technology being used. For example, a minSpacing rule specifies the minimum distance allowed between two shapes on a specified layer.

A constraint group is a collection of constraints and process rules created for a technology database or a specific design.

A process rule can exist only in a constraint group. Therefore, for a process rule to be applied to an object, design, or technology; it must be a member of a constraint group applied to that object, design, or technology.

The Process Rule Editor lets you create new process rules and constraint groups and apply them to objects, constraints, designs, or technology databases; and change or remove existing process rules and constraint groups.

If you want to quickly create and modify constraints or constraint groups that are useful for routing, use the Constraint Manager. If you want to create and modify any constraints or constraint groups to be applied to an object, design, or the technology you are using, use the Process Rule Editor.

The Process Rule Editor lets you create new process rules and constraint groups and apply them to objects, constraints, designs, or technology databases; and change or remove existing process rules and constraint groups. The Process Rule Editor supports the creation of process rules and constraint groups for:

Important Points to Remember

For a complete list of process rules supported by the Process Rule Editor, see Process Rules Supported by the Process Rule Editor.

Starting the Process Rule Editor

To start the Process Rule Editor:

Note:

The Process Rule Editor Graphical User Interface is displayed. The interface supports viewing multiple PRE windows simultaneously. Each PRE window responds to the changes in the design window from which it was opened.

For example, you have two designs open, design_A and design_B. Any changes you make to design_A will only update the Process Rule Editor you invoke from this design.

To make the Process Rule Editor respond to selections made in design_B:

If the Process Rule Editor is already open for a design, a “re-open” will bring that editor up for viewing and make it available on top of the canvas.

Process Rules Supported by the Process Rule Editor

The table below lists the process rules and their corresponding Virtuoso constraint names. You can edit these rules by using the Process Rule Editor.

Process Rule Name Virtuoso Constraint Name

Accepted Tolerance

msTolerance

Access Point

accessPoint

Access to Pin

accessShift

Allowed Layer Geometry Orientation

layerShapeAngle

Techfile Name: allowedShapeAngles

Allowed Length Ranges

allowedLengthRanges

Allowed Neighbor Width Range

allowedNeighborWidthRanges (Two layers)

allowedNeighborWidthRanges (One layer)

allowedNeighborWidthRangesOver

Allowed Shape Angles

allowedShapeAngles (0-layer)

Allowed Spacing Ranges Different Layers

allowedSpacingRanges (Two layers)

Allowed Spacing Ranges Same Layer

allowedSpacingRanges (One layer)

Allowed Width Ranges Same Layer

allowedWidthRanges

allowedCutClass

allowedCutClass

allowedGateLengthRanges

allowedGateLengthRanges

allowedGateWidthRanges

allowedGateWidthRanges

allowedPRBoundaryDimensions

allowedPRBoundaryDimensions

allowedSpanLengthRanges

allowedSpanLengthRanges

Cluster Distance

clusterDistance

Corner Fill Spacing

cornerFillSpacing

Cut Class

cutClass

Techfile Name: cutClasses

Default Horizontal Routing Offset

defaultHorizontalRoutingOffset

Techfile Name: horizontalOffset

Default Horizontal Routing Pitch

defaultHorizontalRoutingPitch

Techfile Name: horizontalPitch (One layer)

Default Left Diagonal Offset

defaultLeftDiagOffset

Techfile Name: leftDiagOffset

Default Left Diagonal Pitch

defaultLeftDiagPitch

Techfile Name: leftDiagPitch (0-layer)

Default Right Diagonal Offset

defaultRightDiagOffset

Techfile Name: rightDiagOffset (0-layer)

Default Right Diagonal Pitch

defaultRightDiagPitch

Techfile Name: rightDiagPitch

Default Vertical Routing Offset

defaultVerticalRoutingOffset

Techfile Name: verticalOffset

Default Vertical Routing Pitch

defaultVerticalRoutingPitch

Techfile Name: verticalPitch (One layer)

Diagonal Shapes Allowed

diagonalShapesAllowed

Dummy Extension

dummyExtension

edgeMustCoincide

edgeMustCoincide

edgeMustOverlap

edgeMustOverlap

Error on Derived Layer

errorLayer

forbiddenCutClassSpacingRange

forbiddenCutClassSpacingRange

forbiddenEdgePitchRange

forbiddenEdgePitchRange

forbiddenProximitySpacing

forbiddenProximitySpacing

Gate Orientation

gateOrientation

Gate Spacing Ranges

gateSpacingRanges

Generic Constraint

genericConstraint

Horizontal Offset

horizontalOffset

Techfile Name: horizontalOffset

Horizontal Pitch

horizontalPitch

Techfile Name: horizontalPitch

Horizontal Placement Offset

horizontalPlacementOffset

Techfile Name: horizontalOffset

Horizontal Placement Pitch

horizontalPlacementPitch

Techfile Name: horizontalPitch

Illegal H Gate Pattern

illegalHGatePattern

Keep PRBoundary Shared Edges

keepPRBoundarySharedEdges

Keep Shared Edges

keepSharedEdges

Ladder Frequency

ladderFrequency

Ladder Offset

ladderOffset

Ladder Style

ladderStyle

Large Rectangular Via Array Allowed

largeRectViaArrayAllowed

Left Diagonal Offset

leftDiagOffset

Techfile Name: leftDiagOffset (1-layer)

Left Diagonal Pitch

leftDiagPitch

Techfile Name: leftDiagPitch (1-layer)

Length Pattern Accordion

lengthPatternAccordion

Length Pattern End Run

lengthPatternEndRun

Length Pattern RW Accordion

lengthPatternRWAccordion

Length Pattern Trombone

lengthPatternTrombone

lengthPatternOff

lengthPatternOff

Match Per Layer

matchPerLayer

Match Tolerance

matchTolerance

maxDiffusionLength

maxDiffusionLength

Maximum Coupling Diff

maxCouplingDiff

Maximum Coupling Diff Percent

maxCouplingDiffPercent

Maximum Current Density

maxACCurrentDensity

Maximum Density

maxDensity

Maximum Diagonal Edge Length

maxDiagonalEdgeLength

Maximum Different Density

maxDiffDensity

Maximum Extension

maxExtension

Maximum Floating Area

maxFloatingArea

Maximum Ground Cap Diff

maxGroundCapDiff

Maximum Ground Cap Percent

maxGroundCapDiffPercent

Maximum Length

maxLength

Maximum Number of Minimum Edges

maxNumMinEdges

Maximum number of via cuts of a cluster

maxViaClusterNumCuts

Maximum Poly Length

maxPolyLength

Maximum Routing Distance

maxRoutingDistance

Maximum Single Coupling

maxSingleCoupling

Maximum Single Coupling Percent

maxSingleCouplingPercent

Maximum Spacing For Filling

maxFilling

Maximum Spacing Same Layer

maxSpacing

Maximum Tap Spacing

maxTapSpacing

Maximum Touching Direction Length

maxTouchingDirectionLength

Maximum Width

maxWidth

maxNumCorners

maxNumCorners

minCenterLineSpacing

minCenterLineSpacing

Techfile Name: minCenterLineSpacing (Two layers)

minChamferLength

minChamferLength

minClusterSpacing

minClusterSpacing (One layer)

minClusterSpacing (Two layers)

minCornerExtension

minCornerExtension

minCornerSpacing

minCornerSpacing (One layer)

minCornerSpacing (Two layers)

minDirectionalOverlap

minDirectionalOverlap

minEndOfLineToNotchSpacing

minEndOfLineToNotchSpacing

minExtensionSpacing

minExtensionSpacing

minExtensionToCenterLine

minExtensionToCenterLine

minExtensionToCorner

minExtensionToCorner

Minimum Adjacent Via Spacing

viaSpacing

Minimum Area

minArea

Minimum Area With Exceptions

minAreaEdgeLength

Minimum Center To Center Spacing Same Layer

minCenterToCenterSpacing

Minimum Centerline Extension

minCenterlineExtension

Minimum Corner To Corner Width

minCornerToCornerDistance

Minimum Coupling

minCoupling

Minimum Coupling Percent

minCouplingPercent

Minimum Cut Class Spacing - Different Layers

minCutClassSpacing

Techfile Name: minCutClassSpacing (Two layers)

Minimum Cut Class Spacing - Same Layer

minCutClassSpacing

Techfile Name: minCutClassSpacing (One layer)

Minimum Cut Routing Clearance

minCutRoutingSpacing

Techfile Name: minCutRoutingSpacing (Two layers)

Minimum Density

minDensity

Minimum Diagonal Edge Length

minDiagonalEdgeLength

Minimum Diagonal Spacing Same Layer

minDiagonalSpacing

Minimum Diagonal Width

minDiagonalWidth

Minimum Differential Potential Net Spacing

minDiffNetSpacing

Minimum Distance from The PRBoundary to Enclosed Shape

minPRBoundaryInteriorHalo

Minimum Distance from The PRBoundary to Outside Shape

minPRBoundaryExteriorHalo

Minimum Dual End of Line Extension

minOppEndOfLineExtension

Minimum Edge Adjacent Distance

minEdgeAdjacentDistance

Minimum Edge Adjacent Length

minEdgeAdjacentLength

Minimum Enclosure Edge

minExtensionEdge

Minimum End of Line Adjacent To Step

minEndOfLineAdjacentToStep

Minimum End of Line Cut Spacing

minEndOfLineCutSpacing

Minimum End Of Line Edge Extension

minEndOfLineEdgeExtension

Minimum End Of Line Extension

minEndOfLineExtension

Minimum End Of Line Extension Spacing

minEndOfLineExtensionSpacing

Minimum End of Line Keepout

endOfLineKeepout

Minimum End Of Line Perpendicular Spacing

minEndOfLinePerpSpacing

Minimum End Of Line Spacing

minEndOfLineSpacing

Minimum End of Line to Corner Spacing

minEndOfLineToConcaveCornerSpacing

Minimum Extension Distance

minExtensionDistance

Minimum Extension on Long Side

minExtensionOnLongSide

Minimum Fill to Fill Spacing

minFillToFillSpacing

Minimum Filler To Shape Spacing, Same Layer

minFillToShapeSpacing

Minimum Gate Extension

minGateExtension

Minimum Hole Area

minHoleArea

Minimum Hole Width

minHoleWidth

Minimum Inner Vertex Clearance

minInnerVertexSpacing

Techfile Name: minInnerVertexSpacing (Two layers)

Minimum Inner Vertex Spacing

minInnerVertexSpacing

Minimum Inside Corner Edge Length

minInsideCornerEdgeLength

Minimum Inside Corner Extension

minInsideCornerExtension

Minimum Inside Corner Overlap

minInsideCornerOverlap

Minimum Large Via Array Cut Spacing

minLargeViaArrayCutSpacing

Minimum Large Via Array Spacing

minLargeViaArraySpacing

Minimum Large Via Array Width

minLargeViaArrayWidth

Minimum Length

minLength

Minimum Neighboring Via Spacing

minNeighborViaSpacing

Minimum Notch Spacing

minNotchSpacing

Minimum Notch Span Spacing

minNotchSpanSpacing

Minimum Number of Cuts

minNumCut

Minimum OneDimension Array Structure

minOneDArrayStructure

Minimum Opposite Extension

minOppExtension

Minimum Opposite Span Spacing

minOppSpanSpacing

Minimum Orthogonal Via Spacing

minOrthogonalViaSpacing

Minimum Orthogonal Spacing Between Corners Same Layer

minConvexCornerSpacing

Minimum Outer Vertex Spacing

minOuterVertexSpacing

Minimum Outside Corner Edge Length

minOutsideCornerEdgeLength

Minimum Overlap Distance

minOverlapDistance

Minimum Overlap in Length Direction

minWireOverlap

Minimum Parallel Span Spacing

minParallelSpanSpacing

Minimum Parallel Via Spacing

minParallelViaSpacing

Techfile Name: minParallelViaSpacing (One layer)

Minimum Parallel Via Spacing (Layer Array)

minParallelViaSpacing

Techfile Name: minParallelViaSpacing (Two layers plus metal)

Minimum Parallel Within Via Spacing

minParallelWithinViaSpacing

Minimum Perimeter

minPerimeter

Minimum PRBoundary Extension

minPRBoundaryExtension

Minimum Protruded Spacing, Same Layer, Within Influencing Shape

minStubInfluenceSpacing

Minimum Protrusion Number of Cuts

minProtrusionNumCut

Minimum Protrusion Spacing

minProtrusionSpacing

Minimum Protrusion Width

protrusionWidth

Minimum Rectangular Area

minRectArea

Minimum Redundant Via Setback

redundantViaSetback

Minimum Same Metal Share Edge Via Spacing

minSameMetalSharedEdgeViaSpacing

Minimum Same Net Clearance

minSameNetSpacing

Techfile Name: minSameNetSpacing (Two layers)

Minimum Same Net Spacing

minSameNetSpacing

Techfile Name: minSameNetSpacing (One layer)

Minimum Side Extension

minSideExtension

Minimum Size

minSize

Minimum Spacing Between Notch And Shapes

minEndOfNotchSpacing

Minimum Spacing Different Layers

minSpacing

Techfile Name: minSpacing (Two layers)

Minimum Spacing Over Layer

minSpacingOver

Minimum Spacing Same Layer

minSpacing

Techfile Name: minSpacing (One layer)

Minimum Spacing to Short Edges

minEdgeLengthSpacing

Minimum Spacing, Same Layer, Within Influencing Shape

minInfluenceSpacing

Minimum Step Edge Length

minStepEdgeLength

Minimum Touching Directional Extension

minTouchingDirEnclosure

Minimum Touching Directional Spacing

minTouchingDirSpacing

Minimum Via Clearance

minViaSpacing

Techfile Name: minViaSpacing (Two layers)

Minimum Via Extension

minViaExtension

Minimum Via Joint Extension

minViaJointExtension

Minimum Via Spacing

minViaSpacing

Techfile Name: minViaSpacing (One layer)

Minimum Voltage Clearance

minVoltageSpacing

Techfile Name: minVoltageSpacing (Two layers)

Minimum Voltage Spacing

minVoltageSpacing

Techfile Name: minVoltageSpacing (One layer)

Minimum Width

minWidth

Minimum Wire Extension

minWireExtension

minInnerVertexProximityExtension

minInnerVertexProximityExtension

minJointCornerSpacing

minJointCornerSpacing

minNeighborExtension

minNeighborExtension

minNeighboringShapesSpacing

minNeighboringShapesSpacing

minProtrusionWidthLength

minProtrusionWidthLength

minQuadrupleExtension

minQuadrupleExtension

minSideSpacing

minSideSpacing (One layer)

minSideSpacing (Two layers)

minSpanLengthSpacing

minSpanLengthSpacing

minStitchOverlap

minStitchOverlap

Mixed Signal Shield Style

msShieldStyle

msConnectSupplyDistance

msConnectSupplyDistance

msMaxCap

msMaxCap

msMaxRes

msMaxRes

msMinCap

msMinCap

msMinRes

msMinRes

Number of Strands

numStrands

Pin Cover

pinCover

Pin Staple

pinStaple

Rectangular Shape Orientation

rectShapeDir

Right Diagonal Offset

rightDiagOffset

Techfile Name: rightDiagOffset (One layer)

Right Diagonal Pitch

rightDiagPitch

Techfile Name: rightDiagPitch (One layer)

Route Maximum Length

routeMaxLength

Route Minimum Length

routeMinLength

Routing Directions

routingDirections

Same mask

msSameMask

Shape Required Between Spacing

shapeRequiredBetweenSpacing

shapeRequiredSpacing

shapeRequiredSpacing

shareShields

shareShields

Shield Gap

shieldGap

Shield Width

shieldWidth

snapGridHorizontal

snapGridHorizontal

snapGridVertical

snapGridVertical

Strand Spacing

strandSpacing

Strand Width

strandWidth

Tandem Layer Above

tandemLayerAbove

Tandem Layer Below

tandemLayerBelow

Tandem Width

tandemWidth

Taper Halo

taperHalo

Track Pattern

trackPattern

Trunk Accessing Num Cuts

trunkAccessingNumCuts

Use Non Orthogonal Routing Rules

useNonOrthogonalRoutingRules

Valid Layers

validLayers

Valid LPPs

validLayers

Valid Vias**

validVias

Vertical Offset

verticalOffset

Vertical Pitch

verticalPitch

Techfile Name: verticalPitch (One layer)

Vertical Placement Offset

verticalPlacementOffset

Techfile Name: verticalOffset

Vertical Placement Pitch

verticalPlacementPitch

Techfile Name: verticalPitch

Via Control

viaControl

Via Orient Shift

viaOrientShift

Via Percentage

viaPercent

Via Stacking Allowed

stackable

Via Stacking Limits

viaStackingLimits

viaEdgeType

viaEdgeType

viaRequiredWithin

viaRequiredWithin

Wire Percentage

wirePercent

All the other process rules are unsupported.
You can delete unsupported process rules in the browser pane. But, you cannot create a new rule of an unsupported type; nor can you add or update the values for an existing rule of an unsupported type.
**The Process Rule Editor allows use of via variants if they are already defined in the Technology or Design scope. The via variants are parameterized vias that can only be defined in the Technology and Design scopes.You can use these via variants in addition to the Standard and Custom vias.

Process Rule Editor Graphical User Interface

This section describes the seven different elements that comprise the Process Rule Editor graphical user interface. These GUI elements are:

Before you explore the GUI elements, it will help to familiarize yourself with some useful features supported by the GUI:

Toolbar

The toolbar lets you access certain frequently-used functions.

For more information on the individual buttons on the toolbar, see the table below.

Icon Button Name Description

Move Up

Increases the precedence of the selected constraint group or process rule by moving it up one position in the browser pane.

This function is not available for objects at the top level of the browser tree, comprising the Constraint Groups.

For more information, see Setting the Precedence of a Constraint Group or Process Rule.

Move Down

Decreases the precedence of the selected constraint group or process rule by moving it down one position in the browser pane.

This function is not available for objects at the top level of the browser tree, comprising the Constraint Groups.

For more information, see Setting the Precedence of a Constraint Group or Process Rule.

Remove

Removes the selected constraint group or process rule from the Process Rule Editor.

For more information, see Removing a Constraint Group or Process Rule.

Copy Rules

Copies the selected rules to the Process Rule Editor clipboard.

For more information, see Copying an Existing Process Rule.

Paste Rules

Pastes the process rules in the clipboard into the selected constraint group.

For more information, see Copying an Existing Process Rule.

Save Technology

Saves the changes made since the Process Rule Editor was opened or the last time the Save Technology button was pressed.

For more information, see Saving Changes and Closing the Process Rule Editor.

Help

Opens this document.

Scope Selection Section

The Process Rules on section lets you choose the scope for the changes you make in the Process Rule Editor. The section is also referred to as the Scope Selection section. In this section, choose:

Technology to define rules and overrides that apply to all the designs using the current technology databases.

Design to define rules and overrides that apply for the current design only.

Object to define rules and overrides for the selected objects or constraints in the design.

Browser Pane

The browser pane displays the current constraint groups, process rules, and a summary of the layers used for the selected process rule and the process rule values. The browser pane is divided into the following columns:

Process Rule Editor Context Menu

The Process Rule Editor shortcut menu provides a number of context-specific options that you can apply on a constraint group or a process rule. To display the menu, right-click a constraint group or a process rule in the browser pane.

Only those commands that are relevant to the selected item are active in the shortcut menu. The commands that are not applicable are inactive.

For example, when you are at the top-most level of the Constraint Group tree, the Move Up command appears inactive.

The various commands in the context menu are tabulated below along with their description.

Command Name Description

Copy Rules

Copies the selected process rules to the clipboard.

This feature only copies the supported process rules. Any unsupported process rules are ignored by the command.

For more information, see Copying an Existing Process Rule.

Paste Rules

Pastes the selected process rules from the clipboard to the specified location.

You can paste the rules in the clipboard into as many locations as you want by repeatedly clicking the Paste Rules button.

For more information, see Copying an Existing Process Rule.

Remove

Removes the selected constraint groups or process rules from the Process Rule Editor.

If you delete a process rule in the browser in between copying and pasting, the deleted rule is also removed from the clipboard and is not subsequently pasted.For more information, see Removing a Constraint Group or Process Rule.

Move Up

Move Down

Increases or decreases the precedence of the selected constraint group or process rule by moving it up or down one position in the browser pane.

The commands are not available for the objects at the top level of the browser tree.

For more information, see Setting the Precedence of a Constraint Group or Process Rule.

Create Constraint Group Section

You can use this section to create a new constraint group that contains process rules. For information about how to perform the task, see Creating a Constraint Group.

Create Process Rule Section

You can use this section to create a new process rule in the selected constraint group. The Create Process Rule section includes:

IntFltTblValue

This data format value represents a 1D integer lookup table value where the value is a float.

FltValue

This data format value represents a float value.

Dynamic Widget

You can use this widget to set the values for a new process rule.The widget comprises the following tabs:

You can also use these tabs to edit the values for an existing process rule. However, only relevant tabs are available for each rule.

Description Tab

This tab provides a pictorial and a textual description of the selected process rule, as displayed in the figure below.

The textual description is a generic definition of the process rule and the associated picture elaborates on this definition. The contents of the tab cannot be edited.

Attributes Tab

You can use this tab to specify the process rule attributes, such as name, ID, and description. In addition, you can use the tab to specify if the process constraint is hard or soft.

Any values that you update on the Attributes tab are automatically saved for the current instance.

Value Tab

You can use this tab to select a layer such as Metal2, a constraint value such as 0.03, and an appropriate layer purpose, such as drawing, for the process rule you are creating. You can use the layer-purpose widget provided by the Value tab to create layer-purpose pairs, as required. For more information about creating layer-purpose pairs, see Creating a Layer-Purpose Pair.

Some process rules, such as Minimum Spacing Different Layers, may require you to select two layers and specify the associated purposes.

Parameters Tab

You can use this tab to specify the parameters, such as distance, width, and endOfLineSpace, that define the conditions governing when or how a process rule can be applied.

Depending on the process rule you select, the parameters displayed on this tab vary.

If you modify the default value of a parameter, the Restore Default Value ( ) button appears next to the new parameter value. You can click this button to revert to the default value for this parameter.

Any values that you update on the Parameters tab are automatically saved. Therefore, you do not need to click Update.

Apply Constraint Group Section

This section lets you apply a constraint group from the same or different scope to the selected constraint group in your current scope. In other words, the Apply Constraint Group section acts as a link, making all the applicable Constraint Groups available in the current scope.

For example, you can select a constraint group from the Tech scope and apply it to a custom constraint in the Design scope. However, you can apply a constraint group to a selected constraint only once. For information on how to perform the tasks, see Applying a Constraint Group.

The Constraint Groups you create in the Tech scope will also be available in the Design and Object scopes as these are applicable for all the designs that use the current process technology. However, the custom constraints you create in the Design scope will only be available in the Design and Object scopes as these are applicable at a design level and do not impact the overall process technology.

For more information about using the Apply Constraint Group section, see Applying a Constraint Group.

For information on the tasks you can perform in the Process Rule Editor, see the topics listed below.

Creating a Constraint Group

You can create a new constraint group only in the Technology or Design mode by using the Create Constraint Group field. In the Object mode, the field is inactive.

You can create an appropriate Virtuoso-generated constraint group or apply an existing constraint group to a selected object. For more information, see Applying a Virtuoso Generated Constraint Group and Applying an Existing Constraint Group to a Selected Object.

To create a new constraint group:

  1. On the Constraint Manager toolbar, click the Process Rule Editor button ( ).
    Alternatively, right-click the design object in the layout canvas or the layout navigator and choose Process Rule Editor from the shortcut menu.
    The Process Rule Editor Graphical User Interface is displayed.
  2. In the Process Rules on section, choose one of the following:
    • Technology to create a constraint group applicable for all the designs that use the current process technology.
    • Design to create a constraint group applicable only for the current design.
    • Object to create a constraint group for the selected object or constraint in the design.
  3. Type a name for the new constraint group in the Create Constraint Group section.
    You cannot prefix a constraint group name with an underscore ( _ ). This convention is reserved for Cadence internal use.
  4. Click the plus (+) button in the Create Constraint Group section to add the new group to the database you selected.
Alternatively, press the Enter key.

The constraint group you created is added to the browser pane as displayed in the figure above.

After the new constraint group is added to the browser pane, the Name field on the Attributes tab displays the name of the new constraint group.

The new constraint group is created as an empty floating constraint group for the selected mode (technology or design).

Customizing a Constraint Group

There can be constraints that are specified by adding information with the PRE. This information can be directly added or viewed in the constraint manager when you want to apply a single pre-existing constraint group to the available fields in the PRE. However, there are cases where you may not have any available constraint groups that meet your requirement. Therefore, you can generate customized constraint groups that are specific to your naming convention and as per the required design or style.

This customization can be provided in the form of the following SKILL functions:

isConstraintGroupApplicable( 
    ciCon, CGDefName, CG
)
=> t|nil

listGroupsThatCanBeGenerated( 
    ciCon, CGDefName
)
=> a list of strings)

generateConstraintGroup( 
    ciCon, CGDefName, CGName 
)
=> a SKILL Constraint Group Object 

where:

In addition, you can override the built-in functions by:

You can use nil for any of these values if you want to reset them to default.

Creating a Custom Constraint Group and Defining Default Parameter Values

Alternatively, you can also create a custom constraint group and define default parameter values using the SKILL commands ciAddRuleGroup and ciAddProcessRules in the CIW. For example,

  1. In the CIW, create a new constraint group called myRG1, using the ciAddRuleGroup command:
    cv=geGetEditCellView()
    myRG1=ciAddRuleGroup(cv "myRG1")
  2. Define default values for the top and bottom layers of the constraint group myRG1 using the ciAddProcessRules command:
    ciAddProcessRules(myRG1 '( ("minWidth" "Metal1" 1.0) ("minWidth" "Metal2" 1.2) ("validLayers" nil ("Metal1" "Metal2" "Metal3"))))
    The new constraint group can now be selected as the Default Group (Constraint Group) on the Constraint Parameter Editor.

Creating a New Process Rule

You can create new process rules for the entire technology or design, for one or more selected objects, or for a constraint applied to an object in your design. You can also copy process rules from one or more constraint groups to another constraint group. In addition, you can edit an existing process rule and specify layer purposes. You can also create and apply rules that are voltage dependent.

Creating a New Process Rule in the Technology or Design Mode

To create a new process rule in a constraint group using the Technology or Design mode:

  1. In the browser pane, choose the constraint group in which you want to create the new rule.
  2. In the Create Process Rule section, choose
    • The type of rule to create from the first drop-down list.
    • The value type, where appropriate, from the second drop-down list.
      Each list is seeded appropriately depending on what is selected in the browser pane.
  3. Click the plus (+) button in the Create Process Rule section to add a new process rule to the selected constraint group.
    Alternatively, press the Enter key.
    The process rule is added to the list. The Summary field in the browser pane is highlighted brown to indicate that the rule was created using the default values. You can modify the rule by changing the default values. This also removes the highlight from the Summary column.
  4. Modify the rule by specifying appropriate data on the Attributes, Value, and Parameters tabs.
    Only relevant tabs are available for a process rule.
  5. Click Update to apply the value you set in the Value tab.
    The changes you make on the Attributes and Parameters tabs are automatically saved. Therefore, you do not need to click the Update button to save these changes.
    The new values that you specify on the Value tab appear in the Summary column of the browser pane.
    To quickly add more process rules of the same type, click the Add button instead of Update. Each click adds a new rule with the same values displaying in the Summary column as the last one you added. The Summary column appears brown to indicate that the process rule values might need to be changed.
  6. Select each new rule you added and edit the values, as required.

Creating a New Process Rule for a Selected Object

You can use the Process Rule Editor to create process rules for the selected objects in your design. In this mode, the browser pane shows only the categories that are applicable for the selected objects. For example, if you select a net object, you see only the Default, Input Taper, and Output Taper categories.

Selecting one of the categories populates the Create Process Rule section with the rules you can define in that particular category. For example, for Input Taper, as displayed in the figure above, you can define the following rules only:

When adding process rules in the Object mode, the Process Rule Editor creates a Process Rule Overrides constraint group on the selected net(s).

To create a process rule in the Object mode:

  1. Use the Navigator assistant or the design window to select the object to which you want to add a process rule.
  2. In the browser pane, choose the category for which you want to create the rule.
  3. In the Create Process Rule section, choose
    • The type of process rule to create from the first drop-down list.
    • The value type, where appropriate, from the second drop-down list.
      Each list is seeded appropriately depending on what is selected in the browser pane.
  4. Click the plus (+) button in the Create Process Rule section to add the new process rule to the selected constraint group.
    Alternatively, press the Enter key.
    The process rule is added to the list. The Summary field in the browser pane is highlighted brown to indicate that the rule was created using the default values.
  5. Modify the rule by changing the default data on the Attributes, Value, and Parameters tabs.
    Only relevant tabs are available for a process rule.
  6. Click Update to apply the new values you set in the Value tab.
    The changes you make on the Attributes and Parameters tabs are automatically saved. Therefore, you do not need to click the Update button to save these changes.
    The new values that you specify on the Value tab appear in the Summary column of the browser pane. The brown highlight disappears indicating that the rule has been modified.
    To quickly add more process rules of the same type, click the Add button instead of Update. Each click adds a new rule with the same values displaying in the Summary column as the last one you added. The Summary column appears brown to indicate that the process rule values might need to be changed.
  7. Select each new rule you added and edit the values, as required.

    You can also create an appropriate Virtuoso-generated constraint group or apply an existing constraint group to a selected object. For more information, see Applying a Virtuoso Generated Constraint Group and Applying an Existing Constraint Group to a Selected Object.

Creating a New Process Rule for a Constraint

You can use the Process Rule Editor to create process rules for constraints selected in the Constraint Manager assistant. The following constraints are supported.

When you define process rules for constraints, the browser pane displays only the process rule categories that apply to the selected constraint. For example, for a Diff Pair constraint, you can see the Group to Outside Group, Within Group, and Default categories.

Note:

Selecting one of these categories populates the Create Process Rule section with the rules you can define in that particular category. For example, for Group to Outside Group, you can define the Minimum Spacing Different Layers and Minimum Spacing Same Layer rules.

To create a process rule for a constraint;

  1. Select the constraint for which the rule is to be created in the Constraint Manager assistant.
  2. If the Process Rule Editor is not displayed, click the Process Rule Editor button ( ) on the Constraint Manager toolbar.
    Alternatively, right-click the design object in the layout canvas or the layout navigator and choose Process Rule Editor from the shortcut menu.
  3. In the Process Rule Editor browser pane, select the category for which you want to create the rule. For this example, let us select the Group to Outside Group category.
  4. In the Create Process Rule section, choose
    • The type of process rule to create from the first drop-down list.
    • The value type, where appropriate, from the second drop-down list.
      Each list is seeded appropriately depending on what is selected in the browser pane.
  5. Click the plus (+) button in the Create Process Rule section to add the new process rule to the selected constraint group.
    Alternatively, press the Enter key.
    The process rule is added to the list. The Summary field in the browser pane is highlighted brown to indicate that the rule was created using the default values. You can modify the rule by changing the default values. This also removes the highlight from the Summary column.
  6. Modify the rule by specifying appropriate data on the Attributes, Value, and Parameters tabs.
    Only relevant tabs are available for a process rule.
  7. Click Update to apply the values you set in the Value tab.
    The changes you make on the Attributes and Parameters tabs are automatically saved. Therefore, you do not need to click the Update button to save these changes.
    The new values that you specify on the Value tab appear in the Summary column of the browser pane.
    To quickly add more process rules of the same type, click the Add button instead of Update. Each click adds a new rule with the same values displaying in the Summary column as the last one you added. The Summary column appears brown to indicate that the process rule values might need to be changed.
  8. Select each new rule you added and edit the values, as required.

Copying an Existing Process Rule

You can quickly create new process rules by copying the existing ones.

You can copy only Process Rules Supported by the Process Rule Editor. Any unsupported rules in the selected set are ignored.

To copy some existing process rules to a new location:

  1. In the browser pane, select one or more process rules you want to copy.
    Note:
    • Hold the Shift key while you select multiple items in the tree.
    • The selected set can contain multiple process rules from different constraint groups.
  2. Click the Copy Rules button on the toolbar.
    Alternatively, right-click the process rule that you want to copy and choose Copy Rules.
    The selected rules are copied to the clipboard.
  3. Select the constraint group to which you want to copy the selected rules and click the Paste Rules button on the toolbar.
    Alternatively, right-click the target constraint group and choose Paste Rules.
    The process rules are pasted into the new location as displayed in the figure below.
    Note:
    • You can paste the copied rules to a single constraint group at a time. The tool does not support selecting multiple target destinations for pasting the copied rules.
    • To copy a rule to different target destinations, select each target at a time and click the Paste Rules button on the toolbar. Alternatively, you can use the Paste Rules command from the shortcut menu.

    If you delete a process rule in the browser in between copying and pasting, the deleted rule is also removed from the clipboard and is not subsequently pasted.

Creating a Layer-Purpose Pair

To create a layer-purpose pair in PRE:

  1. Select a layer from the drop-down list box and click the arrow ( ) button to the right of the list.
    A new purpose drop-down list box appears, as displayed in the figure below.
    The default value for layer purpose is NONE. This indicates that a purpose is currently not defined for the layer.
  2. Select an appropriate purpose, such as drawing, for the selected layer.
    Currently, PRE supports default purposes for most of the layer constraints. However, other Virtuoso applications fully support purposes only for the following constraints: Minimum Spacing, Minimum Width, and Minimum Clearance. Therefore, the default state of the Purpose cyclic field for the constraints that are not “purpose-supported” by other Virtuoso applications is NONE. For more information about the layer-purpose pairs supported by the Virtuoso technology file, see Purpose-Aware Derived Layers and techPurposes in the Virtuoso Technology Data ASCII Files Reference User Guide.
  3. Specify an appropriate data format value for the selected layer. For example, when creating a Minimum Spacing Different Layers rule, you need to specify a minimum spacing value, such as 0.0250, between the two selected layers.
  4. Click Update to apply the new values you set on the Value tab.

The Summary column displays a single concatenated string representing the layers used for the selected process rule and the current value of the constraint. The brown color indicates that the process rule has been created using default values, which might need to be changed.

Applying Valid LPPs Process Rule

In addition to allowing purposes to be defined for the selected layer when creating a process rule, the Process Rule Editor supports the Valid LPPs (Valid Layer Purpose Pairs) process rule. This rule defines the valid layer-purpose pairs that can be used for routing. Like most other process rules, you can add this process rule to a constraint group in the Technology or Design scopes or to an Object. You can also modify or delete the process rule, as required.

To select a valid layer-purpose pair from the Valid LPPs process rule:

  1. Select the Valid LPPs process rule in the browser pane and click the Value tab.
  2. From the list of layer-purpose pairs displayed on the Value tab, select the check box next to the layer name in the row that carries the required layer-purpose combination.
  3. Click Update to apply the layer-purpose values you selected.
    The layer-purpose pair that you selected displays as a single, hyphenated string in the Summary column of the browser pane.

For information about creating a layer-purpose pair in PRE, see Creating a Layer-Purpose Pair.

Creating a Voltage Dependent Process Rule

Voltage dependent rules are the ones that define a process constraint in terms of a voltage level. Currently, PRE supports two such rules—minVoltageSpacing and minVoltageClearance. Both these rules define the separation constraint between two devices in terms of voltage levels. The data value format supported by both the rules is voltage, spacing.

minVoltageSpacing defines the spacing between devices along a single layer, whereas minVoltageClearance defines the spacing between devices on two layers. You can define the required voltage values and the corresponding spacing for both the process rules using the VOLTAGE-Spacing table in the Value tab, as displayed below.

To specify the required voltage and spacing values for a selected layer:

  1. Type an appropriate value for the voltage in the VOLTAGE field.
  2. Double-click the Spacing field and type in an appropriate value.
  3. To add another voltage-spacing column to the table, click the Insert new column (+) button on the right.
    A new VOLTAGE-Spacing column is added as displayed below.

    If you click the Insert new column (+) button multiple times, multiple columns are added. By default, the voltage in each column increments by 1. You can select each column and modify the voltage and spacing values, as required.
  4. Click Update to apply the values you set.
    The new values that you specify on the Value tab appear in the Summary column of the browser pane.

For minVoltageClearance, you need to select two layers instead of one and perform the steps as described above.

Editing Existing Process Rule Values

To edit the layer-specific values for an existing process rule:

  1. In the browser pane, select the process rule you want to change.
    A dynamic widget is displayed. The widget comprises the following tabs:
    Each tab displays the current values for the selected process rule.
  2. To edit the existing process rule values, change the values in each of the tabs, as required.
    The Description tab is not editable.
  3. Click the Update button to save the values you changed on the Value tab.
    The changes you make on the Attributes and Parameters tabs are automatically saved. Therefore, you do not need to click the Update button to save these changes.
    The process rule is updated to reflect the new settings.
    To quickly add more process rules of the same type, click the Add button instead of Update. Each click adds a new rule with the same values displaying in the Summary column as the last one you added. The Summary column appears brown to indicate that the process rule values might need to be changed.

Applying a Constraint Group

For a process rule to be applied to a technology, design, or object; it must be a member of a constraint group that supports the rule. Likewise, when applying a constraint group, the target constraint should support the applied constraint group.

For example, when applying a Constraint Group in the Technology scope, you can only select the Constraint Groups that are supported by the Technology database. The supported items are the ones that appear in the Constraint Group drop-down menu for each database.

Constraint Groups cannot be made nested. For example, if you apply Constraint Group A to Constraint Group B; you cannot then apply Constraint Group B to Constraint Group A. Such nested applications are not supported by PRE.

To apply a constraint group to another constraint group, use the data value formats in the Apply Constraint Group section. The Constraint Group drop-down menu reflects the associated database as a tag (Tech or Design). This helps avoid confusion when selecting the constraint groups.

Let us now apply a constraint group to the virtuosoDefaultExtractorSetup constraint group in the browser.

  1. Select the virtuosoDefaultExtractorSetup constraint group in the browser pane.
  2. Choose the constraint group you want to apply from the drop-down list box in the Apply Constraint Group section.
  3. Click the arrow button on the right of the list box to apply the constraint group.

The constraint group is inserted into the virtuosoDefaultExtractorSetup constraint group in the browser pane. Any process rules defined in the DefaultRouteSpec constraint will now be applied to any design referencing the virtuosoDefaultExtractorSetup constraint group.

The constraint group is still also listed on the main branch of the browser pane.

To make any changes to the Constraint Group, you must update the source Constraint Group and not the one linked in. Applied constraint groups are not available for editing. In fact, any changes you make to the source automatically reflect at instances where the constraint group is linked.

For example, to update the process rules for LEFDefaultRouteSpec, you must update the constraint group in the main browser pane instead of trying to update the instance appearing under virtuosoDefaultExtractorSetup.

Setting the Precedence of a Constraint Group or Process Rule

Process rules are applied in the order in which they are listed inside a constraint group. However, you can change the precedence of an applied constraint group or individual process rule by using the Move Up and Move Down arrow buttons on the toolbar.

The order of the constraint group at the top level of the browser tree is not significant, so the arrow buttons are inactivated when a top-level constraint is selected.

To change the precedence of an applied constraint group or process rule:

  1. Select the constraint group or process rule you want to move.
  2. Do one of the following:
    • Hold down the left mouse button to drag the constraint group to its new location. This method lets you move the selected constraint group or process rule more than one position at a time.
    • Right-click the constraint group or process rule and choose Move Up to increase or Move Down to decrease the precedence. This moves the selected object up or down the list one position at a time.
      These functions are not available for objects at the top level of the browser tree comprising the Constraint Groups.
    • Click the Move Up or Move Down button on the Process Rule Editor toolbar. This moves the selected object up or down the list one position at a time.
    The browser pane updates to show the constraint group or process rule at its new location.

Virtuoso Generated Constraint Groups

Virtuoso ships with a number of predefined constraint groups, which you can generate and apply to selected objects or constraints in your design.

These constraint groups are generated with a predefined set of rules set to values that are based on the available technology information. A generated constraint group is stored in the design when you apply it to a selected object or constraint in that design. The constraint group can also be applied to other objects and constraints. This lets you quickly generate and reuse constraints groups without having to manually enter the long list of common process rules. Furthermore, this allows the users to create their own Constraint Groups and modify them, as required, in less time.You can generate a predefined constraint group from the Constraint Manager parameters pane. To do this, select the object or constraint to be constrained, generate the type of constraint group you need, and then add, modify, or remove the process rules, as required.

For example, the picture below shows the constraint groups you can generate for a Shielding constraint – Parallel, Tandem, and Coaxial.

The label Generate at the end of each constraint group name indicates that this is a predefined constraint group that has not yet been generated for the current design. When you choose a constraint group from the Shielding drop-down list box, that group is generated with its default rules in the Process Rule Editor browser pane. This causes the Generate entry to be removed from the list box and is replaced by a Design entry of the same name. This indicates that the constraint group has been generated and stored in the design.

The table below lists the predefined constraint groups you can generate for each constraint type.

Constraint Type Parameter Name Constraint Group Contents

Diff Pair

Within Group

2x Spacing thru 10x Spacing

Varying multiples of the minimum spacing defined for each layer in the reference technology file.

Group to Outside Group

2x Spacing thru 10x Spacing

Varying multiples of the minimum spacing defined for each layer in the reference technology file.

Matched Length

Group to Outside Group

2x Spacing thru 10x Spacing

Varying multiples of the minimum spacing defined for each layer in the reference technology file.

Bus Net

Within Group

2x Spacing thru 10x Spacing

Varying multiples of the minimum spacing defined for each layer in the reference technology file.

Group to Outside Group

2x Spacing thru 10x Spacing

Varying multiples of the minimum spacing defined for each layer in the reference technology file.

Process Rule Override

Default

2x Width thru 10x Width

Varying multiples of the minimum width specified for each layer in the reference technology file.

Input Taper

1UU Taper Halo

Taper halo set to 1u. Allowed layers are the same as those defined in the reference technology file plus all polysilicon materials.

Output Taper

1UU Taper Halo

Taper halo set to 1u. Allowed layers are the same as those defined in the reference technology file plus all polysilicon materials.

Shielding

Shielding

Parallel

minWidth (shieldWidth) and minSpacing (shieldSpacing) for all the layers defined in the reference technology file. Width and spacings taken from the reference technology file.

Tandem

Tandem Layer Above specifies the layer above the given signal wire layer to use as a shielding (Layer#1= signal Layer#2 = Shielding)

Tandem Width specifies the width for the layer in the shielding constraint.

Coaxial

Parallel rules created as above, tandem rules created as above but wider to cover both the signal and parallel shields.

Symmetry

Group to Outside Group

2x Spacing thru 10x Spacing

Varying multiples of the minimum spacing defined for each layer in the reference technology file.

Net Class

Within Group

2x Spacing thru 10x Spacing

Varying multiples of the minimum spacing defined for each layer in the reference technology file.

Group to Outside Group

2x Spacing thru 10x Spacing

Varying multiples of the minimum spacing defined for each layer in the reference technology file.

Applying a Virtuoso Generated Constraint Group

You have a design which you want to route with a minimum width that is double the width defined in the technology files. You need to create and apply a constraint group that contains process rules re-specifying the minimum width for all the valid routing layers in your design.

You can either create this constraint group manually and add and set the value for each rule individually, or you can have Virtuoso generate a constraint group containing the rules you need. To do this,

  1. On the Constraint Manager toolbar, click the Process Rule Editor button.
    The Process Rule Editor Graphical User Interface is displayed.
  2. From the Navigator assistant, select an object in the design.
  3. In the Constraint Manager assistant, create a Process Rule Override constraint for that object.
  4. Pull down the list next to the Default parameter and choose the 2x Width generated constraint group.
    The 2x Width constraint group contains rules that redefine the minimum width for each routing layer to be double the value defined in the technology files.

The predefined constraint group is added to the Design scope of the Process Rule Editor.

You can edit the constraint group directly or use the copy and paste functions to make the predefined constraint group more specific for your design.

For more information, see

If you now check the Default parameter drop-down list box in the Constraint Manager, you will see that the Generate entry has changed to the corresponding Design entry. This indicates the constraint group has been generated and added to the Design library. You can add this constraint group to any net in the Design or Object scope other than net102 in the example.

Applying an Existing Constraint Group to a Selected Object

In addition to generating a new constraint group for an object, you can reapply an existing constraint group to another object. The parameters pane in the Constraint Manager assistant allows you this feature.

Assume that you have nets in your design.You want to route these nets using double-cut vias and with a minimum width larger than that defined in the technology files. To do this,

  1. On the Constraint Manager toolbar, click the Process Rule Editor button ( ).
    The Process Rule Editor Graphical User Interface is displayed.
  2. Create a constraint group containing the individual constraints you need.
    1. Choose Design in the Process Rules on section.
    2. Create a constraint group to contain the process rules you require. See Creating a Constraint Group.
    3. Add the process rules you require. See Creating a New Process Rule.

    You have created a constraint group definition such as the 2xDoubleCut constraint group shown below, which specifies the list of valid layers, double cuts for each via and a larger width than the minimum specified in the technology file.
    You could generate a constraint group like the one above more quickly by using one of the Virtuoso generated constraint groups as a starting point and adding the specific rules you need. For example, you could start with the 2xWidth constraint group and then edit the generated group to limit the layers and create double cuts for all the vias. For more information, see Applying a Virtuoso Generated Constraint Group.
  3. From the Navigator assistant, select the first net to which you want to apply this constraint group.
  4. In the Constraint Manager assistant, create a Process Rule Override constraint for the selected net.
  5. Pull down the list next to the Default parameter and choose the 2xDoubleCut constraint group you created previously.
  6. Repeat steps 3 through 5 for each net to which you want to apply these constraints.
    This lets you apply the same process rule overrides to different objects without having to re-enter the same process rules manually every time.
The changes you make in the Process Rule Editor can affect the value shown in the Default field in the Constraint Manager.

For example, assume the Default field in the Constraint Manager shows Empty. You open the Process Rule Editor and apply the 2xDoubleCut constraint group. The Default field in the Constraint Manager now updates to show 2xDoubleCut (Design).

Removing a Constraint Group or Process Rule

You can remove a constraint group or an individual process rule from the Process Rule Editor to prevent it from being applied to the current design or object. The behavior is different depending on what you are removing.

If the selected object is:

To remove a constraint group or process rule from the browser pane:

  1. Select the constraint group or process rule you want to remove.
  2. Do one of the following:
    • Click the right mouse button and choose Remove.
    • Click the Remove Selected button in the toolbar.

Saving Changes and Closing the Process Rule Editor

To save the changes you have made at any time:

To close the Process Rule Editor:

Related Topics

For a list of process rules supported by the Process Rule Editor, see

For more information on the Process Rule Editor graphical user interface, see


Return to top
 ⠀
X