Claude Code · plugin

HDL diagnostics
without the tool call.

fpga-lsp wires verible (SystemVerilog/Verilog) and vhdl_ls (VHDL) into Claude Code as a native LSP plugin. Parse errors, lint findings, go-to-definition, and hover for HDL files — surfaced to the agent the moment they appear, no tool call, no MCP bridge.

Verible v0.0-4053-g89d4d98a Linux x64 auto-install MIT licensed
claude-code · ~/work/pvz-fpga
Live demo
2
Commands to install in Claude Code.
0
Tool calls between an edit and a diagnostic.
3
Skills bundled — sv-lint, sv-format, sv-diff.
6
File extensions covered: .sv .svh .v .vh .vhd .vhdl
Install

Two commands.

Run these inside Claude Code. The Verible binary auto-installs into the plugin's data directory on first session.

/plugin marketplace add nyavana/fpga-lsp
/plugin install fpga-lsp@fpga-lsp

On Linux x64, SystemVerilog and Verilog work immediately. VHDL requires cargo install vhdl_ls and a project-root vhdl_ls.toml. Other platforms get a one-line manual install. Full install guide →

counter.sv 2 verible-verilog-ls · ready
Diagnostics · 2 problems
Error9:7
Use non-blocking <= in always_ff; blocking = assignment to q creates a race.
always-ff-non-blocking
Lint13:1
Missing label on endmodule. Expected endmodule : counter.
module-end-label
SystemVerilog UTF-8 LF
▲ agent sees 2 diagnostics
What you get

Six things, each minimal.

No new chat affordances. No new mental model. The editor knows what it knows and the agent reads it.

01

Diagnostics on edit

Parse errors and lint warnings appear automatically after every edit to .sv, .svh, .v, .vh, .vhd, .vhdl. The platform feeds them to the agent — no tool call.

verible · vhdl_ls
02

Go-to-definition

Resolves module and signal symbols across files, driven by a resolved Verible filelist (project-owned if present, otherwise plugin-managed).

cross-file
03

Hover & references

Type info and reference lists for SystemVerilog and VHDL identifiers, surfaced through the same LSP plumbing the editor already uses.

lsp-native
04

Three skills

sv-lint, sv-format, sv-diff — stable wrappers around the matching Verible CLI tools, invocable directly or auto-picked by relevance.

skills
05

One agent

sv-reviewer runs verible-verilog-lint first and cites Verible rule IDs as evidence, then layers HDL-specific judgment — inferred latches, blocking-in-always_ff, X-propagation, clock-domain hygiene.

agent
06

Format-on-save

SystemVerilog files run through verible-verilog-format on save via a PostToolUse hook. Quiet, fast, opinionated.

post-tool-use
Supported platforms

Linux x64 today.

v1 ships one auto-install target. Other platforms get a clear error pointing at the manual install — never a generic "command not found".

PlatformSV / VerilogVHDL
Linux x64Auto-installcargo
macOSManualcargo
WindowsManualcargo
Linux arm64Manualcargo
Pinned versions

Reproducibility.

Verible ships weekly. We pin so everyone on the same plugin version sees identical diagnostics and the LSP behaviour stays bounded for downstream projects.

Verible v0.0-4053-g89d4d98a
Linux x64 SHA256 1edc1f29c70d74213ed373e727183802d5a733e23f9ab9c74462f5b18b76f2c0
vhdl_ls cargo install vhdl_ls · pinned via Cargo.lock in your project
Bump cadence Verible release bumped in a dedicated PR, ~quarterly.
Scope

What v1 ships, what it doesn't.

v1 is "done" against nyavana/pvz-fpga when the four success criteria pass end-to-end.

v1 — shipping

  • Diagnostics on edit, no tool call required.
  • Go-to-definition across resolved Verible filelists.
  • sv-lint, sv-format, sv-diff skills invocable.
  • sv-reviewer agent that runs Verible lint first and cites rule IDs.
  • Linux x64 auto-install of the pinned Verible binary.
  • Format-on-save via PostToolUse hook.

Deferred

  • Auto-install on macOS, Windows, Linux arm64.
  • slang-server opt-in (planned for v1.1 once dogfooding shows a need).
  • Project-file parsing (.qsf, .xpr).
  • veridian and svlangserver integrations — both stale upstream.

Companion plugin

  • fpga-flow — synthesis feedback (Yosys/Verilator/Quartus). Reserved for v2; placeholder README in v1.
  • Same marketplace, same install grammar.
  • Not registered in marketplace.json until manifest lands.