Hardware version control using visual DIFF
posted Oct 14th 2011 11:01am by Mike Szczysfiled under: software hacks

As the Open Source Hardware movement gathers steam, it has become clear that the tools to work collaboratively on hardware are in the dark ages when compared with slick frameworks like Git used to work on software projects. We’ve read a fair amount about this lately, but the idea of visual difference generation for PCB layout is one of the better proposals we’ve seen.
Of course the big difference when it comes to version control is that software is text, but hardware is graphic and only represented by text for the computer to use. It’s easy to use the ‘diff’ command to show you what text is out and what text is in, but that doesn’t translate to a schematic. [Windell] is using command-line utilities to produce a schematic that colors changes differently for easy visual detection. This means exporting before and after schematics as PDF files or images, then using ImageMagick to process them. He also points out that there’s a package out there called DiffPDF that will let you compare differences in PDF files automatically.
Check out what he has to say in his article, and make sure you get to the bottom where he suggests ways you can help. We agree that it shouldn’t be hard to roll visual diff functionality into open source software packages used for hardware design, and to integrate that into version control systems. It’ll just take some time for the concept to proliferate.






i guess i’m a little confused – if they are concerned with actual HW changes (pin swaps, etc) wouldn’t a netlist diff utility be better? this is what my old firm used to do – before even talking about the PCB, we’d run 2 netlists through a textbased diff’er that would spit out stuff like this:
PIN U32.4 moved from “GND” to “+5V”
PIN U32.1 moved from “GND” to “RS232_OUT”
I understand the need for PCB diff’ing once you get to the hardware stage, but it sounds like we’re talking actual netlist changes here, in which case i’d think comparing the boards is not exactly the most efficient way to go about it.