The Constraint Rule File (CRF)
The Constraint Rules File (CRF) is a Spreadsheet created by the Design Engineer(s) and is used to specify complex Physical and Electrical Design Constraints for the Allegro PCB Editor.
Constraints are specified as high level Macros and use very powerful net-name matching rules to choose the nets that will get
The CRF is an input to the dal constraint tool which interprets the high level Macros and adds Constraints to the design working outside of the Constraint Manager Interface
Building the CRF
Unfortunately, design constraints cannot be inferred or created out of thin air.
Constraining a design is a detailed, interactive process which must be owned by the board designer and or the signal integrity engineer.
Each interface can require multiple sets of rules that the designer must be aware of.
The CRF manages the constraints and documents them at the same time, and the dal constraints tool provides automation in many area to streamline the creation process.
Constraints defined in the CRF are designed to be portable between designs that use similar net-naming conventions.
Use 'dal browse' to help indentify targets of CRF Macros.
The CRF uses powerful regular expression pattern matches to identify targets of the individual Command/Macros
The daltools 'dal browse' utility is an interactive tool which allows the user to view the nets in the design interactively using the same regular expressions. It provides a great front end to help select the targets of the CRF Macros.
CRF Structure
The CRF is a regular Excel Spreadsheet that contains a list of COMMANDS/MACROS which the dal constraint tool parses to create the low level Constraint properties for the Allegro Constraint System.
Each COMMAND/MACRO It is organized in rows and columns and each column has specific meaning
The dal constraint tool reads the CRF from top to bottom.
Each time it encounters a valid COMMAND/MACRO in the COMMAND/MACRO column, it starts building all the information required for that MACRO by reading and processing the following rows until it reaches an new COMMAND/MACRO or the end of the file.
CRF Column Structure
Row 13 in the sample above shows the column headers which include
- COMMENT COLUMN
- COMMAND /MACRO COLUMN
- MACRO/ATTRIBUTE NAME COLUMN
- ATTRIBUTE/PARAMETER VALUE COLUMN(S)
- Row Comments
Comments and the Comment Column
The hashtag '#' character is used to mark any following information as a comment.
It can appear anywhere in a row and anything that follows the first '#' character is ignored when dal constraints reads that row
The first Column (COMMENT_COLUMN) of the CRF is reserved as a special placeholder which can be used to Insert or delete a comment '#' character.
It is very easy to copy the '#' into multiple rows to comment out larger sections and its easy to remove the '#' from a large selection of rows as well.
Without this column, the user would need to edit each cell and insert the comment character before the first.
If a comment character appears in the first column, dal constraints ignores the whole row.
If not, it processes each column in the row and can still find comment characters at other positions.
(Note that ROW 13 in the sample above with the Column Header Names is actually a comment since it starts with the '#')
COMMAND/MACRO column
The 2nd Column is reserved for the COMMAND or MACRO name.
The dal constraint tool recognizes the following COMMANDS/MACROS
- SET_CONSTRAINT_UNITS
- BUILD_STACKUP_FROM_FILE
- AUTO_BUILD_DIFF_PAIRS
- BUILD_PCS
- BUILD_ECS
- BUILD_SCS
- AUTO_IDENTIFY_PIN_DIR
- AUTO_ASSIGN_VOLTAGE
- AUTO_ASSIGN_VOLTAGE_FEEDTHRUS
- ASSIGN_PIN_DELAYS
- BUILD_SINGLE_RPD
- CREATE_VAR
- BUILD_MULTI_RPD
- PIN_PAIR_LOCATORS
- BUILD_MIN_MAX_PROP_DELAY
- BUILD_TOTAL_LENGTH
Many of the COMMAND/MACROS require a Unique name
For instance the BUILD_PCS and BUILD_PCS macros needs a NAME to use for the PCS/ECS they will be creating
The NAME Attribute and its Value are included in the same row as the MACRO/COMMAND like in this example
The name of the ECS created will be DPAIR_6.5G
Command Attribute/Parameter Names
The 3rd Column is reserved for Command Attributes or Parameter Names
Each MACRO has a different set of available Attributes/Parameters
the Attribute NAME is placed in the 3rd column with the '=>' separator to help dal constraints recognize it.
An Attribute NAME can be repeated in multiple rows and dal constraint will append the values to create longer lists of values as needed
This is very useful for items like the MEMBERS Attribute which can become quite long as lists of NetName matches are added to the Target list of an ECS or PCS.
Command Attribute/Parameter Values
The 4th and following Columns are reserved for Attribute/Parameter Values
The Attribute Values are placed in their own column
Row Comments
A optional comment can be added after the last Attribute/Parameter Value Column in each row, it start with the '#' comment character.
This column and any column after this row will be ignored
Constraint Macros
Constraints are defined using powerful macros
A macro can create a design rule or tell the dal constraints to perform an automated task
Macros use advanced bus-aware pattern matches to identify constraint targets
Constraint definitions can easily be ported between related designs
Nested Loops and Replication constructs provide maximum efficiency/accuracy
Use variables to set tolerances… change the value and all constraints will update
Consistent schematic naming conventions make constraint definition easier
Use comment ‘#’ to temporarily remove constraint macros
Use worksheets to define rational values tolerances instead of over constraining
Detailed Macro Information
Use the following links to find more detail about each MACRO