This dialog allows you to browse and manage the defined design rules for the current PCB document. Design rules collectively form an instruction set for the PCB Editor to follow. Each rule represents a requirement of your design and many of the rules (e.g., clearance and width constraints) can be monitored by the online Design Rule Checker (DRC) as you work on your design. Certain rules are monitored when using additional features of the software, e.g., routing-based rules when using the Situs Autorouter to route a design.
For more information about PCB Design Rules, click here.
To successfully complete a PCB design using Altium Designer's PCB Editor, the constraints of the design should be thought out and implemented as a well-honed set of design rules. Remember that the PCB Editor is rules-driven therefore taking the time to set up the rules at the outset of the design will enable you to effectively get on with the job of designing, safe in the knowledge that the rules system is working hard to ensure success.
The dialog is accessed from the PCB Editor, by selecting Design » Rules from the toolbar.
The dialog is composed of a static pane on the left and a main editing region on the right that changes in context with the selection on the left.
In the folder-tree pane on the left side of the dialog, each of the supported design rule categories, and types thereof, are listed under the Design Rules folder. The following rule categories and types are supported in Altium Designer:
Electrical - this category offers the following rule types: Clearance, Short-Circuit, Un-Routed Net, Un-Connected Pin, and Modified Polygon.
Routing - this category offers the following rule types: Width, Routing Topology, Routing Priority, Routing Layers, Routing Corners, Routing Via Style, Differential Pairs Routing, and Fanout Control.
SMT - this category offers the following rule types: SMD To Corner, SMD To Plane, SMD Entry, and SMD Neck-Down.
Mask - this category offers the following rule types: Solder Mask Expansion and Paste Mask Expansion.
Plane - this category offers the following rule types: Power Plane Connect Style, Power Plane Clearance, and Polygon Connect Style.
Testpoint - this category offers the following rule types: Fabrication Testpoint Style, Fabrication Testpoint Usage, Assembly Testpoint Style, and Assembly Testpoint Usage.
High Speed - this category offers the following rule types: Length, Matched Lengths, Maximum Via Count, Parallel Segment, Daisy Chain Stub Length, and Vias Under SMD.
Manufacturing - this category offers the following rule types: Minimum Annular Ring, Acute Angle, Hole Size, Layer Pairs, Hole To Hole Clearance, Minimum Solder Mask Sliver, Silk To Solder Mask Clearance, Silk To Silk Clearance, Silk to Board Region Clearance, Board Outline Clearance, and Net Antennae.
Placement - this category offers the following rule types: Component Clearance, Room Definition, Component Orientations, Permitted Layers, Nets to Ignore, and Height.
Signal Integrity - this category offers the following rule types: Flight Time - Falling Edge, Flight Time - Rising Edge, Impedance,Overshoot - Falling Edge, Overshoot - Rising Edge, Signal Base Value, Signal Stimulus, Signal Top Value, Slope - Falling Edge, Slope - Rising Edge, Supply Nets, Undershoot - Falling Edge, and Undershoot - Rising Edge.
Click on the root folder to access a summary listing - in the main editing region of the dialog - of all specific rules that have been defined, for all design rule types, across all categories.
Click on a category folder to access a summary listing of all specific rules that have been defined for all associated design rule types of that category.
Click on a rule type folder to access a summary listing of all specific rules that have been defined for that type.
Click on the entry for a specific rule in the folder-tree pane (or double-click on its entry in a summary list) to access controls for managing its definition.
The following commands are available from the right-click context menu for the left-hand pane:
New Rule - use this command to create a new rule of the currently selected rule type. The new rule will be added to the folder-tree and will also appear in the summary list for that rule type. The rule name will appear bold to distinguish it as being new and yet to be 'applied'.
When a new rule is added, it will initially be given a default name based on the specific type of rule. For example, if you add a new Clearance rule, the default name will be Clearance. If this default naming is not changed, adding another new rule of the same type will result in the same rule name with an incremented numerical suffix (i.e. Clearance_1, Clearance_2, and so on).
When a new rule is created for a particular rule type, it is automatically given priority 1 (the highest priority). If any other rules of that type exist, their priorities will be shifted (lowered), by one, accordingly. They are then considered to be modified – even though they may not have been specifically modified at the scope/constraint level. All such existing rules of that type will therefore be displayed in the modified state (bold with asterisk).
Duplicate Rule - use this command to quickly create an identical copy of the currently selected existing rule. The duplicate rule will be named the same as the original, with the addition of a suffix (e.g., _1) to distinguish it. Its definition (scope, constraints, etc.,) will be identical to that of the original.
In terms of priority, the duplicate rule will be given the next priority below that of the original rule. So, for example, if the original rule has priority 1, the duplicate will be given priority 2.
Delete Rule - use this command to delete the specific rule that is currently selected in the folder-tree. The rule name will appear bold with strike-through highlighting to distinguish it as being a deletion that is yet to be 'applied'.
Many rule types have default rules created when a new PCB document is created. In a similar fashion, if all specific rules for one of those rule types are deleted, the default rule will be re-added automatically.
Report - use this command to generate a report of currently defined design rules. The report can cater for all rule categories, a specific rule category or a specific rule type, depending on the selected entry in the folder-tree. The Report Preview dialog will appear, with the appropriate report already loaded. Use this dialog to inspect the report using various page/zoom controls, before ultimately exporting it to file, or printing it.
Export Rules - use this command to export your favorite rule definitions to file. The Choose Design Rule Type dialog will appear. Select the rule types you wish to export and click OK. The Export Rules to File dialog will then appear, from where you can determine where, and under what name, the exported PCB Rule file (*.rul) is to be stored.
Import Rules - use this command to import rule definitions from a previously saved rule file. The Choose Design Rule Type dialog will appear. Select the rule types you wish to import and click OK. The Import File dialog will then appear, from where you can browse to and open, the particular PCB Rule file (*.rul) you wish to import.
When importing, if rules of a chosen type already exist, the option will be given to clear the existing rules prior to import. Clicking Yes results in all existing rules of that type being deleted, and subsequently replaced with those in the .rul file. Clicking No will keep the existing rules. However, if existing rules and imported rules have the same name, the imported rules will overwrite the existing ones.
Main Editing Region
This region of the dialog changes in accordance with what is currently selected in the left-hand pane. It presents two different views:
Summary Listing - if the root Design Rules folder, or any of the child rule category or type folders are clicked in the left-hand pane, this region will present a summary listing of all defined rules, or all rules of the selected category or type, respectively. Each rule is listed in terms of the following:
Name - the name of the rule.
Priority - the rule's current priority.
Enabled - whether the rule is currently enabled or disabled (click to toggle this state).
A disabled rule will have a greyed-out appearance in a summary listing.
Type - the type of rule it is.
Category - the rule category it belongs to.
Scope - the scope of the rule (i.e. what object(s) it applies to).
Attributes - the constraint attributes that have been defined for the rule.
The summary listings also provide the following buttons, to act on selected entries in the currently displayed listing:
New Rule - click this button to create a new rule of the type currently selected in the folder-tree pane of the dialog.
Delete Rule(s) - click this button to delete the specific rule, or rules, currently selected in the displayed list. A deleted rule's name will appear bold with strike-through highlighting, to distinguish it as being a deletion that is yet to be 'applied.'
Multiple rules can be selected in a list using standard multi-select techniques (Ctrl+click, Shift+click).
Duplicate Rule - click this button to quickly create an identical copy of the currently selected existing rule in the displayed list.
Report - click this button to generate a report containing all design rules in the currently displayed list. The Report Preview dialog will appear, with the report already loaded. Use this dialog to inspect the report using various page/zoom controls, before ultimately exporting it to file, or printing it.
A command to generate a report is also available from the right-click context menu for the region.
Rule Definition - if a specific rule is selected in the left-hand pane, this region will present the following controls for defining that rule.
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.
Rule Scoping Controls - this region provides controls for determining the scope of the rule, in terms of the objects it applies to, or between. See the section Rule Scoping Controls for more detail on using the controls in this region.
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. Press F1 over the constraints region to access a dedicated page for that rule type, within the PCB Design Rules Reference area of the documentation.
If there is a syntax error with a scoping query, or if a constraint for the rule is invalid, the rule's name will appear in red in both the folder-tree and summary listings. A warning message will also appear should the designer attempt to close this dialog. A rule scope that has a syntax error can greatly slow the Online and Batch DRC analysis – be sure to resolve any rule scopes that are not syntactically correct.
Changes made to existing rule definitions are highlighted in both the folder-tree pane and the applicable summary lists. Such entries are distinguished by the rule name becoming bold and an asterisk displayed to the right of the name.
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. 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 - choose 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>').
Advanced (Query) - choose this option to be able to write your own, maybe more complex, but also more specific query. If you start to write a query expression directly in the associated Full Query region, this option will automatically be selected.
Top Drop-Down Field - when using the Net (or Net and Layer), Net Class or Layer options, this field's drop-down 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. Choose the required target accordingly.
Bottom Drop-Down Field - when using the Net and Layer option, this field's drop-down will populate with all currently enabled layers in the design. Choose the required layer accordingly.
Query Builder - click this button 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 ANDed and/or ORed conditions.
Query Helper - this button becomes available when the Advanced (Query) option is chosen. Click it 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 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.
This region of the dialog reflects the current query expression created for the rule scope. The expression is loaded automatically by:
Choosing a basic scoping option (All, Net, Net Class, Layer, Net and Layer), and specifying the relevant target net, net class, layer, or net and layer, from the drop-down fields.
Using the Query Builder to construct a query expression.
Using the Query Helper to construct a query expression.
Alternatively, and if you are conversant with the Query Language, you can enter a query expression directly in the region.
You 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.
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:
^, *, /, 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 whatsoever that the query might not be correctly interpreted. Generous usage of brackets removes doubt and makes the resulting queries easier to read by others.
The following additional controls are provided at the bottom of the dialog:
Rule Wizard - click this button to run the Design Rule Wizard, which steps you through the process of creating a new design rule.
The Rule Wizard button will be unavailable if there are modifications to existing rules, that have not yet been 'applied'.
Priorities - click this button to access the Edit Rule Priorities dialog, from where you can manage the priorities of multiple rules of the same rule type.
Multiple rules of the same type can be set up. It may arise that a design object is covered by more than one rule with the same scope. In this instance, a contention exists. All contentions are resolved by the priority setting. The system goes through the rules from highest to lowest priority and picks the first one whose scope(s) match the object(s) being checked.
Create Default Rules - click to regenerate the default set of design rules for the PCB. If you remove rules, you can get your default rule set back by clicking this button.
If a default rule has been modified, it will not reset it or replace it.
Apply - click to apply the specified design rules.