Working with Classes on a Schematic & PCB in Altium NEXUS
Parent page: Managing Design Changes between the Schematic & PCB
Classes are provided to enable various commands to operate on subsets of object types, for example, a group of components or a group of nets. An object can belong to more than one class.
Classes can be created for:
- nets
- components
- layers
- pads
- from-tos
- differential pairs
- design channels
- polygons
- xSignals
Also, Structure Classes can be created. A Structure Class is a special type of class that can hold, as its members, any type of class.
Generation and Synchronization of Classes from the Schematic
When transferring the design from the schematic to PCB, Altium NEXUS provides support for generation of component and net classes. There are two types of classes that can be generated from the schematic and synchronized to the PCB:
- Automatic classes - derived from the buses/harness, components, or sheet contents; and
- User-defined classes - derived from design directives placed by the designer.
The generation of these are configured in the Class Generation tab of the Options for Project dialog (the synchronization is controlled by options in the Comparator tab).
Automatically Generated Net Classes
Net classes can be automatically generated for the following groups of nets:
-
Generate Net Classes for Buses - check this option to automatically generate a net class for each bus in the design. The members of a class will be the individual constituent nets of the bus (from which that class was generated).
-
Generate Net Classes for Components - check this option to automatically generate a net class for each component in the design. The members of a class will be the associated nets to which the pins of the component (from which that class was generated) are connected.
- Generate Separate Net Classes for Bus Sections - check this option to automatically generate a separate net class for each bus section. A bus section is created by specifying a bus which is actually a section of a larger bus, for example
D[15..8]
, from the busD[15..0]
. -
Generate Net Classes for Named Signal Harnesses - enable this option to automatically generate a net class for each named signal harness in the design. The members of a class will be the nets associated to the signals gathered by the named signal harness (from which the class was generated).
- Sheet-Level Class Generation Grid - this region allows you to control the automatic generation of component and/or net classes at the individual schematic sheet level. All source schematic sheets for the project are listed with the following information presented for each:
- Sheet Name - the name of the schematic document.
- Full Path - the absolute path to the folder in which the document resides.
- Component Classes - check this option to have a component class generated for the sheet.
- Net Classes Scope - use this field to determine whether to have a net class generated for the sheet and, if so, the scope of generation. The field's drop-down provides the following choices:
- None - do not generate a net class for this sheet.
- Local Nets Only - generate a net class for this sheet but only containing member nets that are local to the sheet.
- All Nets - generate a net class for this sheet that contains all member nets associated with the sheet (local and those that go elsewhere).
- Structure Classes Generate Structure - check this option to have a structure class generated for the sheet.
Automatically Generated Component Classes
It is common for the schematic project to be structured over multiple sheets, with each sheet representing a logical block of the overall design. Supporting this, you can automatically generate a component class that contains all of the components on that sheet, for each of the schematic sheets in the project, by enabling the appropriate Component Class checkbox. The PCB component class will have the same name as the Designator of the sheet symbol that references that schematic sheet. A component class will not be created if the sheet does not contain any components.
Automatically Generated Rooms
A room is a polygonal-shaped object that is an aid to component placement, these are created automatically for each schematic sheet that has the Generate Rooms checkbox enabled.
Automatically Generated Structure Classes
A structure class can include net classes, component classes, and lower-hierarchical-level structure classes, as its members. A structure class is created for each sheet that the option is enabled for, and will include the sheet-level component and net classes, if those options are enabled for that sheet. Edit the Structure Class in the PCB editor to add other net / component / structure classes. Use the Structure mode of the PCB panel to locate the components and nets in that structure class.
Creating User-Defined Classes
You can also create user-defined component classes and net classes, by attaching a parameter to the relevant component or net. PCB component and net classes will then be created if the appropriate User-Defined Classes checkboxes are enabled in the Class Generation tab of the Options for Project dialog.
User-Defined Net Class
Object page: Parameter Set
To add a net (or the nets in a bus or signal harness) to a PCB net class, you need to attach a parameter to that net/ bus / harness. You do that by placing a Parameter Set object with its end touching the net / bus / harness, as shown in the image below (Place » Directives » Parameter Set command).
In the Classes section of the panel, enter the name of the net class, as shown in the image below.
Multiple Parameter Set objects can be placed in different locations on the schematic, to add multiple individual nets to the same PCB net class.
User-Defined Component Class
In the schematic, you can specify that a component be added to a PCB component class when the schematic is synchronized with the PCB.
To do that, you add a parameter to the component, with the parameter Name string set to ClassName
, and the parameter Value string set to the required.
Using a Blanket to Apply a Directive to Multiple Nets
Object page: Blanket
You can also add multiple nets to a PCB net class by placing a Blanket directive that covers all of those nets. The function of a Blanket is to allow you to apply a directive to all of the nets under the blanket (either identified by a net identifier, such as a Net Label or Power Port that is under the blanket, or a net that has an end vertex contained within the Blanket).
Instead of placing the Parameter Set directive so that it touches a wire, you place it so that it touches the edge of the blanket, as shown in the image below. Note that it is the value of the Parameter within the Parameter Set object that defines the PCB net class name, not the display name of the Parameter Set object. In the example image below, the Parameter Set is also used to define a routing width design rule.
Working with Classes on a PCB
You can also browse, and manage, the object classes for the current PCB document using the Object Class Explorer dialog.
Click on the class type of the class you want to create, right-click and select Add Class. A new class will appear in the list with the default name of New Class. Click on the class name to edit the class and add the members, right-click on the class name and select Rename Class to rename it.
Note that there are transfer buttons for selected objects; often it is easier to select the objects in the design space first, then use these transfer selected buttons to build the class. If you have created a selection beforehand using the Find Similar Objects dialog, PCB panel, list panel, etc., then the button shown in the image below should be available. Pressing this button shifts the selection from the non-members column to the members column.
Component Class Generator
The Edit Component Class dialog includes the Class Generator button, which, when clicked, displays the Component Class Generator dialog. This allows you to quickly create a component class containing components based on selected properties.
Working with Structure Classes
Altium NEXUS already provided high-quality, robust support for generation of classes (Component and Net) when transferring the design from the Schematic to PCB. This support is taken to the next level, with the ability to define the generation of a hierarchical structure of classes in the PCB document. Essentially, this enables you to group together, at the sheet-level, classes of components and/or nets into a parent class generated from that sheet, which itself can be a child of the pare nt class above, all the way up to the top-level sheet in your design, which in essence is the source for the top-level generated parent class (or 'super class') – the head of the class structure hierarchy. Each of these generated parent classes is referred to as a Structure Class. Structure Classes not only allow for the reproduction of the schematic document structure within the PCB domain, for advanced navigation, but can also be used in logical queries, for example when scoping design rules, or filtering.
Structure Class Concept
A Structure Class is a special type of class that can hold, as its members, any type of class:
- Net Classes
- Component Classes
- Layer Classes
- Pad Classes
- From To Classes
- Differential Pair Classes
- Design Channel Classes
- Polygon Classes
- Other Structure Classes.
By automatically generating a Structure Class from each schematic sheet in the project – containing components and/or nets – when transferring the design to the PCB, the structure of the project can be faithfully represented on the PCB side.
A tidy means by which to essentially 'compartmentalize' a schematic sheet's-worth of components and nets, the Structure Class object is the driving force behind hierarchical class structuring in the PCB. Using Structure Classes, a hierarchy of any depth can be built. Primarily the structure is defined by the hierarchical nature of the schematic source documents, but you can add, manage and delete Structure Classes directly on the PCB side should you wish.
The Structure Classes reflect the design hierarchy – of the schematic sheets themselves. In terms of component and net classes, membership within a particular Structure Class will of course depend on the options specified when generating Component and Net Classes from the source schematic sheets.
Tailor membership of Structure Classes to suit your needs. Remember that although the project hierarchy can be brought across in an automated fashion, the initial membership will be Component Classes and/or Net Classes and/or other Structure Classes. Use existing Structure Classes, or create new ones within the overall hierarchy, to organize other class types for the PCB document as required.
Automatic Generation of Structure Classes
The automatic generation of Structure Classes from the schematic sheets in a PCB design project is defined on the Class Generation tab of the Options for Project dialog (Project » Project Options). To generate a Structure Class from a source schematic sheet in the project, simply enable its associated Generate option, in the Structure Classes column.
Each automatically generated Structure Class is named using the designator of the Sheet Symbol/Device Sheet Symbol by which the corresponding schematic sub-sheet is referenced. The exception to this is the top-sheet, the corresponding Structure Class of which is named using the filename for that sheet.
Comparator and ECO Generation Support
Synchronization between the source schematic documents and the PCB is made possible through Altium NEXUS's Comparison engine, with detected differences addressed by performing modifications, implemented through Engineering Change Orders (ECOs). In support of Structure Classes, the Comparator and ECO Generator have been enhanced accordingly.
For detection of differences associated with Structure Classes, a new section has been added to the Comparator tab of the Project Options dialog – Differences Associated with Structure Classes
.
Supporting the change orders required to ensure synchronization, a corresponding new section has been added to the ECO Generation tab of the Project Options dialog – Modifications Associated with Structure Classes
.
Manual Definition of Structure Classes
As with other types of class in a PCB document, you are able to create and manage Structure Classes in a manual fashion, directly from within the PCB document. This can be done from the PCB panel, while browsing the class structure hierarchy, or from the Object Class Explorer dialog (Design » Classes). Considering the latter here, Structure Classes are defined under the Structure Classes
folder, with familiar commands on the right-click menu to add, rename or delete commands as required. For a new or existing Structure Class, define its members as required. These can consist of any of the class types supported for use in the PCB design.
Browsing the Class Structure Hierarchy using the PCB - Structure Classes Panel
In the PCB panel’s Structure Classes mode, its three main regions change to reflect the following (in order from the top):
- A list of all Structure Classes currently defined for the PCB document; those auto-generated from the schematic sheets as well as those defined in the PCB itself.
- All Classes that are defined members of that selected Structure Class.
- Individual Class Members that constitute each class (components, nets, etc.).
Structure Classes Region
The top region of the panel lists all Structure Classes currently defined for the PCB document. These include those automatically generated from the PCB project's source schematic documents (denoted by the icon), as well as those defined manually in the PCB document itself (denoted by the icon). Clicking on the arrow icon next to a Structure Class will reveal the Structure Class hierarchy descendant from that class. By expanding the top-level Structure Class, you can see the full hierarchy.
Double-click on a Structure Class entry to access the Edit Structure Class dialog in which you can change the name for the class and redefine its members (any of the class types) as required.
The right-click menu for this region provides the following commands:
- Select All – select all Structure Class entries in the current branch of the hierarchy.
- Clear Filter – clear filtering in the design space.
- Report – generate a report presenting a flat listing of all defined Structure Classes. The report will open for preview in the Report Preview dialog.
- Properties – access the Edit Structure Class dialog for the currently selected (and focused) Structure Class. This command is the same as double-clicking directly on an entry.
- Add Class – add a new Structure Class. Definition (name and membership) is performed from the Edit Structure Class dialog.
- Delete Class – delete the selected Structure Class(es).
Classes Region
The middle region of the panel lists all class members for the currently selected Structure Class(es) in the region above.
Double-click on a class entry to access the associated editing dialog, from where you can change the name for the class and redefine its members as required.
The right-click context menu for this region provides the following commands:
- Select All – select all class entries in the region.
- Clear Filter – clear filtering in the design space.
- Report – generate a report presenting a listing of all classes in the region. The report will open for preview in the Report Preview dialog.
- Properties – access the relevant editing dialog for the currently selected (and focused) class. This command is the same as double-clicking directly on an entry.
Class Members
The bottom region of the panel lists all members of the currently selected class(es) in the region above.
Double-click on a class member entry to access the associated mode of the Properties panel in which you can change the name for the class and redefine its members as required.
The right-click menu for this region provides the following commands:
- Select All – select all class member entries in the region.
- Clear Filter – clear filtering in the design space.
- Report – generate a report presenting a listing of all class members in the region. The report will open for preview in the Report Preview dialog.
- Properties – access the relevant properties/editing dialog for the currently selected (and focused) class member. This command is the same as double-clicking directly on an entry.
- Zoom Selected – this is only available for a primitive object entry. The design space will zoom into that object in the design space, in accordance with the defined Zoom Level. Note that this command has no effect if the Zoom option is enabled as part of the panel's highlighting controls.
Using Structure Classes in Logical Queries
Logical queries are the fundamental driving force when targeting objects in a design. They can be used when scoping design rules to constrain the design in a specific (and required) way, or when filtering objects in the design workspace. The Query Language has been enhanced to cater for the use of the Structure Class when building logical query expressions. The following keyword has been added to the PCB Functions – Membership Checks section:
InStructureClass
– checks whether the object class is in the specified Structure Class.
This keyword can also be used when constructing a query with which to scope a design rule. It is supported for use in both the Query Helper dialog and the Query Builder dialog.
Use this keyword when creating a logical query to be used in a filter expression – to quickly filter all low-level member objects descending from within the specified Structure Class.