Digi-Key have been producing YouTube videos for a number of years now, and if you weren’t aware, they’re definitely worthy of some viewing time. The playlist we’re highlighting here is a pretty good introduction to FPGAs, specifically those supported by open source tools, with low cost hardware. If you’ve always wanted to get into hacking FPGA platforms, but don’t know where to start, this is going to be a big help. After first covering what an FPGA is and is not, and why you want to use one, [Shawn Hymel] dives in to the toolchain.
We’re really lucky that the bitstream for the Lattice iCE40 was reverse engineered by the super talented Claire (née Clifford) Wolf (AMP hour interview) which enabled the project ICEstorm toolchain to be created. Leveraging Yosys for synthesis and logic mapping, Icarus verilog coupled with GTKwave for simulation, netpnr for place and route and finally the project ICEstorm bitstream tools for packing into iCE40 format and loading onto the hardware. The whole toolchain flow is managed by APIO for simplicity, that is, provided your FPGA board is supported!
Of course, [Shawn] is using the low cost (for an FPGA) ICEStick by Lattice for this tutorial series, and they’re currently hard to get (you know why by now!) but, there are many other boards you could use. If you want to play with applications coupling a ARM micro to an FPGA, then the excellent BlackIce Mx is an option, but there are many other boards now with an decent micro nestled next to an FPGA and a few peripherals for convenience.
We should mention here, that project ICEstorm and the iCE40 is not the only show in town. Project Trellis has had our eye for a while, which targets the more complex Lattice ECP5 device. Yosys and friends do support more architectures, but the available flows usually require at least some vendor tool support at this time (looking straight at you, Xilinx) but as more devices get decoded, the open source tools will grow, and we will bring you that news!
What’s nice about this Digi-Key YT series, is that it doesn’t just cover the basic toolchain flow, then drop you in at the deep end of a big learning curve. There are videos covering subjects such as finite state machines (FSMs), test-benching and simulation, using embedded (block) memories, PLLs, harder subjects like dealing with metastability and clock-domain crossing (OK, he covers one technique – there’s more than one way to skin that particular cat) before finally looking at soft cores like the RISC-V. Lots to learn, and pretty well executed if you ask us! A Github version is available, for those who can’t stand watching the videos!
Thanks to [Mark] for the tip!
I’ve known one of the FAEs at Lattice since… well ever since I was born. Pretty sure their toolchain is already largely free, only having to pay for some IP blocks if you need them. They have quite a few nice offerings for when you need a lower end FPGA. I haven’t had a chance to use them in a design yet. All of the FPGAs I’ve used in hardware designs at work have been the large (and expensive) DSP heavy hitters.
Yes that is the case. However, I think that such bitstream reversing projects are important, as they get the ball rolling on unlocking these devices in general and starting with a small target like the iCE40 is the perfect way to start and build the ecosystem. Lattice are very cool about it, even adjusting their EULA to allow it. Other companies, not so much. And yes, I know the iCE40 was not the first device to get the bitstream decoding at least partly done, but it is important from an accessibility point of view due to how easy the devices are to use.
With AMD’s purchase of Xilinx maybe FPGAs will be more accessible.
https://www.amd.com/en/press-releases/2022-02-14-amd-completes-acquisition-xilinx
Free FPGAs
https://github.com/FPGAwars
https://github.com/fpgawars/icestudio
https://github.com/FPGAwars/Alhambra-II-FPGA/wiki
https://github.com/fpgawars/icezum/wiki
https://github.com/fpgawars/icestudio
#FPGAwars
Yeah! I was stoked to see Shawn using IceStudio in these demos as well. I need to carve out some time to play around with it again.
Sylvain Munaut managed to port Linux to the ICE40 with some 32MB RAM modules:
https://www.youtube.com/watch?v=d-STNmJ0zrI
https://github.com/smunaut/iCE40linux
A master.
Symbiflow appears to be working on trying to create a unified multi-target open source toolchain:
https://symbiflow.github.io/ – They appear to have achieved a huge amount, but their documentation is woefully inconsistent and/or difficult to navigate:
For example their Project Status image doesn’t appear to have changed in years, and for some things indicates “partial” support present. What is “partial”? The image isn’t clickable so that someone can get more detail as to what that means.
Project X-Ray states in https://github.com/SymbiFlow/prjxray:
“Current the focus has been on the Artix-7 50T part. This structure is common between all footprints of the 15T, 35T and 50T varieties.
We have also started experimenting with the Kintex-7 parts.”
But their “supported boards” contains Zynq products not even mentioned in the X-Ray summary?
Also their “supported boards” has at least one severely outdated link: https://radiona.org/new-fpga-board-ulx3s/ – that page, nor Symbiflow, have been updated to point to https://www.crowdsupply.com/radiona/ulx3s
Then there’s the TinyFPGA Ex listed as a supported board, despite that product not yet existing outside of a few prototypes (and the project appearing to be dead) – https://www.crowdsupply.com/tinyfpga/tinyfpga-ex – has been “coming soon” with no updates in nearly three years.
I personally found https://www.fpga4fun.com tons of help after finding out at work that my next task was the program stuff on an FPGA, which moments prior just heard of it’s existence.
The site seems to have changed a bit since last I used it, but hopefully it can still be a useful reference or starting point for some.