Electronics Tinkerer
Projects 'N Stuff

Printed Circuit Board Versioning

Last updated: 2026-09-09 Convention Version: 1.0.0

Background

I usually design about 5-15 PCBs every year for hobby projects. Naturally, I like saving on shipping costs, so I typically batch all of the boards into a single "megaorder." This can result in up to eight months between me designing a board and actually getting it back to assemble. As such, I tend to not remember all the details about the design by the time I'm assembling it, so tagging each design with a version identifier comes in handy (along with plenty of other documentation ;) Then during assembly and debugging, the original design files can be updated with any corrections and the version bumped according to the type of change so that the design is ready to go should I ever need to re-order.

Formatting

Each PCB has a version number in the format of `1.0A`. The basic format comes down to this:
1.   - Major design revision. Full re-architect of the board with maybe a subsystem or two copied over.
  0  - Minor schematic revision. Something that affects few components or connections.
   A - Layout revision. For a given Major.Minor combination, this is the layout iteration number.
This version ID is frozen at time of order. This means that until someone clicks the "order design" button at the fab house, the above numbering system does not update. Since it is not uncommon to have more than one export operation when generating gerbers, when generating fabrication outputs, a number, starting at `0` is appended to the above version and maintained on the fabrication output archive. Each export operation increments this number. For example, if a board is exported and upon inspection of the gerbers, it is discovered that the drill file is missing or the file format is incorrect, the gerbers are re-exported and this fabrication ID is incremented. This ensures that the fabrication output version which is ordered can be identified by looking for the highest export ID for a given Major.Minor.Layout version. The version ID shall be printed on the PCB and if the design is in version control (why wouldn't it be?) then you can also add a tag referencing that commit, just like a software release. In case you're wondering, I have no idea where this scheme came from. I've been using it on boards for more than a decade :)

Release History / Changelog

That's all!
© 2021-2026 — Electronics Tinkerer — All rights reserved.
Top | Home | Privacy | Terms of Service