PCB CoDesign in Altium Designer

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.

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

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 out-of-date () or conflict () status icon in the Projects panel and selecting the Compare and Merge with latest commit command from the menu that appears, or
  • opening the PCB CoDesign panel and clicking the Compare to Server button, or
  • clicking the Compare and 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).

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.

    Javascript ID: PCBCoDesign_Pin2Pin
  • 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.

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

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.

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. Select other documents to be saved to the Workspace as required.

  • Documents in the Merged state are always enabled for saving to the Workspace in the Save to Server dialog and cannot be disabled.
  • 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).

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 status icon in the Projects panel () and select the Compare and Merge with latest commit command from the menu that appears or click the Compare to Server 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 merging polygon pours and selecting the Combined or Remote option, note that a merged polygon needs to be repoured (that can be done, for example, by right-clicking the polygon in the design space and selecting Polygon Actions » Repour Selected from the context menu). 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.

可用的功能取决于您的 Altium Designer 软件订阅级别

Content