pyuvm
A Python implementation of the UVM using cocotb
What it is and what it does
pyuvm brings the industry-standard Universal Verification Methodology to Python, implementing the IEEE 1800.2 standard without requiring SystemVerilog. It provides core UVM abstractions—base classes, factory, phasing, transaction-level modeling (TLM), components, sequences, and a register access layer—all designed to work with cocotb to drive hardware simulations. Python's object-oriented features (multiple inheritance, no strict typing, no parameterized classes) make UVM testbench code simpler to write and maintain than the SystemVerilog equivalent.
The package covers the most-used sections of IEEE 1800.2, including base classes, reporting, factory, phasing, TLM interfaces, component hierarchy, sequences, and register blocks. Some advanced features like Memory and atomic Backdoor access remain unimplemented. Testbenches import pyuvm and use cocotb coroutines to interact with simulators, schedule events, and verify RTL designs through reusable, standardized testbench components.
Use it for:
- Build reusable RTL verification testbenches in Python that follow IEEE 1800.2 conventions without learning SystemVerilog.
- Verify hardware designs (Verilog or VHDL) using transaction-level modeling and UVM sequences in a Python environment.
- Develop register verification tests using the register access layer to model and test memory-mapped hardware registers.
- Create portable testbenches that can run across different simulators by leveraging cocotb's simulator abstraction.
- Teach verification methodology to engineers familiar with Python but new to SystemVerilog UVM.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Implements the IEEE 1800.2 Universal Verification Methodology (UVM) standard in Python, enabling RTL verification testbenches to run through cocotb simulators.
Yes. pyuvm is actively maintained, has no known vulnerabilities, installs with low friction, and is permissively licensed. It is the right choice if you need UVM-compliant verification in Python and have access to a cocotb-compatible simulator. Install it if your team prefers Python over SystemVerilog or if you are building testbenches for projects already using cocotb.
Install
pyuvm on PyPI
pip
pip install pyuvmuv
uv add pyuvmpoetry
poetry add pyuvmInstalling pyuvm
Before you install
Low friction installation via pip; cocotb is automatically installed as a dependency. The package is actively maintained with recent commits and a stable release history since 2020.
License in practice
Licensed under Apache Software License (permissive), allowing commercial and private use with minimal restrictions.
Quickstart
pip install pyuvm
from pyuvm import *
my_object = uvm_object("my_object")
print("object name:", my_object.get_name())
Requires a hardware simulator (e.g., Icarus, VCS, Vivado) and cocotb to be configured; simulation runs through Makefiles that invoke cocotb-config.
Verify before relying
- Whether all IEEE 1800.2 sections beyond those listed (e.g., Memory, Backdoor access) are planned or out of scope.
- Performance characteristics when running large-scale testbenches compared to SystemVerilog UVM.
- Compatibility matrix with specific simulator versions and cocotb releases.
Package facts
| License | not declared (permissive) |
| Python support | supports the current Python release (>=3.6) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 1 — cocotb |
| Maintenance | actively maintained — 300 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 362,935/month — #7,228 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: pyuvm-4.0.1-py3-none-any.whl
Tags
More Electronic Design Automation (EDA) packages
Parses and elaborates SystemRDL 2.0 register…
permissive · top 15,000 on PyPI
planarityTests whether a graph is planar, computes…
permissive · top 15,000 on PyPI
cocotbcocotb is a Python framework for writing…
permissive · top 15,000 on PyPI
pyslangpyslang provides Python bindings to parse,…
permissive · top 15,000 on PyPI
peakrdl-ipxactConverts between SystemRDL register…
copyleft · top 15,000 on PyPI
klayoutKLayout is a Python package for layout viewing,…
copyleft · top 15,000 on PyPI
peakrdl-uvmGenerates UVM (Universal Verification…
copyleft · top 15,000 on PyPI
cocotb-coverageAdds constrained randomization and functional…
permissive · top 15,000 on PyPI
cocotb-buscocotb-bus provides pre-built testbenching…
unclear · top 15,000 on PyPI
cocotb-testcocotb-test wraps cocotb hardware simulations…
permissive · top 15,000 on PyPI
pyucisPyUCIS provides a Python API and CLI tools for…
permissive · top 15,000 on PyPI
lambdalibLambdalib provides technology-agnostic hardware…
permissive · top 15,000 on PyPI
vonage-network-number-verificationVerifies a mobile device's phone number by…
permissive · top 15,000 on PyPI
peakrdl-regblockCompiles SystemRDL register descriptions into…
copyleft · top 15,000 on PyPI
svqlParses SystemVerilog modules and exposes their…
permissive · top 15,000 on PyPI