Keeping your parts libraries unique by design is a bit of a double entendre, but not a bad one. I used to rely pretty heavily on the libraries that come with my PCB design CAD software. At first, I only used what came with the package. Soon, though, I started looking through user contributed content to find footprints for new parts. Then I started working for Screaming Circuits and learned how critical the component libraries are for an automated PCB assembly operation.
With that, I started creating my own libraries for new components based on the dimensions in the component datasheet. I might also go to a legitimate source, like SnapEDA. Still, I relied on the library that came with the CAD software for common parts. At least I did that until this happened: (see if you can find the problem in the following image)
If something works and nothing changes with it, it is fine. However, when things change, as in with upgrades (or downgrades, as in this case), you can never be sure.
The board shown in the image is for an electronic business card holder that we sometimes give out at tradeshows. It’s a pretty simple design. Just an MCU, and accelerometer and a bunch of LEDs. The details aren’t important for this article. What is important is that, due to my casual attitude toward factory libraries, I made a last-minute fix in one area which caused a problem in another area.
My earlier runs of this board used a different size LED, so I swapped the footprints. I made the swap about five minutes before heading out the door to catch my flight to New York for a conference. I did a quick cursory check, saved the file, packed it into a zip, and sent it off to my manufacturing team.
Unbeknownst to me, the footprint for the coin cell battery clip I had used had been altered in the factory library between when I originally designed the PCB and when I made this tiny change. Updating the library brought that change onto my PCB and where I originally had a pair of CR2032 footprints, I now had a pair of CR1220 footprints (the library still called it a CR2032 footprint). No one caught the problem because they aren’t in my head. It looked to them like an intentional design change. They sent the files off to fab and ordered all of the components.
This, by the way, illustrates one of the limitations of the Gerber file format, (read more here). The Gerber doesn’t give any differentiation between copper for traces, fills or components. If I had used a newer intelligent CAD file format, we may have found this automatically before parts and boards were ordered instead of during a pre-build check out on the production floor.
I got a call from my motel lobby, sorted everything out and had my boards in time for the show despite my error. I also relearned a hard lesson about never assuming anything.
When I wrote about this error back in 2020, a commenter noted that he creates an archive of the design files, including the libraries, used a project. Each project has its own set of libraries that will not get unintentionally changed. That way, you won’t have a problem pop up in a seemingly unrelated part of the design like I did here. I’ve started following the same practice, as well as not getting complacent about design review after even (seemingly) minor changes.
Duane Benson
Is uniquely unique the same as very unique? Is “very unique” nonsensical?
When you’ve made that last double check and are sure you haven’t duplicated any of my mistakes, pop over to our PCB assembly quote page to see what it will cost to build your boards.