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:

     

  1. AD:AR (Prop Delays will be measured from All Drivers to  All Recievers)
  2. L:S This will enforce the prop delay only on the longest PinPair on the target Net or XNET
  3. D:R Prop Delays will be measured from the Longest Driver to Reciever pinPair on the target Net or XNET
  4. 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:

  1. PS  (tolerances/offsets are provided in pico-seconds)
  2. NS  (tolerances/offsets are provided in nano-seconds)
  3. MILS
  4. IN
  5. 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.