pyucis
PyUCIS provides a Python API for manipulating UCIS coverage data.
What it is and what it does
PyUCIS is a Python library and command-line tool for working with coverage data from hardware verification flows. It implements the Unified Coverage Interoperability Standard (UCIS) data model, allowing you to read, write, convert, and analyze coverage databases from multiple verification frameworks including Verilator, cocotb, and AVL. The package supports multiple formats (XML, YAML, SQLite, NCDB binary, LCOV, Cobertura, JaCoCo, Clover) and can merge coverage runs, generate reports, and export to industry-standard formats.
The tool includes both a Python API for programmatic access and a CLI with an interactive terminal UI for exploring coverage hierarchies, identifying gaps, and analyzing coverage hotspots. It also provides an MCP server for AI agent integration and AgentSkills support for LLM-based coverage analysis. The package is actively maintained, supports Python 3.8 through 3.12, and has no known security vulnerabilities.
Use it for:
- Convert coverage data between verification frameworks (e.g., cocotb XML to LCOV for CI/CD reporting).
- Merge coverage results from multiple test runs or simulation batches into a single database.
- Interactively explore coverage hierarchies and identify untested design areas using the terminal UI.
- Import Verilator or cocotb coverage and export to standard formats for integration with existing tools.
- Query coverage statistics and generate reports via CLI or Python API for test planning.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
PyUCIS provides a Python API and CLI tools for reading, writing, converting, and analyzing coverage data in the Unified Coverage Interoperability Standard (UCIS) format, supporting imports from Verilator, cocotb, and AVL verification frameworks.
Yes. PyUCIS is actively maintained, has no security vulnerabilities, and fills a clear need for hardware verification teams working with multiple coverage tools. The low install friction, permissive Apache 2.0 license, and support for current Python versions make it a practical choice. Install it if you need to work with UCIS coverage data, convert between verification frameworks, or integrate coverage analysis into CI/CD pipelines.
Install
pyucis on PyPI
pip
pip install pyucisuv
uv add pyucispoetry
poetry add pyucisInstalling pyucis
Before you install
Low friction install with six runtime dependencies (lxml, python-jsonschema-objects, jsonschema, pyyaml, mcp, rich). Active maintenance with recent releases; last commit 2026-03-07.
License in practice
Licensed under Apache 2.0 (permissive), allowing commercial and private use with minimal restrictions.
Quickstart
pip install pyucis
from pyucis import UCIS
db = UCIS("coverage.xml")
for scope in db.scopes():
for coveritem in scope.coveritems():
print(f"{coveritem.name}: {coveritem.count} hits")
Requires Python 3.8 or later.
Verify before relying
- Whether lxml requires a C compiler for installation on some systems.
- Performance characteristics when working with large coverage databases (file size thresholds, memory usage).
- Completeness of the NCDB format's claimed 60–73× size reduction in real-world verification workflows.
Package facts
| License | Apache 2.0 (permissive) |
| Python support | supports the current Python release (>=3.8) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 6 — lxml, python-jsonschema-objects, jsonschema, pyyaml, mcp, rich |
| Maintenance | actively maintained — 160 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 552,162/month — #6,044 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: pyucis-0.2.0.22787133465-py2.py3-none-any.whl
Keywords: SystemVerilog, Verilog, RTL, Coverage, UCIS, verification
Tags
More Testing packages
Pluggy provides a plugin system that lets you…
permissive · top 100 on PyPI
pytestpytest is a testing framework that lets you…
permissive · top 100 on PyPI
virtualenvvirtualenv creates isolated Python environments…
permissive · top 100 on PyPI
coverageCoverage.py measures which lines of Python code…
permissive · top 1,000 on PyPI
pytest-asynciopytest-asyncio is a pytest plugin that enables…
permissive · top 1,000 on PyPI
pytest-json-ctrfA pytest plugin that generates test reports in…
permissive · top 1,000 on PyPI
cocotb-coverageAdds constrained randomization and functional…
permissive · top 15,000 on PyPI
diff-coverCompares test coverage reports against git…
permissive · top 1,000 on PyPI
lcov-coberturaConverts code coverage reports from lcov format…
permissive · top 5,000 on PyPI
pyuvmImplements the IEEE 1800.2 Universal…
permissive · top 15,000 on PyPI
cocotb-testcocotb-test wraps cocotb hardware simulations…
permissive · top 15,000 on PyPI
pycoberturaParses Cobertura code coverage reports and…
permissive · top 15,000 on PyPI
pylint-junitGenerates JUnit-formatted XML reports from…
permissive · top 15,000 on PyPI
slipcoverSlipCover is a fast code coverage tool that…
permissive · top 15,000 on PyPI
gcovrGcovr processes GCC code coverage data and…
permissive · top 5,000 on PyPI
cocotb-buscocotb-bus provides pre-built testbenching…
unclear · top 15,000 on PyPI