Capturing the Logical System Design in Altium Designer
Advanced electronic product designs are generally composed of multiple PCB designs that are interconnected to create the complete, functional system. From a design with a main board and a front panel LCD module to a complex active backplane system with plug-in cards, all are implemented as a system of multiple board designs.
This requires a high level design system that allows multiple ‘child’ PCB designs to be electrically and physically connected together while maintaining the integrity of their Pin and Net connectivity. Integrated system-level design is supported by Altium Designer in the form of a dedicated Multi-board Design environment that features both the logical (schematic) and physical (PCB) aspects of system design.
A system-level Multi-board Design is hosted in Altium Designer by a dedicated Multi-board project type (*.PrjMbd
) and its constituent schematic-based logical design document (*.MbsDoc
) and physical PCB-based documents (*.MbaDoc
). The document types bring existing Altium Designer project designs into the Multi-board design environment where they are interconnected, edited and checked as a complete system.
The essential steps for creating a Multi-board system Schematic design from child PCB project designs are:
- Create an Altium Designer Multi-board project and add a Multi-board schematic document to the project.
- Place graphical blocks (Modules) in the Schematic to logically represent the child projects.
- Link each Module to its appropriate child project.
- Import the child project connectivity data into the system design.
- Add connections between Modules to create the logical system design.
Enabling PCB Projects for Multi-board Design
Altium Designer PCB projects that represent the child board designs in a Multi-board system design will contain specific connections, such as edge connectors or header plugs/sockets, that are included as the electrical and physical interface to other PCBs in the system design.
These connections and their associated electrical Nets need to be detected and processed by a Multi-board schematic (logical) design document to establish the inter-board connectivity in the system-level design. This functionality is enabled by the presence of a specific component parameter for the PCB project connectors – a System
parameter with Connector
as an attribute value.
For each connector in a PCB project design that is intended for a system-level interconnection, select the connector part, and then add the special component parameter under the Parameters tab of the Properties panel.
Multi-board Design Project
An Altium Designer system-level design is formed in a Multi-board project, which like any other project type, is created through the File » New » Project menu – select the Multi-board Design Project option. Alternatively, selected the File » New » Project » Project option to the open the New Project dialog for the advanced project creation options such as Managed and VCS Projects, and the automatic creation of a specified host folder.
The core design element in a Multi-board project is the logical connection design, which is developed in a Multi-board schematic document (*.MbsDoc
). Add this file type to the Multi-board project from the Projects panel by right clicking on the project entry and selecting Add New to Project » Multi-board Schematic from the context menu – or select File » New » Multi-board Schematic from the main menus.
Multi-board Schematic design
The connectivity between PCB projects that make up a Multi-board system design is established by placing representative blocks (Modules) on the schematic, and connecting their exposed connectors (Entries) together using virtual connections and/or wires.
Modules, representing child PCB project designs, are placed in the workspace from the Place » Module menu, or by selecting the Module button () in the editor's Active Bar – see below.
Select a placed Module and use the Properties panel to define its Designator and Title, and also the source PCB design project the Module is linked to. The Source options may be set to a Local or Server based Managed project, and the desired board design within that project specified (Assembly/Board).
Add further Modules and their Child Project links to the Multi-board schematic design, as required for the complete system design.
The Modules are populated with design data from their linked PCB project designs by importing the project data using the Design » Import from Child Projects command – or the Design » Import from Selected Child Projects command. Most importantly, this processes the Pin and Net data from each connector in the Child Projects that has the special System:Connector
parameter attached.
After the import is complete, a module Entry is automatically created for each of these connectors on their respective Module block graphic. The connector Entry is actively associated with Pins and Nets on the connector in the Child Project.
Connecting Child projects
To complete the process of creating and connecting Child Project Modules together, place a logical Connection between the Module Entries.
A range of connection types is available from the editor's Place menu or the Active Bar (at the top of the workspace), including Direct Connection and Wire, which refer to connectors that plug together or are wired together, respectively. Click and drag the connection line between the Module Entry points to create the logical connectivity. Note that all elements in the system schematic editor, including Entry objects, can be dragged to a new location.
Project structure
An established Multi-board Project features a hierarchical document structure that includes Source documents (Multi-board Schematic and Assembly), and the child PCB sub-projects linked to Modules in the Schematic system design. The structure of a Child Project is immediately added to the Multi-board Project when a system design Module has been linked to that external project.
Expand the project structure in the Projects panel to expose the constituent files in the Multi-board project, and its Child Projects. Compile a Child Project to populate the panel with its core elements such as Components and Nets. To compile a project, right-click on its name in the Projects panel tree and select the Compile PCB Project [..name..] command.
Working with Connections
The connections established between Modules in the schematic ultimately represent the connectivity between Child Project connectors, connector pins and Nets in the overall system design. The Multi-board schematic editing environment provides additional features that may be used to modify, check and update that connectivity as the overall product design is developed.
Split Connections
In design situations where a Child Project connector serves more than one connected project, the source connector can be logically divided (in terms of Pins/Nets) using the Multi-board schematic editor’s Split feature – in practice, one module is connected to two other modules.
An example of such a design might be where a single header plug on a PCB is intended to accommodate two smaller header sockets, which in turn connect to two other PCBs – the sectioned signals from a single (say, 20-pin) connection are distributed to a (say 10-pin) connection one PCB and a (10-pin) connection on another PCB.
To split a connection, select the Module and then an Entry in the Properties panel. Select the button, and in the following Split Entry dialog, check the listed pin Pin/Net combinations you wish to separate (split off) to another Entry. Use the button to confirm the selections.
The editor will automatically create a new Module Entry for the separated Pins/Nets, which can then be connected to a different Module as required.
In the example shown here, Entry HDR6
on Module M1
is intended to connect to both Module M2
(a panel LCD display) and Module M3
(a power supply board). The HDR6
Entry connections have been split to logically separate out three power Nets that will connect to HDR3
on power supply Module M3
. This creates an additional HDR6
Entry on M1
(HDR6 [1-2,15]
) that offers just the three power connections for M3
, while the original HDR6
Entry is automatically reassigned to offer the remaining 17 connections – which ultimately connect to HDR1
on the LCD Module M2
.
Select a Connection in the workspace to see its constituent Nets in the Properties panel. Here, one section of the (split) HDR6
Nets is connected to HDR3
through the wire connection W-PS
, which represents the three power lines between the Main Board (M1
) and Power Supply (M3
). As shown in the image below, each virtual wire listed in the panel’s Connections area also includes its Entry name, Pin and Net at either end, in the From and To columns.
Edit Connections
The connections between Child Project Modules are not necessarily a pin-to-pin match, particularly when a connector is split in sections that are wired to different PCB Modules.
To edit or correct the Pin/Net matches between a Module interconnection, select the Connection in the workspace and then change the From/To assignments as required in the Properties panel’s Connections list entries.
Use the From or To drop down list to select a new Net assignment, and therefore a different end-to-end signal relationship through that individual connection or wire, within the Module-to-Module connection.
Connection Manager
The overall connectivity in a Multi-board design, once established, is detailed in the editor’s Connection Manager dialog (Design » Connection Manager).
This dialog lists all Net/Pin assignments, grouped under their parent Connection Designators and type (Wire, Direct, etc), and includes their system design ID and Net Name, along with their From and To Pin/Net connections. Use the dialog’s option to include details of the literal Pin connections in the listing.
The dialog’s lower Conflict Resolution area will indicate any connection conflicts between the current Multi-board system design and source (child) projects during a design update, as outlined below.
System Design updates
During the course of a Multi-board system design it’s likely that the source Child Projects will also be developed, and those changes need to be brought into (synchronized with) the system design. This update process is achieved by re-importing the child design(s) into the Multi-board design space via an Engineering Change Order (ECO).
Use the Design » Import From Child Projects command to import changes from all Child Projects in the system design, or the Design » Import From Selected Child Projects alternative to re-import the connection data for the project Modules that are currently selected in the workspace. These commands are also available from the right-click context menu of a Module graphic.
The executed ECO will register any differences between the current system design connectivity and the connection data that has been imported from the Child Project(s). This information is available in the Connection Manager dialog (Design » Connection Manager), which is also used to resolve or reject the updated connection data from the Child Project(s).
Resolve Conflicts
The Connection Manager dialog listing will highlight any connections that are considered as in Conflict, or in practice, any imported connection update that does not agree with the system design editor’s existing connectivity data map. Select a highlighted Net entry in the list to see a graphic representation of the Conflict and to access a range of button options that can be used to resolve it.
The Net information shown in the highlighted fields in the Connection Manager listing represents the proposed change. In the example case shown here, the Nets on HDR1
pins 4 and 5
in the Child Project (LCD Module
) are in a different order – in fact, have been swapped.
The Connection Manager will interpret this change and offer appropriate correction action buttons on the Conflict Resolution graphic. The options include:
- Confirm – The Nets on Pins
4
and5
for theHDR1
connector in ModuleM2
will be changed in the system design to match the updated assignments (as highlighted) in the dialog. - Revert – The current Net to Pin relationship for
HDR1
in ModuleM2
will be retained. The proposed change is ignored by the system design. Note that the system design will then not match the net assignments in the child design(s). - Swap Pins – The Pin/Net assignments at the other end of the connection (at
HDR6
onM1
, the main board PCB) will be changed to maintain a correct Net relationship between the two Modules (M1
andM2
). - Swap Wires - The virtual wires that connect between
HDR1
onM2
andHDR6
onM1
will be changed (swapped in this case) to correct the Net connectivity conflict, and the connector Pin/Net assignments will not be changed. Here, wireW2
would then connect between Pin 4 onHDR6
and Pin5
onHDR1
, andW3
connect between PinsHDR6-5
andHDR1-4
.
When a conflict resolution option has been selected, an affirmative answer in the following Confirmation dialog will cause the conflict resolution action to be applied to all conflicts of the same type.
The corrected Net assignments will be highlighted in green and also reflected in the dialog's lower connection graphic. Select the button to apply the updated assignments to the Multi-board system design.
Once the Conflict Resolution changes have been applied, they can be inspected in the Properties panel when the relevant connection is selected in the system design workspace.
In the Properties panel image shown below, the example conflict for the W-LCD
connection was resolved using the Swap Wires option. This has effectively crossed over wires W2
and W3
so that the correct Net continuity is maintained – that is, the Reset and Read/Write Nets are matched between project Modules (LCD_RW#
→ RSW
and LCD_RS#
→ RS
, respectively).
Update Child Projects
To maintain synchronization between a Multi-board Schematic design and the Child PCB Projects it includes, the system designer supports the bidirectional exchange of Pin/Net data. Connectivity data is imported into the system design from Child Projects as outlined above, and the system design connectivity data may be passed back to the source PCB projects through the Child Project Update feature – Design » Update Child Projects. To update an individual Child Project, select its associated Module and choose the Design » Update Selected Child Projects command – both commands are also available on a Module's right-click context menu.
When the command is run, the design editor compares the connectivity data in the system design with that in the Child Projects. Any differences that are detected will be listed as proposed changes in a following Engineering Change Order (ECO) dialog, or a Comparator alert dialog will indicate that no differences have been encountered – and by implication, that no changes are required to maintain the system design to Child Project synchronization.
For the differences detected in the example shown here, where the RS
and RSW
Nets have been swapped on connector HDR1
in the LCD Board Child Project (M2
in the system design), the ECO proposes a Pin Swap in the source project to synchronize the Nets.
When the ECO is Executed (after optional Validation), the HDR1
connector Pins in the LCD module Child Project are swapped.
Note that the Update Child Projects process would normally be performed after any Conflicts has been resolved in the Connection Manager dialog, so as to synchronize the Child Projects to the correct state of the system design.
In the above example, the Child Project Pin/Net relationship has been restored to the state prior to its changes. This is equivalent to where the changed child project data has been imported into the system design, and the connection Conflict was been resolved using the Revert option. If the Swap Pins option was used to resolve the Conflict, Pins 4
and 5
on the HDR6
connector in the Main Board project would have been swapped.
Other detected and resolved changes, such as a mismatched Net name are synchronized by a direct update to the target in the Child Project.