Awesome
OSS CAD Suite
Introduction
OSS CAD Suite is a binary software distribution for a number of open source software used in digital logic design. You will find tools for RTL synthesis, formal hardware verification, place & route, FPGA programming, and testing with support for HDLs like Verilog, Migen, and Amaranth.
OSS CAD Suite is a component of YosysHQ's Tabby CAD Suite:
See Tabby CAD Datasheet for details on Tabby CAD Suite; see OSS CAD Suite GitHub (this page) for details on OSS CAD Suite.
RTL Synthesis
- Yosys RTL synthesis with extensive Verilog 2005 support
- Amaranth refreshed Python toolbox for building complex digital hardware
- Migen Python toolbox for building complex digital hardware
- ABC A System for Sequential Synthesis and Verification
- GHDL VHDL 2008/93/87 simulator (linux-x64, darwin-x64 and darwin-arm64 platforms only)
Did you know that the Tabby CAD version of yosys supports industry standard SystemVerilog, VHDL and SVA? Contact us at contact@yosyshq.com to arrange a free evaluation license.
Plugins
- GHDL plugin VHDL synthesis based on GHDL (linux-x64, darwin-x64 and darwin-arm64 platforms only)
Formal Tools
- sby (formerly SymbiYosys) a front-end driver program for Yosys-based formal hardware verification flows.
- mcy Mutation Cover with Yosys
- eqy Equivalence Checking with Yosys
- sby-gui GUI for sby (formerly SymbiYosys)
- aiger AIGER tools including bounded model checker
- avy Interpolating Property Directed Reachability tool
- Boolector SMT solver and BTOR model checker
- Yices 2 SMT solver
- Super prove ABC-based AIGER hardware model checker (linux-x64 platform only)
- Pono an SMT-based model checker built on smt-switch
- Z3 SMT solver
- Bitwuzla SMT solver
PnR (Place and Route)
- nextpnr a portable FPGA place and route tool (generic, ice40, ecp5, machxo2, nexus, gowin)
- Project IceStorm tools for working with Lattice ICE40 bitstreams
- Project Trellis tools for working with Lattice ECP5 bitstreams
- Project Oxide tools for working with Lattice Nexus bitstreams
- Project Apicula tools for working with Gowin bitstreams
FPGA board programming tools
- openFPGALoader universal utility for programming FPGA
- dfu-util Device Firmware Upgrade Utilities
- ecpprog basic driver for FTDI based JTAG probes, to program ECP5 FPGAs
- ecpdap program ECP5 FPGAs and attached SPI flash using CMSIS-DAP probes in JTAG mode
- fujprog ULX2S / ULX3S JTAG programmer
- openocd Open On-Chip Debugger
- icesprog iCESugar FPGA board programmer
- iceprogduino Olinuxino based programmer for iCE40HX1K-EVB
- TinyFPGA USB Bootloader
- TinyFPGA-B TinyFPGA B2 Board programmer
- iceFUN iceFUN Programmer
Simulation/Testing
- GTK Wave fully featured GTK+ based wave viewer
- verilator Verilog/SystemVerilog simulator
- iverilog Verilog compilation system
- cocotb coroutine based cosimulation library for writing VHDL and Verilog testbenches in Python
Support libraries
- Python 3 language interpreter is provided in all supported platforms.
- Python 2 language interpreter is provided in Linux platforms in form of library only.
- Ubuntu 22.04 distribution development packages are used and shared libraries used are provided in package.
- macports distribution system for macOS is used to obtain all libraries used, and they are provided in package.
- MinGW Minimalist GNU for Windows library packages from Fedora 39 are used in compilation and provided in package.
Installation
- Download an archive matching your OS from the releases page.
- Extract the archive to a location of your choice (for Windows it is recommended that path does not contain spaces)
- On macOS to allow execution of quarantined files
xattr -d com.apple.quarantine oss-cad-suite-darwin-x64-yyymmdd.tgz
on downloaded file, or run:./activate
in extracted location once. - Set the environment as described below.
Linux and macOS
export PATH="<extracted_location>/oss-cad-suite/bin:$PATH"
# or
source <extracted_location>/oss-cad-suite/environment
Linux and macOS (fish shell)
fish_add_path "<extracted_location>/oss-cad-suite/bin"
# or
source <extracted_location>/oss-cad-suite/environment.fish
Windows
from existing CMD prompt:
<extracted_location>\oss-cad-suite\environment.bat
to create new CMD prompt:
<extracted_location>\oss-cad-suite\start.bat
NOTE: when environment is set, python3
from package becomes available as well, this enables usage of Migen and Amaranth HDL and LiteX libraries scripts as usual. When OSS CAD Suite is just added in PATH to use packaged python3 use tabbypy3
to start python environment. For Windows, there are no wrappers and using environment.bat is only choice.
Using LiteX
We provide you with Python 3.11 and all required software to be able to use LiteX. After activating environment
it is possible to perform installation same as usual:
mkdir -p litex
cd litex
wget https://raw.githubusercontent.com/enjoy-digital/litex/master/litex_setup.py
python3 litex_setup.py init
python3 litex_setup.py install
Supported Architectures
linux-x64
Any personal Linux based computer should just work; no additional packages need to be installed on the system to make OSS CAD Suite work. Distributed libraries are based on Ubuntu 20.04, but everything is packaged in such a way so it can be used on any Linux distribution.
darwin-x64
Any macOS 12.00 or later with Intel CPU should use this distribution package.
darwin-arm64
Any macOS 12.00 or later with M1/M2 CPU should use this distribution package.
windows-x64
This architecture is supported for Windows 10 and 11.
linux-arm64
ARM64 based Linux devices using 64bit CPU as in Raspberry Pi 4,5 and 400 (with 64bit version of OS installed), and also laptops like the MNT Reform 2 can use this distribution package.
Contributing
To be able to build OSS CAD Suite yourself, you need to install docker
(please note this only works on x64 platforms) and python 3.6
or higher, with the click
library.
After that just running ./builder.py
should work fine.
To build default build:
./builder.py build
To skip update of source code, you can always:
./builder.py build --no-update
To build specific target and architecture:
./builder.py build --target=yosys --arch=linux-arm64
Alternatives
If your project is primarily written in Python (using tools such as Amaranth or LiteX), and you only need synthesis and PnR tools, you might find YoWASP more suited to your needs since it allows managing installation and versioning of these tools in the same way as any other Python package dependencies.