Edit PCB Rule

Now reading version 16.0. For the latest, read: Edit PCB Rule for version 21

An example of the Edit PCB Rule dialog, in this case for a Diff Pair Routing rule.

Summary

This dialog allows you to edit the properties of the selected design rule, including the name, scope, and constraints.

The controls offered by the dialog and its banner text  will vary depending on the type of design rule being edited.

Access

The dialog is accessed from within the PCB Editor in the following ways:

Options/Controls

  • Name - the current name of the rule. This can be changed as required.
  • Comment - this field displays any comment added for the rule, for example a meaningful description of what the rule is being used for.
  • Unique ID - the unique identifier for the rule. Every rule is itself a design object, and hence a tangible piece of data. The use of an ID ensures uniqueness. Where the Unique ID really comes into play however, is for a rule that has been created within the schematic domain. When adding design rule parameters to objects on a schematic, a unique ID is given to each rule parameter. The same IDs are given to the corresponding design rules that are created in the PCB. With this Unique ID, the constraints of a rule can be edited on either the schematic or PCB side and the changes pushed through upon synchronization.
  • Test Queries - click to open a Test Queries Result dialog that displays the number of objects affected by the selected rule, taking into account any defined rule specializations. This allows you to see if any objects match the query and check if those objects affected by the filters and rules are the desired result of your search terms.

Rule Scoping Controls

When defining the scope of a design rule - the extent of its application - you are essentially building a query to define the member objects that are governed by the rule. Use the options available in the dialog to build the query required. Depending on whether the rule is unary or binary, you will need to define one or two scopes respectively.

For a unary design rule, controls will be provided to define a single rule scope (Where the Object Matches). Use the options available in the Where The First Object Matches region to help build the query expression, which will be presented in the Full Query region to its right. For a binary design rule, controls will also be provided to define a second rule scope. Use the options available in the Where The Second Object Matches region to help build the query expression, which will be presented in the Full Query region to its right.

Controls are identical, whether defining one or two rule scopes and are detailed in the following sections.

Where The Object Matches

  • Scoping Option - use the drop-down to select one of the following options to determine how to generate the scoping query expression:
    • All - choose this option to generate a scope query that targets all design objects. The expression All will be loaded into the associated Full Query region.
    • Net - choose this option to generate a scope query that targets all objects in a specific net. Choose the required net from the top drop-down field. The expression loaded into the associated Full Query region will be in the format InNet('<NetName>').
    • Net Class - choose this option to generate a scope query that targets all objects in a specific net class. Choose the required net class from the top drop-down field. The expression loaded into the associated Full Query region will be in the format InNetClass('<NetClassName>').
    • Layer - choose this option to generate a scope query that targets all objects on a specific layer. Choose the required layer from the top drop-down field. The expression loaded into the associated Full Query region will be in the format OnLayer('<LayerName>').
    • Net and Layer - choose this option to generate a scope query that targets all objects in a specific net and on a specific layer. Choose the required net from the top drop-down field, and the required layer from the bottom drop-down field. The expression loaded into the associated Full Query region will be in the format InNet('<NetName>') And OnLayer('<LayerName>').
When using the NetNet and Layer, Net Class, or Layer options, the field will populate with all defined nets in the design, all defined net classes in the design, or all currently enabled layers in the design, respectively. Use the drop-downs to choose the required target.
When using the Net and Layer option, the field will populate with all currently enabled layers in the design. Use the drop-downs to select the required layer.
  • Custom Query - choose this option to be able to write your own, more complex, but also more specific query. 
  • Query Helper - this button becomes available when the Custom Query option is chosen. Click to access the Query Helper dialog. The underlying query engine analyzes the PCB design and lists all available objects, along with generic keywords for use in queries. The resulting query appears in the region to the right.
  • Query Builder - this button becomes available when the Custom Query option is chosen. Click to open the Building Query from Board dialog, which enables you to create a query for targeting specific objects in the design document by simple construction of a string of AND'ed and/or OR'ed conditions. The resulting query appears in the region to the right.
Alternatively, and if you are conversant with the Query Language, you can enter a query expression directly in the region to the right.

You also can paste a query expression from your favorite editor directly into the region. You can also copy an expression, perhaps to work on it in an external editor, or even to paste into the second scope of a binary rule - especially useful if the two scopes are complex, but differ only slightly.
The Query Builder is a simpler method of constructing a query, using sensitive condition types and values that only allow the designer to build using relevant 'building blocks'. For advanced query construction, with full keyword specification and operator syntax, use the Query Helper.

Constraints

This region of the dialog presents the constraints applicable to the type of rule being edited. Use the various controls to configure these constraints as required.

Query Expression Operator Precedence

Brackets have the highest precedence within an order of precedence that has been defined for the various operators, and which determines how queries are interpreted by the software (whenever the user has not provided brackets). The sequence of this order is as follows:

Brackets
Not
^, *, /, Div, Mod, And
+, -, Or, Xor
=, <>, <, >, <=, >=
&&, ||

This order of precedence is similar to that used in Pascal type languages. Ambiguities are resolved by working from left to right. Parentheses are evaluated from inside to outside and equal levels are evaluated left to right.

It is highly advisable to use brackets whenever there is any possibility that the query might not be correctly interpreted. Generous usage of brackets removes doubt and makes the resulting queries easier to read by others.

For more information about PCB Design Rules, click here.

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. Compare features included in the various levels of Altium Designer Software Subscription and functionality delivered through applications provided by the Altium 365 platform.

If you don’t see a discussed feature in your software, contact Altium Sales to find out more.