- Muchas notas - Fran Acién

20240122 - PCB Version control and releases Guidelines

After some time thinking how to keep version control of the PCB, this is my best guideline to do it.

The continuation of this guide is 20240124 - Altium version control for correct releasing of the project.

The tools to create the documents are going to be:

  • Git, to keep track of the files
  • Altium, to generate the correct documents.
  • Inventree, to gather the information of the different parts of the assembly.

Some vocabulary:

  • Gerber or raw PCB: Is the phisycal PCB, the one you receive from the manufacturer without components
  • PCB: The PCB is the physical device: It is the sum of schematic, Billl of Materials (BOM), components and gerber. But without the software, or peripherals
  • Device or assembled device: Is the sum of all the PCB’s, the softwares of the PCBs, the peripherals to make it work, the cables, the batteries, and the box. Basically is all you need to sell it to the customer.

A picture showing the proposed model:

b2f37ad66b9f56058ed9fa1cc77e3f1f.png

Some basic rules:

  1. It is possible to change the schematic without affecting the gerber.
  2. It is not possible to change the gerber without affecting the PCB
  3. It is possible to change the schematic without affecting the BOM.
  4. It is not possible to change the BOM without affecting the PCB.
  5. A PCB can have different variations, with the same gerber.
  6. A version of a device is the sum of the versions of all its components, gerber, pcb, batteries, software, etc.
  7. Altium and git is in charge of the changes in Gerber and PCB. Not about the device or assembled device.
  8. Inventree should mirror the information on gitlab regarding to PCB version, BOM and gerbers.
  9. The information in inventree cannot be different from the information in the gitlab.

Some basic rules:

  • A new version of the Gerber is a new branch in the gitlab repository.
  • A new version of the PCB (schematic and BOM) is a new tag in the gitlab repository
  • Each branch will have a tag with each revision of the PCB. This would happen for example if you change a component from the BOM or you add new information to the schematic.
  • The naming for the branches will be: V0.1, V0.2.… The naming for the tags (PCB’s): V0.1-rev0-variation, V0.1-rev1-variation, V0.1-rev2-variation.…
  • In this sense a each branch is a different gerber, each tag is a change in the PCB (Schematic and BOM).
  • All the revisions of the PCB are listed as outputs of each tag. As an example, if we have a pcb variant (dev) and a pcb variant (production), they will have the different project outputs under “Project Outputs” folder as “V0.1-rev2-dev” and “V0.1-rev2-prod”.
  • The readme of each branch should keep track of the Known errors.
  • The readme of each branch should show the changelog of each tag (revision of the pcb.)
  • The readme of each branch should explain the different variations.
  • The readme should have a brief description about how to view the board on Altium Viewer online.
  • Each revision of the PCB (tags) will have under “Project Outputs” folder the next documents:
    • Gerbers
    • Schematic
    • BOM
    • Altium documents
    • 3D
    • A PCB specifications with the different properties are necessary to select in the PCB manufacturer
    • A readme with the previous description.
  • All the previous versions of gerbers and versions of PCB’s needs to be mirrored to Inventree as attachments. In inventree is more intuitive the versions of pcbs, bom and gerbers, more than git.
  • The parameter version is the version of the gerber. It shall be reflected in the ECAD software in the project parameters. In Altium you need to create a project parameter (Project->Project Options->Parameters)
  • The parameter revision is the revision of the PCB (Schematic and BOM). It shall be reflected in the ECAD software in the project parameters.

The naming convention is going to be:

  • If the board is in prototyping, or proving the components, V0.1
  • If is a PCB that should work, V1.0
  • When there is a change in the gerber you change the version as V2.0

The naming convention for revisions of the PCB for the same gerber is going to be: V0.1-rev0 (original gerber), V0.1-rev1, V0.1-rev2.…

The naming convention for variations of the PCB should be: V0.1-rev0-nofpga, V0.1-rev0-production, etc.

The project should have a OutJob that generates the next information:

  • PDF
    • Schematic
    • PCB Prints
    • BOM
    • Placement drawing (whole page)
  • Gerbers
    • Gerber
    • NC Drill
    • ODB++ Files
  • Pick and Place
  • 3D model
  • Validation outputs
  • Excel BOM
  • Copy Project files
  • Specifications of the pcb (thickness, layers, materials, etc.)

The readme of the repository should look like:

  • TITLE: NAMEOFTHEBOARD-PCB
    • NAME: NAMEOFTHEBOARD-PCB
    • VERSION: V0.1
    • STATUS: Sended to manufactured (12/10/2023), waiting for testing
    • Designed in Altium 23.1.1
    • Reference to Output files
    • Quick description of the revisions
  • PICTURES
  • DESCRIPTION
    • You need to write about the tests that needs to be made
    • The different input/outputs
    • How the design works
  • HOW TO INSPECT THE BOARD WITH ONLINE ALTIUM VIEWER
  • KNOWN ERRORS
  • VARIANTS
  • CHANGELOG TO PREVIOUS REVISION OF THE PCB