Ensuring PCB Readiness for Specctra-compatible Routers

Altium Designer's Specctra Exporter offers translation of specifically formatted width and clearance design rules, enabling a smoother transition and greater success when using Specctra-compatible routing products with Altium Designer.


Specctra design rules and Altium Designer design rules are quite different, in terms of their nature and implementation. The following conceptual differences set the scene for the challenge to successfully transfer a design from Altium Designer to Specctra:

  • Specctra has fixed (hard-coded) scoping hierarchy, which also determines the order in which rules are applied (e.g. Net-level rules are always applied before Net Class rules). Altium Designer has a more powerful, and flexible, rule system. Neither precedence (priority) nor scoping is fixed. You can freely define a rule's scope using expressions, then set that rule's priority as required. You could therefore have a Net Class scoped rule that is executed before Net scoped rules.
  • In Specctra, a scope can be seen to have associated rules – a collection of rules are applicable to an instance of a scope. In Altium Designer, this is not the case. Apart from the default "All" scope, all other scopes across all defined rules for a design might be different.
  • Specctra rules can be evaluated to an attribute at the primitive level, for example a track in net A requires 8mil clearance against all other objects. Some of Altium Designer's rules (binary rules to be specific) can never be evaluated to a primitives attribute level. For example, the clearance between tracks in nets A and B can be different from the clearance applicable between tracks in nets A and C – resulting in no single unified value for tracks in net A.

In summary, it can be a fair appraisal that Altium Designer's scoping system is more expressive than the Specctra rule system and, in general, is a superset of the Specctra scoping system.

Defining the Rules in Altium Designer

If you plan to route your Altium Designer PCB design using Specctra, it is highly recommended that you follow the Specctra scoping hierarchy, to maximize translation correctness and routing results. The following table provides a rule-definition guideline. It summarizes the various fixed scopes on the Specctra side and, where supported by the exporter, the required scoping on the Altium Designer side, along with priority. These 'mappings' if you like, aim to make the rule export process more streamlined and avoid the need to manually hand-craft the required rules, post-export, on the Specctra side.

Specctra Scope
Altium Designer Scope
Altium Designer Priority
1st Object Query
2nd Object Query
PCB Design All All
Layer OnLayer('LayerName') All
Net Class InNetClass('NetClassName') All
Net Class on Layer InNetClass('NetClassName') And OnLayer('LayerName') All
Group Set
Not Supported in Altium Designer
Group Set on Layer
Not Supported in Altium Designer
Net InNet('NetName') All
Net on Layer InNet('NetName') And OnLayer('LayerName') All
Group Emulated using From To Class:


Group on Layer Emulated using From To Class:

InFromToClass('FromToClassName') And OnLayer('LayerName')

FromTo InFromTo('NetName (FromPad : ToPad)') All
FromTo on Layer InFromTo(NetName (FromPad : ToPad)') And OnLayer('LayerName') All
Class vs. Class InNetClass - InNetClass currently not supported by Exporter
Class vs. Class on Layer
Currently Not Supported by Exporter
Not Supported in Altium Designer
Region WithinRoom('RoomName') WithinRoom('RoomName')
Net Class in Region
Currently Not Supported by Exporter
Net in Region
Currently Not Supported by Exporter
Class vs. Class in Region
Currently Not Supported by Exporter


  1. Multiple expressions can be combined within a single Altium Designer rule using the OR operator – reducing the overall number of rules in the design. For example:
    • InNet('N1') OR InNet('N2') OR InNet('N3') – making the rule applicable to any of the nets N1, N2, or N3.
    • OnLayer('L1') OR OnLayer('L2') – making the rule applicable to an object on either layer L1 or layer L2.
  2. For the rule priority in Altium Designer, 1 is the highest priority and will be applied first.

Primitive-based Scope Modifiers

The following expressions are supported as scope modifiers:

  • IsPad
  • IsThruPin
  • IsSMDPad
  • IsVia
  • IsTrack
  • IsFill
  • IsPolyRegion
  • IsTestPoint
  • TestPoint

These modifiers are useful for a clearance rule, where you might want to define different clearance values between, for example, via and pad, compared to via and track. The following example scopes show how these modifiers can be used in clearance rule definitions:

  • Pad to via clearance for net N1: InNet('N1') AND IsVia vs IsPad
  • Track to track clearance on top layer for net N1: InNet('N1') AND IsTrack vs IsTrack AND OnTopLayer

Scope Aliases

As with spoken languages, when defining rule scopes, the same meaning can often be achieved in different ways. The following aliases are supported for layer-based scopes:

  • OnTop or OnTopLayer – aliases for OnLayer('TopLayerName')
  • OnBottom or OnBottomLayer – aliases for OnLayer('BottomLayerName')
  • OnMid – alias used for layers Mid Layer 1 to Mid Layer 30 (i.e. signal layers excluding top and bottom)
  • OnSignal – alias used for all signal layers
  • TestPoint and IsTestPoint are aliases of each other.
If you find an issue, select the text/image and pressCtrl + Enterto send us your feedback.

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.