Skip to main content

rtl_buddy

PyPI Python License Docs

rtl_buddy is a Python CLI for Verilog and SystemVerilog RTL design and verification. It drives the tools your project already uses from YAML configuration, with a consistent interface for humans, CI, and AI agents.

It covers simulation and randomized regressions, filelist generation, synthesis, place-and-route, power analysis, formal property verification, mutation testing, waveform viewing, hierarchy rendering, AXI profiling, and spec traceability.

uv run rb test basic
uv run rb test smoke --repeat 20
uv run rb regression
uv run rb regression --coverage-merge
uv run rb synth -c synth/sandbox/synth.yaml
uv run rb fpv -c fpv/sandbox/fpv.yaml
uv run rb wave basic
uv run rb axi-profile run basic
uv run rb tool-check

Why rtl_buddy

  • Run one test or a full regression from YAML instead of ad hoc shell scripts.
  • Keep simulator invocation, seeds, logs, and result handling consistent across runs.
  • Define filelists once in project models.
  • Add sweep and preprocessing hooks without rewriting the main flow.
  • Export JSONL logs and JSON results for CI and agent workflows.

Features

  • Tests and regressions (rb test, rb randtest, rb regression): one CLI across Verilator, Icarus Verilog, and VCS, with new-seed, repeat, and replay support. cocotb tests run through the same flow.
  • Configuration: suites, regressions, platforms, builders, and models in YAML. rb filelist generates simulator-ready filelists from models.yaml.
  • Elaboration (rb elab, rb elab-regression): parse, type-check, and elaborate models.yaml filelists with pyslang, without building a simulator.
  • Synthesis (rb synth): Yosys from synth.yaml, with optional Liberty mapping, effort levels, synthesis regressions, and the yosys-slang frontend. OpenROAD is an alternative backend.
  • Place-and-route (rb pnr): OpenROAD flow from the post-synthesis netlist to routed DEF, netlist, SDC, and timing/DRC reports.
  • Power analysis (rb power, rb power-regression): OpenROAD report_power with static, synthetic, or SAIF/VCD activity. rb saif converts FST/VCD to SAIF.
  • Formal verification (rb fpv, rb fpv-regression): SymbiYosys proofs with pinned solvers. rb wave-fpv opens a failed proof's counterexample.
  • Mutation testing (rb mut): scores a verification suite by mutating a design and checking whether an FPV proof or simulation oracle kills each mutant. Uses the optional rtl-buddy-xeno engine.
  • Waveforms (rb wave): opens Surfer with live signal values annotated in your editor over WCP.
  • Hierarchy (rb hier, rb hier-query): module hierarchy diagrams and queries through rtl-buddy-view, with optional clock-domain annotations.
  • AXI profiling (rb axi-profile): discover AXI bundles, emit a bind-style monitor, turn a test's FST into axi-perf.json and per-transaction Parquet, and open a marimo notebook.
  • Coordination hub (rb hub): a broker between the rtl-buddy-view SPA, Surfer, and editor adapters. Serves graph (/gph), coverage (/cov), and physical-metrics (/phy) panes.
  • Physical metrics (rb phys): per-module gate count and area, per-instance power, and a run listing from the merged synthesis and power model.
  • Spec traceability (rb spec): trace specs.yaml items to models and tests.
  • Tool check (rb tool-check): reports which rb subcommands are ready and which are blocked on missing or out-of-version tools.
  • Coverage: collect, merge, summarize, and export Verilator coverage.
  • Hooks: sweep generation and test preprocessing scripts.
  • Verible (rb verible): lint, syntax, format, and preprocessor commands, plus verible.filelist generation.
  • Output for humans and machines: Rich console output, and JSONL logs plus JSON results with --machine.

Installation

rtl_buddy is on PyPI. It needs Python 3.11 or newer and uv:

uv add rtl_buddy

External tools depend on the commands you use. rb test needs a simulator, rb synth needs the rtl-buddy/yosys fork, rb pnr and rb power need OpenROAD, rb fpv needs SymbiYosys and an SMT solver, rb hier needs rtl-buddy-view, and rb wave needs the rtl-buddy/surfer fork. The installation page has the full feature-to-tool matrix.

To develop rtl_buddy itself, install the dev group:

uv sync --group dev
npm ci                    # documentation builds only
uv run ruff check
uv run ruff format --check
uv run pytest

Quick start

The rtl-buddy project template is a ready-to-run project with example designs, tests, and rtl_buddy integration. In a project:

uv run rb test basic      # run a single test
uv run rb regression      # run the full regression
uv run rb synth -c synth/sandbox/synth.yaml

See the Quick Start guide.

Artefacts go under artefacts/{sanitized_test_name}/. A single run writes test.log, test.err, test.randseed, and coverage.dat there. Repeated runs write to artefacts/{sanitized_test_name}/run-0001/ and so on, and the three top-level test.* files are symlinks to the latest run.

Documentation

Full documentation: rtl-buddy.github.io/rtl_buddy. Each version also publishes <version>/llms.txt and <version>/agent/catalog.json for agents. Offline, use rb docs list and rb docs show.

Known limitations are on the known issues page.

Metadata

Release files for rtl-buddy 6.79.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for rtl-buddy 6.79.0
File Size Uploaded
rtl_buddy-6.79.0.tar.gz 1.3 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for rtl-buddy 6.79.0
File Interpreter ABI Platform
rtl_buddy-6.79.0-py3-none-any.whl Python 3 none any Details

Total release size: 2.7 MB

Release files / rtl_buddy-6.79.0.tar.gz

Download URL rtl_buddy-6.79.0.tar.gz
Size 1.3 MB
Tags Source
SHA-256 checksum
How to use checksums
e804a14e7559d7d2c57c16ee7c77ff7c625da272b547222825e03b3fabcddd59
BLAKE2b-256 checksum
How to use checksums
9a859ea4f0da84f4c808f9416ed59f41f3b99f18e2547ff4ee99ba4589131df6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.

Transparency log

Release files / rtl_buddy-6.79.0-py3-none-any.whl

Download URL rtl_buddy-6.79.0-py3-none-any.whl
Size 1.5 MB
Tags Python 3
SHA-256 checksum
How to use checksums
6c4cec510be2bb7398c2570cae54e9f7b73cf6eb483958706c087106b7302a62
BLAKE2b-256 checksum
How to use checksums
b9167f33a94d3a409849e3b14708fd02e37e04f4d96f1358882a5f21353e5b04
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.

Transparency log

Release history Release notifications | RSS feed

6.83.0

2 release files

6.82.0

2 release files

6.81.0

2 release files

6.80.0

2 release files

6.79.3

2 release files

6.79.2

2 release files

6.79.1

2 release files

This release

6.79.0 This release

2 release files

6.67.0

2 release files

6.66.1

2 release files

6.66.0

2 release files

6.65.0

2 release files

6.64.0

2 release files

6.63.0

2 release files

6.62.0

2 release files

6.60.0

2 release files

6.59.0

2 release files

6.58.1

2 release files

6.58.0

2 release files

6.56.1

2 release files

6.56.0

2 release files

6.55.0

2 release files

6.54.0

2 release files

6.53.0

2 release files

6.52.0

2 release files

6.51.0

2 release files

6.50.0

2 release files

6.49.0

2 release files

6.47.0

2 release files

6.46.0

2 release files

6.45.1

2 release files

6.43.0

2 release files

6.42.2

2 release files

6.42.1

2 release files

6.42.0

2 release files

6.41.3

2 release files

6.41.2

2 release files

6.41.1

2 release files

6.41.0

2 release files

6.40.0

2 release files

6.39.0

2 release files

6.38.1

2 release files

6.38.0

2 release files

6.37.3

2 release files

6.37.2

2 release files

6.37.0

2 release files

6.36.0

2 release files

6.35.0

2 release files

6.34.0

2 release files

6.33.1

2 release files

6.33.0

2 release files

6.32.1

2 release files

6.32.0

2 release files

6.30.0

2 release files

6.21.1

2 release files

6.21.0

2 release files

6.19.0

2 release files

6.18.1

2 release files

6.17.4

2 release files

6.17.3

2 release files

6.17.2

2 release files

6.17.1

2 release files

6.17.0

2 release files

6.16.0

2 release files

6.15.0

2 release files

6.14.0

2 release files

6.13.0

2 release files

6.12.0

2 release files

6.11.0

2 release files

6.10.0

2 release files

6.7.0

2 release files

6.6.2

2 release files

6.6.1

2 release files

6.6.0

2 release files

6.5.0

2 release files

6.4.1

2 release files

6.4.0

2 release files

6.3.4

2 release files

6.3.3

2 release files

6.3.2

2 release files

6.3.1

2 release files

6.3.0

2 release files

6.2.0

2 release files

6.1.1

2 release files

6.1.0

2 release files

6.0.4

2 release files

6.0.3

2 release files

6.0.2

2 release files

6.0.1

2 release files

6.0.0

2 release files

5.3.4

2 release files

5.3.3

2 release files

5.3.2

2 release files

5.3.1

2 release files

5.3.0

2 release files

5.2.0

2 release files

5.1.0

2 release files

5.0.0

2 release files

4.3.0

2 release files

4.2.0

2 release files

4.1.0

2 release files

4.0.1

2 release files

4.0.0

2 release files

3.7.0

2 release files

3.6.0

2 release files

3.5.0

2 release files

3.4.1

2 release files

3.4.0

2 release files

3.3.1

2 release files

3.3.0

2 release files

3.2.4

2 release files

3.2.3

2 release files

3.2.2

2 release files

3.2.1

2 release files

3.2.0

2 release files

3.1.1

2 release files

3.0.1

2 release files

3.0.0

2 release files

2.5.2

2 release files

2.5.1

2 release files

2.5.0

2 release files

2.4.1

2 release files

2.4.0

2 release files

2.3.0

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.4

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page