1 of 111

SymbiFlow

Finally the GCC of FPGAs!

2 of 111

Questions for you!

3 of 111

Who knows �what an FPGA is?

4 of 111

Who has used

an FPGA?

5 of 111

Who has used

an Lattice FPGA?

6 of 111

Who has used

an Xilinx FPGA?

7 of 111

Who has heard

of SymbiFlow?

8 of 111

Who has heard

of Project Icestorm?

9 of 111

What is an FPGA?

10 of 111

FPGAs convert �hardware into software

11 of 111

FPGAs come in all sizes!

12 of 111

What is SymbiFlow?

An introduction

13 of 111

SymbiFlow is people!

14 of 111

We need you!

SymbiFlow!

15 of 111

Compare� software toolchain...

16 of 111

Software Tooling

Compiler

Java

Software

C++

Software

Ada

Software

17 of 111

Software Tooling

Frontend

+

Generic�Optimization

x86 Backend

ARM Backend

MIPS Backend

Java

Software

C++

Software

Ada

Software

18 of 111

C++ Tooling for x86

Frontend

+

Generic�Optimization

x86 Backend

ARM Backend

MIPS Backend

Java

Software

C++�Software

Ada�Software

19 of 111

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

20 of 111

EDA Tooling Ecosystem

FPGA Tools

ASIC Tools

Verification, Testing, �& Simulation

Synthesis

Tools

VHDL

Hardware

Verilog

Hardware

SystemVerilog

Hardware

21 of 111

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

22 of 111

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

23 of 111

"GCC" for FPGAs!

24 of 111

What does "GCC" mean?

Not C/C++ → Verilog

25 of 111

What does "GCC" mean?

Not C/C++ → Verilog

  • Fully Free & Open Source
  • Cross-platform + Multi-platform
  • Pluggable / Interchangeable

26 of 111

SymbiFlow

Toolsuite

27 of 111

How did we�get here?

28 of 111

First Project IceStorm

Synthesis

FPGA Tools

Verification, Testing, �& Simulation

Yosys

arachne-pnr

Project�IceStorm

29 of 111

Then Project X-Ray

Synthesis

FPGA Tools

Verification, Testing, �& Simulation

Yosys

Project�X-Ray

Project�IceStorm

arachne-pnr

30 of 111

Started SymbiFlow

Synthesis

FPGA Tools

Verification, Testing, �& Simulation

Yosys

Project�X-Ray

Project�IceStorm

arachne-pnr

31 of 111

SymbiFlow Launch - 34C3!

Synthesis

FPGA Tools

Verification, Testing, �& Simulation

Verilog To Routing

Yosys

Project�X-Ray

Project�IceStorm

Architecture Definitions

arachne-pnr

32 of 111

Inspires Project Trellis

Synthesis

FPGA Tools

Verification, Testing, �& Simulation

Verilog To Routing

Yosys

Project�X-Ray

Project�Trellis

Project�IceStorm

Architecture Definitions

arachne-pnr

33 of 111

Launches nextpnr

Synthesis

FPGA Tools

Verification, Testing, �& Simulation

Verilog To Routing

nextpnr

Project�X-Ray

Project�Trellis

Architecture Definitions

Yosys

Project�IceStorm

34 of 111

SymbiFlow Toolsuite

Synthesis

FPGA Tools

Verification, Testing, �& Simulation

Verilog To Routing

nextpnr

Project�X-Ray

Project�Trellis

Architecture Definitions

Yosys

Project�IceStorm

35 of 111

Parts of

SymbiFlow

36 of 111

SymbiFlow Toolsuite

Synthesis

FPGA Tools

Verification, Testing, �& Simulation

Verilog To Routing

nextpnr

Project�X-Ray

Project�Trellis

Architecture Definitions

Yosys

Project�IceStorm

37 of 111

Bitstream Docs

Synthesis

FPGA Tools

Verification, Testing, �& Simulation

Verilog To Routing

nextpnr

Project�X-Ray

Project�Trellis

Architecture Definitions

Yosys

Project�IceStorm

38 of 111

Place and Route

Synthesis

FPGA Tools

Verification, Testing, �& Simulation

Verilog To Routing

nextpnr

Project�X-Ray

Project�Trellis

Architecture Definitions

Yosys

Project�IceStorm

39 of 111

Synthesis & Mapping

Synthesis

FPGA Tools

Verification, Testing, �& Simulation

Verilog To Routing

nextpnr

Project�X-Ray

Project�Trellis

Architecture Definitions

Yosys

Project�IceStorm

40 of 111

Architecture Defs

Synthesis

FPGA Tools

Verification, Testing, �& Simulation

Verilog To Routing

nextpnr

Project�X-Ray

Project�Trellis

Architecture Definitions

Yosys

Project�IceStorm

41 of 111

Related to Bitstream

Synthesis

FPGA Tools

Verification, Testing, �& Simulation

Verilog To Routing

nextpnr

Project�X-Ray

Project�Trellis

Architecture Definitions

Yosys

Project�IceStorm

42 of 111

Feeds Place & Route

Synthesis

FPGA Tools

Verification, Testing, �& Simulation

Verilog To Routing

nextpnr

Project�X-Ray

Project�Trellis

Architecture Definitions

Yosys

Project�IceStorm

43 of 111

Feeds Mapping (?)

Synthesis

FPGA Tools

Verification, Testing, �& Simulation

Verilog To Routing

nextpnr

Project�X-Ray

Project�Trellis

Architecture Definitions

Yosys

Project�IceStorm

44 of 111

Verilog Simulation

Synthesis

FPGA Tools

Verification, Testing, �& Simulation

Verilog To Routing

nextpnr

Project�X-Ray

Project�Trellis

Architecture Definitions

Yosys

Project�IceStorm

45 of 111

Executable Docs

Synthesis

FPGA Tools

Verification, Testing, �& Simulation

Verilog To Routing

nextpnr

Project�X-Ray

Project�Trellis

Architecture Definitions

Yosys

Project�IceStorm

46 of 111

SymbiFlow

Status

47 of 111

SymbiFlow Toolsuite

Synthesis

FPGA Tools

Verification, Testing, �& Simulation

Verilog To Routing

nextpnr

Project�X-Ray

Project�Trellis

Architecture Definitions

Yosys

Project�IceStorm

48 of 111

Bitstream Docs

Synthesis

FPGA Tools

Verification, Testing, �& Simulation

Verilog To Routing

nextpnr

Project�X-Ray

Project�Trellis

Architecture Definitions

Yosys

Project�IceStorm

49 of 111

Status

bitstream docs

50 of 111

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

☑�

☑�

☑ ☑ ☑

☒ ☒

☑ ☑ ☑

☑ ☑

51 of 111

Lattice iCE40

Project IceStorm

Supported Devices

  • iCE40 LP
  • iCE40 LM (some)
  • iCE40 HX
  • iCE40 UltraPlus

Future Supported?

  • iCE40 Ultra
  • iCE40 UltraLite

Documented Tiles Types

  • Logic
  • Block RAM
  • IO
  • Hard IP Blocks
  • Single Port RAM
  • DSP

Current Documentation

  • Bitstream
  • Verilog Models

Still needed

  • Replacement for�Tech Libraries

52 of 111

Lattice ECP5

Project Trellis

Supported Devices

  • ECP5 U Series�LFE5U-25F, LFE5U-45F, LFE5U-85F
  • ECP5 UM Series�LFE5UM-25F, LFE5UM-45F, LFE5UM-85F
  • ECP5 UM5G Series�LFE5UM5G-25F, �LFE5UM5G-45F, LFE5UM5G-85F

Future?

  • Crosslink Series?

Documented Tiles Types

  • Logic
  • Interconnect
  • Clocks
  • Block RAM
  • IO
  • PLL
  • DSP
  • SERDES
  • IOLOGIC

Current Documentation

  • Bitstream
  • Verilog Models

Still needed

  • Replacement for�Tech Libraries

53 of 111

Lattice ECP5

Project Trellis

Supported Devices

  • ECP5 U Series�LFE5U-25F, LFE5U-45F, LFE5U-85F
  • ECP5 UM Series�LFE5UM-25F, LFE5UM-45F, LFE5UM-85F
  • ECP5 UM5G Series�LFE5UM5G-25F, LFE5UM5G-45F, LFE5UM5G-85F

Future?

  • Crosslink Series?

Documented Tiles Types

  • Logic
  • Interconnect
  • Clocks
  • Block RAM
  • IO
  • PLL
  • DSP
  • SERDES
  • IOLOGIC

Current Documentation

  • Bitstream
  • Verilog Models

Still needed

  • Replacement for�Tech Libraries

54 of 111

Xilinx Series 7

Project X-Ray

Supported Devices

  • Artix 7XC7A50T (15T, 35T)
  • Kintex 7XC7K70T

Future?

  • All Artix 7
  • All Kintex 7
  • All Virtex 7
  • All Zynq (?)

Documented Tiles Types

Full

  • Logic (SLICEL)
  • Distributed RAM (SLICEM)
  • Routing

Partial

  • Block RAM
  • IOB

Need help!

  • Hard Blocks
  • DSP

Current Documentation

  • Bitstream
  • Verilog Models

Still needed

  • Replacement for�Tech Libraries

55 of 111

Artix 7 50T

Xilinx Series 7

Project X-Ray

56 of 111

Artix 7 50T

Xilinx Series 7

Project X-Ray

57 of 111

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)

58 of 111

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

☑�

☑�

☑ ☑ ☑

☒ ☒

☑ ☑ ☑

☑ ☑

59 of 111

60 of 111

Xilinx xc20xx

Project 2064

Supported Devices

  • XC2018�100 tiles!
  • XC2064�64 tiles!

Documented Tiles Types

Full

  • Logic
  • RAM
  • Routing
  • IOB

Current Documentation

  • Bitstream

Still needed

  • Verilog Models
  • Replacement for�Tech Libraries
  • Timing documentation

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."

61 of 111

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?

62 of 111

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!

63 of 111

Bitstream Summary

We need you!

Xilinx

  • Spartan 6
  • Spartan 3

Altera

  • ????????

64 of 111

Status

Synthesis & Mapping & PnR

65 of 111

Synthesis & Mapping & PnR

Synthesis

FPGA Tools

Verification, Testing, �& Simulation

Verilog To Routing

nextpnr

Project�X-Ray

Project�Trellis

Architecture Definitions

Yosys

Project�IceStorm

66 of 111

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!

67 of 111

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!

68 of 111

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

☑ ☑ ☑

☑ ☑ ☑

☒ ☒

☒ ☒

☒ ☒

☑ ☑ ☑

☒ ☒

☒ ☒

69 of 111

nextpnr

Lattice

iCE40

Should beat Arachne-PnR

70 of 111

nextpnr

Lattice iCE40

Anything!

Just use it!

Should beat Arachne-PnR

(Otherwise a bug!)

71 of 111

nextpnr

Lattice iCE40

Should beat Arachne-PnR

(Otherwise a bug!)

Use the tools

Report bugs!

You can help!

72 of 111

nextpnr

Lattice iCE40

Should beat Arachne-PnR

(Otherwise a bug!)

Update yor

tutorials!

You can help!

73 of 111

j.mp/fomu-cs

74 of 111

nextpnr

Lattice

ECP5

75 of 111

nextpnr

Lattice ECP5

IoT "microcontroller" SoC

Linux "microprocessor" SoC

Still early, but

ready for experimenting!

76 of 111

nextpnr

Lattice ECP5

Use the tools

Report bugs!

You can help!

77 of 111

Verilog �to �Routing

Lattice

iCE40

78 of 111

Verilog to Routing

Lattice iCE40

Logic + Block RAM

Simple IOB, No DSP

Blinky

IoT "microcontroller" SoC

Very early, need help!

79 of 111

Verilog to Routing

Lattice iCE40

Logic + Block RAM

Simple IOB, No DSP

Blinky

IoT "microcontroller" SoC

Very early, need help!

You can help!

80 of 111

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

81 of 111

Verilog to Routing

Xilinx Artix 7

Logic + DRAM

Blinky + Counter

RAM tester

Very early, need help!

82 of 111

Verilog to Routing

Xilinx Artix 7

Logic + DRAM

Blinky + Counter

RAM tester

IoT "microcontroller" SoC

Very early, need help!

You can help!

83 of 111

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!

☑ ☑ ☑

☑ ☑ ☑

☒ ☒

☒ ☒

☒ ☒

☑ ☑ ☑

☒ ☒

☒ ☒

84 of 111

How to help?

We need you!

85 of 111

The more help, the better things get!

You can help!

86 of 111

All most all scripts are �written in Python

Do you know Python?

You can help!

87 of 111

Do you know C++?

VPR & nextpnr & libraries�written in C++

You can help!

88 of 111

Do you know TCL?

All the EDA tools use TCL

You can help!

89 of 111

Do you know Verilog?

Simulation and models�are written in Verilog

You can help!

90 of 111

Do you know XML?

Most file formats� are XML

You can help!

91 of 111

Do you know English?

Documentation is �written in English

You can help!

92 of 111

Do you know Docker?

Help make it

easier to set up

You can help!

93 of 111

Do you have time?

I will find you a task

You can help!

94 of 111

Questions?

I will find you a task

95 of 111

The end!

96 of 111

I'm Tomu

A microcontroller or FPGA which fits inside your USB port

97 of 111

j.mp/fomu-cs

98 of 111

j.mp/fomu-cs

99 of 111

j.mp/fomu-cs

100 of 111

j.mp/fomu-cs

101 of 111

j.mp/fomu-cs

102 of 111

j.mp/fomu-cs

103 of 111

The end!

104 of 111

nextpnr or VPR

105 of 111

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

☑ ☑ ☑

☑ ☑ ☑

☒ ☒

☒ ☒

☑ ☑ ☑

☒ ☒

106 of 111

nextpnr or VPR?

  • 15 year history
  • Active research
  • 6 month history
  • Cool GUI
  • Better bitgen

107 of 111

More �EDA ecosystem

details!

108 of 111

Components

109 of 111

110 of 111

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

111 of 111

Simulation� & Testing

Implementation

Hardware Description

Applications