Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

awesome-vunit-vcs

CI Documentation License: MPL-2.0 Python 3.10–3.14 Simulators: GHDL | NVC Status: alpha

Verification components for VUnit that feel like VUnit's own: Ethernet, QSPI flash, I2C, MDIO, AXI4 monitoring and slaves, and property-based testing with Hypothesis inside the simulation.

Connect a component to the pins of your design and it sends, receives and checks traffic for you. Your testbench stays in VHDL, and the components do the protocol work in Python behind the scenes.

VHDL handles simulation timing. Python handles verification semantics.

📖 Documentation: https://awesome-vunit-vcs.readthedocs.io

Highlights

  • Native VUnit components. Handles made by new_<component>, com messages, wait_until_idle, reset and ordinary VUnit check failures. One context clause per family is all a testbench needs.
  • Checks you would otherwise write by hand. Monitors check preamble, SFD, FCS, frame length, PHY errors, control characters, inter-frame gaps and metavalues, each check switchable.
  • Good and deliberately broken traffic. Sources send bad FCS, short preambles, wrong SFDs, errors and short gaps as easily as clean frames.
  • Scoreboards, statistics and Wireshark captures with simulation timestamps, and AXI4 latency percentiles, bandwidth and backpressure next to VUnit's own AXI components.
  • Property-based testing in VHDL. Hypothesis draws the stimulus, your testbench runs it through the design, and a failure shrinks to the smallest input that still fails.
  • Python where it helps. Build frames, model a flash, I2C or MDIO device or write strategies in plain Python, including in pytest without a simulator.

What's inside

Family Interfaces Components
Ethernet GMII (1G, 2.5G), MII (10M, 100M), RGMII (10M–1G), RMII (10M, 100M) source, monitor, protocol checker
XGMII family, 2.5G to 400G: 2.5GMII, 5GMII, XGMII, 25GMII, XLGMII, CGMII, 200GMII, 400GMII source, monitor, protocol checker
AXI-Stream MAC client, any width, with backpressure source, sink, monitor, protocol checker
Flash QSPI NOR flash, x1, x2 and x4 lanes flash responder, QSPI master, QSPI protocol checker
I2C Standard-mode, Fast-mode, Fast-mode Plus; 7- and 10-bit addresses; SMBus PEC master, target with Python device models (registers, 24Cxx EEPROM, your own), monitor, protocol checker
MDIO Clause 22 management frames of Ethernet PHYs PHY with a register file or a Python device model and a clock-to-output delay, master
AXI4 AXI4 and AXI4-Lite, data 8 to 1024 bits, IDs, FIXED/INCR/WRAP bursts, narrow and unaligned transfers monitor with shadow memory scoreboard and performance statistics, protocol checker, read and write slaves on a sparse 64-bit memory
Property-based testing Any design property_pkg: Hypothesis strategies, stateful tests, scores, lockup handling, replay

Every component is tested with GHDL and NVC in CI.

Property-based testing, by example

examples/property has a small, runnable example for each common technique, many with a planted bug you can switch on to watch Hypothesis find and shrink it:

  • scalar, composite and stateful properties, and resource lifecycles with Hypothesis Bundles
  • interleaved event schedules, recursive grammar-based inputs, and timing and clock ratio/phase (CDC)
  • fault injection, invalid-input mutation, and lockup handling and recovery
  • differential, round-trip and metamorphic properties, with hardware bit-pattern strategies
  • targeting with scores, swarm testing, and a paired check that AXI4-Stream TVALID does not wait for TREADY

See Technique examples for the full list.

Install

Requirements: CPython 3.10–3.14, GHDL or NVC, and on Linux or macOS a C compiler with the Python development headers. Pre-releases are on PyPI (pip install --pre awesome-vunit-vcs). The development version on GitHub needs two unreleased dependencies, pinned to tested commits: VUnit with package setup hooks and vunit-python-bridge. Install them, then the package, from GitHub:

pip install -r https://raw.githubusercontent.com/ru551n/awesome-vunit-vcs/main/tests/packaging/unreleased-requirements.txt
pip install "awesome-vunit-vcs @ git+https://github.com/ru551n/awesome-vunit-vcs"
pip install hypothesis  # only for property-based testing

The installation guide covers optional extras and installing from a clone.

Get started

  1. Quick start: a GMII testbench with a scoreboard and a Wireshark capture in five minutes. From a clone, run it with VUNIT_SIMULATOR=nvc python examples/quickstart/run.py --output-path ../vunit_out.
  2. Cookbook: step-by-step recipes, from a first test to error injection, flash boot and property-based testing.
  3. examples/: complete, tested projects that the documentation is built from.

Add the components to a VUnit run script with vu.add_package("vunit-python-bridge", allow_setup=True) and vu.add_package("awesome-vunit-vcs"), as the quick start shows.

Status

Alpha: the APIs can still change before the first release. The roadmap lists what comes next.

For AI agents

  • llms.txt and llms-full.txt index the documentation.
  • api/vhdl.json, api/python.json and api/examples.json on Read the Docs give exact signatures and map each cookbook task to its example.
  • AGENTS.md is for agents working on this repository.

Contributing

Contributions are welcome: see CONTRIBUTING.md, and ARCHITECTURE.md for the design.

License

Mozilla Public License 2.0

Metadata

Release files for awesome-vunit-vcs 0.1.0a1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for awesome-vunit-vcs 0.1.0a1
File Size Uploaded
awesome_vunit_vcs-0.1.0a1.tar.gz 811.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for awesome-vunit-vcs 0.1.0a1
File Interpreter ABI Platform
awesome_vunit_vcs-0.1.0a1-py3-none-any.whl Python 3 none any Details

Total release size: 1.3 MB

Release files / awesome_vunit_vcs-0.1.0a1.tar.gz

Download URL awesome_vunit_vcs-0.1.0a1.tar.gz
Size 811.7 kB
Tags Source
SHA-256 checksum
How to use checksums
d3354650d98bdfdc3dd0b55e162a903ee3ddd6709d1c5d39ea57dd8aa70ed01d
BLAKE2b-256 checksum
How to use checksums
bd89e0c4700fd5f586f345483f3e4c0a5d2cf799e4404ef1643275e8106a87d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 29, 2026.

Transparency log

Release files / awesome_vunit_vcs-0.1.0a1-py3-none-any.whl

Download URL awesome_vunit_vcs-0.1.0a1-py3-none-any.whl
Size 453.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a3698d4241152becc1fa056377014def103c5d8cc95c9f61bdc463496e0520dd
BLAKE2b-256 checksum
How to use checksums
cd19d78fd0aebe71d5a3d72b2bf3d08d84366ae7df4147d7830c9a3deb858446
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 29, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0a1 This release

2 release files

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