vunit-yavs
The yavs simulator for VUnit, as a VUnit package. Add it in the run script before anything else,
then select yavs with VUNIT_SIMULATOR=yavs:
from vunit import VUnit
vu = VUnit.from_argv()
vu.add_package("vunit-yavs", allow_setup=True) # first: it provides the simulator
vu.add_vhdl_builtins()
vu.add_library("lib").add_source_files("*.vhd")
vu.main()
pip install vunit-yavs
VUNIT_SIMULATOR=yavs python run.py
yavs is found on PATH, or in the directory named by VUNIT_YAVS_PATH. It needs VUnit 5.0.0.dev16
or later (pip install vunit-yavs installs it, a pre-release) and yavs 0.10.0 or later.
Options
| Sim or compile option | Passed to |
|---|---|
yavs.global_flags |
yavs analyze, run and elab |
yavs.a_flags |
yavs analyze |
yavs.elab_flags |
yavs run and elab |
yavs.sim_flags |
yavs run |
yavs.max_threads (integer, at least 1) |
yavs run --threads=N, the most threads of one simulation |
| Command line | What it does |
|---|---|
-g/--gui |
Opens the run in the graphical debugger (yavs run --gui) |
--yavs-debug[=PORT] |
Runs the selected test under yavs run --dap=PORT (default 4711, 0 picks a free port) and prints where to attach; write the port as --yavs-debug=PORT |
--yavs-max-threads N |
yavs.max_threads for every test that does not set it |
--yavs-jobserver |
Lends the CPU slots of -p N that no test uses to the running simulations (below) |
Without yavs.max_threads or --yavs-max-threads no thread count is passed, and yavs runs with
its default. An explicit --threads in yavs.sim_flags comes after the cap and wins.
Native libraries of VUnit packages
A VUnit package that loads a native library can ask the simulator interface how: YavsInterface
has foreign_language_interface = "VHPIDIRECT" (the VHDL calls the library through foreign
subprograms with a "VHPIDIRECT ..." attribute) and native_library_hooks(library_file), which
returns the simulator hooks that pass --load=<library_file> to every yavs run.
Debugging one test
VUNIT_SIMULATOR=yavs python run.py lib.tb.test_name --yavs-debug
yavs waits for a Debug Adapter Protocol client on 127.0.0.1:4711 before the simulation starts;
attach the editor (the yavs extension's "Attach to yavs" configuration uses that port). When the
session ends, the test is reported as usual.
--yavs-debug runs one simulation. A second simulation of the run (a second test, or the same
test in another configuration) is an error before yavs starts, naming both tests. --yavs-debug
together with --gui, --elaborate or -p above 1 is an error at the start. A bare
--yavs-debug reads a following test name as its port: put test names first, or write
--yavs-debug=4711.
Jobserver
With -p N --yavs-jobserver (POSIX only; on Windows it is an error) every running test gets a
private GNU make jobserver, a named pipe in MAKEFLAGS=-jN --jobserver-auth=fifo:PATH, and a
thread of the run script lends tokens into the pipes: one CPU slot per running test is free, the
other N - k slots (for k running tests) are lent, breadth first (every test gets one extra
before any gets a second) and newest test first within a round, capped per test by
yavs.max_threads - 1. Tokens a simulation leaves unread are taken back and lent again every
50 ms, and a test that leaves tokens unread gets at most one more than it uses. A test that
starts while every token is in use runs at once, so the total is N in the steady state, not at
every instant. A simulation that exits holding tokens, or a run that ends with tokens out, is
reported with a warning.
MAKEFLAGS from an outer make -j is replaced, not passed on: joining an outer jobserver is not
supported. The pipes live in a temporary directory of their own, since MAKEFLAGS cannot hold a
path with spaces.
Licence
Mozilla Public License 2.0 (https://mozilla.org/MPL/2.0/), see the header of each file.
Metadata
Release files for vunit-yavs 0.10.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| vunit_yavs-0.10.1.tar.gz | 23.2 kB | With provenance | Details for vunit_yavs-0.10.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| vunit_yavs-0.10.1-py3-none-any.whl | Python 3 | none | any | Details for vunit_yavs-0.10.1-py3-none-any.whl |
Total release size: 35.1 kB
Release files / vunit_yavs-0.10.1.tar.gz
| Download URL | vunit_yavs-0.10.1.tar.gz |
|---|---|
| Size | 23.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
897e277d7a2573076ebad3b92045308aa60c7e3eca8ae278341998c64ccc15be
|
|
BLAKE2b-256 checksum How to use checksums |
acd514d5731e088496ec45882cd2c6b2a3f531206a2d00fae8416f8cb7311baa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.
Transparency logRelease files / vunit_yavs-0.10.1-py3-none-any.whl
| Download URL | vunit_yavs-0.10.1-py3-none-any.whl |
|---|---|
| Size | 11.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
63259a568bac755e3aa03c521f8b655639c917c19fdb4cf64a8507732426c530
|
|
BLAKE2b-256 checksum How to use checksums |
cb3951d4a3c0b82dc739d8a4b34e1a71076d775708cffbc4bf0edb3c01d213f8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.
Transparency logSecurity for vunit-yavs 0.10.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for vunit_yavs-0.10.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.