Symbiflow - The GCC of FPGAs

For years I wanted to start learning how to do FPGA programming but only once a fully functional open source FPGA toolchain becomes available.

As a professional software developer focusing on open source, I have been spoiled with good and widely supported open source toolchains like GCC for all C and C++ development etc. Why would I expect any different from the FPGA world?

However, in the world of FPGA development, things look quite different. All the FPGA chips from the major FPGA vendors are only supported by vendor proprietary toolchains.

Well, that is until now!

Finally, the Symbiflow project brings an open source toolchain available for programming (synthezising) FPGAs, including some of the most popular Xilinx FPGAs which dominate the market.

The Symbiflow project has been around for some years but it is only within the last two years or so it has really been picking up speed with many new contributors and successful reverse engineering of some of the most popular FPGAs.

Toolchain Flow

First you write your FGPA design in a HDL (Hardware Description Language) such as Verilog. You then input that to YoSys which synthesizes a FPGA design from your Verilog code and writes it in a JSON formatted netlist file. Nextpnr places and routes the netlist and produces a .fasm (FPGA Assembly) file. This file is then translate by the Open FPGA Assembler to the final binary bitstream file for programming the FPGA.

Toolchain Flow

As you may notice there are many parts and ways to combine these in the Symbiflow toolchain. For some it may still make sense to use some of the closed source parts of the toolchain because it may result in a higher quality bitstream that is able to run stable at higher frequencies or less power. However, that being said, with the kind of support Symbiflow is gaining and the growing interest from research institutions, I expect the quality of the open source parts will grow to surpass that of the closed source ones.

Latest Update

For latest update on the status of the Symbiflow take a look at this status update given by one of the maintainers of Symbiflow, Timothy Ansell: