Tuesday, May 17, 2011

Multi-board design projects in Altium Designer

I was working with a customer recently who had two PCBs that were related. He wanted to work from a single schematic package, yet have a subset of the schematics populate two different boards.  It’s a common enough scenario, and it’s reasonably simple to achieve in Altium Designer. Here’s how.

Altium Designer currently supports only one PCB per PCB Project. In other words, each PCB project targets only a single board.  So in order to have related schematics populate different PCBs, we first need to have multiple PCB Projects (PrjPCB), one for each board we are targeting. The secret to amalgamating the schematics is to have a third project for the overall design that doesn’t target a board, but acts as the design project for the multi-board system.

Consider the Design Workspace in the figure below.  Here we have three PCB projects. The first - PCB_Project1.PrjPCB - contains the complete set of the schematics for the two PCBs.  It is in this project that all schematic design, electrical rule checking, etc. takes place.  This is in fact the master design project for all boards to made from the design. Since all of the schematics are in the same project, their net connectivity will be extant throughout the design.

The remaining two projects - PCB_Project2.PrjPCB and PCB_Project3.PrjPCB - contain a subset of the schematics in the first project, as well as the PCBs which will be updated by the defined schematic subsets.  PCB_Project2.PrjPCB and PCB_Project3.PrjPCB simply have the appropriate schematics added to them by right clicking on the PrjPCB file and using the "Add Existing to Project" command to add the relevant schematics.

At this point any changes made to the schematics in PCB_Project1.PrjPCB will be reflected in the schematics of the other two projects, as the schematics you’ve added to these are in fact the same files contained in the master project.

When the PCBs are updated in PCB_Project2.PrjPCB and PCB_Project3.PrjPCB, only those schematics contained within each PCB Project will be reflected in the updates.

While the demo design used in this blog targets just two PCBs, this technique can be used for any number of PCBs and provides a simple way to consolidate the front-end schematic design of complex multi-board projects.

 

9 comments:

  1. Hi there,
    your post exactly meets my current problem. Unfortunately, the picture is not visible to me. Could you please check that?

    ReplyDelete
  2. Hello, this topic is spot on what I am looking for, however without the picture I cannot fully get it. Can you please correct the picture?

    Thanks

    ReplyDelete
  3. It will be like three projects in a single folder. One of them will contain all schematic sheets with no PCB file in it, and all others will contain one or more of the schematics with one PCB file each. When ever you will change any schematic in the project that contain all schematics, that change will automatically propagate to all the places in projects where this schematic is used.
    e.g
    Say there are 4 schematic sheets, say s1, s2, s3, s4.
    Place them in PCB project the one where there is no PCB file. the Project name may be P1.
    Make two other PCB projects P2, P3 and place S1, S2 in P1, and place S3, S4 in P3. Now hierarchy will be like that:

    P1( Project)
    s1
    s2
    s3
    s4
    P2( Project)
    s1
    s2
    p1
    P3( Project)
    s3
    s4
    p2

    Where p1, p2( small letters) are PCB files. I tried to copy paste my project pic here, but was unable. If any body wants screen shot plz mail me on tahirsengine@yahoo.com

    ReplyDelete
    Replies
    1. Very Informative.

      But, how to split a project among two PCB files? Like one Schematic needs to be split among 2 PCB files?

      Delete
  4. And thank you Mr. Blogger. :)

    ReplyDelete
  5. Yeah, but that just a partial workaround. Normally you want to get both PCB in the same 3D space, to check relationships especially if they are connected, for example like sandwich-style. I still have no normal solution for that, just an intermediate one, like export STP -> import STP, checking compatibility.. but that's painful =(

    ReplyDelete
  6. thanks for your surport, it is helpfull for my design.

    ReplyDelete