With our previous project, Tomu, we wanted to bring tiny ARM computers to the masses. Tomu was designed to be simple for end-users to get started with, and powerful enough for some really interesting projects. With our new project, Fomu, we want to replicate the same ease-of-use, but with a more advanced FPGA board. Until recently, the technology just wasn’t there. Thanks to three key areas, we believe the world is ready to fill their USB ports with FPGAs.
First of all, until recently, there wasn’t a compelling FPGA to use. Sometimes, a single component makes an entire project possible. With Tomu, the EFM32HG part enabled the project to be self-contained and keep component count low. Similarly, Fomu simply wouldn’t be what it is without the iCE40UP5K. This part, which only became widely available in 2017, combines a reasonable number of logic cells and a generous amount of RAM, all in a small package size. Without this unique trifecta, Fomu could not exist.
Next, there is the simple act of putting everything together. Most PCBs have two layers. With Tomu, one of those layers is entirely taken up by USB pads, which means Tomu is essentially a one-layer board. Fomu has the same USB pads on one side and has to cram even more components onto the same amount of space as Tomu, which means we need to get fancy when fabricating the PCB. The cost and availability of these advanced techniques is only getting better. The end result will be a board that is tiny but mighty.
Finally, the tooling wasn’t there until recently. Yosys is a fantastic FPGA synthesis tool that will turn Verilog code into a series of LUTs, and Project IceStorm is a great documentation and tool resource for working with iCE40 parts, but there wasn’t a very good tool to go between them. Previous place-and-route projects ignored things like timing, which is critical for stability. With the release of nextpnr, the open source community now has a viable, compelling place-and-route tool that I’m confident will produce stable outputs.
Fomu is an exciting project. It will bring FPGAs to the masses, letting users choose just how far they want to go down the rabbit hole of system design. From using Fomu as a simple MicroPython shell, to developing operating systems, to writing in hardware descriptor languages directly, I’m excited to see what you do with Fomu.