SymbiFlow
Finally the GCC of FPGAs!
Questions for you!
Who knows �what an FPGA is?
Who has used
an FPGA?
Who has used
an Lattice FPGA?
Who has used
an Xilinx FPGA?
Who has heard
of SymbiFlow?
Who has heard
of Project Icestorm?
What is an FPGA?
FPGAs convert �hardware into software
FPGAs come in all sizes!
What is SymbiFlow?
An introduction
SymbiFlow is people!
We need you!
SymbiFlow!
Compare� software toolchain...
Software Tooling
Compiler
Java
Software
C++
Software
Ada
Software
Software Tooling
Frontend
+
Generic�Optimization
x86 Backend
ARM Backend
MIPS Backend
Java
Software
C++
Software
Ada
Software
C++ Tooling for x86
Frontend
+
Generic�Optimization
x86 Backend
ARM Backend
MIPS Backend
Java
Software
C++�Software
Ada�Software
C++ Tooling for x86
Java
Software
C++ Software
Ada�Software
Frontend +
Generic�Optimization
x86 Backend
ARM Backend
MIPS Backend
C++
file
C++
file
binary
asm
Compile
EDA Tooling Ecosystem
FPGA Tools
ASIC Tools
Verification, Testing, �& Simulation
Synthesis
Tools
VHDL
Hardware
Verilog
Hardware
SystemVerilog
Hardware
Verilog Tooling for FPGAs
Verilog Hardware
Synthesis
Tools
FPGA Backend
Verilog
file
Verilog
file
binary
fasm
Compile
ASIC Tools
VHDL
Hardware
SystemVerilog
Hardware
Verification, Testing, �& Simulation
Verilog Tooling for FPGAs
SymbiFlow toolchain!
Verilog Hardware
Synthesis
Tools
FPGA Backend
MIPS Backend
Verilog
file
Verilog
file
binary
fasm
Compile
ASIC Tools
VHDL
Hardware
SystemVerilog
Hardware
"GCC" for FPGAs!
What does "GCC" mean?
Not C/C++ → Verilog
What does "GCC" mean?
Not C/C++ → Verilog
SymbiFlow
Toolsuite
How did we�get here?
First Project IceStorm
Synthesis
FPGA Tools
Verification, Testing, �& Simulation
Yosys
arachne-pnr
Project�IceStorm
Then Project X-Ray
Synthesis
FPGA Tools
Verification, Testing, �& Simulation
Yosys
Project�X-Ray
Project�IceStorm
arachne-pnr
Started SymbiFlow
Synthesis
FPGA Tools
Verification, Testing, �& Simulation
Yosys
Project�X-Ray
Project�IceStorm
arachne-pnr
SymbiFlow Launch - 34C3!
Synthesis
FPGA Tools
Verification, Testing, �& Simulation
Verilog To Routing
Yosys
Project�X-Ray
Project�IceStorm
Architecture Definitions
arachne-pnr
Inspires Project Trellis
Synthesis
FPGA Tools
Verification, Testing, �& Simulation
Verilog To Routing
Yosys
Project�X-Ray
Project�Trellis
Project�IceStorm
Architecture Definitions
arachne-pnr
Launches nextpnr
Synthesis
FPGA Tools
Verification, Testing, �& Simulation
Verilog To Routing
nextpnr
Project�X-Ray
Project�Trellis
Architecture Definitions
Yosys
Project�IceStorm
SymbiFlow Toolsuite
Synthesis
FPGA Tools
Verification, Testing, �& Simulation
Verilog To Routing
nextpnr
Project�X-Ray
Project�Trellis
Architecture Definitions
Yosys
Project�IceStorm
Parts of
SymbiFlow
SymbiFlow Toolsuite
Synthesis
FPGA Tools
Verification, Testing, �& Simulation
Verilog To Routing
nextpnr
Project�X-Ray
Project�Trellis
Architecture Definitions
Yosys
Project�IceStorm
Bitstream Docs
Synthesis
FPGA Tools
Verification, Testing, �& Simulation
Verilog To Routing
nextpnr
Project�X-Ray
Project�Trellis
Architecture Definitions
Yosys
Project�IceStorm
Place and Route
Synthesis
FPGA Tools
Verification, Testing, �& Simulation
Verilog To Routing
nextpnr
Project�X-Ray
Project�Trellis
Architecture Definitions
Yosys
Project�IceStorm
Synthesis & Mapping
Synthesis
FPGA Tools
Verification, Testing, �& Simulation
Verilog To Routing
nextpnr
Project�X-Ray
Project�Trellis
Architecture Definitions
Yosys
Project�IceStorm
Architecture Defs
Synthesis
FPGA Tools
Verification, Testing, �& Simulation
Verilog To Routing
nextpnr
Project�X-Ray
Project�Trellis
Architecture Definitions
Yosys
Project�IceStorm
Related to Bitstream
Synthesis
FPGA Tools
Verification, Testing, �& Simulation
Verilog To Routing
nextpnr
Project�X-Ray
Project�Trellis
Architecture Definitions
Yosys
Project�IceStorm
Feeds Place & Route
Synthesis
FPGA Tools
Verification, Testing, �& Simulation
Verilog To Routing
nextpnr
Project�X-Ray
Project�Trellis
Architecture Definitions
Yosys
Project�IceStorm
Feeds Mapping (?)
Synthesis
FPGA Tools
Verification, Testing, �& Simulation
Verilog To Routing
nextpnr
Project�X-Ray
Project�Trellis
Architecture Definitions
Yosys
Project�IceStorm
Verilog Simulation
Synthesis
FPGA Tools
Verification, Testing, �& Simulation
Verilog To Routing
nextpnr
Project�X-Ray
Project�Trellis
Architecture Definitions
Yosys
Project�IceStorm
Executable Docs
Synthesis
FPGA Tools
Verification, Testing, �& Simulation
Verilog To Routing
nextpnr
Project�X-Ray
Project�Trellis
Architecture Definitions
Yosys
Project�IceStorm
SymbiFlow
Status
SymbiFlow Toolsuite
Synthesis
FPGA Tools
Verification, Testing, �& Simulation
Verilog To Routing
nextpnr
Project�X-Ray
Project�Trellis
Architecture Definitions
Yosys
Project�IceStorm
Bitstream Docs
Synthesis
FPGA Tools
Verification, Testing, �& Simulation
Verilog To Routing
nextpnr
Project�X-Ray
Project�Trellis
Architecture Definitions
Yosys
Project�IceStorm
Status
bitstream docs
Bitstream Summary
Project�X-Ray
Project�Trellis
Project�IceStorm
More?
Advanced Tiles
- DSP
- Hard Blocks
- Clock Tiles
- IO Tiles
Routing
- Logic
- Clock
Basic Tiles
- Logic
- Block RAM
☑�☑ ☑
☑�☑ ☑
☑
☑ ☑
☑
☑ ☑ ☑ ☑
☑
☒ ☒ ☒ ☑
☑
☑ ☑ ☑ ☑
☑
☑ ☑
☒
☑ ☒
☑
☑ ☑
Lattice iCE40
Project IceStorm
Supported Devices
Future Supported?
Documented Tiles Types
Current Documentation
Still needed
Database - www.clifford.at/icestorm
Documentation - www.clifford.at/icestorm
Source Code - github.com/cliffordwolf/icestorm
Lattice ECP5
Project Trellis
Supported Devices
Future?
Documented Tiles Types
Current Documentation
Still needed
Database - symbiflow.github.io/prjtrellis-db
Documentation - prjtrellis.readthedocs.org
Source Code - github.com/SymbiFlow/prjtrellis
Mailing List - lists.librecores.org/listinfo/prjtrellis
Lattice ECP5
Project Trellis
Supported Devices
Future?
Documented Tiles Types
Current Documentation
Still needed
Database - symbiflow.github.io/prjtrellis-db
Documentation - prjtrellis.readthedocs.org
Source Code - github.com/SymbiFlow/prjtrellis
Mailing List - lists.librecores.org/listinfo/prjtrellis
Xilinx Series 7
Project X-Ray
Supported Devices
Future?
Documented Tiles Types
Full
Partial
Need help!
Current Documentation
Still needed
Database - symbiflow.github.io/prjxray-db
Documentation - prjxray.readthedocs.org
Source Code - github.com/SymbiFlow/prjxray
Mailing List - lists.librecores.org/listinfo/prjxray
Artix 7 50T
Xilinx Series 7
Project X-Ray
Artix 7 50T
Xilinx Series 7
Project X-Ray
Xilinx Series 7
Project X-Ray
Name | Unused | Unknown | Known | Total | ||
CLBLL_l | 58 | 2.51% | 0 | 2246 | 100.00% | 2304 |
CLBLL_r | 58 | 2.51% | 0 | 2246 | 100.00% | 2304 |
CLBLM_l | 46 | 2.51% | 0 | 2258 | 100.00% | 2304 |
CLBLM_r | 46 | 2.51% | 0 | 2258 | 100.00% | 2304 |
HCLK_l | 580 | 50.35% | 0 | 572 | 100.00% | 1152 |
HCLK_r | 580 | 50.35% | 0 | 572 | 100.00% | 1152 |
Slice L (Logic)
Slice M (Logic + Distributed Memory)
Bitstream Summary
Project�X-Ray
Project�Trellis
Project�IceStorm
More?
Advanced Tiles
- DSP
- Hard Blocks
- Clock Tiles
- IO Tiles
Routing
- Logic
- Clock
Basic Tiles
- Logic
- Block RAM
☑�☑ ☑
☑�☑ ☑
☑
☑ ☑
☑
☑ ☑ ☑ ☑
☑
☒ ☒ ☒ ☑
☑
☑ ☑ ☑ ☑
☑
☑ ☑
☒
☑ ☒
☑
☑ ☑
Xilinx xc20xx
Project 2064
Supported Devices
Documented Tiles Types
Full
Current Documentation
Still needed
Database - TBD
Documentation - TBD
Source Code - github.com/JohnDMcMaster/project2064
Mailing List - lists.librecores.org/listinfo/symbiflow
"The XC 2064 logic cell array is available
now at a unit price of $55 to $80 …
The Xilinx XACT development system is
available now at a price of $12,000."
Bitstream Summary
☑�☑ ☑
☑�☑ ☑
☑
☑ ☑
☑
☑ ☑ ☑ ☑
☑
☒ ☒ ☒ ☑
☑
☑ ☑ ☑ ☑
☑
☑ ☑
☒
☑ ☒
☑
☑ ☑
☑�☑ ☑
☑
☑ ☑ ☑ ☑
☑
☑ ☑
Project�X-Ray
Project�Trellis
Project�IceStorm
Project�2064
Advanced Tiles
- DSP
- Hard Blocks
- Clock Tiles
- IO Tiles
Routing
- Logic
- Clock
Basic Tiles
- Logic
- Block RAM
More?
Bitstream Summary
Project�X-Ray
Project�Trellis
Project�IceStorm
Project�2064
Advanced Tiles
- DSP
- Hard Blocks
- Clock Tiles
- IO Tiles
Routing
- Logic
- Clock
Basic Tiles
- Logic
- Block RAM
☑�☑ ☑
☑�☑ ☑
☑
☑ ☑
☑
☑ ☑ ☑ ☑
☑
☒ ☒ ☒ ☑
☑
☑ ☑ ☑ ☑
☑
☑ ☑
☒
☑ ☒
☑
☑ ☑
More?
☑�☑ ☑
☑
☑ ☑ ☑ ☑
☑
☑ ☑
You can help!
Bitstream Summary
We need you!
Xilinx
Altera
Status
Synthesis & Mapping & PnR
Synthesis & Mapping & PnR
Synthesis
FPGA Tools
Verification, Testing, �& Simulation
Verilog To Routing
nextpnr
Project�X-Ray
Project�Trellis
Architecture Definitions
Yosys
Project�IceStorm
Synthesis & Mapping & PnR
Synthesis
FPGA Tools
Verification, Testing, �& Simulation
Verilog To Routing
nextpnr
Project�X-Ray
Project�Trellis
Architecture Definitions
Yosys
Project�IceStorm
Both using Yosys!
Synthesis & Mapping & PnR
Synthesis
FPGA Tools
Verification, Testing, �& Simulation
Verilog To Routing
nextpnr
Project�X-Ray
Project�Trellis
Architecture Definitions
Yosys
Project�IceStorm
Both timing driven!
Synthesis & Mapping & PnR
Project�X-Ray
Project�Trellis
Project�IceStorm
Project�2064
Verilog To Routing
- Basic Blocks
- Advanced Blocks
- Routing
- Bit Gen
nextpnr
- Basic Blocks
- Advanced Blocks
- Routing
- Bit Gen
Yosys
- Basic
- DSP
- Advanced
☑
☑ ☑ ☑
☒
☒ ☒ ☒
☑
☑ ☑ ☑
☑
☑ ☒ ☒
☒
☑ ☒ ☒ ☒
☒
☑ ☒ ☒ ☒
☑
☑ ☒ ☒ ☒
☑
☑ ☒ ☑ ☑
☑
☑ ☑ ☑ ☑
☒
☒ ☒ ☒ ☒
☑
☑ ☒ ☑ ☑
☒
☒ ☒ ☒ ☒
nextpnr
Lattice
iCE40
Should beat Arachne-PnR
nextpnr
Lattice iCE40
Anything!
Just use it!
Should beat Arachne-PnR
(Otherwise a bug!)
nextpnr
Lattice iCE40
Should beat Arachne-PnR
(Otherwise a bug!)
Use the tools
Report bugs!
You can help!
nextpnr
Lattice iCE40
Should beat Arachne-PnR
(Otherwise a bug!)
Update yor
tutorials!
You can help!
j.mp/fomu-cs
nextpnr
Lattice
ECP5
nextpnr
Lattice ECP5
IoT "microcontroller" SoC
Linux "microprocessor" SoC
Still early, but
ready for experimenting!
nextpnr
Lattice ECP5
Use the tools
Report bugs!
You can help!
Verilog �to �Routing
Lattice
iCE40
Verilog to Routing
Lattice iCE40
Logic + Block RAM
Simple IOB, No DSP
Blinky
IoT "microcontroller" SoC
Very early, need help!
Verilog to Routing
Lattice iCE40
Logic + Block RAM
Simple IOB, No DSP
Blinky
IoT "microcontroller" SoC
Very early, need help!
You can help!
Verilog �to �Routing
Xilinx
Artix 7
Artix-7 “Region of Interest” as �shown in Verilog to Routing
Artix-7 CLBLL_L internals as �shown in Verilog to Routing
Verilog to Routing
Xilinx Artix 7
Logic + DRAM
Blinky + Counter
RAM tester
Very early, need help!
Verilog to Routing
Xilinx Artix 7
Logic + DRAM
Blinky + Counter
RAM tester
IoT "microcontroller" SoC
Very early, need help!
You can help!
Synthesis & Mapping & PnR
Project�X-Ray
Project�Trellis
Project�IceStorm
Project�2064
Verilog To Routing
- Basic Blocks
- Advanced Blocks
- Routing
- Bit Gen
nextpnr
- Basic Blocks
- Advanced Blocks
- Routing
- Bit Gen
Yosys
- Basic
- DSP
- Advanced
More?
You can help!
☑
☑ ☑ ☑
☒
☒ ☒ ☒
☑
☑ ☑ ☑
☑
☑ ☒ ☒
☒
☑ ☒ ☒ ☒
☒
☑ ☒ ☒ ☒
☑
☑ ☒ ☒ ☒
☑
☑ ☒ ☑ ☑
☑
☑ ☑ ☑ ☑
☒
☒ ☒ ☒ ☒
☑
☑ ☒ ☑ ☑
☒
☒ ☒ ☒ ☒
How to help?
We need you!
The more help, the better things get!
You can help!
All most all scripts are �written in Python
Do you know Python?
You can help!
Do you know C++?
VPR & nextpnr & libraries�written in C++
You can help!
Do you know TCL?
All the EDA tools use TCL
You can help!
Do you know Verilog?
Simulation and models�are written in Verilog
You can help!
Do you know XML?
Most file formats� are XML
You can help!
Do you know English?
Documentation is �written in English
You can help!
Do you know Docker?
Help make it
easier to set up
You can help!
Do you have time?
I will find you a task
You can help!
Questions?
I will find you a task
GitHub - https://github.com/symbiflow
Mailing List - https://lists.librecores.org/listinfo/symbiflow
My email - me@mith.ro
The end!
I'm Tomu
A microcontroller or FPGA which fits inside your USB port
j.mp/fomu-cs
j.mp/fomu-cs
j.mp/fomu-cs
j.mp/fomu-cs
j.mp/fomu-cs
j.mp/fomu-cs
The end!
nextpnr or VPR
nextpnr or VPR?
Project�X-Ray
Project�Trellis
Project�IceStorm
Verilog To Routing
- Basic Blocks
- Advanced Blocks
- Routing
- Bit Gen
nextpnr
- Basic Blocks
- Advanced Blocks
- Routing
- Bit Gen
Yosys
- Basic
- DSP
- Advanced
☑
☑ ☑ ☑
☑
☑ ☑ ☑
☑
☑ ☒ ☒
☒
☑ ☒ ☒ ☒
☑
☑ ☒ ☒ ☒
☑
☑ ☒ ☑ ☑
☑
☑ ☑ ☑ ☑
☒
☒ ☒ ☒ ☒
☑
☑ ☒ ☑ ☑
nextpnr or VPR?
More �EDA ecosystem
details!
Components
Simulation� & Testing
Implementation
FPGA
ASIC
Yosys
FASM
Verilog to Routing
Simulation� & Testing
Hardware Description
Manufacturing
Bitgen
Formal Verification
Synthesis
Technology�Mapping
Placement
Routing
Routing
Placement
Simulation
Applications
Verilog
VHDL
System�Verilog
Chisel
Migen
Matlab
Testing
...
...
...
...
...
...
Implementation
Simulation� & Testing
Implementation
Hardware Description
Applications