PCB Assembly Services - Screaming Circuits: One Library Per Design


One Library Per Design

There was a time when I relied pretty heavily on the libraries that came with my CAD software. At first, I exclusively used what came with the package. Next, I started downloading libraries for new components from user contributed content. Then I started working for Screaming Circuits and learned how critical the component libraires are for the 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)

Back of CR1220 business card holder

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 have any reference between copper and 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

When you've made that last double check and are sure you haven't duplicated any of my mistakes, pop over to Screaming Circuits to get some get an online quote and order up some PCB assembly, .


"the library still called it a CR2032 footprint"
Darn. Who made that edit?

Post a comment

If you have a TypeKey or TypePad account, please Sign In.

« Weekend Wisdom - Is the age of Gerber over? | Main | Law of Conservation of Parts »