KILN

A Cargo-style CLI for SystemVerilog

kiln serves as a bridge across the open-source SystemVerilog toolchain. We model cargo: one command to check, build, test, format, and document SystemVerilog projects instead of Makefiles, shell scripts, and per-tool configs scattered around projects.

Getting started

# macOS and Linux (no Rust required)
curl -fsSL https://raw.githubusercontent.com/tejasprabhune/kiln/main/install.sh | sh

# or via cargo
cargo install kiln-sv

# create and enter a new project
kiln new counter
cd counter

# check with slang, build with verilator
kiln check
kiln build

# write a testbench under tests/ that prints "PASS"
kiln test
kiln test --trace          # dumps FST waveforms
kiln wave                  # opens the most recent one in surfer

# format in place via verible
kiln fmt
kiln fmt --check           # exits non-zero if anything changes (good for CI)

# dependencies via bender
kiln add axi --git https://github.com/pulp-platform/axi.git --version 0.39
kiln tree

What it wraps

kiln does not reimplement a parser, simulator, or formatter. It invokes existing tools as subprocesses and translates their output into consistent diagnostics.

Tool Used by
Slang kiln check, kiln doc, kiln lsp
Verilator kiln build, kiln run, kiln test
Bender kiln add, kiln update, kiln tree
Verible kiln fmt
Surfer kiln wave

Each command tells you clearly if a required tool is missing and how to install it. kiln install-tools automates the whole setup on macOS and Linux.

How projects are structured

A Kiln.toml at the project root describes the design: source globs, top module, simulation profile (debug or release), lint severity overrides, and dependencies. There's no build system DSL to learn, just a TOML file.

[package]
name    = "counter"
version = "0.1.0"

[design]
sources = ["src/**/*.sv"]
top     = "counter"

[lint]
always-comb-blocking = "error"

Builds are content-hash cached under target/kiln/. A recompile only happens when source files, defines, or the build profile actually change.

Status

Pre-0.1.0. The core workflow — check, build, test, format, wave, deps, doc, LSP — is implemented and tested. The crate names on crates.io use the prefix kiln-sv since kiln was already taken.

Source is on GitHub under MIT or Apache-2.0.