01
Understanding the project
The idea in plain language.
DVLib brings a pip- or npm-style workflow to design-verification code. Verification teams can publish versioned packages to a registry, declare dependencies in a manifest, and install a reproducible set of SystemVerilog or UVM sources into a project.
Unlike software ecosystems that can keep multiple nested copies of a dependency, SystemVerilog package names share a global namespace. DVLib therefore resolves exactly one compatible version of every package and preserves the source compilation order required by simulators.
02
Core capabilities
What the project can do.
-
01
Defines packages with a dvlib.toml manifest containing ordered source files, include directories, defines, metadata, and semantic-version ranges.
-
02
Uses a backtracking resolver to select one compatible version of each direct and transitive dependency.
-
03
Installs packages locally, writes a checksum-pinned lockfile, and generates a simulator-ready dvlib.f file.
-
04
Provides publish, install, update, outdated, tree, search, info, yank, and clean commands.
-
05
Runs a FastAPI and SQLite registry that stores immutable package archives on disk.
-
06
Re-verifies SHA-256 checksums on every cached or downloaded package use.
03
Typical workflow
How someone uses it.
-
1
Start a private registry and create a publish token.
-
2
Initialize a verification package and list its files in exact compile order.
-
3
Publish the package, then declare its version range from a consuming testbench.
-
4
Run dvlib install to resolve versions, verify archives, write the lockfile, and generate the simulator filelist.
04
Under the hood
Technology and design choices.
- Python 3.11+
- FastAPI
- SQLite
- resolvelib
- Semantic versioning
- TOML
05
Important considerations
What to know before using it.
- The built-in registry has no TLS, user accounts, quotas, or malware scanning; production deployments need a protected reverse proxy and network controls.
- SQLite is suitable for modest private registries but a higher-concurrency publish workload may require PostgreSQL.
- UVM itself is intentionally supplied by the simulator rather than packaged by DVLib.