It's Not Over Until the Jig is Up - Don't Forget This Key Part in Your Manufacturing Process
One of the often forgotten parts of the manufacturing process is the test jig. Too often, designers leave it up the contract manufacturer to specify and or build test systems. While these folks want to make you happy, they also want to get the product out the door as quickly as possible so that they can turn the line over to the next product. If some units fail in the field, well, not exactly their problem. When we design products we try to design a test system or test jig alongside it. We also design the product to be tested.
So what is a test jig? It's a mechanical/electronic apparatus(s) that test your product at various levels. At the lowest level, it tests the PCBA at it comes back from having the components soldered on to make sure it's 100% functional and operates to your design specification.
Here's a couple of examples. The first is a test jig that flashes the firmware and then tests each functional part of the PCBA. The operator just presses Green for Go and the front panel LED(s) indicates success or failure. If a PCBA passes the test, it's assigned a serial number in its flash memory and an attached printer prints stickers to be attached to the bag the PCBA goes into and stickers to be attached later to the box and manual in final assembly. If it fails, a sticker is printed with the cause of the fail. The test jig also emails us the results of every test so we have records of how it's going on the factory floor.
The second example is a "dumb" subassembly tester. If the LED lights green, it's good to go. No LED, something is wrong and needs to be examined/reworked.
So how do you design a product to be tested?
-Test is the Point
Sometimes designers have a tendency to throw test points down without thinking through what really needs to be tested and at what level. Reminds me of the time I jokily told an engineer to "sprinkle" decoupling capacitors throughout the design. You can imagine how sprinkle was interpreted. So think levels. Think of your design in terms of modules or subsystems and what you would test at each point. Think also about likelihood of failure and focus on those. For example, if your device has LEDs on its PCBA, do you really need to have test points for driving the LEDS (low likelihood of failure) or do you need to make sure the LEDS are installed properly and actually light up? While you can potentially test current draw to determine if it's lit, it might be more suited to a visual inspection or optical one.
Look at your design like a block diagram and plan test points at each major function block. Don't forget the obvious either. Most of our test jigs, the first thing they do is measure the current draw and rejects a unit if it draws over limit. Time is money on the factory floor, so we don't need a test jig to tell us exactly what is wrong, we only need to have it tell us Go - No Go.
-Flashing
Most processor based products will be flashed with your firmware on the factory floor in situ on the PCBA. Rarely anymore are chips programmed separately and then soldered to the PCB. Providing a mechanical programing interface on the PCB is essential and you need something easy to use (read mindless) and easy to integrate into a test jig. Don't assume your contract manufacturer has a system or even has the proper programmer or procedure. You will need to take responsibility here. Mechanically, I'm a real fan of Tag-Connect <www.tag-connect.com>. Their solutions take minimal board space and are mechanically easy to add to a test jig.
-Testing Firmware or Firm Firmware
There's two approaches to take here. One is to load firmware that provides the testing, if the unit passes all of the tests, then the actual firmware gets loaded. The other is to build into your firmware test routines that get executed by the test jig. I like the latter for two reasons. One is making sure that no unit leaves the floor with the wrong firmware loaded (should be caught at final test, however...) and the second reason is that building test routines into the firmware helps make sure that the firmware itself is adequately tested. Communications between the PCBA and the jig can either be done via JTAG or similar (which you might use for flash anyways) or bringing out serial lines that the jig can use to communicate with the PCBA.
-Building a Test Jig
There are lots of mechanical challenges to building jigs, making . For the electronics, our "smart" jigs are usually powered by a Raspberry Pi Zero W and we write our test scripts in Python. We often flash directly from the Pi using OpenOCD. We make them internet connected to not only be able to send us test reports, bit also so we can access them remotely and either update the test software or load new firmware to be flashed onto the PCBAs being tested. For the operator, you need to make it was easy and mindless as possible with color with as few things as possible to have to do/press/watch. It can be mind numbing testing PCBAs hundreds or thousands of PCBAs all day. One factory owner let us add a simple game that came up every few hundreds boards just to keep the operator engaged and we gave out prizes for the best score.
*Post contributed by Scott Shwarts