It's one thing to test FMC cards by hand (manually plugging them into a carrier), like the FMCOMMS3, but it is something else to program a high volume board like the Pluto SDR. Not only does the board need to be tested (performance metrics), but the flash needs to be programmed with the most recent files.
Doing this one board at a time is possible with a JTAG and USB cables, invoking Xilinx tools, and device firmware upgrade by hand, and clicking in all the right places, but this would extend test time to ~ 5 minutes a board. Simply testing 1000 boards would take 3.5 days, not including the time it takes to assembly the boards in the cases, and screwing on the locking nuts.
Before automation begins on anything, it's good to look at the cost/reward. On a low volume system, it can take as much time as you want to spend testing something, and it doesn't matter. Examining the excellent chart put together by xkcd, we can see that spending time on automation can be worth it since we are repeating the task many times.
Since we are trying to test ~500 a day, we need the test time to be under 1 minute per board. We would like the folks in the manufacturing factory only to be working on test a few days a month, so we can afford to spend some time on automation.
In order to do achieve our sub one minute test time, we attacked things from two angles; automation, and parallel test. This resulted in an automated quad site tester. This programs, and tests, and calibrates four boards at one time, to reduce operator time and interaction with the boards.
4 PCBs are placed into the unit, and 4 programmed, and calibrated devices come out.
A closer look at things, shows how things work. When boards are placed into the tester, they are aligned via metal posts where the screw holes are. This ensures they are inserted into the correct position in the tester. A “lid” closed, and feet attached to the lid hold the PCBs in place. Finally pogo pins are lifted up from the bottom, and make contact on the bottom of the PCB for things like JTAG, serial console, power supplies, and a few GPIOs for test purposes.
A Raspberry Pi 3 underneath the test harness controls the programming and test process, as well as the LEDS on the front panel to indicate to the tester if boards are good (green LED) or bad (red LED). This also prints out the sticker that is placed on the back of the box with the serial number and MAC addresses.
The large blue button is the shutdown button for all the boards. At the end of the day, simply press (and hold) the blue button will properly shutdown all Raspberry Pi 3 boards, and then simply unplug the test jig.
A signal generator beside the test jig must be programmed to 3.5 GHz (3,500,000,000 Hz) at +20dBm, which the Pluto uses to calibrate the on-board oscillator, as well as test the receiver path.
then the tests can start on some boards
Based on this, it should take less than 4 minutes to insert, program, test, calibrate, and remove 4 boards, thus achieving the less than 1 minute per board goal. Then it is a matter of:
and then ship it!
The details of what is happening is pretty simple.
Since a picture is worth 1000 words, … :)