The BUILD_ECS MACRO Creates a Named ELECTRICAL_CONSTRAINT_SET (ECS) which can be applied to matching NetNames
Electrical Constraint Sets
An Electrical Constraint Set (ECS) is use to constrain the Electrical attributes of Nets
BUILD_ECS can specify many different constraints to apply to a group of signals, and can also apply a PHYSICAL_CONSTRANT_SET (PCS) to the same group.
PARAMETERS that can be constrained include:
VIAS_MAX,VIAS_MATCH,MIN_PROP_DLY,MAX_PROP_DLY,MIN_TOTAL_ETCH,MAX_TOTAL_ETCH,
TOP_MAP_MODE,TOP_VERIFY_SCHEDULE,TOP_SCHEDULE_CONTROL,STUB_LENGTH,MAX_EXPOSED,MAX_PARALLEL,LAYER_SETS
BUILD_ECS
This Line tells dal constraints to create a new named ECS
syntax:
BUILD_ECS | NAME=> | NAME_FOR_ECS
TYPE
the TYPE=> Attribute tells dal constraints what type of ECS the user wants to create
Valid options are: DIFF_PAIR and SINGLE_ENDED
Syntax:
TYPE=>[DIFF_PAIR|SINGLE_ENDED]
The SINGLE_ENDED ECS allows the user to define
The DIFF_PAIR ECS can define the same parameters as the SINGLE_ENDED, but can also be is used to create Dynamic and Static Differential Pair Routing Rules.
These are very powerful constraints which Allegro PCB uses to control the STATIC and DYNAMIC skew between the diff_pair mate net as they travel from Source to Destination.
The ASSIGN_PCS=>Attribute assigns an existing PCS to any nets assigned to this ECS
The PCS may have been created using the BUILD_PCS MACRO or when dal constraints imported the stackup.
Syntax:
ASSIGN_PCS=>PCS_NAME
Example
ASSIGN_PCS=>90_OHM_DIFF
DIFF_PAIR ECS Parameters
The Dynamic Diff Pair constraints are used to track and flag the intra-pair skew from the signal source to its destination.
Differential pair routing only works well when the signal edges or transitions are closely aligned as they travel from one end to the other. As speeds increase, the edge times get smaller and smaller and the margin for error becomes greater. When a diff pair route turns a corner, the outside pair wire takes a longer path than the inside pair wire causing unwanted skew between the signals. If this skew is significant, the edge transitions start to get out of phase and the differential pair loses some of its magical properties. In this case the skew needs to be removed as quickly as it can be. This can be accomplished by making sure the next turn goes the opposite direction so that the inside wire is now the outside wire. Another method is to add a small 'bump' to the inside wire whose length match the extra length that the outside wire experienced. The bump should be added as close as possible to the corner turn so that the signal transitions travel the majority of the diff_pair length in match step.
The Cadence Allegro Constraint System provides a handful of diff_pair tolerance properties to enable tracking of the skew from the transmitter output to the receiver input.
The Properites are:
GATHER_CONTROL, MAX_UNCOUPLED, DPA_TOLERANCE, DPA_MAX_LEN, STATIC_PHASE and MAX_STUB_LEN
In the sample CRF worksheet a DIFF_PAIR_CALC_WORKSHEET page is provided to help calculate rational values for these parameters that are used to constrain the DIFF_PAIRS, based on the Bit Rate of the actual DiffPair. It is helpful to use a reference to the values calculated in the worksheet to set the value for the properties. If the users update the Calculation worksheet, then the Property values will automatically be updated.
MEMBERS
The MEMBERS=> Attribute tells dal constraints what nets to apply the new ECS to.
This is an optional attribute when you are creating a ECS that will be assigned from an ECS.
The syntax is MEMBERS=>net_match1,net_match2.... net_matchN
like
MEMBERS=>P48V,P48V_RTN
This tells dal constraints to assign this ECS to any net containing 'P48V' or 'P48V_RTN'
in this case the net_match is a simple text pattern
The MEMBERS net_matches are treated as regular expressions by dal constraints and are quite powerful.
To see more information on regular expression entry see Regular Expressions In CadEnhance Tools
NOT_MATCHING
the NOT_MATCHING=>Attribute is optional and works together with the MEMBERS attribute to fully define the set of target nets
the NOT_MATCHING is a comma seperated list of patterns that will be used to exclude nets from the set of nets that match the MEMBER patterns
Together the 2 attributes make very simple to define a large set of nets without having to create a very large list of specific matches