Now, one way to look at a PCB is to generate gerbers (the standard "plotter format" for PCBs), and use one of the gerber viewers to look at those. This has the advantage of simplifying the "picture", AND most gerber viewers will load up multiple layers of a PCB so that you can see them all together. I realized that it would also let you display multiple copies of the same layer, so that you could "flip" through them and (hopefully) notice changes. In fact, the gerber viewer I use (gerbv, an open-source utility that runs on Windows, Macs, and Linuxes), has a display mode where the layer are displayed with their colors XORed together. (In theory, this is an option to allow you to look at multiple layers at once, although in reality how well it works depends on the actual bit patterns of the colors used for each layer.)
However, if you DO pick your layer colors carefully, you can display two (or more) layers that are almost the same, and have the differences HIGHLIGHTED for you! This seemed close to ideal for visualizing the changes in a PCB design. Well, for small changes, anyway. We'll have to see how the community feels about its usefulness.
All it needed was some sort of script that would go through all the backup files, generate appropriate gerber files, and then load up the gerber viewer having given each file an appropriate set of color, color mixing mode, and other display parameters. It seems to be somewhat useful. Here are some examples of how it works.
Step 1: The Original PCB and Its Changes
As examples of the sort of think I might do in the course of final editing of a PCB, I increased the width of some tracks, and then switched one of the tiny SMT LEDs that I don't have for a larger SMT LED that I do have. This over a period of several edit sessions, so several backup files are created. In the next step we'll see what is done to them, and what the results look like.
Step 2: Running the Script
A future version of this utility might run within an EAGLE ULP. It looks like it would have somwhat similar capabilities, and have a bit of internal knowledge about the EAGLE environment that could make the ULP be more OS-independent, which would be a good thing. Meanwhile, early adopters might want to play with the bash script to see if it looks useful in concept.
The script does the following:
Inputs: board or schematic file name, followed by a list of layers:
eagle_backview ~/Documents/EagleProjects/Arduino-Pro-v12.brd top pads vias
From this, the script figures out the directory where the backups would live, and that this is a .BRD file. And it creates a tmp directory.
For each backup file found, a renamed copy of that is moved into the tmp directory and has the specified layers converted to a gerber file of appropriate name (using EAGLE itself) The script keeps track of the oldest backup seen as well. And of course we make a similar gerber of the newest version of the file (the one currently called .BRD)
Next we build up a gerbv project file that references all of the gerbers we've produced, putting each one on a different layer, with a specially chosen color. The current .BRD layer is 192R+15G. The oldest backup is 192R+32G. Any intermediate version is 192R+16G.
The color mixing mode is set to XOR, and the oldest and newest layers are set to be visible at the same time.
Next, we see what this looks like!
Step 3: Looking at the Initial Results
Note that if you've made major changes like shifting the PCB in its frame, it's going to look like crap. There's no magic to make the two gerbers overlap the way they need to be be most useful; the PCBs have to have essentially the same offsets from the origin. (changed titles can mess this up too.)
Of course, the other backups are there too...
Step 4: Traveling Backward From Latest
It's just a matter of checking and unchecking the checkboxes that make layers visible.
Note that displaying more than two layers at a time will give odd results that are probably not useful. All the red is present for any odd number of layers, for example.
Step 5: Traveling Forward From Oldest
Step 6: Viewing Consecutive Changes
Note that since the intermediate levels have the same "Green" value, the "same" parts will not be shown at all when XORing adjacent intermediate versions. Changed areas are still bright red. I think this is the least useful comparison mode, so I didn't spend a lot of time searching for a solution that would improve this.