Skip to main content

Installation

Install RTL Buddy in a Python 3.11 or newer project with uv.

Install and verify​

uv add rtl_buddy
uv run rb --version

The Python runtime dependencies install automatically. External EDA tools are needed only by the commands that use them.

Dependency types​

  • Required Python dependencies come with the wheel.
  • Integrated tools are fixed by a feature.
  • Pluggable tools implement a supported interface.
  • Curated pluggable tools are pluggable and also get tool-specific handling.

External tools stay optional until you run the workflow that uses them.

External tools by feature​

WorkflowRequired toolsNotes
test, randtest, regressionA configured simulator: Verilator, Icarus Verilog, or VCSInstall lcov for Verilator LCOV/HTML export.
elab, elab-regressionrtl_buddy[elab]uv add "rtl_buddy[elab]". Supports pyslang 10.x and 11.x; needs no simulator.
Slurm dispatchsbatch, squeue, scancel; sacct and scontrol recommendedLinux submit host and shared filesystem. See Slurm dispatch tools.
veribleVeriblemacOS: brew tap chipsalliance/verible && brew install verible.
synth, synth-regressionrtl-buddy Yosys fork; OpenROAD for tool: openroadSee Synthesis.
pnr, powerOpenROAD 25Q1 or newerKLayout is optional for P&R GDS and PNG output.
physNoneReads the phys-model.json and phys-manifest.json written by rb synth and rb power. See Physical Metrics.
fpv, fpv-regressionSymbiYosys 0.40 or newer and at least one SMT solverYosys is used for COI analysis; yosys-slang is optional.
waveSurfer from the rtl-buddy fork and branchMainline Surfer opens traces but has no live editor annotation. rb nvim-install also needs Git and network access.
hier, hier-queryuv tool install rtl-buddy-schGraphviz is optional for DOT rendering; pyslang for the slang frontend.
graph buildrtl-buddy-sch; optional rtl_buddy[graph-extract]Query commands need only an existing graph.
mcprtl_buddy[mcp]uv add "rtl_buddy[mcp]".
fpgaVivado, or Yosys + nextpnr-xilinx + prjxray for tool: openxc7Missing optional FPGA tools produce SKIP.
releaseverible-verilog-obfuscate (Verible) and Synopsys VCSVCS performs the IEEE-1735 encryption. Constraint rewriting needs a Python with tkinter. See Customer releases.
axi-profileuv tool install rtl-buddy-axi-profilerExtras add Parquet and notebook support.
mutrtl_buddy[mut]uv add "rtl_buddy[mut]". The selected oracle also needs its own tools.
Coverview packagingCoverview and its info-process dependencyBasic coverage collection does not need Coverview.

Run rb tool-check to diagnose missing or incompatible tools. Each command's concept page has setup and recovery details.

For large Verilator builds, optional intermediate pruning reduces shared-build disk usage without additional dependencies. Keep pruning disabled when generated C++ is needed for debugging or incremental recompilation.

Slurm dispatch tools​

--dispatch slurm needs sbatch, squeue, and scancel on the submit host. Two more are recommended:

  • sacct supplies the telemetry used for resource right-sizing.
  • scontrol supplies MaxArraySize and SchedulerParameters=max_array_tasks. Without it, a group too large for one job array is not split. Set cfg-dispatch.max-array-size, and cfg-dispatch.max-array-tasks if the cluster caps tasks per array lower.

scontrol must also be on the PATH of the compute node that runs the build job. It lets each compile key's simulation jobs start as soon as that key is built; without it they wait for the whole build job.

Use --dispatch local-parallel for parallelism on one host with no Slurm dependency. See Parallel dispatch.

Update RTL Buddy​

uv add rtl_buddy@latest
uv sync

Commit the changed pyproject.toml and lockfile.

Install a pre-release​

Pin a pre-release exactly, because version ranges do not select release candidates:

uv add "rtl_buddy==2.3.0rc1"

Install the agent skills​

Install the bundled Claude Code and Codex skill family at user scope:

uv run rb skill install

For a project pinned to a different RTL Buddy major version, install a project-local override:

uv run rb skill install --project

Re-run installation after each upgrade to refresh every family member. See Agent Use for members, paths, status checks, and .gitignore handling.