Combining Constraints in a Constraint Group
Constraint groups use an operator to determine how the constraints in the group are applied. There are three constraint group operators. By default, constraints in a constraint group are applied based on precedence.
-
'precedence(default): Specifies that constraints or member constraint groups are evaluated based on the order in which they are listed in a constraint group. For each constraint type, the first hard constraint found in a constraint group must be met. If the first hard constraint cannot be met, no other constraint of that type in the constraint group is considered.
If a soft constraint of a given type is found, it is enforced, if possible. Otherwise, the next soft constraint in the group is evaluated.
Only one constraint of a particular type in the group applies, and the first hard or soft constraint that is met satisfies the constraint group evaluation. -
'and: Specifies that all constraints in the constraint group must be met. All applicable constraints are checked. If a violation is found, the remaining applicable constraints are not checked.
A constraint is applicable for a given set of geometry if the parameters associated with the constraint are met. For example, the constraint below is applicable only between two shapes if at least one of those shapes has an area of less than 0.03 microns.spacings( ( minSpacing "Metal2" 'area 0.03 0.2 ) ) ;spacings
-
'or: Specifies that only one constraint in the constraint group must be satisfied, that is, of all applicable constraints, at least one should be met. A violation is reported if all applicable constraints are not met.
Limited support is available for the'oroperator in Design Rule Driven (DRD) editing, where it is used mainly to combine constraints of type extension.
Determining Constraint Group Precedence
A technology database can contain multiple constraint groups that define the same constraints. An application searches the constraint groups it recognizes in the order of precedence it has set and applies the first hard constraint it finds. If the application searches all of the constraint groups without finding a hard constraint, it applies the first soft constraint that it finds.
Constraint groups are applied in the following order of precedence:
- The constraint group being referenced by a command that is currently active in the design window.
- A constraint group recognized as the constraint group of first precedence by an application. Refer to your application documentation to determine which constraint groups the application recognizes and the precedence it applies to them.
-
The
foundryconstraint group. All applications recognize thefoundryconstraint group.
Managing Member Constraint Groups
You can establish a constraint group, and then specify it as a member of another constraint group. When multiple member constraint groups are specified, their order of precedence is from left to right, that is, the first has the highest precedence and the last the lowest.
Example
constraintGroups ( "protrusionGroup" nil nil 'and spacings(
( minProtrusionNumCut "cut1"
'distance 0.50 'length 2.0 'width 1.0
'distanceWithin 1.2 2
)
( minProtrusionNumCut "cut1"
'distance 0.75 'length 3.0 'width 1.5
'distanceWithin 1.2 3
)
) ;spacings
) ;protrusionGroup
( "foundry" nil
memberConstraintGroups("protrusionGroup")
) ;foundry
) ;constraintGroups
Return to top