Skip to main content

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)

Source distribution for vunit-yavs 0.10.1
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)

Table of built distributions (wheels) for vunit-yavs 0.10.1
File Interpreter ABI Platform Actions
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 log

Release 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 log

Security 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.

Select from 2 files

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 log

A 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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page