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.

The PCB CoDesign functionality is available when the PCB.CollaborativeEditing option is enabled in the Advanced Settings dialog.

  • You must be connected to a Workspace in order to use this feature.
  • Note that only Git repository-hosted projects are supported. To leverage the PCB CoDesign features when working on an SVN repository-hosted project, it must be migrated to the Git repository first. When the project is stored in an external SVN repository and mirrored in the Altium 365 Workspace using the Simple Sync arrangement or when the project is stored in an SVN repository managed through the Enterprise Server Workspace's Version Control Service, you can migrate this project to the Workspace's built-in Git repository. Learn more about Moving from External VCS to Workspace Native VCS and  Moving from the Workspace's SVN to the Workspace's Git.
  • It is recommended that designers using the PCB CoDesign features have the same Altium Designer version.

Use the Leave Feedback control at the bottom of the PCB CoDesign panel to send feedback directly to Altium Developers with suggestions or issues related only to the PCB CoDesign feature.

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 CompareCompare 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.

Javascript ID: PCBCoDesign_CompareMerge_AD24_7

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).

When the comparison is in progress, click the Cancel button in the pop-up that is shown during the comparison process or use the Esc shortcut to cancel the comparison.

The list of differences is grouped by categories: RulesComponents, 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.

  • To make it easier to understand changes in large nets (shown in the Copper category), copper objects in nets are split into smaller entities – pin-to-pin connections.

    This feature is available when the PCB.CollaborativeEditing.Connections option is enabled in the Advanced Settings dialog.

    Javascript ID: PCBCoDesign_Pin2Pin_AD24_7
  • The PCB CoDesign functionality supports the comparison of and application of changes to unions (defined groupings of primitives on the PCB). Union-related changes are shown in the Unions category in the PCB CoDesign panel's list of changes. Also, changes in other categories are grouped by unions if corresponding objects belong to any.

  • When the same object properties are changed from both sides and there are no conflicts in property values, these changes do not create conflicts and can be merged.

    Javascript ID: PCBCoDesigner_MergeProperties_AD24_10

    A PCB area and properties of component J4 in the base version of the PCB document are shown here.

    In the remote version of the PCB, 3D body opacity and pad numbers of J4 have been updated.

    In the local working copy of the PCB, pad numbers of J4 have been updated in the same way as in the remote version.

    After performing a comparison using the PCB CoDesigner panel, there is no conflict caused by changes in J4. These changes can be merged into the local copy of the PCB.

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).

    The comparison colors can be configured in the View Configuration panel using color swatches of the Not Changed / Modified Comparison Colors and Added / Removed Comparison Colors entries in the System Colors region of the panel's Layers & Colors tab ().

  • 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.

Javascript ID: PCBCoDesign_States_24_7

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 or revert local changes.

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.

  • The PCB document will remain in the Merged state until there is a new conflict. Saving changes locally will not change the state to Modified.

  • When comparison results are currently shown in the PCB CoDesign panel, and another user saves the project to the Workspace or you modify the PCB locally, a notification about the need to update the comparison appears in the PCB CoDesign panel, with a button to refresh the comparison data.

     

  • When using the Save to Server button in the PCB CoDesign panel or the Save to Server command from the Merged icon in the Projects panel, note that only the merged PCB document is selected by default for saving to the Workspace in the Save to Server dialog that appears. Documents in the Merged state are always enabled for saving to the Workspace in the Save to Server dialog and cannot be disabled. Select other documents to be saved to the Workspace as required.

  • Note that from the Git version control perspective, the Merged status is still a conflict that will be resolved after saving the project to the Workspace (this is how Git works in case of merging conflicts).

  • Use the  button that appears in the panel after performing a successful merge to revert merge results if needed.

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.

  • For conflicting polygon pours, you can also combine two conflicting objects into a single polygon pour (Combined). 
  • For conflicting copper objects, you can choose if local or remote changes should be applied for each pin-to-pin connection.

Once the desired mode is chosen for all conflicts, you can merge changes into your local copy of the PCB document.

  • When a conflict between primitives of a group object is detected, the names of these primitives are included in the list of conflicts ().

  • When merging polygon pours and selecting the Combined or Remote option, note that a merged polygon needs to be repoured (which can be done by right-clicking the polygon in the design space and selecting Polygon Actions » Repour Selected from the context menu, for example). If the Repour Polygons After Modification option is enabled on the PCB Editor – General page of the Preferences dialog, the polygon pour will be automatically repoured after merging.

  • The PourIndex property is ignored when listing the detected conflicts for polygon pours.

If you find an issue, select the text/image and pressCtrl + Enterto send us your feedback.
Note

The features available depend on your Altium product access level. Compare features included in the various levels of Altium Designer Software Subscription and functionality delivered through applications provided by the Altium 365 platform.

If you don’t see a discussed feature in your software, contact Altium Sales to find out more.

Content