sv-elab: SystemVerilog elaborator
July 6, 2026 · View on GitHub
sv-elab elaborates SystemVerilog designs into word-level netlist form. It can be integrated as a software component in synthesis and verification tools. Formerly the project used the name "yosys-slang" and focused on Yosys integration.
sv-elab builds on top of the slang library to provide comprehensive SystemVerilog support. It supports an (informally defined) synthesizable subset of SystemVerilog in version IEEE 1800-2017 or IEEE 1800-2023.
Visit the Feature Support wiki page.
Users
sv-elab is a component of:
-
Yosys starting with v0.67; some older versions can use sv-elab as a plugin. Such a plugin is available prebuilt as part of
-
OSS CAD Suite from YosysHQ, and
-
IIC-OSIC-TOOLS from Johannes Kepler University
-
Compatibility
sv-elab can parse a number of open-source IPs, including:
For details see the compat suite repository which documents sample command lines.
Building
The following instructions are for building a Yosys plugin. Despite sv-elab becoming an integrated part of Yosys starting with v0.67, the option to build a plugin continues to exist. For recent Yosys, a plugin does not conflict with the internal sv-elab version, it overrides it.
Prerequisites:
-
Yosys installed: supported versions are 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.60 0.61 0.62 0.63 0.64 0.65 0.66
-
C++ compiler: GCC 11 and clang 17 are minimum supported versions
-
Usual toolchains, CMake
Check out the repository including the submodule, e.g. with
git clone --recursive https://github.com/povik/sv-elab
Then build sv-elab (incl. the bundled slang library) as a Yosys plugin:
cmake -B build .
make -C build -j$(nproc)
Use a custom -jN switch to build with N concurrent processes instead of matching the number of cores.
The built plugin is placed at build/slang.so. Copy this file into the Yosys plugin directory, which can be achieved through make install, or use a full path to this file (instead of the slang shorthand) when loading the plugin.
Using the plugin
One can load the plugin into Yosys on startup by passing the -m argument:
$ yosys -m slang
Or, alternatively, one can use the plugin command at runtime:
plugin -i slang
After the plugin has been loaded, reading designs using sv-elab uses the historical read_slang command name.
For a full documentation of the command options, see help read_slang. The command understands standard slang options.
Sample usage:
read_slang picorv32.v --top picorv32 -D DEBUG
Contributing
Contributions are welcome! If you intent to develop a particular feature, feel free to get in touch and consult on the appropriate approach.
AI policy
Submitting LLM generated content, both code and text, to the project's forums (Issues, Pull Requests, Discussions) is forbidden. This includes code submitted in pull requests.
An exception is made for preparing reproducers, i.e. files which demonstrate a bug and accompany a bug report, provided those have been minimized and stripped of any excess LLM comments.
To clarify, using LLM agents as tools in one's workflow to search, debug, test, or to make mechanical edits in one's code, is accepted. Prohibiting such is unenforceable and not the point of this AI policy. That being the case any code submitted should be written by a human, based on one's understanding of the codebase, and not generated by an LLM.
While the above rules govern the project's public forums, the primary maintainer (@povik) reserves the option to push LLM generated changes to the repository bypassing the pull request process.
Supporters
The following organizations have supported the project and contributed to sv-elab development:
License
sv-elab is distributed under the ISC license, see LICENSE.
In addition, sv-elab embeds
- slang, Copyright (c) Michael Popoloski, see
third_party/slang/for license information - {fmt}, Copyright (c) Victor Zverovich and {fmt} contributors, see
third_party/fmt/for license information