Edit PCB Rule
Summary
This dialog allows you to edit the properties of the selected design rule, including its name, its scope, and its constraints.
Access
The dialog is accessed from within the PCB Editor in the following ways:
- Double-click on a specific rule entry in the PCB Rules And Violations panel.
- Right-click on a specific rule entry in the PCB Rules And Violations panel, and choose the Properties command from the context menu.
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.
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.
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.
Full Query
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.
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.