Defining Design Requirements Using the Constraint Manager

 

Parent page: Managing Design Changes between the Schematic & PCB

Do I have the Constraint Manager?

  • The Constraint Manager is available in a PCB design project only if the Constraint Manager functionality was available at the moment of creating that project (provided you have a sufficient Altium Designer Subscription level and the System.ConstraintManager option enabled in the Advanced Settings dialog). Note that:
    • If the Constraint Manager is available for the PCB project, the PCB Rule and Constraints Editor dialog (Design » Rules) is not available in the PCB editor.
    • If the Constraint Manager is not available for the PCB project, only the previous approaches to define design constraints (use of design directives and the PCB Rule and Constraints Editor dialog) can be used.
  • To quickly check which approach to defining design constraints is used in the current PCB project, check if the Design » Constraint Manager command is available in the main menus of the Schematic or PCB editor when a schematic/PCB document of the project is opened. If the command is there, the Constraint Manager is used for this project. Otherwise, the PCB Rule and Constraints Editor dialog (Design » Rules in the PCB editor) is used for this project.

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.

An example of creating xSignals using the topology graph

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.

Is the Constraint Manager command not in the Design menu? Check if you have the Constraint Manager available – learn more.

Access the Constraint Manager from the schematic editor
Access the Constraint Manager from the schematic editor

Access the Constraint Manager from the PCB editor
Access the Constraint Manager from the PCB editor

Note that the Constraint Manager is available in a PCB design project only if the Constraint Manager functionality was available at the moment of creating that project, and the PCB Rule and Constraints Editor dialog is not available in the PCB editor in this case. Otherwise, the previous approaches to define design constraints (use of design directives and the PCB Rule and Constraints Editor dialog) can only be used.

Constraint Types

Using the tabs at the top left of the Constraint Manager, you can switch between modes to define the different constraint types.

Javascript ID: CM_Tabs_AD23_11

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.

When the Constraint Manager is accessed from the PCB editor, an additional All Rules tab will be available. This is a rule-oriented view of the design constraints, a list of all rules in the PCB design where you can create custom rules based on queries – learn more.
  • Use the Units option in the Properties panel (or the corresponding options in the Tools » Measurement Units sub-menu in the main menus; shortcut: Ctrl+Q) to switch between the measurement units (mm or mils) in which the values are shown in the Constraint Manager grid area.
  • Use the Show Default Values option in the Properties panel (or the corresponding option in the View main menu or the View Options sub-menu of the grid area's right-click menu) to toggle visibility of default values (e.g., values inherited from a net class or differential pair) in the Constraint Manager. When shown, these default values are displayed in the Constraint Manager grid area in grey. Custom values are displayed in the Constraint Manager grid area in white.
  • When on the Physical or Electrical tab, use the Show Only Object Custom Values option in the Properties panel (or the corresponding option in the View main menu or the View Options sub-menu of the grid area's right-click menu) to toggle visibility of object entries with the default values (effectively, to filter out entries with default values when the option is enabled).
  • Copying and pasting values from/to cells are supported – use the commands of the Copy/Paste Values sub-menu from the context menu or the Ctrl+C and Ctrl+V shortcuts.
  • A save action must be performed in the Constraint Manager before changes are reflected in the design. Use the File » Save (when the Constraint Manager is accessed from the schematic) or File » Save to PCB (when the Constraint Manager is accessed from the PCB) command from the main menus of the Constraint Manager or the Ctrl+S shortcut to do this.
  • If there are any changes in the schematic design or in the PCB layer stack (changes affected layers and/or impedance profiles), click the Refresh button at the top of the Constraint Manager (accessed from the respective editor) to reflect these changes in the Constraint Manager. If you have changes in the Constraint Manager not saved yet, a dialog that warns you that these changes will be lost appears for confirmation.
  • Note that constraint import/export is not currently supported.

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.

Javascript ID: CM_Clearances_AD23_11

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., 5/6) in a cell in the clearance matrix at the top. The first value will be applied to the inner layers, and the second value will be applied to the outer layers.

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.

Javascript ID: CM_PhysicalElectrical_AD23_11

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.

The xNets Creation region of the Options tab of the Project Options dialog
The xNets Creation region of the Options tab of the Project Options dialog

An example path that can be defined as an xNet in the Constraint Manager (according to the xNet creation settings shown above)
An example path that can be defined as an xNet in the Constraint Manager (according to the xNet creation settings shown above)

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.

An example of xNet for which xSignals should be created.
An example of xNet for which xSignals should be created.

  • 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.

    The topology graph functionality is available when the ConstraintManager.TopologyGraphAvailable option is enabled in the Advanced Settings dialog.

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.

An example of creating xSignals using the table

An example of creating xSignals using the topology graph

  • To quickly propagate defined custom topology to xNets/nets and create multiple xSignals of a similar structure, you can now create a Constraint Set for an xNet/net with a custom topology and then apply this Constraint Set to other xNets/nets.
  • Associated xSignals are automatically removed when changing from the Custom topology to one of the predefined topologies for the selected net/xNet.

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.

Javascript ID: CM_xSignals_PCB_AD23_11

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+ClickShift+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.

Default system classes (All Nets, All Differential Pairs, All xNets) cannot be edited, renamed, or deleted. In the Object Class Explorer dialog, these classes are distinguished by their names being enclosed in <>.

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.

Custom rules take precedence over the rules defined on other tabs of the Constraint Manager (and listed under the Basic Rules lists on the All Rules tab). Priorities of custom rules can be redefined by typing the required priorities (1 is the highest priority) into the Priority column.

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.

Javascript ID: CM_CrossProbe_AD23_11

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.

When transferring changes from the schematic to the PCB, note that only those rules, net classes, differential pairs and differential pair classes defined in the Constraint Manager are transferred. The following will not be detected and transferred:

  • Rules defined using the Parameter Set and Differential Pair directives or the Properties panel for the schematic document options.
  • Automatically generated net classes (according to the settings on the Class Generation tab of the Project Options dialog).
  • Net and differential pair classes defined using Parameter Set and Differential Pair directives.
  • Differential pairs defined using Differential Pair directives.

When synchronizing schematics and PCB, you will be alerted in the Engineering Change Order dialog if changes made in the Constraint Manager have not been saved. The warning will include on which side the changes have not been saved – schematics, PCB, or both.

The Engineering Change Order dialog will warn you if there are unsaved changes in the Constraint Manager. In this example, both schematics and PCB include unsaved changes in the Constraint Manager.
The Engineering Change Order dialog will warn you if there are unsaved changes in the Constraint Manager. In this example, both schematics and PCB include unsaved changes in the Constraint Manager.

 

Refer to the Keeping the Schematics & PCB Synchronized page to learn more.
If you find an issue, select the text/image and pressCtrl + Enterto send us your feedback.
Note

The features available depend on your Altium product access level. If you don’t see a discussed feature in your software, contact Altium Sales to find out more.

Content