EDA Tools MCP Server
EDA Tools MCP Server
Реализация статьи: MCP4EDA: LLM-Powered Model Context Protocol RTL-to-GDSII Automation with Backend Aware Synthesis Optimization
Полнофункциональный сервер Model Context Protocol (MCP), обеспечивающий интеграцию инструментов автоматизации проектирования электроники (EDA) для ИИ-ассистентов, таких как Claude Desktop и Cursor IDE. Этот сервер позволяет ИИ выполнять синтез Verilog, симуляцию, потоки проектирования ASIC и анализ сигналов через единый интерфейс.
Демонстрация
https://github.com/user-attachments/assets/65d8027e-7366-49b5-8f11-0430c1d1d3d6
Демонстрация EDA MCP Server, показывающая синтез Verilog, симуляцию и поток проектирования ASIC
Возможности
Синтез Verilog: Синтез кода Verilog с использованием Yosys для различных целей FPGA (generic, ice40, xilinx)
Симуляция Verilog: Симуляция проектов с использованием Icarus Verilog с автоматическим выполнением тестбенчей
Просмотр сигналов: Запуск GTKWave для визуализации VCD-файлов и анализа сигналов
Поток проектирования ASIC: Полный цикл RTL-to-GDSII с использованием OpenLane и интеграцией Docker
Просмотр топологии: Открытие файлов GDSII в KLayout для проверки физического дизайна
Анализ отчетов: Чтение и анализ отчетов OpenLane для оценки метрик PPA и качества проекта
Предварительные требования
Перед использованием этого MCP-сервера необходимо установить следующие инструменты EDA:
1. Yosys (Синтез Verilog)
macOS (Homebrew):
brew install yosysUbuntu/Debian:
sudo apt-get update
sudo apt-get install yosysИз исходного кода:
# Install prerequisites
sudo apt-get install build-essential clang bison flex \
libreadline-dev gawk tcl-dev libffi-dev git \
graphviz xdot pkg-config python3 libboost-system-dev \
libboost-python-dev libboost-filesystem-dev zlib1g-dev
# Clone and build
git clone https://github.com/YosysHQ/yosys.git
cd yosys
make -j$(nproc)
sudo make installАльтернатива - OSS CAD Suite (Рекомендуется): Загрузите полный набор инструментов с: https://github.com/YosysHQ/oss-cad-suite-build/releases
2. Icarus Verilog (Симуляция)
macOS (Homebrew):
brew install icarus-verilogUbuntu/Debian:
sudo apt-get install iverilogWindows: Загрузите установщик с: https://bleyer.org/icarus/
3. GTKWave (Просмотр сигналов)
Прямые загрузки (Рекомендуется):
Windows: Загрузите с SourceForge
macOS: Загрузите с SourceForge или используйте Homebrew:
brew install --cask gtkwaveLinux: Загрузите с SourceForge или используйте менеджер пакетов:
sudo apt-get install gtkwave
Альтернативные методы установки:
# macOS (Homebrew)
brew install --cask gtkwave
# Ubuntu/Debian
sudo apt-get install gtkwave
# Build from source (all platforms)
git clone https://github.com/gtkwave/gtkwave.git
cd gtkwave
meson setup build && cd build && meson install4. Docker Desktop (Рекомендуется для OpenLane)
Прямые загрузки:
Windows: Загрузить Docker Desktop для Windows
macOS: Загрузить Docker Desktop для Mac или
brew install --cask docker
Установка:
Загрузите и установите Docker Desktop с официального сайта
Запустите Docker Desktop и убедитесь, что он работает
Проверьте установку:
docker run hello-world
Примечание: Docker Desktop включает Docker Engine, Docker CLI и Docker Compose в одном пакете.
5. OpenLane (Поток проектирования ASIC)
Простой метод установки (Рекомендуется):
# Install OpenLane via pip
pip install openlane
# Pull the Docker image
docker pull efabless/openlane:latest
# Verify installation
docker run hello-worldПример использования:
# Create project directory
mkdir -p ~/openlane-projects/my-design
cd ~/openlane-projects/my-design
# Create Verilog file (counter example)
cat > counter.v << 'EOF'
module counter (
input wire clk,
input wire rst,
output reg [7:0] count
);
always @(posedge clk or posedge rst) begin
if (rst)
count <= 8'b0;
else
count <= count + 1;
end
endmodule
EOF
# Create configuration file
cat > config.json << 'EOF'
{
"DESIGN_NAME": "counter",
"VERILOG_FILES": ["counter.v"],
"CLOCK_PORT": "clk",
"CLOCK_PERIOD": 10.0
}
EOF
# Run the RTL-to-GDSII flow
python3 -m openlane --dockerized config.jsonКлючевые преимущества:
Флаг
--dockerizedавтоматически обрабатывает все зависимости инструментов через Docker
6. KLayout (Просмотр топологии)
Прямые загрузки (Рекомендуется):
Windows: Загрузить KLayout для Windows
macOS: Загрузить KLayout для macOS или
brew install --cask klayoutLinux: Загрузить KLayout для Linux или
sudo apt install klayout
Альтернативная установка:
# macOS (Homebrew)
brew install --cask klayout
# Ubuntu/Debian
sudo apt install klayoutУстановка
1. Клонирование и сборка MCP-сервера
git clone https://github.com/NellyW8/mcp-EDA
cd mcp-EDA
npm install
npm run build
npx tsc 2. Структура проекта
mcp-EDA/
├── src/
│ └── index.ts # Main server code
├── build/
│ └── index.js # Compiled JavaScript
├── package.json
├── tsconfig.json
└── README.mdКонфигурация
Интеграция Docker Desktop MCP
Этот метод использует встроенное расширение MCP в Docker Desktop для максимально простой настройки.
Предварительные требования
Установлен и запущен Docker Desktop 4.39.0+
Установлен Claude Desktop
Шаги настройки
Установка расширения Docker Desktop:
Запустите Docker Desktop
Перейдите в "Extensions" в левом меню
Найдите "AI Tools" или "Docker MCP Toolkit"
Установите расширение "Labs: AI Tools for Devs"
Настройка соединения Docker MCP:
Откройте установленное расширение "Labs: AI Tools for Devs"
Нажмите на иконку шестеренки в правом верхнем углу
Выберите вкладку "MCP Clients"
Нажмите "Connect" для "Claude Desktop" или "Cursor IDE"
Это автоматически настроит Claude Desktop и Cursor IDE с помощью:
{ "mcpServers": { "MCP_DOCKER": { "command": "docker", "args": [ "run", "-i", "--rm", "alpine/socat", "STDIO", "TCP:host.docker.internal:8811" ] } } }
Настройка Cursor IDE
Добавьте ваш EDA MCP Server:
Найдите файл конфигурации Claude Desktop, Settings > Developer > Edit Config:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Добавьте ваш EDA-сервер в существующую конфигурацию:
{ "mcpServers": { "MCP_DOCKER": { "command": "docker", "args": [ "run", "-i", "--rm", "alpine/socat", "STDIO", "TCP:host.docker.internal:8811" ] }, "eda-mcp": { "command": "node", "args": [ "/absolute/path/to/your/eda-mcp-server/build/index.js" ], "env": { "PATH": "/usr/local/bin:/opt/homebrew/bin:/usr/bin:/bin", "HOME": "/your/home/directory" } } } }Перезапустите Claude Desktop и убедитесь, что оба сервера запущены в Settings > Developer.
Настройка Cursor IDE
Откройте настройки Cursor:
Нажмите
Ctrl + Shift + P(Windows/Linux) илиCmd + Shift + P(macOS)Найдите "Cursor Settings"
Перейдите в "MCP" на боковой панели
Добавьте MCP-сервер: Нажмите "Add new MCP server" и настройте:
{ "mcpServers": { "MCP_DOCKER": { "command": "docker", "args": [ "run", "-i", "--rm", "alpine/socat", "STDIO", "TCP:host.docker.internal:8811" ] }, "eda-mcp": { "command": "node", "args": [ "/absolute/path/to/your/eda-mcp-server/build/index.js" ], "env": { "PATH": "/usr/local/bin:/opt/homebrew/bin:/usr/bin:/bin", "HOME": "/your/home/directory" } } } }Включите инструменты MCP:
Перейдите в Cursor Settings → MCP
Включите сервер "eda-mcp"
Статус сервера должен измениться на "Connected"
Примеры использования
1. Синтез Verilog
Ask Claude: "Can you synthesize this counter module for an ice40 FPGA?"
module counter(
input clk,
input rst,
output [7:0] count
);
reg [7:0] count_reg;
assign count = count_reg;
always @(posedge clk or posedge rst) begin
if (rst)
count_reg <= 8'b0;
else
count_reg <= count_reg + 1;
end
endmodule2. Симуляция Verilog
Ask Claude: "Please simulate this adder with a testbench"
// Design
module adder(
input [3:0] a,
input [3:0] b,
output [4:0] sum
);
assign sum = a + b;
endmodule
// Testbench will be generated automatically or you can provide one3. Поток проектирования ASIC
Ask Claude: "Run the complete ASIC flow for this design with a 10ns clock period"
module simple_cpu(
input clk,
input rst,
input [7:0] data_in,
output [7:0] data_out
);
// Your RTL design here
endmoduleЧто вы получите после завершения:
runs/RUN_*/final/gds/design.gds- Итоговая топология GDSIIruns/RUN_*/openlane.log- Полный лог выполненияruns/RUN_*/reports/- Отчеты по временным характеристикам, площади и энергопотреблениюВсе промежуточные результаты (файлы DEF, списки соединений и т.д.)
4. Анализ сигналов
Ask Claude: "View the waveforms from the simulation with project ID: abc123"Устранение неполадок
Распространенные проблемы
MCP-сервер не обнаружен:
Проверьте абсолютный путь в конфигурации
Убедитесь, что Node.js установлен и доступен
Перезапустите Claude Desktop/Cursor после изменения конфигурации
Ошибки прав доступа Docker:
sudo groupadd docker sudo usermod -aG docker $USER sudo rebootОшибки "Инструмент не найден":
Проверьте установку инструментов:
yosys --version,iverilog -V,gtkwave --versionПроверьте переменную окружения PATH в конфигурации MCP
На macOS убедитесь, что пути Homebrew включены:
/opt/homebrew/bin
Тайм-аут OpenLane:
Сервер имеет 10-минутный тайм-аут для потоков OpenLane
Для сложных проектов рассмотрите возможность упрощения или выполнения нескольких итераций
Проблемы с графическим интерфейсом GTKWave/KLayout:
На macOS: GTKWave/KLayout могут потребовать ручного одобрения в настройках "Безопасность и конфиденциальность"
На Linux: Убедитесь, что X11 forwarding работает при использовании удаленных систем
На Windows: Убедитесь, что графические приложения могут запускаться из командной строки
Отладка
Проверьте логи MCP-сервера:
Claude Desktop:
~/Library/Logs/Claude/mcp*.log(macOS)Cursor: Проверьте панель настроек MCP на наличие сообщений об ошибках
Протестируйте инструменты вручную:
yosys -help iverilog -help docker run hello-world gtkwave --version klayout -vПроверьте среду Node.js:
node --version npm --version
Поддержка
По вопросам и проблемам:
Ознакомьтесь с разделом устранения неполадок выше
Просмотрите логи MCP-сервера
Протестируйте отдельные инструменты вручную
Откройте issue с подробными сообщениями об ошибках и информацией об окружении
Примечание: Этот MCP-сервер требует локальной установки инструментов EDA. Сервер выступает в качестве моста между ИИ-ассистентами и вашей локальной цепочкой инструментов EDA, обеспечивая сложные рабочие процессы проектирования оборудования через взаимодействие на естественном языке.
Цитирование
@misc{wang2025mcp4edallmpoweredmodelcontext,
title={MCP4EDA: LLM-Powered Model Context Protocol RTL-to-GDSII Automation with Backend Aware Synthesis Optimization},
author={Yiting Wang and Wanghao Ye and Yexiao He and Yiran Chen and Gang Qu and Ang Li},
year={2025},
eprint={2507.19570},
archivePrefix={arXiv},
primaryClass={cs.AR},
url={https://arxiv.org/abs/2507.19570},
}Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/kfy123bot/mcp4eda-kfy'
If you have feedback or need assistance with the MCP directory API, please join our Discord server