BUILD_MIN_MAX_PROP_DELAY MACRO
The BUILD_MIN_MAX_PROP_DELAY MACRO is used to create a PROPAGATION_DELAY constraint for a group of nets where you need to constrain the min and max length of the nets
Refer to the Propagation Delay Section in the Allegro ConstraintCore Documentation for more information
(this link discusses the location of the documentation: Cadence Allegro Constraint System Reference Information)
ECS
The ECS Attribute is optional and provides a unique name for the group of target nets you are constraining
Syntax:
ECS=>PD_NAME
Example:
ECS=>XB_MC1_6G
This PD Constraint will be named XB_MC1_6G_
PIN_PAIR
The PIN_PAIR Attribute defines the PROPAGATION_DELAY_PATH_TYPE
Syntax:
TYPE=>RPD_TYPE
Valid Options:
- AD:AR (Prop Delays will be measured from All Drivers to All Recievers)
- L:S This will enforce the prop delay only on the longest PinPair on the target Net or XNET
- D:R Prop Delays will be measured from the Longest Driver to Reciever pinPair on the target Net or XNET
- PIN_PAIR (this is implicit if the targets are pin-pairs (or do we need to set this to PIN_PAIR to tell dal_constraints to set the pin-pairs?)
Example:
PIN_PAIR=>AD:AR
The PROPAGATION_DELAY will be constrainted from All Drivers to All Receivers
(this may be difficult to debug on a multi-drop bus)
UNITS
The UNITS Attribute tells dal constraints what units should be used for the tolerance.
Syntax:
UNITS=>UNIT_TYPE
Valid Options:
- PS (tolerances/offsets are provided in pico-seconds)
- NS (tolerances/offsets are provided in nano-seconds)
- MILS
- IN
- MM
It is recommended to set this to one of the TIME options (PS or NS) since segments of each route may exist on different layers with different delay characteristics and the Allegro Constraint System can properly track the path delay from start to end.
Its important to note that if you are constraining a pinPair on a power net route you must use a length unit must since the constraint system can't figure out the propagation delay of a plane.
Its also valid to use length units to constrain a pin pair between a driver and series termination if you are just trying to keep that net short.
Example:
UNITS=>PS
Use PS for MIN/MAX Attributes
MIN
The MIN Attribute sets the minimum value for the PD constraint. It must be a positive number
Syntax:
MIN=>DLY_SPEC
Examples:
- MIN=>10
All nets targeted by this PD must be routed greater than or equal to 10 PS (since the UNITS is set to PS)
MAX
The MAX Attribute sets the maximum value for the PD constraint. It must be a positive number
Syntax:
MAX=>DLY_SPEC
Examples:
- MAX=>20
All nets targeted by this PD must be routed less than or equal to 20 PS (since the UNITS is set to PS)
MIN and MAX together
the MIN and MAX attributes work together.
In this example the target nets would need to be routed between 10 PS and 20 PS
To constrain a net to be short, you would set MIN=>0 and MAX=>MAX_LIMIT.
MEMBERS
The MEMBERS=> Attribute is a comma separated list of pattern matches used to identify which nets to include in the RPD.
dal constraints will allow multiple MEMBERS attributes so you can distribute the target nets across more than one row for easy reading and organization
Syntax:
MEMBERS=>NET_MATCH_1,NET_MATCH_2....,NET_MATCH_N
Example:
MEMBERS=>XB_MC1_6G
in this case the net_match (XB_MC1_6G) is a simple text pattern, which an appear anywhere in the netName. And a propagation Delay constraint will be added to any netName containing the XB_MC1_6G string.
The MEMBERS net_matches are really regular expressions by dal constraints and are quite powerful. For instance with simple modifications to the NET_MATCH we can specify where the pattern needs to occur in the netName (like at the beginning or end.)
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
Syntax:
NOT_MATCHING is a comma separated list of patterns that will be used to exclude nets from the set of nets that match the MEMBER patterns
Example:
NOT_MATCHING=>FRAME
Exclude any nets that Match the MEMBERS NET_MATCHES if those nets contain FRAME
MEMBERS and NOT_MATCHING
Together the MEMBERS and NOT_MATCHING attributes make it very efficient to target a large set of diverse nets without having to create a very long list of specific matches. You can create a very general set of matches with the MEMBERS attribute and then exclude certain pattern matches with the NOT_MATCHING patterns.