2023-08-02 23:20:29 +02:00
|
|
|
Installation
|
|
|
|
|
------------
|
|
|
|
|
|
2023-12-11 00:44:05 +01:00
|
|
|
This document will guide you through the process of installing Yosys.
|
|
|
|
|
|
|
|
|
|
CAD suite(s)
|
|
|
|
|
~~~~~~~~~~~~
|
|
|
|
|
|
|
|
|
|
Yosys is part of the `Tabby CAD Suite
|
|
|
|
|
<https://www.yosyshq.com/tabby-cad-datasheet>`_ and the `OSS CAD Suite
|
|
|
|
|
<https://github.com/YosysHQ/oss-cad-suite-build>`_! The easiest way to use yosys
|
|
|
|
|
is to install the binary software suite, which contains all required
|
|
|
|
|
dependencies and related tools.
|
|
|
|
|
|
|
|
|
|
* `Contact YosysHQ <https://www.yosyshq.com/contact>`_ for a `Tabby CAD Suite
|
|
|
|
|
<https://www.yosyshq.com/tabby-cad-datasheet>`_ Evaluation License and
|
|
|
|
|
download link
|
|
|
|
|
* OR go to https://github.com/YosysHQ/oss-cad-suite-build/releases to download
|
|
|
|
|
the free OSS CAD Suite
|
|
|
|
|
* Follow the `Install Instructions on GitHub
|
|
|
|
|
<https://github.com/YosysHQ/oss-cad-suite-build#installation>`_
|
|
|
|
|
|
|
|
|
|
Make sure to get a Tabby CAD Suite Evaluation License if you need features such
|
|
|
|
|
as industry-grade SystemVerilog and VHDL parsers!
|
|
|
|
|
|
|
|
|
|
For more information about the difference between Tabby CAD Suite and the OSS
|
|
|
|
|
CAD Suite, please visit https://www.yosyshq.com/tabby-cad-datasheet
|
|
|
|
|
|
|
|
|
|
Many Linux distributions also provide Yosys binaries, some more up to date than
|
|
|
|
|
others. Check with your package manager!
|
|
|
|
|
|
|
|
|
|
Targeted architectures
|
|
|
|
|
^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
|
|
|
|
|
The `OSS CAD Suite`_ releases `nightly builds`_ for the following architectures:
|
|
|
|
|
|
2025-03-15 00:14:09 +01:00
|
|
|
- **linux-x64** - Most personal Linux based computers
|
|
|
|
|
- **darwin-x64** - macOS 12 or later with Intel CPU
|
|
|
|
|
- **darwin-arm64** - macOS 12 or later with M1/M2 CPU
|
|
|
|
|
- **windows-x64** - Targeted for Windows 10 and 11
|
|
|
|
|
- **linux-arm64** - Devices such as Raspberry Pi with 64bit OS
|
2023-12-11 00:44:05 +01:00
|
|
|
|
2025-03-15 00:14:09 +01:00
|
|
|
For more information about the targeted architectures, and the current build
|
|
|
|
|
status, check the `OSS CAD Suite`_ git repository.
|
2023-12-11 00:44:05 +01:00
|
|
|
|
|
|
|
|
.. _OSS CAD Suite: https://github.com/YosysHQ/oss-cad-suite-build
|
|
|
|
|
.. _nightly builds: https://github.com/YosysHQ/oss-cad-suite-build/releases/latest
|
|
|
|
|
|
|
|
|
|
Building from source
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
2024-12-04 21:21:13 +01:00
|
|
|
The Yosys source files can be obtained from the `YosysHQ/Yosys git repository`_.
|
|
|
|
|
`ABC`_ and some of the other libraries used are included as git submodules. To
|
|
|
|
|
clone these submodules at the same time, use e.g.:
|
|
|
|
|
|
|
|
|
|
.. code:: console
|
|
|
|
|
|
|
|
|
|
git clone --recurse-submodules https://github.com/YosysHQ/yosys.git # ..or..
|
|
|
|
|
git clone https://github.com/YosysHQ/yosys.git
|
|
|
|
|
cd yosys
|
|
|
|
|
git submodule update --init --recursive
|
|
|
|
|
|
|
|
|
|
.. _YosysHQ/Yosys git repository: https://github.com/yosyshq/yosys/
|
|
|
|
|
.. _ABC: https://github.com/berkeley-abc/abc
|
2023-10-10 01:27:00 +02:00
|
|
|
|
2024-12-04 21:21:13 +01:00
|
|
|
.. note::
|
|
|
|
|
|
|
|
|
|
As of Yosys v0.47, releases include a ``yosys.tar.gz`` file which includes
|
|
|
|
|
all source code and all sub-modules in a single archive. This can be used as
|
|
|
|
|
an alternative which does not rely on ``git``.
|
|
|
|
|
|
2023-08-02 23:20:29 +02:00
|
|
|
Supported platforms
|
2023-12-11 00:44:05 +01:00
|
|
|
^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
|
|
|
|
|
The following platforms are supported and regularly tested:
|
|
|
|
|
|
|
|
|
|
- Linux
|
|
|
|
|
- macOS
|
|
|
|
|
|
|
|
|
|
Other platforms which may work, but instructions may not be up to date and are
|
|
|
|
|
not regularly tested:
|
|
|
|
|
|
|
|
|
|
- FreeBSD
|
|
|
|
|
- WSL
|
|
|
|
|
- Windows with (e.g.) Cygwin
|
|
|
|
|
|
|
|
|
|
Build prerequisites
|
|
|
|
|
^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
|
2026-05-13 11:24:45 +02:00
|
|
|
A C++ compiler with C++20 support is required as well as some standard tools
|
2026-06-02 05:45:00 +02:00
|
|
|
such as GNU Flex, GNU Bison (>=3.8), CMake (>=3.27), Make (or other CMake
|
|
|
|
|
generator such as Ninja), and Python (>=3.11). Some additional tools: readline,
|
|
|
|
|
libffi, Tcl and zlib; will be used if available but are optional. Graphviz and
|
|
|
|
|
Xdot are used by the `show` command to display schematics.
|
2023-12-11 00:44:05 +01:00
|
|
|
|
2025-11-01 04:19:38 +01:00
|
|
|
Installing all prerequisites:
|
2023-12-11 00:44:05 +01:00
|
|
|
|
2025-11-01 04:19:38 +01:00
|
|
|
.. tab:: Ubuntu 22.04
|
2023-12-11 00:44:05 +01:00
|
|
|
|
2025-11-01 04:19:38 +01:00
|
|
|
.. code:: console
|
2023-12-11 00:44:05 +01:00
|
|
|
|
2025-11-04 08:35:07 +01:00
|
|
|
sudo apt-get install gawk git make python3 lld bison clang flex \
|
2025-11-01 08:11:36 +01:00
|
|
|
libffi-dev libfl-dev libreadline-dev pkg-config tcl-dev zlib1g-dev \
|
2025-11-01 04:19:38 +01:00
|
|
|
graphviz xdot
|
2026-06-02 05:45:00 +02:00
|
|
|
sudo snap install cmake --classic
|
|
|
|
|
|
|
|
|
|
.. tab:: Ubuntu 24.04
|
|
|
|
|
|
|
|
|
|
.. code:: console
|
|
|
|
|
|
|
|
|
|
sudo apt-get install gawk git cmake make python3 lld bison clang flex \
|
|
|
|
|
libffi-dev libfl-dev libreadline-dev pkg-config tcl-dev zlib1g-dev \
|
|
|
|
|
graphviz xdot
|
2023-12-11 00:44:05 +01:00
|
|
|
|
2025-11-01 04:19:38 +01:00
|
|
|
.. tab:: macOS 13 (with Homebrew)
|
2023-12-11 00:44:05 +01:00
|
|
|
|
2025-11-01 04:19:38 +01:00
|
|
|
.. code:: console
|
2023-12-11 00:44:05 +01:00
|
|
|
|
2025-11-01 04:19:38 +01:00
|
|
|
brew tap Homebrew/bundle && brew bundle
|
2023-12-11 00:44:05 +01:00
|
|
|
|
2025-11-01 04:19:38 +01:00
|
|
|
.. tab:: MacPorts
|
|
|
|
|
|
|
|
|
|
.. code:: console
|
2023-12-11 00:44:05 +01:00
|
|
|
|
2025-11-01 04:19:38 +01:00
|
|
|
sudo port install bison flex readline gawk libffi graphviz \
|
2025-11-04 08:35:07 +01:00
|
|
|
pkgconfig python311 zlib tcl
|
2024-01-30 01:31:00 +01:00
|
|
|
|
2025-11-01 04:19:38 +01:00
|
|
|
.. tab:: FreeBSD
|
2024-03-17 22:35:01 +01:00
|
|
|
|
2025-11-01 04:19:38 +01:00
|
|
|
.. code:: console
|
2024-03-17 22:35:01 +01:00
|
|
|
|
2025-11-01 04:19:38 +01:00
|
|
|
pkg install bison flex readline gawk libffi graphviz \
|
2025-11-04 08:35:07 +01:00
|
|
|
pkgconf python311 tcl-wrapper
|
2024-12-04 21:21:13 +01:00
|
|
|
|
2025-11-01 04:19:38 +01:00
|
|
|
.. note:: On FreeBSD system use gmake instead of make. To run tests use:
|
|
|
|
|
``MAKE=gmake CXX=cxx CC=cc gmake test``
|
2024-12-04 21:21:13 +01:00
|
|
|
|
2026-06-02 05:45:00 +02:00
|
|
|
.. TODO:: CMAKE_TODO
|
|
|
|
|
|
|
|
|
|
Is this still required, and (how) does it work with CMake
|
|
|
|
|
|
2025-11-01 04:19:38 +01:00
|
|
|
.. tab:: Cygwin
|
2024-12-04 21:21:13 +01:00
|
|
|
|
2025-11-01 04:19:38 +01:00
|
|
|
Use the following command to install all prerequisites, or select these
|
|
|
|
|
additional packages:
|
|
|
|
|
|
|
|
|
|
.. code:: console
|
2024-12-04 21:21:13 +01:00
|
|
|
|
2026-06-02 05:45:00 +02:00
|
|
|
setup-x86_64.exe -q --packages=bison,flex,gcc-core,gcc-g++,git,libffi-devel,libreadline-devel,cmake,make,pkg-config,python3,tcl-devel,zlib-devel
|
2024-12-04 21:21:13 +01:00
|
|
|
|
2025-11-01 04:19:38 +01:00
|
|
|
.. warning::
|
2024-12-04 21:21:13 +01:00
|
|
|
|
2025-11-01 04:19:38 +01:00
|
|
|
As of this writing, Cygwin only supports up to Python 3.9.16 while the
|
|
|
|
|
minimum required version of Python is 3.11. This means that Cygwin is not
|
|
|
|
|
compatible with many of the Python-based frontends. While this does not
|
|
|
|
|
currently prevent Yosys itself from working, no guarantees are made for
|
2026-06-02 05:45:00 +02:00
|
|
|
continued support. You may also need to specify ``CXXSTD=gnu++20`` to
|
2025-11-01 04:19:38 +01:00
|
|
|
resolve missing ``strdup`` function when using gcc. It is instead
|
|
|
|
|
recommended to use Windows Subsystem for Linux (WSL) and follow the
|
|
|
|
|
instructions for Ubuntu.
|
2024-12-04 21:21:13 +01:00
|
|
|
|
2025-11-01 04:19:38 +01:00
|
|
|
..
|
|
|
|
|
tab:: MSYS2 (MINGW64)
|
2024-12-04 21:21:13 +01:00
|
|
|
|
|
|
|
|
.. code:: console
|
|
|
|
|
|
2025-11-04 08:35:07 +01:00
|
|
|
pacman -S bison flex mingw-w64-x86_64-gcc git libffi-devel libreadline-devel make pkg-config python3 tcl-devel zlib-devel
|
2024-12-04 21:21:13 +01:00
|
|
|
|
|
|
|
|
Not that I can get this to work; it's failing during ld with what looks like
|
|
|
|
|
math library issues: ``multiple definition of `tanh'`` and
|
|
|
|
|
``undefined reference to `__imp_acosh'``, as well as issues in `aiger2` with
|
|
|
|
|
``seekg`` et al not being available.
|
|
|
|
|
|
|
|
|
|
.. note::
|
|
|
|
|
|
|
|
|
|
The ``config-msys2-64`` target uses the ``mingw-w64-x86_64-`` prefixed
|
|
|
|
|
compiler in order to allow compiled exe files to be run without an MSYS2
|
|
|
|
|
shell.
|
|
|
|
|
|
2024-12-04 21:21:13 +01:00
|
|
|
Build configuration
|
|
|
|
|
^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
|
2026-06-02 05:45:00 +02:00
|
|
|
The Yosys build is configured via CMake, and uses a number of variables
|
|
|
|
|
which influence the build process.
|
|
|
|
|
|
|
|
|
|
set one-off options with
|
2024-12-04 21:21:13 +01:00
|
|
|
|
|
|
|
|
.. code:: console
|
|
|
|
|
|
2026-06-02 05:45:00 +02:00
|
|
|
cmake -B build . --fresh \
|
|
|
|
|
-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
|
2024-03-17 22:35:01 +01:00
|
|
|
|
2026-06-02 05:45:00 +02:00
|
|
|
set persistent options with
|
2024-12-04 21:21:13 +01:00
|
|
|
|
|
|
|
|
.. code:: console
|
|
|
|
|
|
2026-06-02 05:45:00 +02:00
|
|
|
vi Configuration.cmake # ..then..
|
|
|
|
|
cmake -C Configuration.cmake -B build . --fresh
|
2024-12-04 21:21:13 +01:00
|
|
|
|
2026-06-02 05:45:00 +02:00
|
|
|
e.g.
|
2024-03-17 22:35:01 +01:00
|
|
|
|
2026-06-02 05:45:00 +02:00
|
|
|
.. code:: cmake
|
2024-03-17 22:35:01 +01:00
|
|
|
|
2026-06-02 05:45:00 +02:00
|
|
|
set(CMAKE_C_COMPILER clang CACHE STRING "")
|
|
|
|
|
set(CMAKE_CXX_COMPILER clang++ CACHE STRING "")
|
|
|
|
|
set(YOSYS_WITHOUT_ZLIB ON CACHE STRING "")
|
2024-03-17 22:35:01 +01:00
|
|
|
|
2026-06-02 05:45:00 +02:00
|
|
|
Once generated, build variables can be inspected and modified with:
|
|
|
|
|
|
|
|
|
|
.. code:: console
|
2024-12-04 21:21:13 +01:00
|
|
|
|
2026-06-02 05:45:00 +02:00
|
|
|
ccmake build #..or..
|
|
|
|
|
vi build/CMakeCache.txt
|
2024-12-04 21:21:13 +01:00
|
|
|
|
|
|
|
|
If you have clang, and (a compatible version of) ``ld.lld`` available in PATH,
|
|
|
|
|
it's recommended to speed up incremental builds with lld by enabling LTO with
|
2026-06-02 05:45:00 +02:00
|
|
|
``CMAKE_INTERPROCEDURAL_OPTIMIZATION=ON``. On macOS, LTO requires using clang
|
|
|
|
|
from homebrew rather than clang from xcode. For example:
|
2024-12-04 21:21:13 +01:00
|
|
|
|
|
|
|
|
.. code:: console
|
|
|
|
|
|
2026-06-02 05:45:00 +02:00
|
|
|
cmake -B build . -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \
|
|
|
|
|
-DCMAKE_C_COMPILER=$(brew --prefix)/opt/llvm/bin/clang \
|
|
|
|
|
-DCMAKE_CXX_COMPILER=$(brew --prefix)/opt/llvm/bin/clang++
|
2024-12-04 21:21:13 +01:00
|
|
|
|
|
|
|
|
By default, building (and installing) yosys will build (and install) `ABC`_,
|
|
|
|
|
using :program:`yosys-abc` as the executable name. To use an existing ABC
|
2026-06-02 05:45:00 +02:00
|
|
|
executable instead, set the :makevar:`YOSYS_ABC_EXECUTABLE` make variable to point to
|
|
|
|
|
the desired executable.
|
2024-12-04 21:21:13 +01:00
|
|
|
|
|
|
|
|
Running the build system
|
|
|
|
|
^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
|
|
|
|
|
From the root ``yosys`` directory, call the following commands:
|
|
|
|
|
|
|
|
|
|
.. code:: console
|
2025-10-18 13:58:56 +02:00
|
|
|
|
2026-06-02 05:45:00 +02:00
|
|
|
cmake -B build . -DCMAKE_BUILD_TYPE=Release
|
|
|
|
|
cmake --build build --config Release --parallel $(nproc)
|
|
|
|
|
sudo cmake --install build --strip
|
2024-12-04 21:21:13 +01:00
|
|
|
|
2026-06-02 05:45:00 +02:00
|
|
|
Note that Yosys does not support in-tree builds, and if calling ``cmake`` from
|
|
|
|
|
the root ``yosys`` directory the ``-B`` option must be provided.
|
2024-12-04 21:21:13 +01:00
|
|
|
|
2025-10-18 13:58:56 +02:00
|
|
|
.. seealso::
|
2023-12-11 00:44:05 +01:00
|
|
|
|
2024-08-22 00:03:59 +02:00
|
|
|
Refer to :doc:`/yosys_internals/extending_yosys/test_suites` for details on
|
|
|
|
|
testing Yosys once compiled.
|
2023-08-02 23:20:29 +02:00
|
|
|
|
|
|
|
|
Source tree and build system
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
|
|
The Yosys source tree is organized into the following top-level
|
|
|
|
|
directories:
|
|
|
|
|
|
2024-01-18 01:52:32 +01:00
|
|
|
``backends/``
|
|
|
|
|
This directory contains a subdirectory for each of the backend modules.
|
|
|
|
|
|
2026-06-02 05:45:00 +02:00
|
|
|
``cmake/``
|
|
|
|
|
Additional ``.cmake`` files used by CMake during build generation.
|
|
|
|
|
|
2024-01-18 01:52:32 +01:00
|
|
|
``docs/``
|
|
|
|
|
Contains the source for this documentation, including images and sample code.
|
|
|
|
|
|
|
|
|
|
``examples/``
|
|
|
|
|
Contains example code for using Yosys with some other tools including a demo
|
|
|
|
|
of the Yosys Python api, and synthesizing for various toolchains such as
|
|
|
|
|
Intel and Anlogic.
|
|
|
|
|
|
|
|
|
|
``frontends/``
|
|
|
|
|
This directory contains a subdirectory for each of the frontend modules.
|
|
|
|
|
|
|
|
|
|
``kernel/``
|
|
|
|
|
This directory contains all the core functionality of Yosys. This includes
|
|
|
|
|
the functions and definitions for working with the RTLIL data structures
|
2024-01-30 01:31:00 +01:00
|
|
|
(:file:`rtlil.{h|cc}`), the ``main()`` function (:file:`driver.cc`), the
|
|
|
|
|
internal framework for generating log messages (:file:`log.{h|cc}`), the
|
|
|
|
|
internal framework for registering and calling passes
|
|
|
|
|
(:file:`register.{h|cc}`), some core commands that are not really passes
|
|
|
|
|
(:file:`select.cc`, :file:`show.cc`, …) and a couple of other small utility
|
|
|
|
|
libraries.
|
2024-01-18 01:52:32 +01:00
|
|
|
|
|
|
|
|
``libs/``
|
|
|
|
|
Libraries packaged with Yosys builds are contained in this folder. See
|
|
|
|
|
:doc:`/appendix/auxlibs`.
|
|
|
|
|
|
|
|
|
|
``misc/``
|
|
|
|
|
Other miscellany which doesn't fit anywhere else.
|
|
|
|
|
|
|
|
|
|
``passes/``
|
|
|
|
|
This directory contains a subdirectory for each pass or group of passes. For
|
2024-05-03 03:38:01 +02:00
|
|
|
example as of this writing the directory :file:`passes/hierarchy/` contains
|
|
|
|
|
the code for three passes: `hierarchy`, `submod`, and `uniquify`.
|
2024-01-18 01:52:32 +01:00
|
|
|
|
2026-06-02 05:45:00 +02:00
|
|
|
``pyosys/``
|
|
|
|
|
Contains the scripts and wrappers necessary for building :doc:`Pyosys
|
|
|
|
|
</using_yosys/pyosys>`.
|
|
|
|
|
|
2024-01-18 01:52:32 +01:00
|
|
|
``techlibs/``
|
|
|
|
|
This directory contains simulation models and standard implementations for
|
|
|
|
|
the cells from the internal cell library.
|
|
|
|
|
|
|
|
|
|
``tests/``
|
|
|
|
|
This directory contains the suite of unit tests and regression tests used by
|
2024-08-22 00:03:59 +02:00
|
|
|
Yosys. See :doc:`/yosys_internals/extending_yosys/test_suites`.
|
2023-08-02 23:20:29 +02:00
|
|
|
|
2026-06-02 05:45:00 +02:00
|
|
|
.. TODO:: CMAKE_TODO
|
|
|
|
|
|
|
|
|
|
- ``yosys_<pass|test_pass|frontend|backend>(<name>)`` for each pass
|
|
|
|
|
|
|
|
|
|
- see :file:`cmake/YosysComponent.cmake`
|
|
|
|
|
|
|
|
|
|
- if using a sub folder, add it to the parent's ``CMakeLists.txt`` with
|
|
|
|
|
``add_subdirectory(<name>)``
|
|
|
|
|
|
|
|
|
|
The top-level Makefile includes :file:`frontends/{*}/Makefile.inc`,
|
|
|
|
|
:file:`passes/{*}/Makefile.inc` and :file:`backends/{*}/Makefile.inc`. So when
|
|
|
|
|
extending Yosys it is enough to create a new directory in :file:`frontends/`,
|
|
|
|
|
:file:`passes/` or :file:`backends/` with your sources and a
|
|
|
|
|
:file:`Makefile.inc`. The Yosys kernel automatically detects all commands linked
|
|
|
|
|
with Yosys. So it is not needed to add additional commands to a central list of
|
|
|
|
|
commands.
|
|
|
|
|
|
|
|
|
|
Good starting points for reading example source code to learn how to write
|
|
|
|
|
passes are :file:`passes/opt/opt_dff.cc` and :file:`passes/opt/opt_merge.cc`.
|
|
|
|
|
|
|
|
|
|
Users of the Qt Creator IDE can generate a QT Creator project file using make
|
|
|
|
|
qtcreator. Users of the Eclipse IDE can use the "Makefile Project with Existing
|
|
|
|
|
Code" project type in the Eclipse "New Project" dialog (only available after the
|
|
|
|
|
CDT plugin has been installed) to create an Eclipse project in order to
|
|
|
|
|
programming extensions to Yosys or just browse the Yosys code base.
|