Skip to main content

AI-native EDA environment — MCP server for hardware design and verification

Project description

Silica

AI-native EDA environment — an MCP server that gives any LLM deep integration with the full EDA toolchain: simulation, synthesis, linting, formal verification, and autonomous debug loops.

What it does

Silica wraps open source EDA tools (Verilator, Yosys, Verible, Icarus) in a structured MCP interface. You describe what you want to the model; Silica gives it the tool access and reasoning skills to find and fix RTL bugs, synthesize designs, and run verification workflows autonomously.

The core value: closed autonomous loops. Run sim → parse failure → reason about RTL → propose fix → re-run — without human copy-paste.

Quick start

1. Install Silica

pip install silica-eda

2. Run the setup wizard

silica setup

The wizard detects which MCP clients and EDA tools you already have installed, lets you choose what to enable, and writes the MCP client config for you. It covers Claude Desktop, Claude Code, Cursor, Zed, Windsurf, OpenCode, and Gemini CLI.

When it's done, check your config anytime with:

silica config

3. Install missing tools (if any)

The wizard prints install commands for any open source tools you selected but don't have yet. For example on macOS:

brew install verilator yosys icarus-verilog verible

Ubuntu / Debian

sudo apt update && sudo apt install verilator yosys iverilog
# Verible: sudo apt install verible  (Ubuntu 22.04+)
# or grab the release binary: https://github.com/chipsalliance/verible/releases

Fedora / RHEL

sudo dnf install verilator yosys iverilog

Arch

sudo pacman -S verilator yosys iverilog verible

Windows WSL2 is the recommended path:

wsl --install   # installs Ubuntu by default

Then follow the Ubuntu instructions above inside WSL. Claude Desktop and Cursor both support MCP servers running inside WSL via the wsl -e silica serve command pattern.

4. Start the server

silica serve

Your MCP client will launch this automatically — you typically don't need to run it manually.

5. Test the UART example

Ask Claude:

Run the UART TX simulation in examples/uart/ and tell me if it passes.

Or introduce a bug and ask Claude to find and fix it autonomously:

In examples/uart/uart_tx.sv, change line 54 to use == instead of == CLKS_PER_BIT - 1 for the baud counter comparison. Then run the simulation, find the bug, and fix it.

Manual client setup

If you prefer to configure your MCP client by hand instead of using silica setup:

Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or ~/.config/Claude/claude_desktop_config.json (Linux):

{
  "mcpServers": {
    "silica": {
      "command": "silica",
      "args": ["serve"]
    }
  }
}

Claude Code

claude mcp add silica silica serve

Cursor~/.cursor/mcp.json:

{
  "mcpServers": {
    "silica": {
      "command": "silica",
      "args": ["serve"]
    }
  }
}

Windows (WSL2)

{
  "mcpServers": {
    "silica": {
      "command": "wsl",
      "args": ["-e", "silica", "serve"]
    }
  }
}

CLI reference

Command Description
silica serve Start the MCP server (stdio transport). Default if no subcommand given.
silica setup Interactive first-run configuration wizard.
silica config Show current configuration and live tool status.

MCP Tools (v0.1)

Tool Description
run_simulation Simulate RTL (Verilator / Icarus). Returns structured errors.
synthesize Synthesize to gates (Yosys). Returns utilization.
lint Static analysis (Verible / Verilator). Returns structured warnings.
read_rtl Read source file with line numbers.
write_rtl Propose RTL changes — always dry_run=True before writing.
get_project_structure Scan for RTL and constraint files.
search_rtl Grep across project RTL with context.
get_constraints Read constraint files (.xdc, .sdc, .lpf).

Workflow Skills

Silica ships reasoning scripts that teach the model how to interpret tool output and form hypotheses — not just how to call tools. Available as MCP prompts:

  • debug_simulation_failure — step-by-step triage from error list to verified fix
  • write_testbench — generate a complete testbench from a module interface
  • generate_assertions — write SVA assertions from design intent
  • close_timing — work through timing violations with synthesis feedback

Architecture

silica/
├── silica/
│   ├── server.py              # FastMCP server; loads skills at boot
│   ├── cli.py                 # subcommand dispatch (serve / setup / config)
│   ├── tools_registry.py      # canonical list of all supported EDA tools
│   ├── clients_registry.py    # canonical list of all supported MCP clients
│   ├── terminal.py            # OSC 8 hyperlink support
│   ├── config.py              # ~/.silica/config.toml load/save
│   ├── setup.py               # interactive setup wizard + config viewer
│   ├── tools/                 # MCP tool definitions
│   │   ├── simulation.py      # run_simulation()
│   │   ├── synthesis.py       # synthesize()
│   │   ├── lint.py            # lint()
│   │   └── project.py         # read_rtl(), write_rtl(), get_project_structure(), ...
│   ├── adapters/              # per-tool CLI wrappers + output parsers
│   │   ├── verilator.py
│   │   ├── icarus.py
│   │   ├── yosys.py
│   │   └── verible.py
│   └── skills/
│       ├── base/rtl_assistant.md
│       └── workflows/
│           └── debug_simulation_failure.md
└── examples/
    └── uart/                  # reference design for end-to-end testing

Toolchain coverage (v0.1)

Category Open source Commercial (detected if on PATH)
Simulation Verilator, Icarus Verilog VCS (Synopsys), Questa (Siemens), Xcelium (Cadence)
Synthesis Yosys Vivado (AMD/Xilinx), Quartus (Intel), DC Shell (Synopsys)
Formal SymbiYosys JasperGold (Cadence), VC Formal (Synopsys)
Lint Verible, svlint SpyGlass (Synopsys)
Waveform GTKWave, Surfer Verdi (Synopsys)

Development

git clone https://github.com/getsilica/silica
cd silica
pip install -e ".[dev]"

# Run the server locally (for debugging)
silica serve

# Run the UART end-to-end test
iverilog -g2012 -o /tmp/uart_sim examples/uart/uart_tx_tb.sv examples/uart/uart_tx.sv
vvp /tmp/uart_sim

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

silica_eda-0.1.0.tar.gz (76.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

silica_eda-0.1.0-py3-none-any.whl (39.6 kB view details)

Uploaded Python 3

File details

Details for the file silica_eda-0.1.0.tar.gz.

File metadata

  • Download URL: silica_eda-0.1.0.tar.gz
  • Upload date:
  • Size: 76.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.15 {"installer":{"name":"uv","version":"0.9.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for silica_eda-0.1.0.tar.gz
Algorithm Hash digest
SHA256 cb72b31ec371eac22267b11511ba11741f283a2f8e3b12339b61a19095523b37
MD5 475b024fed462498670e090dc13a7ef6
BLAKE2b-256 49b98bf613400eb9155641ecfbc30589cb6cdc84d7ed36cd0e7c6ff9cc75bfe6

See more details on using hashes here.

File details

Details for the file silica_eda-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: silica_eda-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 39.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.15 {"installer":{"name":"uv","version":"0.9.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for silica_eda-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bd71f8c1fcda6e44ff0265366dbf8b161bf5c49ddfe53aefee59b5b9ba1a6d3d
MD5 485f479ccb9c09734819b59d9e21545a
BLAKE2b-256 5c48f4ac5042b89fa08d27c3ab20417cdacec464d3eccdeb0604ba85a368260a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page