Design verification infrastructure

DVLib

A package manager and private registry for reusable SystemVerilog/UVM libraries, including dependency resolution and simulator filelist generation.

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. 1

    Start a private registry and create a publish token.

  2. 2

    Initialize a verification package and list its files in exact compile order.

  3. 3

    Publish the package, then declare its version range from a consuming testbench.

  4. 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.