Defining Design Requirements Using the Constraint Manager in Altium Designer
Parent page: Managing Design Changes between the Schematic & PCB
The Constraint Manager is a document-based, spreadsheet-like user interface that allows viewing, creating, and managing the design constraints used for your PCB designs.
Some of the advantages of using the Constraint Manager are:
- Availability at the project level that makes the access to the design constraint management similar from both schematic capture and PCB design domains.
- A shift from query-based rule scoping to an applied object type matching simplifies constraint rule creation.
- Use of constraint sets to expedite the process of defining the constraints.
- Rule priority is automatic based on the natural hierarchy of design objects.
- Using a document-based presentation interface rather than a dialog means that the schematic and PCB editor and its associated functions remain active and accessible.
Accessing the Constraint Manager
The Constraint Manager is accessed by selecting the Design » Constraint Manager command from the main menus of the schematic or PCB editor.
Constraint Types
Using the tabs at the top left of the Constraint Manager, you can switch between modes to define the different constraint types.
Clearances – a matrix that allows defining electrical clearances between classes of nets in the design. Physical – a list of nets, differential pairs, xNets and their classes where you can define physical constraints for the design: widths of conductors, the gap in differential pairs, etc. When the Constraint Manager is accessed from the PCB, rooms currently defined in the PCB document are listed here, and you can define physical constraints for the rooms. Electrical – a list of nets, xNets, xSignals and their classes, where you can define electrical constraints for the design: topology, impedance, etc. xSignals are also listed here on a dedicated sub-tab. |
Working with the Clearance Matrix
By default, the clearance matrix on the Clearances tab of the Constraint Manager includes a single All-to-All entry with which you can define a default clearance value between any nets in the design. Use the Add control at the top left of the matrix to show a pop-up with a list of currently defined net classes. Select a net class and click the Add button. A row and a column for the selected net class will be added to the matrix.
Click a cell where the row and column of two net classes intersect to select it and show the detailed clearance settings at the lower part of the Constraint Manager, where you can define specific clearance values between different objects and on different layers.
Click a cell in the clearance matrix to access settings for the corresponding class pair that is denoted in the lower part. Alternatively, double-click a cell in the matrix to directly enter the required value that will be applied to all object pairings and all layers for this net class pair. Enter the required clearance values for specific object pairs in the table. Note that the cell in the clearance matrix shows the range of minimum and maximum values defined in the table. Note that if you change a track-to-primitive value, that same clearance will be applied to text-to-primitive. Using the tabs below the table, you can also define clearance values by layers. Use the Add control to add a tab for a specific layer. Note that when the Constraint Manager is accessed from the schematic editor, only the Top and Bottom layers can be added as specific layers. When the Constraint Manager is accessed from the PCB editor, any signal layer currently present in the PCB design can be added. To quickly define values for the inner and outer layers, you can also enter two values delimited by a slash (e.g., |
Working with Physical and Electrical Constraints
When in the Physical or Electrical tab of the Constraint Manager, click a cell in the grid area to show the settings of the corresponding rule(s) at the lower part of the Constraint Manager, where you can define their constraint values.
The Constraint Manager defines the priorities of the rules on these tabs automatically: the priority is ordered from All (lowest) to object class to object (highest).
Defining Differential Pairs
Differential pairs are created from the Physical tab of the Constraint Manager. For the Constraint Manager can create differential pairs from nets, the nets to be paired must have a consistent naming scheme (i.e. they have a common root followed by a consistent positive/negative suffix, for example, TX0_P
and TX0_N
).
Right-click anywhere in the grid area and select the Differential Pairs » Create Differential Pairs From Nets command from the context menu to open the Create Differential Pairs From Nets dialog to define differential pair creation options. The filters at the top of the dialog enable you to quickly target these nets in terms of the net class to which they belong and the particular differentiating factor that has been used to distinguish the positive and negative nets in an intended pairing, for example, _P
and _N
. You can also define a prefix to be added to the differential pair objects created and determine to which differential pair class they will be added.
For each differential pair object, the dialog lists its constituent positive and negative nets. By default, all prospective differential pair objects are selected for creation, and individual ones can be excluded by clearing the associated Create check box.
When all options are set as required, click the Execute button – the differential pair objects will be created and shown back on the Physical tab of the Constraint Manager, with constituent nets listed under their entries.
To remove a differential pair, right-click its entry and select the Differential Pairs » Remove Differential Pair command from the context menu.
Defining xNets
xNets are user-defined signal paths derived from the schematic design. A path from a source component to a destination component passing through a series component can be defined as an xNet.
Comma-separated lists of prefixes for designators of components that can be used as source or destination components (Sources/Destinations) and serial components (Discretes) can be defined in the xNets Creation region of the Options tab of the Project Options dialog.
On the Physical or Electrical tab of the Constraint Manager (when it is accessed from the schematic editor), right-click a net to be included in a new xNet and select the xNets » Create xNets From Selected Nets command from the context menu. A new xNet will be created and shown on the Physical or Electrical tabs of the Constraint Manager, with constituent nets listed under its entry.
To remove an xNet, right-click its entry and select the xNets » Remove xNet command from the context menu.
Defining xSignals
From the Constraint Manager, you can also define xSignals – user-defined signal paths between two nodes in the PCB. When on the Electrical tab of the Constraint Manager accessed from the schematic side, select the cell in the Topology column for a net or xNet, choose Custom from the drop-down in the lower part of the Constraint Manager, and then use the provided controls to define the custom topology and select corresponding xSignals.
An example of defining xSignals for an xNet shown below is described and demonstrated thereafter.
- By default, a custom topology is defined using the table in the lower part of the Constraint Manager. Add the required pins and serial components using the Pin column, select their roles (Source, Destination, or Discrete) using the Role column, and define the desired order using the Order column.
-
Alternatively, you can use the topology graph. Use the right-click menu in the graph area to add and remove nodes and change their type from Source to Destination and back and Click, Hold&Drag the nodes to define the tolopogy.
Corresponding xSignals (named using the <SourceNetName>_<SourcePinDesignator>_<DestinationPinDesignator>
scheme) will appear at the right of the grid area. Select the xSignals to be created using the checkboxes. Selected xSignals will appear on the xSignals sub-tab of the Electrical tab.
For a created xSignal class (refer to the Defining Classes section below for details), the Tolerance constraint can be defined, and an xSignal within this class can be selected as Matching Length. When the Constraint Manager is accessed from the PCB side, the Actual Value and Margin columns are also available.
In the PCB document, the defined xSignals can be browsed from the PCB panel in its xSignals mode. Also, corresponding From-Tos will be created and can be browsed from the PCB panel in its From-To Editor mode.
In the PCB document, the generated xSignals can be browsed from the PCB panel in its xSignals mode. From-Tos will also be generated, and they can be browsed from the PCB panel in its From-To Editor mode. |
Defining Classes
The Constraint Manager allows you to define classes of nets, differential pairs, xNets, and xSignals.
-
To add a new class of objects listed on the Physical or Electrical tab of the Constraint Manager, select multiple object entries using the Ctrl+Click, Shift+Click or Click, Hold&Drag technique, then right-click the selection and choose the Add Selected to Class command from the context menu to open the Add Class dialog. Define the class Name (which must be unique and not empty) and the set of class members. The objects selected prior to accessing the dialog will be already in the Member list. If required, further configure the set of class members by moving object entries between Non-Members and Member lists using the arrow buttons.
- Alternatively, right-click in the grid area and select the Classes » Add Class command on the Clearances or Electrical tab or a command from the (to add a net class) or the Classes » Add Class sub-menu to access the Add Class dialog. Initially, the Member lists will be empty when accessing the dialog this way.
- To edit an existing class, right-click its entry and select the Classes » Edit Class command from the context menu to access the Edit Class dialog, where you can edit the name and members of the class.
- To remove an existing class, right-click its entry and select the Classes » Remove Class command from the context menu.
Alternatively, you can use the Object Class Explorer dialog to add, edit and remove classes. Right-click in the grid area and select the Classes » Class Explorer command from the context menu to open the dialog.
The folder-tree pane on the left side of the dialog lists supported object class types and existing object classes of each type.
- Click on the root Object Classes folder to access a summary listing in the main editing region of the dialog of all specific classes that have been defined across all object class types.
- Click on a child object class type folder to access a summary listing of all specific classes that have been defined for that type.
- Click on the entry for a specific class (or double-click on its entry in a summary list) to access controls for managing the object membership of that class.
To add a new user-defined class from the Object Class Explorer dialog, right-click within the category of class you want to create and choose Add Class from the context menu. To rename or delete a user-defined class, right-click its name and choose Rename Class or Delete Class, respectively.
Constraint Sets
To expedite the process of defining constraints for objects, the Constraint Manager provides the ability to save a set of constraints as a Constraint Set and then apply this Constraint Set to objects.
-
To save the set of constraints currently defined for an object as a Constraint Set, right-click a cell for this object and select the Save as Constraint Set command from the context menu. In the New Constraint Set pop-up, enter the desired name of the Constraint Set and click Create.
Note that the name of a Constraint Set must be unique and not empty; otherwise, the Create button will be greyed out.
-
A newly created Constraint Set will be applied to the object from which the Constraint Set has been created. To apply a Constraint Set to another object, right-click its cell and select the required Constraint Set from the Select Constraint Set sub-menu of the context menu. The cells to which a Constraint Set is applied are distinguished with a symbol in their top-left corner (e.g., ), and, on the Physical or Electrical tabs, the name of the applied Constraint Set will be reflected in the Constraint Set column.
-
To edit the values of an existing Constraint Set, select an object to which this Constraint Set is applied and click the button. Change the constraint values as required and then click the Save button in the pop-up that appears to save the changes. The changes will be applied to all objects to which that Constraint Set is currently selected.
-
Currently defined Constraint Sets are listed in the Constraint Sets region of the Properties panel. Click the entry of a Constraint Set to show its constraint values. A Constraint Set selected in the Properties panel can be removed by clicking the button at the bottom of the Constraint Sets region. Objects to which the removed Constraint Set has been selected will keep the constraint values applied by this Constraint Set before its removal.
Working with All Rules on the PCB Side
When the Constraint Manager is accessed from the PCB editor, the All Rules tab is available, where a list of all rules in the PCB design is present. From here, you can create custom (or advanced) rules that feature more complex query expressions in their matching scope.
Creating a new custom rule in the Constraint Manager is similar to constructing a rule in the PCB Rules and Constraints Editor dialog. Select Add Custom Rule from the right-click context menu (or use the Add Custom Rule button at the lower part of the Constraint Manager when no rule is selected in the grid area), then enter a query-based matching scope and the constraint parameters in the column grid or the lower graphical representation.
To delete the currently selected custom rule, right-click it and select Remove Custom Rule.
To simplify the repeated process of creating custom type rules, the Constraints Manager allows you to store query-based object matching scopes in the Scopes Library. The library is managed using the Scopes Library dialog accessed by clicking the Edit Library button in the Scopes Library region of the Properties panel. The library is presented in the Properties panel, where custom scopes can be imported and exported as an XML file, which can then be used to populate the Scopes Library of another Altium Designer installation.
To export a scope to or import one from the library, use the commands of the menu of the button next to the Object Match / Second Object Match field in the lower part of the Constraint Manager. Once a library-based scope has been applied to a rule, the name of the scope will be shown in the Object Match / Second Object Match column in the grid area and above the Object Match / Second Object Match field. You can use the field's menu to revert the scope to its query-based format (Detach Scope).
Cross Probing
The Constraint Manager includes a cross-probe feature that will show the associated objects by visually highlighting them in the corresponding document. To cross probe to any object, right-click on its entry, then choose the Cross Probe option from the context menu or select Cross Probe from a custom rule's menu.
Set the Cross Probe View Settings in the Properties panel to configure cross probing settings.
Use the schematic/PCB editor Clear Filter option to reset cross probe highlighting.
Transferring Constraints between Schematic and PCB
Changes applied in the Constraint Manager are transferred between the schematic and PCB designs using the Engineering Change Order (ECO) process. Select a command to update the constraints on the other side:
- To transfer changes from the schematic to the PCB – select the Design » Update PCB Document <PCBDocumentName> command from the main menus of the schematic editor.
- To transfer changes from the PCB to the schematic – select the Design » Update Schematics in <PCBProjectName> command from the main menus of the PCB editor.
Use the subsequential Engineering Change Order dialog to explore, validate and execute the changes.