Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

The BUILD_MULTI_RPD MACRO is used to create a collection of RELATIVE_PROPAGATION_DELAY (RPD) constraints for a group of nets that must be routed as a MATCH_GROUP with a tolerance to a reference net.

This makes efficient work of creating RPDS for the multiple data busses and their respective strobes in a Modern DDR memory interface.

Refer to the Relative 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)

The major difference between the BUILD_MULTI_RPD and the BUILD_SINGLE_RPD command is that the TARGET and MEMBERS are Specified using bus indices with an extra increment/decrement operator.

Refer to the  BUILD_SINGLE_RPD MACRO for more information on that MACRO.

Table of Contents

Page Tree
root@self

NAME 

The NAME Attribute  provides a unique name for each group of nets that needs to be match routed.

Syntax:

NAME=>RPD_NAME

Example:

NAME=>MP_C1_CSRP_RING

This RPDConstraint will be named MP_C1_CSRP_RING


SCOPE

The SCOPE Attribute defines the SCOPE of the RPD constraint

Syntax:

SCOPE=>SCOPE_NAME

Valid Options:

  1. GLOBAL
  2. LOCAL
  3. BUS
  4. CLASS

Scoping in the Allegro Constraint System is a complicated concept when handling hierarchy,  but because dal constraints builds the RPD from the netlist using absolute netNames that are already resolved from the hierarchical (or flat) design the GLOBAL scope should always work.

When LOOP COMMANDS are used to create MULTIPLE RPD Constraints, the loop variable substitution  maintains global netNames.


Example:

SCOPE=>GLOBAL


TYPE

The TYPE Attribute defines the RELATIVE_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:

TYPE=>D:R

The RPD Group will constraint the path from the longest Driver to  Receiver PinPair for the Net.


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

Example:

UNITS=>PS

Use PS for tolerance and offsets


TOLERANCE

The TOLERANCE Attribute sets the tolerance for the RPD constraint

Syntax:

TOLERANCE=>TOL_SPEC

Examples:

  • TOLERANCE=>10

All nets in the RPD must be routed within +/- 10ps of the selected TARGET Net

TARGET

the TARGET Attribute specifies which net to use to measure all the other nets in the RPD against. 

Syntax:

TARGET=>TARGET_NET_NAME[MSB:LSB:DEC] 

or 

TARGET=>TARGET_NET_NAME[LSB:MSB:INC]

Example:

TARGET=>DDR2_DQS_[3:0:1]

There will be 4 RPDs created, one for each operation it takes to decrement from 3 down to 0 by 1

The Targets will be DDR2_DQS_3, DDR2_DQS_2,DDR2_DQS_1 and DDR2_DQS_0


See the Target Discussion on the BUILD_SINGLE_RPD MACRO page


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[MSB:LSB:DEC]

or

MEMBERS=>NET_MATCH_1[LSB:MSB:INC]

Example:

MEMBERS=>DDR2_D[31:0:8]

there will be 4 RPDS created one for each operation it takes to decrement from 31 down to 8 by 8...

The MEMBER LISTS for each RPD will be DDR2_D[31:24], DDR2_D[23:16], DDR2_D[15:8] and DDR2_D[7:0] 

Note that the number of expanded MEMBER NET_MATCHES (4) must match the Number of expanded TARGETS(4)


To see more about how the  MEMBERS NET_MATCHES work, see the BUILD_SINGLE_RPD MACRO page


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

MEMBERS and NOT_MATCHING 

To see more about how the  MEMBERS and NOT_MATCHING Attributes work together to efficiently define a list of target nets, see the BUILD_SINGLE_RPD MACRO page