PCB CoDesign
As the saying goes, many hands make light work. One of the long-held dreams of board designers is to be able to have multiple people working on the same board at the same time. While this task might not seem overly complex to the layman – take Bob’s routing from that part of the board and bring it into my copy of the board – delivering it requires a mixture of certain key capabilities.
These include:
-
A system that allows multiple designers access to the same PCB design that they can work on and save their own changes without affecting the work of other designers.
-
A mechanism to accurately compare and identify differences between versions of the same board.
-
Tools that can be used to resolve differences that are detected that allow the designer to choose whose changes win.
-
Tools that can automatically handle a large number of differences and resolve them without creating conflicts.
To resolve these tasks, Altium Designer provides PCB CoDesign features that allow you to explore the differences between the revision of the board you checked out from the Workspace and the latest available in the Workspace revision of the same board. The PCB CoDesign functionality can detect changes in data stored in the PCB document: PCB layout, object properties, layer stack, design rules and constraints.
If any conflicts are detected, you can choose whether to keep your local changes or accept the remote changes of the latest commit, then merge to confidently resolve the design overlap.
The PCB CoDesign features are accessed and operated through the PCB CoDesign panel. It requires that the PCB project is currently under version control of the connected Workspace.
Compare and Merge Workflow
Whenever Altium Designer detects that your PCB document is out-of-date (i.e. someone saved their work to the Workspace since you checked the document out) or in the conflict state (i.e. someone saved the document to the Workspace before you have saved your own edited and saved version of that document, see details below), you will need to perform an update to the latest revision of the board or merge to bring their changes into your version of the board. This can be done by:
-
clicking the VCS status icon in the Projects panel and selecting the corresponding command from the menu that appears:
-
Out of date () – the Compare To Remote Document Version command
-
Modified () – the Compare To Remote Document Version command
-
Conflict Prevention () – the Compare To Remote Document Version & Merge command
-
Conflict Detected () – the Resolve Conflict: Compare To Remote Document Version & Merge command
-
-
opening the PCB CoDesign panel and clicking the Compare, Compare To Remote Document Version or Compare & Merge button
-
for a PCB document in the Modified state (), using the Local Changes to Remote Document Version command from the document entry's History & Version Control » Compare To right-click menu in the Projects panel or the Projects » History & Version Control » Compare To command of the main menu
-
for a PCB document in the Conflict Detected state (), using the Compare To Remote Version & Merge command from the document entry's History & Version Control » Resolve Conflict right-click menu in the Projects panel
-
clicking the Compare or Compare & Merge button in the notification that appears at the bottom of the design space.
Once the comparison is finished, the detected differences will be listed in the PCB CoDesign panel. The list presents differences detected between the base revision of the PCB document (the revision you checked out) and the latest revision in the Workspace (with changes performed by another user).
The list of differences is grouped by categories: Rules, Components, Polygon pours, Copper, etc. Expand a category to see the list of specific differences in this category, i.e. which objects in this category have been added, modified and/or removed:
- – the object has been added in the latest revision
- – the object has been modified in the latest revision
- – the object has been removed from the latest revision
For a difference of the Modified type, you can also hover the cursor over its entry or expand it to see details on the modification.
Use settings accessed by clicking the control at the top of the panel to configure the display of changes.
-
Enable the Show on PCB option (shortcut: Shift+A) at the top of the panel to highlight the differences in the PCB document design space. Click a category in the list in the PCB CoDesign panel to highlight changes from this category in the design space. Click a specific change in the list in the PCB CoDesign panel to highlight only this change in the design space. Click a selected category/change in the panel again to reset highlighting and show all differences in the design space.
Color coding lets you see which objects have been added, modified, removed, or not changed (unchanged objects of a pin-to-pin connection when it is selected in the PCB CoDesign panel).
-
When the Show on PCB option is enabled, you can also enable the Zoom selected object option to cross-probe to the affected object in the design space when clicking a difference entry in the PCB CoDesign panel. Use the slider to adjust the zoom factor used to close-in on the selected object.
You can also toggle between the current state and the state before any changes by holding the Shift+B keyboard shortcut. The hint in the panel shows which state is currently active.
Click the Merge button at the bottom of the panel to merge all detected differences. A pop-up showing that merging is in progress will be displayed. Note that the differences will be merged into your local working copy of the PCB document, which should be saved to the Workspace to become available to other designers.
When the changes are merged, the VCS status of the PCB document in the Projects panel will be changed to Merged, with the icon. Click the icon to save the design to the Workspace, revert your changes, or update the project from the Workspace. The design can also be saved to the Workspace from the Projects panel using the Save to Server control next to the project name or from the PCB CoDesign panel using the Save to Server button.
Conflict Resolution
Another way of working is a 3-way comparison, which you use if someone else is also working on the board. Imagine the scenario where both you and your colleague Bob check out a copy of the board from the Workspace. You both work on your own copy of the board, placing and routing components. Bob finishes the area of the board for which he is responsible and saves it back to the Workspace. At the same time, you also work on your area of the board and save the changes locally. This creates a conflict situation that can be handled with the PCB CoDesign panel.
To start comparison, you can click the Conflict Prevention () or Conflict Detected () VCS status icon in the Projects panel and select, respectively, the Compare To Remote Document Version & Merge or Resolve Conflict: Compare To Remote Document Version & Merge command from the menu that appears or click the Compare & Merge button in the PCB CoDesign panel. Once the comparison is finished, the list of detected differences will be listed in the panel, along with detected conflicts listed at the bottom of the panel.
For each detected conflict, you can choose if your local changes (Local) or changes from the latest commit in the Workspace (Remote) should be applied. Alternatively, use the drop-down in the banner area at the top of the detected conflict region to select the desired mode for all detected conflicts at once.
Once the desired mode is chosen for all conflicts, you can merge changes into your local copy of the PCB document.