SymbiFlow aims to push FPGAs towards more widespread adoption by optimising and automating FPGA development workflows with a set of pluggable open source tools.
Its goal is to become a complete FOSS toolchain that is:
To understand how SymbiFlow works, it is best to start with an overview of
the general EDA tooling ecosystem and then proceed to see what
the SymbiFlow project consists of.
For both ASIC- and FPGA-oriented EDA tooling, there are three major areas:
While there are a number of open hardware description languages, such as Verilog, VHDL, Migen and Chisel, the frontend and backend tooling has been lacking established standard, vendor-neutral solutions. SymbiFlow focuses on filling this gap.
To become a complete FOSS FPGA toolchain, SymbiFlow needs a number of tools and projects to be in place to provide an end-to-end flow. Thus, SymbiFlow serves as an umbrella framework for several activities, the central of which focuses on the creation of FPGA SymbiFlow Architecture Definitions, i.e. documentation of how specific FPGAs work internally.
Those definitions and serve as input to backend tools like nextpnr and Verilog to Routing, and frontend tools like Yosys. They are created within separate collaborating projects targeting different FPGAs - Project X-Ray for Xilinx 7-Series, Project IceStorm for Lattice iCE40 and Project Trellis for Lattice ECP5 FPGAs.
Project Icestorm | Project Trellis | Project X-Ray | QuickLogic Database | |
Basic Tiles:
|
|
|
|
|
Advanced Tiles:
|
|
|
|
|
Routing:
|
|
|
|
|
SymbiFlow is a collaborative project and we welcome your contributions. The code is available on GitHub, while the HTML documentation is available on Read The Docs.