Fomu is an FPGA that fits in your USB port. This repository contains files necessary for mass production, including building the final factory test program, and the software that runs on the test jig.
The jig hardware is a bespoke device that the factory produces. These are very common in consumer electronics, and can be sourced from most any factory. We provide them a gerber + drill file, and tell them which test points to monitor.
The factory creates a test jig with 2.54mm cables, each labeled. These get connected to a Raspberry Pi, and driver software is loaded onto it.
Finally, this driver software loads firmware and test programs onto the Fomu device, and can give a Pass/Fail report.
Download the Fomu Rpi Image and write it onto an SD card. Then follow the instructions in the jig directory.
To build the test bitstream, go into the hw directory and run factory-bitstream.py
. You’ll need to specify a board revision, as well as a boot source. You may also have better luck with the HeAP
placer:
$ python3 factory-bitstream.py --boot-source bios --revision evt --placer heap
This generates build/gateware/top.bin
, which you can load onto a target board via fomu-flash
.
To develop the test software, it can be handy to build a dummy bitstream and then replace the target program at runtime. To do this, replace --boot-source bios with --boot-source rand:
$ python3 factory-bitstream.py --boot-source rand --revision evt --placer heap
Then, copy build/gateware/top.bin
to your target Raspberry Pi as usual.
Next, go into the sw directory and build the program by typing "make". Copy the resulting factory-test.bin
over.
Finally, log on to the Raspberry Pi and load the bitstream into the target Fomu, but replace the random program code with the contents of factory-test.bin
:
$ fomu-flash -f top.bin -l factory-test.bin