Designers often need to perform Boolean operations on two Gerber (RS274X) files. These include AND, OR and XOR operations between two files. When the board layout is large and complex and the changes are small, it can be very difficult to identify all of the differences.
Consider the two Gerber files for the printed circuit board at right. These two files are "almost" identical but have slight differences; the same design requirements were used but produced on two different PCB layout systems. Can you see the differences? One is obvious to the naked eye (when viewing the Gerbers on a CAM station ...) but the others are not so obvious.
Another questions is: if there are differences are they crucial? Slight differences in the ground plane fill might not affect the circuit operation but a missing or extra pad or trace would be catastrophic. GBRUTIL makes checking the differences in context against the original files much more straightforward.
Input 1 - first Gerber file to compare.
Input 2 - second Gerber file to compare.
As an example, lets consider the case where GBRUtil is used to compare two files by performing a vector boolean operation known as exclusive OR (XOR). This operation is well known in the IC world where it is often used to compare two data layers or to generate a layer from the difference between two layers. The results of the XOR operation is another Gerber file. If the two files are exactly the same, the XOR file will be empty. Any difference between the two files will produce figures in the XOR file and you can examine the XOR file to determine the nature of the differences and where they occur.
The XOR file produced by GBRUTIL
Once the XOR file has been produced, it can be "overlayed" on either the input 1 or input 2 file to show the differences in context. GBRUTIL uses GBRVU to overlay the XOR layer on top of input 2 and it is now clear that the pad size differs slightly in the two designers.
Input 2 overlaid with the XOR results shows the differences in context.