The world of FPGAs has traditionally been full of closed-source mysteries: designs have long been crafted using expensive, multi-gigabyte vendor tools, and the inner working of vendors' hardware and software have remained closely guarded secrets.

This changed when Claire Wolf created her IceStorm project, which reverse engineered Lattice's low-cost iCE40 FPGAs, and led to an expansive ecosystem for creating FPGA designs using entirely open-source tools. Today, open-source toolchains exist targeting a handful of FPGA families; and a huge swathe of compatible FPGA hardware exists.

In this series, I'll 'show off' a variety of hardware you can use to develop your own designs using open-toolchains– and hopefully help people to get a feel for the ecosystem.

This first post will explore the three major FPGA families with open toolchains; later posts will explore a variety of FPGA boards.

Lattice's official iCE40 breakout board

Lattice iCE40 LP/HX

Lattice's iCE40 LP and HX families – the "original iCE40s" – were the first FPGAs targeted by the IceStorm tools; and are the most common open-toolchain FPGA around. These designs were intended by Lattice to fill the "low-cost, low-complexity, and low-power" markets – but many of these FPGAs are extremely capable.

These iCE40s come in two series: a Low-Power series, the iCE40LP, and a high-performance series, the iCE40HX. Nearly all of the open-toolchain 'original iCE40' boards feature FPGAs from the HX series, so I'll focus on those, here.

What you can expect: Enough logic space for a variety of embedded-hardware tasks, and plenty of moderately-high-speed I/O,  but a relatively small amount of on-board 'block' memory.

What might steer you towards an iCE40 HX:

  • If you're looking for an FPGA that's easily hand-solderable, the iCE40 HXs come in a super-friendly TQFP package.
  • If you're looking for a cheap FPGA board with a lot of I/O, lots of nice HX options exist, like the IcoBoard Gamma or the pictured Lattice HX8K Breakout.

What might steer you towards another family:

  • If you're looking to host a soft-CPU, the iCE40 UltraPlus series features significantly more RAM; making them ideal for low-cost soft-CPU experiments.
  • If you're looking for higher-end FPGA features (very fast I/O, larger/faster FPGA fabric, SerDes options), you might want to look at the Lattice ECP5.
iCEBreaker iCE40UP5K development board; photo credit Piotr Esden-Tempski

Lattice iCE40 UltraPlus

The iCE40 UltraPlus series is Lattice's newest iCE40 offering. These boards "run slower" than the HX series, and offer comparably fewer I/O, but feature more on-board RAM, logic targeted towards DSP, and a variety of ready-to-go "hard IP" that simplifies implementing fast I2C/SPI, and that helps with some graphics/imaging applications.

While boards with the newer UltraPlus FPGAs are less common, the boards that exist seem extremely capable – and there's a lot of community focus on these devices.

What you can expect: Enough logic space for a variety of embedded tasks; and enough memory to build simple soft-CPU "system-on-a-chip"s, but slower fabric and fewer moderately-high-speed I/O.

What might steer you towards an iCE40 UltraPlus:

  • If you're looking to implement a system with both software and gateware components, a the iCE40 UltraPlus is perfect for developing designs with simple soft-processors. (They can also be the perfect environment for playing with embedded RISC-Vs!)
  • If you need a quickly-accessible RAM buffer, the UltraPlus' series internal block RAM makes them a natural choice.
  • If you want an extremely tiny FPGA board, the iCE40 comes in packages that enable extremely small form-factors.

What might steer you towards another FPGA:

  • The UltraPlus's internal logic "fabric" is slower than its siblings in the HX series – which often means that the same design will run at a lower maximum frequency. Designs that need fast logic more than they need buffer space may do better on an HX variant.
  • If you're looking for more than a handful of I/O, you might be better served by an iCE40 HX or an ECP5. UltraPlus families tend towards smaller packages and fewer accessible I/O – think "less than 40 I/O".
  • If you're looking to create a more complex soft-CPU "system-on-a-chip", you might favor an ECP5 – when combined with external DRAM, ECP5 chips are well-tuned to more complex applications; such as running Linux-on-RISC-V.
the Colorlight 5A-57B, a low-cost LED-panel-driver that happens to feature an ECP5

Lattice ECP5

The Lattice ECP5 is a low-cost, higher-performance FPGA family. These FGPAs are significantly more capable than the iCE40 family, but relatively few development boards featuring these FPGAs have made their way to market; and these development boards tend to be more expensive.

Support for the ECP5 FPGA is more recent; and is thanks to the Project Trellis reverse-engineering effort spearheaded by Dave Shah.

What you can expect: FPGAs designed for higher-throughput applications; with an abundance of logic space and I/O, at a higher price tag. When accompanied by a DRAM/PSRAM, these FPGAs are excellent for more complex soft-CPU tasks, such as running Linux.

What might steer you towards an ECP5:

  • If you're looking for high I/O speeds (hundreds of MHz+), the ECP5 is very capable – and advanced I/O features and optional Serial/Deserializer (SerDes) engines make very-high-speed I/O possible.
  • If you're looking for lots of logic room, the ECP5s can squeeze significantly more logic into a single FPGA than any of the iCE40s. The number of logic elements is only a rough indicator of FPGA 'space', but still illustrates the size difference – the HX family maxes out at 8K elements; the UltraPlus at 5K; and the ECP5 at a whopping 85K.

What might steer you towards another FPGA:

  • There are relatively few ECP5 boards available – as of writing, only the Lattice evaluation boards are steadily available. Several commercial products also offer ECP5 environments suitable for some projects; and several general-purpose open-source boards are currently in crowdsourcing. This is expected to change soon; as more of those boards move out of crowdsourcing.
  • ECP5 FPGAs are only available in larger BGA packages, which may make them harder to use in your own designs; and the FPGAs typically require more support hardware than a simpler iCE40.
  • There's definitely a trend towards higher-prices on ECP5 boards – while you can purchase a iCE40 HX or UltraPlus board for as little as $20 USD, you can expect to pay $100 or more for a general-purpose ECP5 development board.
Digilent's Basys3 board; image credit Digilent Inc

Honorable Mention: Xilinx 7-series

The Xilinx 7-series don't quite have an mature open-source toolchain yet – but the Project X-Ray reverse-engineering effort is getting closer every day. Their open-source flow is currently capable of routing designs using the FPGA's basic logic, but the bitstream format (and corresponding hardware) still needs more reverse-engineering to enable more FPGA features, and the toolchain is not yet mature.

Still, the future is looking bright for 7-series inclusion; and an open-toolchain for these chips would bring higher-end FPGAs under the open-toolchain umbrella. It's my hope that before too long, this post can end in a comparison between the 7-series and the Lattice offerings.