Local-first RTL verification knowledge platform for UVM scaffolds, reviewed maps, pattern packs, and CI gates.
Project description
LazyUVM
LazyUVM is a local-first Git-native verification knowledge layer for RTL projects.
Its job is narrow: keep verification knowledge and simulator output close to the code, then turn them into evidence a reviewer can inspect in Git and CI.
LazyUVM is not trying to replace VCS, Xcelium, Questa, Verilator, or vManager. It makes their existing output reviewable, local, Git-tracked, and CI-friendly.
RTL + lazyuvm.toml + simulator reports
-> LazyUVM
-> UVM/cocotb/C-header starters
-> spec/register/behavior/coverage/waiver traceability
-> Markdown/JSON evidence for local review and CI
LazyUVM is deliberately local-first: no required cloud service, no required third-party Python dependencies, and optional local Ollama summaries only when a user explicitly asks for local AI help.
See The Output First
If you are evaluating the project from GitHub, start with the generated demo report:
examples/report_bundle_demo/LazyUVM_Report/index.html
That offline static bundle is the product loop in one place:
EDA / coverage / gate / spec / waiver / pack JSON
-> LazyUVM report bundle
-> HTML pages a reviewer can open from a CI artifact
No simulator, private PDF, cloud account, or AI setup is needed to inspect the demo.
Try It In 3 Minutes
Install from PyPI:
pipx install lazyuvm
lazyuvm --version
Then print the shortest runnable demo:
lazyuvm demo quickstart
That demo shows the copy/paste path from a public coverage report to normalized LazyUVM evidence and a gate report. It does not require a simulator, private spec PDF, cloud service, or local AI.
Try A Trusted Starter Pack
LazyUVM v0.9 starts the pack catalog path. This is not a public package registry. It is a local catalog of curated starter packs that can be inspected before a project imports anything:
lazyuvm pack catalog
lazyuvm pack catalog --json --out pack_catalog.json
lazyuvm pack inspect community/apb
lazyuvm pack inspect community/apb --json --out apb_pack_inspect.json
The catalog currently lists the shipped community/apb, community/axi_lite,
and community/spi starters with version, supported export targets, smoke
evidence, known limits, and review policy.
pack inspect is the pre-import review packet for one pack. It prints the
pack evidence, bundle summary, known limits, dependency snippet, and adoption
commands before any TOML is imported into a project.
Safe adoption sequence:
catalog -> inspect -> import reviewable TOML -> lock -> overlay diff -> gate/report bundle
That sequence is the durable reuse loop: reviewed pack knowledge becomes local Git evidence rather than a hidden registry install.
To print the full copy/paste adoption recipe:
lazyuvm demo pack-adoption
Product Boundary
LazyUVM is not a simulator.
LazyUVM is not a vManager replacement.
LazyUVM is not sign-off verification.
It sits next to those tools as a Git-native evidence layer:
VCS / Xcelium / Questa / Verilator / existing reports
-> LazyUVM normalized evidence
-> Git review, CI summaries, manifests, and local knowledge reuse
The best first use case is not "replace the enterprise flow." It is:
existing EDA output
-> reviewable LazyUVM evidence
-> easier PR review, onboarding, and local audit trails
Why Use It
Most verification projects lose knowledge across specs, spreadsheets, old emails, waiver notes, coverage reports, and personal debug history. LazyUVM is worth trying when that loss costs review time:
| Need | LazyUVM gives you |
|---|---|
| Start a project quickly | RTL scan, project config, starter UVM/SVA/coverage/cocotb output |
| Keep intent reviewable | lazyuvm.toml protocol maps, register maps, behavior specs, spec references |
| Reuse knowledge | curated pack catalog, reviewed pattern packs, local pack dependencies, lockfiles, overlay diffs |
| Review simulator output | normalized lazyuvm.eda_report.v1 JSON from VCS/Questa/Xcelium/Verilator-style reports |
| Keep CI honest | lazyuvm gate Markdown/JSON evidence, waiver checks, manifest verification |
| Use AI safely | facts-only context for optional local Ollama explanations; humans still approve |
The useful stickiness is not hidden telemetry. It is the team's reviewed verification knowledge living in Git.
Pick Your Path
LazyUVM has a lot of commands, but most users should start with only one path:
| User | Start with | Add later | Avoid at first |
|---|---|---|---|
| Student / open-source RTL | demo quickstart, check, uvm, cocotb, coverage parse |
regs --c-header, spec --coverage-plan |
strict gates, waivers, pack policy |
| Solo developer / small team | init, check, gate, know trace, know manifest |
reviewed waivers, pack reuse, init-ci |
enterprise-style process too early |
| Startup / design house | CI gate, EDA report JSON, C headers, cocotb/UVM starters | pack lockfiles, overlay diff, waiver governance | public packs without review |
| Enterprise / existing EDA flow | coverage parse, gate --eda-report-json, offline/security docs |
strict waiver policy, manifests, local AI review bundle | claims of sign-off replacement |
The adoption rule is simple: begin with local evidence, then add governance only when the team is ready to review it.
Install
From a checkout:
python3 -m pip install -e .
lazyuvm --version
For command discovery:
lazyuvm --help
lazyuvm demo --help
Older one-off flags still exist behind lazyuvm legacy --help, but new project
work should use lazyuvm.toml and the project commands below.
Five-Minute Path
Create a project config:
lazyuvm init --filelist path/to/files.f --top your_top_module
Run local checks and starter exports:
lazyuvm check
lazyuvm uvm
lazyuvm cocotb --out-dir generated_cocotb
lazyuvm regs --c-header --out regs.h
Validate reviewed knowledge:
lazyuvm regs
lazyuvm spec
lazyuvm know trace --out LazyUVM_Traceability.md
lazyuvm know manifest --out LazyUVM_Knowledge_Manifest.json
Turn the current state into CI evidence:
lazyuvm gate --update-manifest --json-out LazyUVM_Gate.json --report LazyUVM_Gate.md
Add GitHub Actions when the local flow is stable:
lazyuvm init-ci --filelist path/to/files.f --top your_top_module --repo OWNER/REPO --cocotb
The generated workflow uploads lazyuvm-report-bundle; open
LazyUVM_Report/index.html from the artifact for the static HTML dashboard.
EDA Report Flow
LazyUVM v0.7 adds a small adapter contract for simulator and coverage reports. The goal is to absorb report output into the same Git-reviewed evidence loop, not to replace the simulator.
lazyuvm coverage parse reports/vcs_urg.txt \
--tool vcs \
--json-out LazyUVM_EDA_Report.json \
--out LazyUVM_EDA_Report.md
lazyuvm gate \
--eda-report-json LazyUVM_EDA_Report.json \
--json-out LazyUVM_Gate.json \
--report LazyUVM_Gate.md
lazyuvm spec trace --json --out LazyUVM_Spec_Trace.json
Bundle the local JSON evidence into a static CI artifact:
lazyuvm report bundle \
--gate-json LazyUVM_Gate.json \
--eda-report-json LazyUVM_EDA_Report.json \
--spec-trace-json LazyUVM_Spec_Trace.json \
--pack-deps-json pack_dependencies.json \
--pack-lock-json LazyUVM_Pack_Lock.json \
--pack-overlay-json pack_overlay_diff.json \
--pack-catalog-json pack_catalog.json \
--redact-local-paths \
--out LazyUVM_Report
Open LazyUVM_Report/index.html for the overview,
LazyUVM_Report/coverage.html for coverage-hole review,
LazyUVM_Report/waivers.html for waiver health, or
LazyUVM_Report/spec_trace.html for source-coordinate traceability, or
LazyUVM_Report/packs.html for local pack reuse evidence.
To preview the result without running a simulator or CI, open the public-safe
demo bundle at
examples/report_bundle_demo/LazyUVM_Report/index.html.
The bundle is offline by construction: no CDN, no external JavaScript, no
tracking, no network calls, copied JSON evidence under data/, a
data/manifest.json inventory, and a data/manifest.sha256 sidecar. Use
--redact-local-paths before sharing a report outside your machine or CI
boundary.
Report bundles use quiet artifact branding by default. The page title is
Verification Evidence Report; LazyUVM remains as generator provenance with
the tool version, schema, and no-network boundary. Use --title for a
project-specific title or --brand product for product-branded public demos.
Supported starter profiles:
| Profile | Typical source |
|---|---|
vcs |
Synopsys VCS URG-style summaries |
questa |
Siemens Questa vcover-style summaries |
xcelium |
Cadence Xcelium IMC-style summaries |
verilator / lcov |
Verilator and LCOV-style text reports |
generic |
simple line-oriented coverage notes |
See docs/v0.7_stabilization.md for the stable
lazyuvm.eda_report.v1 fields and the coverage parse -> gate handoff.
See docs/report_bundle.md for the v0.8 static report
bundle contract.
Typical Team Workflow
- Commit
lazyuvm.toml. - Add reviewed protocol/register/behavior/spec references as the project becomes understood.
- Parse coverage or simulator reports into LazyUVM JSON.
- Run
lazyuvm gatelocally and in CI. - Review Markdown/JSON evidence in pull requests.
- Use packs, waivers, and manifests only when the team actually needs them.
That progression matters. Teams should not start by enabling every feature. Start with a small reviewed config, then add governance as it pays for itself.
Documentation Map
Do not read every document first. Pick one path:
| If you want to... | Start here |
|---|---|
| Find a runnable sample | examples/README.md |
| Try the product flow | docs/team_governance_demo.md |
| Understand PR repair commands | docs/pr_workflow_cookbook.md |
| Export UVM, cocotb, C headers, and CI evidence | docs/export_targets.md |
| Reuse local knowledge packs | docs/pack_reuse_workflow.md |
| Adopt a curated starter pack safely | docs/pack_adoption_recipe.md |
| Parse EDA reports in CI | docs/eda_ci_recipes.md |
| Review offline/security boundaries | docs/eda_offline_adoption.md |
| Use local AI safely | docs/ai_review_workflow.md |
The full documentation index is docs/README.md.
Local AI Boundary
LazyUVM does not ask AI to sign off RTL.
LazyUVM = extract facts, link evidence, write stable JSON/Markdown
AI = optionally explain those facts in local prose
Human = review, approve, sign off
Useful commands:
lazyuvm know context "coverage closure" --gate-json LazyUVM_Gate.json --out LazyUVM_AI_Context.json
lazyuvm know context-verify LazyUVM_AI_Context.json
lazyuvm know prompt --context-json LazyUVM_AI_Context.json --out LazyUVM_AI_Prompt.txt
lazyuvm know explain "coverage closure" --context-json LazyUVM_AI_Context.json --ai --out LazyUVM_Knowledge_Explain.md
lazyuvm know guard --context-json LazyUVM_AI_Context.json --ai-output LazyUVM_Knowledge_Explain.md
AI output is a reading aid, not a reviewed fact or root-cause decision.
Who It Is For
LazyUVM is a practical fit for:
- students and open-source RTL projects that need repeatable verification structure without enterprise tooling;
- small teams that want Git-reviewed protocol/register/spec knowledge;
- teams already using commercial simulators but wanting lightweight PR evidence;
- engineers who want local-first AI summaries without uploading design data.
It is not a substitute for a mature enterprise sign-off flow. If your company already has vManager, Verdi, VCS, Xcelium, Questa, Jasper, or internal dashboards, LazyUVM should complement that flow by making local evidence easier to review.
For enterprise conversations, the safest framing is:
LazyUVM does not replace the enterprise flow.
LazyUVM turns local RTL knowledge and EDA output into reviewable Git/CI evidence.
Release Status
Current repository version: 0.9.3
Latest tagged release: 0.9.3
Latest release note: docs/releases/v0.9.3.md
See CHANGELOG.md for release history and RELEASE_CHECKLIST.md before cutting a tag.
For small public-safe contributions, see CONTRIBUTING.md. For sensitive reports and private design-data boundaries, see SECURITY.md.
Project Philosophy
The project is intentionally boring where it matters:
- local files over hidden services;
- reviewable TOML/JSON/Markdown over opaque databases;
- explicit spec/register/behavior links over magic inference;
- deterministic CI evidence over unverifiable AI claims;
- human approval over automated sign-off.
That is the adoption path: make the first local workflow useful, then let teams keep more of their verification memory in a format they can review, diff, and carry between projects.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lazyuvm-0.9.3.tar.gz.
File metadata
- Download URL: lazyuvm-0.9.3.tar.gz
- Upload date:
- Size: 285.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
38e29e2399fced2bd00c952ec4885693bbdcd02a166f23eefa907c46de89ef35
|
|
| MD5 |
a4111545fd625fc0d0bde92341102825
|
|
| BLAKE2b-256 |
5f618cd64ca6e3c07003c6b52590a40bc989e56e85f31964b1e90470c251505f
|
Provenance
The following attestation bundles were made for lazyuvm-0.9.3.tar.gz:
Publisher:
release.yml on jeonghunx/LazyUVM
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
lazyuvm-0.9.3.tar.gz -
Subject digest:
38e29e2399fced2bd00c952ec4885693bbdcd02a166f23eefa907c46de89ef35 - Sigstore transparency entry: 1935583867
- Sigstore integration time:
-
Permalink:
jeonghunx/LazyUVM@bcd075c5ce1af2ef50449169015f712d9698ea04 -
Branch / Tag:
refs/tags/v0.9.3 - Owner: https://github.com/jeonghunx
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@bcd075c5ce1af2ef50449169015f712d9698ea04 -
Trigger Event:
release
-
Statement type:
File details
Details for the file lazyuvm-0.9.3-py3-none-any.whl.
File metadata
- Download URL: lazyuvm-0.9.3-py3-none-any.whl
- Upload date:
- Size: 282.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0f82fe7be381e25cc9fab2c399eaa5b2c7cdbd8e3dc29fe64ec246159e843125
|
|
| MD5 |
ebaff3b9901645b710e25609cdac6a29
|
|
| BLAKE2b-256 |
85f30b85b960330e7010466a218c26732c9a2f923243cfa55d8ade733c9ed695
|
Provenance
The following attestation bundles were made for lazyuvm-0.9.3-py3-none-any.whl:
Publisher:
release.yml on jeonghunx/LazyUVM
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
lazyuvm-0.9.3-py3-none-any.whl -
Subject digest:
0f82fe7be381e25cc9fab2c399eaa5b2c7cdbd8e3dc29fe64ec246159e843125 - Sigstore transparency entry: 1935583919
- Sigstore integration time:
-
Permalink:
jeonghunx/LazyUVM@bcd075c5ce1af2ef50449169015f712d9698ea04 -
Branch / Tag:
refs/tags/v0.9.3 - Owner: https://github.com/jeonghunx
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@bcd075c5ce1af2ef50449169015f712d9698ea04 -
Trigger Event:
release
-
Statement type: