Skip to main content
Glama
kfy123bot

EDA Tools MCP Server

by kfy123bot

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 yosys

Ubuntu/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-verilog

Ubuntu/Debian:

sudo apt-get install iverilog

Windows: Загрузите установщик с: https://bleyer.org/icarus/

3. GTKWave (Просмотр сигналов)

Прямые загрузки (Рекомендуется):

  • Windows: Загрузите с SourceForge

  • macOS: Загрузите с SourceForge или используйте Homebrew: brew install --cask gtkwave

  • Linux: Загрузите с 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 install

4. Docker Desktop (Рекомендуется для OpenLane)

Прямые загрузки:

Установка:

  1. Загрузите и установите Docker Desktop с официального сайта

  2. Запустите Docker Desktop и убедитесь, что он работает

  3. Проверьте установку: 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 (Просмотр топологии)

Прямые загрузки (Рекомендуется):

Альтернативная установка:

# 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

Шаги настройки

  1. Установка расширения Docker Desktop:

    • Запустите Docker Desktop

    • Перейдите в "Extensions" в левом меню

    • Найдите "AI Tools" или "Docker MCP Toolkit"

    • Установите расширение "Labs: AI Tools for Devs"

  2. Настройка соединения 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

  1. Добавьте ваш EDA MCP Server:

    • Найдите файл конфигурации Claude Desktop, Settings > Developer > Edit Config:

      • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

      • Windows: %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"
          }
        }
      }
    }
  2. Перезапустите Claude Desktop и убедитесь, что оба сервера запущены в Settings > Developer.

Настройка Cursor IDE

  1. Откройте настройки Cursor:

    • Нажмите Ctrl + Shift + P (Windows/Linux) или Cmd + Shift + P (macOS)

    • Найдите "Cursor Settings"

    • Перейдите в "MCP" на боковой панели

  2. Добавьте 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"
          }
        }
      }
    }
  3. Включите инструменты 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
endmodule

2. Симуляция 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 one

3. Поток проектирования 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 - Итоговая топология GDSII

  • runs/RUN_*/openlane.log - Полный лог выполнения

  • runs/RUN_*/reports/ - Отчеты по временным характеристикам, площади и энергопотреблению

  • Все промежуточные результаты (файлы DEF, списки соединений и т.д.)

4. Анализ сигналов

Ask Claude: "View the waveforms from the simulation with project ID: abc123"

Устранение неполадок

Распространенные проблемы

  1. MCP-сервер не обнаружен:

    • Проверьте абсолютный путь в конфигурации

    • Убедитесь, что Node.js установлен и доступен

    • Перезапустите Claude Desktop/Cursor после изменения конфигурации

  2. Ошибки прав доступа Docker:

    sudo groupadd docker
    sudo usermod -aG docker $USER
    sudo reboot
  3. Ошибки "Инструмент не найден":

    • Проверьте установку инструментов: yosys --version, iverilog -V, gtkwave --version

    • Проверьте переменную окружения PATH в конфигурации MCP

    • На macOS убедитесь, что пути Homebrew включены: /opt/homebrew/bin

  4. Тайм-аут OpenLane:

    • Сервер имеет 10-минутный тайм-аут для потоков OpenLane

    • Для сложных проектов рассмотрите возможность упрощения или выполнения нескольких итераций

  5. Проблемы с графическим интерфейсом GTKWave/KLayout:

    • На macOS: GTKWave/KLayout могут потребовать ручного одобрения в настройках "Безопасность и конфиденциальность"

    • На Linux: Убедитесь, что X11 forwarding работает при использовании удаленных систем

    • На Windows: Убедитесь, что графические приложения могут запускаться из командной строки

Отладка

  1. Проверьте логи MCP-сервера:

    • Claude Desktop: ~/Library/Logs/Claude/mcp*.log (macOS)

    • Cursor: Проверьте панель настроек MCP на наличие сообщений об ошибках

  2. Протестируйте инструменты вручную:

    yosys -help
    iverilog -help
    docker run hello-world
    gtkwave --version
    klayout -v
  3. Проверьте среду 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}, 
}
Install Server
A
security – no known vulnerabilities
F
license - not found
A
quality - A tier

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