About Verilog MCP Server
Verilog MCP Server provides Verilog and SystemVerilog development tools for hardware designers using Claude Code. It generates testbench and UVM scaffolding and performs heuristic RTL lint checks.
Key features
- 01Generate testbench skeletons
- 02Run heuristic RTL lint checks
- 03Scaffold UVM environments
- 04Detect clock and reset ports
- 05Report common latch and width risks
Use cases
- 01Create a testbench from a module declaration
- 02Check RTL for common issues before simulation
- 03Set up a UVM verification environment
MCP support
The MCP server exposes three tools to Claude Code: testbench generation, RTL linting, and UVM environment generation.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEVerilog MCP Server

AI-powered Verilog / SystemVerilog development tools for Claude Code. Generate testbenches, lint RTL code, and scaffold UVM verification environments — all from within your editor.
Status: v0.3.0 — 3 tools, end-to-end verified in Claude Code.
Why
Chip design EDA tools are decades old. AI-assisted hardware development is a blue ocean. This MCP server brings Verilog / SystemVerilog code generation and linting directly into Claude Code, so you can:
- Generate testbench boilerplate from a module declaration in seconds
- Catch common RTL bugs (missing reset, latch inference, case without default) before simulation
- Scaffold a full UVM verification environment with proper clocking blocks, sequencers, and scoreboards
Tools
| Tool | Description |
|---|---|
generate_testbench | Generate a Verilog testbench skeleton from a module definition |
check_lint | Static lint checks: missing reset, case-default, latch risk, width mismatch |
generate_uvm_env | Generate a 10-component UVM verification environment |
generate_testbench
Input: a Verilog module. Output: a complete testbench with clock generation, reset sequence, DUT instantiation, $dumpfile / $dumpvars, and a TODO placeholder for custom test stimuli.
- Auto-detects clock and reset ports
- Handles active-low reset (
rst_nsuffix) - Supports both new-style (
input clk, input rst_n) and old-style (input clk, rst_n) port declarations - 100MHz default clock (10ns period)
check_lint
Four categories of checks:
- Sequential always block without reset — WARNING
- case/casez/casex without default — ISSUE (latches / X-states)
- Incomplete if-assignments in combinational always blocks — WARNING (latch inference risk)
- Width mismatch heuristics — INFO
generate_uvm_env
Generates 10 UVM component files separated by // ===== FILE: filename.sv ===== markers:
interface → transaction → sequence → driver → monitor → agent → scoreboard → environment → test → top
- Proper
drv_cb(outputs-only clocking block) andmon_cb(inputs-only) design uvm_analysis_portfor monitor → scoreboard communication- Active/passive agent mode
- TODO placeholders in scoreboard and constraints
Installation
# 1. Clone
git clone https://github.com/kaiwenyu147369/verilog-mcp-server.git
cd verilog-mcp-server
# 2. Create virtual environment
python -m venv venv
# 3. Activate & install
# Windows:
venv\Scripts\activate
# macOS / Linux:
source venv/bin/activate
pip install mcp
Usage with Claude Code
Add to your workspace .mcp.json:
{
"mcpServers": {
"verilog-mcp-server": {
"command": "C:\\path\\to\\venv\\Scripts\\python.exe",
"args": ["C:\\path\\to\\verilog-mcp-server\\server.py"]
}
}
}
Then in Claude Code settings (~/.claude/settings.json):
{
"enableAllProjectMcpServers": true,
"enabledMcpjsonServers": ["verilog-mcp-server"]
}
Restart VSCode, and the tools will appear in Claude Code.
Quick Test
# Activate venv first, then:
python test_uvm.py
python test_v2.py
Tech Stack
- Python MCP SDK 1.27.1 —
@server.list_tools()+@server.call_tool()(two-decorator API) - stdio JSON-RPC — Claude Code communicates via stdin/stdout
- Regex-based parsing — No SystemVerilog compiler dependency
Known Limitations
- Port parser uses regex, not a full SystemVerilog tokenizer — deeply nested parentheses in complex parameterized ports may not parse correctly
- UVM Scoreboard comparison logic is a TODO placeholder
- Lint checks are heuristic; no full elaboration or type system
- No interface / struct / modport support in port parsing
Roadmap
- v0.4.0 — 4th tool (
generate_assertionsoranalyze_waveform) - Port parser upgrade to simple tokenizer
- Additional lint rules (blocking/non-blocking assignment check, signed/unsigned warnings)
- UVM Scoreboard auto-comparison logic
- Multi-file project support
License
MIT
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.