Survey of Open-Source Flows For Digital Hardware Design
Survey of Open-Source Flows For Digital Hardware Design
Abstract — This paper considers open-source tools for the netlist. Reverse construction of the netlist from the layout is
logical-synthesis and place-and-route hardware design stages. used here [1]. LVS makes sense only for ASICs.
Several flows (CADs), including qFlow, OpenLANE, Coriolis,
VTR, and SymbiFlow, have been described. For experimental Proprietary tools support all the steps of the hardware
evaluation of these flows, two RISC-V implementations have design process and are used for development of almost all
been used: schoolRISCV and PicoRV32. The results show that electronics nowadays. However, there are some open-source
open-source flows are capable to produce physical layouts for toolkits that are capable either to cover some of the mentioned
realistic examples. At the same time, commercial CADs allow stages or to support the entire process. The latter is referred to
generating more effective designs in terms of clock frequency. as open-source computer-aided design systems (CADs).
Keywords — computer-aided design, open source, digital The rest of the paper is organized as follows. Section II
hardware, microprocessor, FPGA, ASIC, RISC-V, qFlow, reviews existing open-source CADs, both for ASICs and
OpenLANE, Coriolis, VTR, SymbiFlow FPGAs. Section III outlines RISC-V implementations
(schoolRISCV and PicoRV32) chosen for experimenting with
I. INTRODUCTION the CADs. Section IV is devoted to the evaluation of the
The typical process for digital hardware design includes CADs. Section V concludes the paper.
the following stages: (1) logic synthesis from an RTL model
II. OPEN-SOURCE CADS
to the technology-mapped netlist; (2) place and route; (3)
static timing analysis (STA); (4) physical layout generation. The main task of CADs being considered here is to
elaborate an RTL model and to get either the GDS II layout or
The input for the first stage is an RTL model written in the FPGA bitstream. This paper observes five open-source
Verilog or VHDL. The logic synthesizer elaborates the model, CADs: three of them are for ASICs (qFlow, OpenLANE, and
optimizes it, and, using a certain technology cell library, Alliance/Coriolis), and two of them are for FPGAs (VTR and
transforms into the gate-level netlist. On the second stage, the SymbiFlow).
gates (cells) from the netlist are mapped to the resources of an
FPGA or floorplanned on a future ASIC; the nets between the A. qFlow
cells are routed (first, globally, and then in detail). The third qFlow 1.4.96 [3] is a GPL-licensed [4] CAD aimed at
stage is aimed at checking whether the placed-and-routed generating GDS II layouts for RTL models written in Verilog.
circuit satisfies the given clock frequency constraints. If the This CAD was initially developed in 2013 by R. Timothy
constraints are met, the physical layout is generated. Edwards. The last version was issued on 10.06.2021. qFlow
The layout for FPGAs is represented as a bitstream that uses some external tools (e.g., Magic, graywolf, and Yosys)
defines the functionality of the logic elements (lookup tables, and consists of utilities that launch those tools and convert
LUTs) and the connections between them. As for ASICs, the hardware representations. Each of the external tools is
layout (represented in terms of planar geometric shapes in distributed under its own license (not necessarily GPL).
GDS II [2]) should proceed through design rule checking Let us consider the tools used by qFlow at each stage of
(DRC) [1]. DRC shows whether the layout is technologically the design process (see Fig. 1) and tools for LEC/LVS.
correct and can be used by a semiconductor foundry for ASIC
fabrication. 1. Logic synthesis: Yosys [5] or Odin II [7] (both use
ABC [6] for logic optimization). The result is a netlist
While obtaining different representations of a hardware in BLIF [8] format.
design, there arises a problem of checking their equivalence.
There are two approaches. 2. Place and route: graywolf [9] for the initial
placement and global routing; qrouter [10] for the
1. Logic equivalence checking (LEC) is used to verify detailed routing. To connect them, graywolf’s
correspondence between two logical models (e.g., between an resulting files are translated into Design Exchange
RTL model and the corresponding netlist) [1]. Format (DEF) [11] — an open format for layout
2. Layout vs schematic (LVS) is used to verify whether description proposed by Cadence — by an auxiliary
the (optimized) physical layout is equivalent to the original script. qrouter is a simple restricted detail router that
does not scale to complex state-of-the-art designs.
5. LEC/LVS: Yosys for LEC; Netgen [16] for LVS. In general, OpenLANE looks more preferable for
industrial application than qFlow due to the relatively new cell
Summing up, qFlow implements the entire process from library (130 nm) and the modern tools for the place-and-route
Verilog to GDS II. It is distributed with IIT/OSU 2.7 180- stage. It should also be noticed that both CADs depend on
500 nm and FreePDK45 45 nm technology cell libraries [17] Yosys and ABC for logic synthesis.
and provides a user-friendly GUI to set up about 10 synthesis
parameters. It should be noticed that qFlow is an extendable C. Alliance/Coriolis
framework and can be adapted to support new tools and cell Alliance/Coriolis 2.0.1 [26] is a GPL/LGPL/Apache 2.0-
libraries. To demonstrate the qFlow abilities, its author has licensed CAD for ASIC design. It was developed at the Pierre
published the layout generation results for the Raven RISC-V and Mari Curie University in 1990-2000 years. The latest
microprocessor [18]. version was issued on 11.03.2014. Originally, Coriolis
B. OpenLANE supported the VHDL-to-GDS II flow. By migrating from the
Alliance logic synthesizer to Yosys, the CAD started
OpenLANE 03.00.48 [19] is an Apache-2.0-licensed [20] supporting the Verilog-based flow. Coriolis is also applicable
CAD that handles RTL models written in Verilog. The tool to analog- and mixed-signal hardware designs.
uses SkyWater PDK 130 nm technology cell library [21]
sponsored by Google. OpenLANE architecture is close to Let us consider how Alliance/Coriolis implements the
qFlow, and one of its authors is R. Timothy Edwards. hardware design process [27].
Development started quite recently, in 2020, and there is no
stable version available. The last version is 03.00.48 dated 1. Logic synthesis: Alliance (for VHDL) or Yosys (for
09.09.2021. As qFlow, OpenLANE utilizes different external, Verilog; uses the nsxlib cell library [28] and ABC).
which may be distributed under their own licenses. The result is stored in LGPL-licensed [29] Hurricane
database [30] in VST format.
Here is the list of the tools used by the CAD (see Fig. 2).
2. Place and route: Etesian [31] for placement;
1. Logic synthesis: Yosys. Katana [32] for global and detailed routing (uses
BSD-licensed FLUTE tool [33]). The result is kept in
2. Place and route: OpenROAD [22] (includes several AP format [34].
tools for the placement and global routing) and
TritonRoute [23] (for the detailed routing). 3. STA: commercial HiTas [35] (works with VST files
extracted from the AP model by the cougar tool).
3. STA: OpenSTA.
4. Layout generation/DRC: s2r [36] for layout
4. Layout generation/DRC: Magic or KLayout [24]. generation (processes the AP model and produces the
GDS II file); DRuC [37] for DRC.
5. LEC/LVS: Yosys for LEC; Netgen for LVS.
5. LEC/LVS: cougar for converting the AP model to the
OpenLANE and qFlow apply similar sets of external
VST format; lvx for LVS; Yosys or GHDL for LEC.
tools. The major differences are that the former uses
OpenROAD (instead of graywolf), TritonRoute (instead of It should be noticed that Coriolis supports the OpenAccess
qrouter), and SkyWater PDK (instead of IIT/OSU 2.7 and conception [38] proposed by Cadence; namely, it can import
FreePDK45). OpenLANE has been used for production of 40 place-and-route information from LEF (Library Exchange
chips under the Open MPW Shuttle Program sponsored by Format) and DEF (Design Exchange Format) [11] files.
Google [25]. Those designs include Caravel_RISCV_OSU There are some examples of applying Alliance/Coriolis to
and Softshell SoCs with RISC-V cores. industrial-scale projects, including the StaCS microprocessor
(875 000 transistors) and 1 GHz IEEE Gigabit HSL Router
(400 000 transistors). At the same time, the CAD developers
warn that Coriolis is not suitable for technologies below
130 nm.
12
Authorized licensed use limited to: International Institute of Information Technology Bangalore. Downloaded on October 14,2023 at 04:12:05 UTC from IEEE Xplore. Restrictions apply.
Summing up, Alliance/Coriolis had been a unique open- proprietary tools as Vivado [49], ISE [50], and
source CAD for many years until the development of qFlow Quartus [51]).
in early 2010s was started. The CAD is rather self-sufficient;
the only external tool is Yosys. Besides OpenFPGA, the SymbiFlow community is
developing a variety of ISC-licensed bitstream generators.
D. VTR and SymbiFlow There are Project IceStorm [52] (for Lattice iCE40), Project
VTR (Verilog-to-Routing) 8.0.0 [39] is an MIT- Trellis [53] (for Lattice ECP5), Project Oxide [54] (for Lattice
licensed [40] CAD [42] for FPGAs that uses FASM (FPGA Nexus), Project Apicula [55] (for Gowin LittleBee), and
Assembly) format [41] to represent the resulting design. VTR Project X-Ray [56] (for Xilinx’s 7 Series).
developers recommend using their CAD as a part of the Summing up, although VTR and SymbiFlow allows
SymbiFlow CAD (see below). The core of VTR is the VPR generating bitstreams for some modern FPGAs, these CADs,
(Versatile Place and Route) tool [43] having been developed are hardly applicable to complex hardware designs. In [57],
since mid-1990s. VTR itself has been developed since 2010s where SymbiFlow is compared with commercial CADs, there
with the most recent version dated 24.03.2020. is a recommendation to improve SymbiFlow’s place-and-
Let us consider how VTR generates FPGA bitstreams (see route algorithms. The authors showed that SymbiFlow and
green-colored part of Fig. 3). Quartus demonstrate comparable results in terms of FPGA
resource usage when using Intel Stratix IV (500 000 LUTs).
However, for Xilinx Artix-7 (50 000 LUTs), a design
generated by SymbiFlow requires twice as much resources
than one being generated by Vivado.
III. RISC-V MICROPROCESSOR EXAMPLES
RISC-V [58] is an open instruction set architecture that
allows designing microprocessors of various complexity. To
evaluate open-source CADs, we have selected two RISC-V
implementations written in Verilog. The first one is
schoolRISCV [59], a tiny (about 1 600 lines of code) MIT-
licensed core that supports some RISC-V instructions (ADD,
OR, SRL, SLTU, SUB, ADDI, LUI, BEQ, and BNE),
without pipeline but with an instruction memory and a
registry file. The second one is PicoRV32 [60], a size-
optimized (about 5 400 lines of code) core that implements
the RV32IMC instruction subset.
Fig. 3. The VTR structure IV. EVALUATION
1. Logic synthesis: Odin II or Yosys (both use ABC). A. Experiments
2. Place and route: VPR. The result is a FASM model We have applied qFlow, OpenLANE, Coriolis, and
(with known FPGA resources, power consumption, VTR/SymbiFlow to synthesize the GDS II layout for the
and timing characteristics). schoolRISCV core. All experiments have been done on a
machine with Intel Core i7-8700 3.2 GHz CPU, 32 Gb RAM
3. LEC: Yosys. and Ubuntu 20.04 OS. The only exception is Coriolis: it does
not work on Ubuntu 20.04; a virtual machine with Ubuntu
18.04 and 8 GB RAM has been used.
The results are represented in Table I, which covers
qFlow, OpenLANE, and Coriolis. It should be noticed that
VTR failed to handle schoolRISCV due to limitations of the
Verilog subset supported by Odin II. Also, we did not manage
to obtain a bitstream in a reasonable time by using
SymbiFlow.
Let us return to qFlow, OpenLANE, and Coriolis. For
Fig. 4. Tools used in SymbiFlow each of the CADs the following technology cell libraries have
been selected: OSU350 (350 nm) for qFlow; SKY130 (its
SymbiFlow [44] is an ISC-licensed [45] CAD having been fd_sc_hd subversion, 130 nm) for OpenLANE; symbolic
developed since 2018. cmos45 and real nsxlib (130 nm) for Coriolis. Each CAD uses
Here is how SymbiFlow generates bitstreams (see Fig. 4). Yosys 0.9 for logical synthesis, which, in turn, utilizes ABC
for technology mapping.
1. Logic synthesis: Odin II or Yosys (for Verilog); Table I shows the number of logical cells after ABC
Verific [46] for VHDL. execution. It has been found out that OpenLANE applies
2. Place and route: VTR or nextpnr [47] (both produce Yosys’s flattening option to simplify the RTL model before
a FASM model to be transformed into the bitstream logical synthesis, whereas qFlow and Coriolis apply the same
by the OpenFPGA open-source tool [48] or by such flattening option after the logical synthesis stage. To make
the results comparable, we have modified qFlow and
13
Authorized licensed use limited to: International Institute of Information Technology Bangalore. Downloaded on October 14,2023 at 04:12:05 UTC from IEEE Xplore. Restrictions apply.
Coriolis’s scripts to call Yosys in a way OpenLANE does it. TABLE II. RESULTS OF LOGIC SYNTHESIS BEFORE TECHMAP
It results in a significant reduction of time (from 30-60 to 1-
Cell type Coriolis OpenLANE qFlow
2 minutes for the entire process) and the number of cells
$_ANDNOT_ 227 150 213
(from 5 000-10 000 to 500-1 000).
$_AND_ 44 28 28
TABLE I. EXPERIMENTS WITH OPEN-SOURCE CADS $_DFFE_PN0P_ 33 1 1
14
Authorized licensed use limited to: International Institute of Information Technology Bangalore. Downloaded on October 14,2023 at 04:12:05 UTC from IEEE Xplore. Restrictions apply.
TABLE VI. PICORV32 SYNTHESIS
Characteristics
CAD Technology, Frequency,
Cells
nm MHz
VSDFLOW 180 13 826 378
15
Authorized licensed use limited to: International Institute of Information Technology Bangalore. Downloaded on October 14,2023 at 04:12:05 UTC from IEEE Xplore. Restrictions apply.
[18] T. Edwards, M. Kassem, and C. Wolf. “PicoSoC: How we created a “VTR 8: High Performance CAD and Customizable FPGA
RISC-V based ASIC processor using a full open-source foundry Architecture Modelling,” ACM Transaction on Reconfigurable
targeted RTL-to-GDS flow, and how you can, too!,” 7th RISC-V Technology and Systems, 13(2), 2020. Article 9. 55 pp. DOI:
Workshop, 2017. Accessed on: 17.08.2021. [Online]. Available: https://doi.org/10.1145/3388617
https://riscv.org/wp-content/uploads/2017/12/Wed-1142-RISCV-Tim- [43] VPR. Accessed on: 17.08.2021. [Online]. Available:
Edwards.pdf https://docs.verilogtorouting.org/en/latest/vpr
[19] OpenLANE. Accessed on: 17.08.2021. [Online]. Available: [44] FPGA Design Flow. Accessed on: 17.08.2021. [Online]. Available:
https://openlane.readthedocs.io https://symbiflow.readthedocs.io/en/latest/toolchain-desc/design-
[20] Apache License, Version 2.0. Accessed on: 17.08.2021. [Online]. flow.html
Available: https://www.apache.org/licenses/LICENSE-2.0 [45] ISC Software Licenses. Accessed on: 17.08.2021. [Online]. Available:
[21] Open source process design kit for usage with SkyWater Technology https://www.isc.org/licenses
Foundry's 130nm node. Accessed on: 17.08.2021. [Online]. Available: [46] Verific Design Automation. Accessed on: 17.08.2021. [Online].
https://github.com/google/skywater-pdk Available: https://www.verific.com
[22] OpenROAD's unified application implementing an RTL-to-GDS Flow. [47] nextpnr portable FPGA place and route tool. Accessed on: 10.09.2021.
Accessed on: 17.08.2021. [Online]. Available: https://github.com/The- [Online]. Available: https://github.com/YosysHQ/nextpnr
OpenROAD-Project/OpenROAD
[48] An Open-source FPGA IP Generator. Accessed on: 17.08.2021.
[23] UCSD Detailed Router. Accessed on: 17.08.2021. [Online]. Available: [Online]. Available: https://github.com/lnis-uofu/OpenFPGA
https://github.com/The-OpenROAD-Project/TritonRoute
[49] Vivado ML Overview. Accessed on: 17.08.2021. [Online]. Available:
[24] KLayout Layout Viewer And Editor. Accessed on: 17.08.2021. https://www.xilinx.com/products/design-tools/vivado.html
[Online]. Available: https://www.klayout.de
[50] ISE Design Suite. Accessed on: 17.08.2021. [Online]. Available:
[25] MPW-ONE Projects. Accessed on: 17.08.2021. [Online]. Available: https://www.xilinx.com/products/design-tools/ise-design-suite.html
https://efabless.com/projects/shuttle_name/MPW-ONE
[51] FPGA Design Software – Intel® Quartus® Prime. Accessed on:
[26] Coriolis VLSI CAD Tools. Accessed on: 17.08.2021. [Online]. 17.08.2021. [Online]. Available:
Available: http://coriolis.lip6.fr https://www.intel.com/content/www/us/en/software/programmable/qu
[27] M.-M. Louerat, R. Chotin, J.-P. Chaput, and A. Satin. “RISC-V design artus-prime/overview.html
using FOSS,” Accessed on: 17.08.2021. [Online]. Available: [52] Project IceStorm. Accessed on: 17.08.2021. [Online]. Available:
https://open-src-soc.org/2019-10/media/slides/2nd-RISC-V-Meeting- http://www.clifford.at/icestorm
2019-10-01-10h00-Jean-Paul-Chaput.pdf
[53] Documenting the Lattice ECP5 bit-stream format. Accessed on:
[28] N Shimizu. “FOSS for Free HW with Japanese technology process”. 17.08.2021. [Online]. Available:
Accessed on: 17.08.2021. [Online]. Available: https://github.com/YosysHQ/prjtrellis
https://www.lip6.fr/public/2018-03-09_Shimizu.pdf
[54] Documenting Lattice's 28nm FPGA parts. Accessed on: 17.08.2021.
[29] GNU Lesser General Public License. Accessed on: 17.08.2021. [Online]. Available: https://github.com/gatecat/prjoxide
[Online]. Available: https://www.gnu.org/licenses/lgpl-3.0.ru.html
[55] Project Apicula: bitstream documentation for Gowin FPGAs.
[30] hurricane – Coriolis GitLab. Accessed on: 17.08.2021. [Online]. Accessed on: 17.08.2021. [Online]. Available:
Available: https://gitlab.lip6.fr/vlsi-eda/coriolis/-/tree/devel/hurricane https://github.com/YosysHQ/apicula
[31] An analytical VLSI placer. Accessed on: 17.08.2021. [Online]. [56] Documenting the Xilinx 7-series bit-stream format. Accessed on:
Available: https://github.com/Coloquinte/Coloquinte 17.08.2021. [Online]. Available:
[32] katana – Coriolis GitLab. Accessed on: 17.08.2021. [Online]. https://github.com/SymbiFlow/prjxray
Available: https://gitlab.lip6.fr/vlsi-eda/coriolis/-/tree/devel/katana [57] K.E. Murray et al., “SymbiFlow and VPR: An Open-Source Design
[33] FLUTE: Fast Lookup Table Based Technique for RSMT Construction Flow for Commercial and Novel FPGAs,” IEEE Micro, 40(4), 2020. P.
and Wirelength Estimation. Accessed on: 17.08.2021. [Online]. 49-57. DOI: 10.1109/MM.2020.2998435
Available: http://home.eng.iastate.edu/~cnchu/flute.html [58] RISC-V International. Accessed on: 17.08.2021. [Online]. Available:
[34] Symbolic Layout – Coriolis VLSI CAD Tools. Accessed on: 17.08.2021. https://riscv.org
[Online]. Available: http://coriolis.lip6.fr/pages/symbolic-layout.html [59] CPU microarchitecture. Accessed on: 17.08.2021. [Online].
[35] HiTas – Static Timing Analyser. Accessed on: 17.08.2021. [Online]. Available: https://github.com/DigitalDesignSchool/schoolRISCV
Available: https://www-soc.lip6.fr/en/team-cian/softwares/tasyagle [60] PicoRV32 – A Size-Optimized RISC-V CPU. Accessed on: 19.08.2021.
[36] cumulus/src/plugins/s2r.py. Accessed on: 17.08.2021. [Online]. [Online]. Available: https://github.com/cliffordwolf/picorv32
Available: https://gitlab.lip6.fr/vlsi-eda/coriolis/- [61] VexRiscv cmos54 example. Accessed on: 19.08.2021. [Online].
/blob/devel/cumulus/src/plugins/s2r.py Available: https://gitlab.lip6.fr/vlsi-eda/alliance-check-toolkit/-
[37] alliance/src/druc. Accessed on: 18.08.2021. [Online]. Available: /tree/master/benchs/VexRiscv/cmos45
https://gitlab.lip6.fr/vlsi-eda/alliance/-/tree/master/alliance/src/druc [62] Alliance Coriolis Toolkit and Checker. Accessed on: 19.08.2021.
[38] OpenAccess Utilities Download. Accessed on: 17.08.2021. [Online]. [Online]. Available: https://gitlab.lip6.fr/vlsi-eda/alliance-check-
Available: https://si2.org/oa-tools-utils-libs toolkit
[39] Verilog-to-Rounting’s Documentation. Accessed on: 17.08.2021. [63] K. P. Ghosh and A. K. Ghosh, “Technology mediated tutorial on RISC-
[Online]. Available: https://docs.verilogtorouting.org/en/latest V CPU core implementation and sign-off using revolutionary EDA
[40] The MIT License. Accessed on: 17.08.2021. [Online]. Available: management system (EMS) — VSDFLOW,” China Semiconductor
https://opensource.org/licenses/MIT Technology International Conference (CSTIC), 2018, pp. 1-3, DOI:
10.1109/CSTIC.2018.8369332
[41] FPGA Assembly (FASM) Output. Accessed on: 17.08.2021. [Online].
Available: https://docs.verilogtorouting.org/en/latest/utils/fasm [64] VSDFLOW. Accessed on: 23.08.2021. [Online]. Available:
https://github.com/kunalg123/vsdflow
[42] K.E. Murray, O. Petelin, S. Zhong, J.M. Wang, M. ElDafrawy et al.
16
Authorized licensed use limited to: International Institute of Information Technology Bangalore. Downloaded on October 14,2023 at 04:12:05 UTC from IEEE Xplore. Restrictions apply.