EDA MCP
Real EDA tools, engineer-approved gates — EDA_MCP
Install — one line
claude mcp add eda-mcp -- python3 /absolute/path/to/EDA_MCP/server.pyClone the repo, run `pip3 install -r requirements.txt`, and fill the `config/*.template` files with your own SSH sessions. Then:
Flow
Closed loop: schematic to post-layout
01
Schematic & PDK sizing
Cadence Virtuoso — schCheck (0 0)
The agent builds the schematic with LP/GP devices sized by micron strings, runs the CDF callbacks, and the schematic is validated to the 0-error-0-warning rule before netlisting.
02
Layout XL generation
Cadence Virtuoso Layout XL — GFS, VSR
A Layout XL session opens with active schematic correspondence; Generate From Source instantiates devices and Metal 1 pins, and geometry snaps to the 5 nm manufacturing grid.
03
Physical verification (DRC)
Siemens Calibre DRC — official layer map, clean SVRF
GDSII streams out with the official PDK layer map and case preservation (`strmout`); a custom SVRF deck runs and violations are fixed toward a fully clean report.
04
Layout-versus-schematic (LVS)
Siemens Calibre LVS — 0-mismatch goal
Structural SPICE netlists are extracted from the schematic database and the physical GDSII and compared; success is 0 mismatches, 0 shorts, 0 opens and 0 device-parameter discrepancies.
05
Parasitic extraction (PEX)
Siemens Calibre xRC — `.pex.spi` deck
Parasitic R and C networks are computed across all metal and via layers; the detailed subcircuit deck that feeds post-layout simulation is produced.
06
Post-layout simulation
Siemens Eldo — AC / DC / Tran / Power
The PEX deck simulates alongside the pre-layout schematic; gain, bandwidth, phase margin, slew, power and noise metrics are compared across process corners. Eldo parses the `.extract` report.
Architecture
Local agent, SSH tunnel, remote cluster
Local — developer + AI agent
Claude Code, Claude Desktop, Cursor, Windsurf, Antigravity
agent →
stdio · IDE plugin
mcp_config: eda-mcp
EDA_MCP — FastMCP server
server.py + 5 modules
Remote Linux cluster
Cadence Virtuoso · Siemens Eldo · Siemens Calibre · PDK
- Cadence Virtuoso — SKILL FIFO (MCP.command)
- Siemens Eldo — `eldo -inter` REPL
- Siemens Calibre — DRC / LVS / xRC PEX
- Git workspace — WorkBoard sync
- Process PDK (README example: cmos065)
Tools
The capabilities matrix of the five modules
| Module | Actions | What it does |
|---|---|---|
| workboard | initialize, add, pull, push, export, diff, status, history | Workspace synchronizer and version control: tracks remote EDA files in local Git repositories under `./workboard/<name>/`, computing line-by-line unified diffs before remote files are updated. |
| virtuoso | assisted_run, run, start_standalone, run_standalone, exit, run_terminal_command | Cadence Virtuoso SKILL & Layout XL control: runs SKILL live in an open GUI session (`assisted_run`) or sets up a non-graphical session (`start_standalone`); drives Layout XL generation, PDK rules and `schCheck` `\(0 0)` validation. |
| eldo | start_interactive, run_interactive, run_script, visualize_waveforms, run_terminal_command | Siemens Eldo SPICE simulation engine: batch `.cir` runs, an interactive SPICE REPL stream, `.extract` metric parsing and waveform plotting for pre- and post-layout PEX decks. |
| remote_control | run_command, read_file, write_file | Stateful csh subshell engine: terminal commands, Calibre DRC/LVS batch scripts, GDSII stream-out (`strmout`) and remote file inspection in persistent environment sessions (`/cadence/cshrc`). |
| report_issue | report_issue | Autonomous meta-harness reporter: an inter-agent landline that opens GitHub bug/feature reports with execution logs, agent headers and session IDs attached automatically. |
Sub-10 ms SSH latency
- Conditions
- The handshake overhead is eliminated by persistent OpenSSH ControlMaster sockets and streaming file transfer; a design property of the upstream module.
- Source
- EDA_MCP README — “Sub-10ms SSH Multiplexing Engine”
793 parasitic elements (347 R, 446 C)
- Conditions
- Extracted with Calibre xRC from a single 65 nm op-amp layout; the number belongs to that run, not to any general density claim.
- Source
- EDA_MCP README — “Parasitic Extraction”
End-to-end flow in one continuous session
- Conditions
- The upstream repo’s Issue #53 CheckPoint milestone: a multi-stage block built, laid out, rule-fixed, LVS-matched, 700+ parasitics extracted and post-layout performance validated in one session.
- Source
- EDA_MCP README — “Verified Full-Flow Baseline” (Issue #53)
Schematic completion criterion: schCheck \(0 0\)
- Conditions
- The designer context contract: an agent may claim a clean schematic only on an observed 0-error-0-warning result; the evidence is the console output.
- Source
- EDA_MCP context/designer — “execution contract”
Guard rails
A fast flow is trustworthy because it is auditable
Git-backed WorkBoard: diff before push
Remote cluster files are mirrored in local Git repositories; every write-back is reviewed as a line-by-line unified diff and verified by SHA-256 checksums — a corrupted file never ships, and the full rollback history stays.
Designer/coder dual-track context router
The agent classifies its intent and reads only that track’s operational spec: circuit-design intents load the rules under `context/designer/`, codebase and PR work loads those under `context/coder/`. Agents invent neither tool actions nor PDK facts.
No auto-merge
The strict no-automerge policy: coder agents never merge PRs or push to main; they stop after opening one and leave the decision to human review. Peer review between agents runs before the PR, over the `agent-landline` channel.
Command guard and audit log
Every shell command and file write passes a blocklist, an allowed-directories check and a dry-run flag before it runs; accepted commands land in a JSONL audit log.
Session replay
ILLUSTRATIVEOne session; one paused step
This session is illustrative — written to show how an EDA_MCP session behaves; it is not a real session log from the upstream repo.
GATE — a decision is needed
The DRC report is not clean. What does the agent do? An illustrative session: both paths are legitimate — and the engineer closing the gate is a real one.
Demo
Depletion-load inverter — live run
Get started
Requirements and client configuration
Requirements
- Python 3.10+
- OpenSSH client — on the local system
- A remote Linux with Cadence Virtuoso, Siemens Eldo and Calibre
Client configuration snippets
Claude Code — Terminal — run once
claude mcp add eda-mcp -- python3 /absolute/path/to/EDA_MCP/server.pyClaude Desktop — Into `claude_desktop_config.json`
{
"mcpServers": {
"eda-mcp": {
"command": "python3",
"args": [
"/absolute/path/to/EDA_MCP/server.py"
]
}
}
}Cursor / Windsurf — Stdio MCP server entry
Server Name : EDA_MCP
Command : python3
Args : /absolute/path/to/EDA_MCP/server.py~/.ssh/config — Persistent socket: the README’s own example
Host eda-uni
HostName eda.university.edu
User chip_designer
ControlMaster auto
ControlPath ~/.ssh/control-%r@%h:%p
ControlPersist 15mThe upstream project
EDA_MCP is an open-source project distributed by vs34 under the MIT License, born inside the SiliCad ecosystem.
https://github.com/vs34/EDA_MCP · MIT License
Trademarks
Cadence, Virtuoso and SKILL are trademarks of Cadence Design Systems; Siemens, Eldo and Calibre are trademarks of Siemens. EDA_MCP works with these tools; nothing here implies affiliation with or endorsement by their owners.
PDK data
The example PDK in the README (cmos065) is foundry material, usually under NDA. This page publishes no PDK files, layer maps, rule decks or layouts showing PDK-specific geometry; every drawing is generic.