Version control feature is commonly used for software development. Using platforms like GitHub, BitBucket or GitLab, one can easily store software code there and manage revisions as project evolves. Some tools like GitHub are considered to be industry standard for software development nowadays, but surprisingly, there is currently a very limited amount of available solutions for hardware engineers. 

The basic idea of version control is to see all your design revisions listed in chronological order, roll back and forth changes to find out which design iteration works the best for you. Basically, you can use any software code repository like GitHub as version control for hardware design and store the project files from any CAD application there. However, if you try to do a “diff” (direct file comparison) of two versions of such file, you`ll probably find it a bit useless. Let us explain you why. 

Presumably, you wouldn't be able to recognise PCB traces from these lines of code of Eagle file:

<signal name="DCAN1_TX">
<contactref element="SIP" pad="E18"/>
<contactref element="U1" pad="1"/>
<wire x1="37.1602" y1="-45.4406" x2="44.1198" y2="-45.4406" width="0.1524" layer="16"/>
<wire x1="44.1198" y1="-45.4406" x2="44.6786" y2="-44.8818" width="0.1524" layer="16"/>
<wire x1="44.6786" y1="-44.8818" x2="44.6786" y2="-41.9608" width="0.1524" layer="16"/>
<via x="43.0784" y="-40.0812" extent="1-16" drill="0.254" diameter="0.4572"/>
<wire x1="43.0784" y1="-40.0812" x2="43.0784" y2="-40.3606" width="0.1524" layer="16"/>
<wire x1="43.0784" y1="-40.3606" x2="44.6786" y2="-41.9608" width="0.1524" layer="16"/>
<wire x1="43.0784" y1="-40.0812" x2="43.0784" y2="-33.4264" width="0.1524" layer="1"/>
<wire x1="43.0784" y1="-33.4264" x2="42.291" y2="-32.639" width="0.1524" layer="1"/>
<wire x1="37.1602" y1="-45.4406" x2="36.5506" y2="-44.831" width="0.1524" layer="16"/>
<wire x1="36.5506" y1="-44.831" x2="34.7726" y2="-44.831" width="0.1524" layer="16"/>
</signal>

Neither you would probably be able to easily compare any revisions of this code.

So another way you can do a “diff” is simply by opening file revisions in your CAD program and trying to spot any changes. But now if you look now at these two revisions, you’ll realise that it might take some time to notice all the differences:

pcb desgn img1

pcb design image 2

Instead, you can try to use a specific version control solution like CADLAB.io, designed specifically for hardware design. According to our estimates, it is roughly 10 times faster to find all the changes using CADLAB rather than just trying manually to spot them by routinely looking through the design revisions opened in your CAD software. You can try it to do yourself here and see how much time is it going to take for you. 

Using visual PCB layout comparison tools and interactive annotations in CADLAB, you can establish design review process. We believe that will help share knowledge within hardware teams and catch design bugs before ordering a PCB prototype. As the result, you save time and money that otherwise would be spent on production of potentially malfunctioning prototype.