Skip to main content
Glama
kfy123bot

EDA Tools MCP Server

by kfy123bot

Servidor MCP de herramientas EDA

Implementación del artículo: MCP4EDA: LLM-Powered Model Context Protocol RTL-to-GDSII Automation with Backend Aware Synthesis Optimization

Un servidor completo de Model Context Protocol (MCP) que proporciona integración de herramientas de Automatización de Diseño Electrónico (EDA) para asistentes de IA como Claude Desktop y Cursor IDE. Este servidor permite a la IA realizar síntesis de Verilog, simulación, flujos de diseño ASIC y análisis de formas de onda a través de una interfaz unificada.

Demo

https://github.com/user-attachments/assets/65d8027e-7366-49b5-8f11-0430c1d1d3d6

Demostración del servidor EDA MCP mostrando síntesis de Verilog, simulación y flujo de diseño ASIC

Características

  • Síntesis de Verilog: Sintetiza código Verilog usando Yosys para varios objetivos FPGA (genérico, ice40, xilinx)

  • Simulación de Verilog: Simula diseños usando Icarus Verilog con ejecución automatizada de bancos de pruebas (testbenches)

  • Visualización de formas de onda: Inicia GTKWave para la visualización de archivos VCD y análisis de señales

  • Flujo de diseño ASIC: Flujo completo de RTL a GDSII usando OpenLane con integración de Docker

  • Visualización de diseño (Layout): Abre archivos GDSII en KLayout para inspección de diseño físico

  • Análisis de informes: Lee y analiza informes de OpenLane para métricas PPA y evaluación de la calidad del diseño

Requisitos previos

Antes de usar este servidor MCP, necesitas instalar las siguientes herramientas EDA:

1. Yosys (Síntesis de Verilog)

macOS (Homebrew):

brew install yosys

Ubuntu/Debian:

sudo apt-get update
sudo apt-get install yosys

Desde el código fuente:

# 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

Alternativa - OSS CAD Suite (Recomendado): Descarga la cadena de herramientas completa desde: https://github.com/YosysHQ/oss-cad-suite-build/releases

2. Icarus Verilog (Simulación)

macOS (Homebrew):

brew install icarus-verilog

Ubuntu/Debian:

sudo apt-get install iverilog

Windows: Descarga el instalador desde: https://bleyer.org/icarus/

3. GTKWave (Visualizador de formas de onda)

Descargas directas (Recomendado):

  • Windows: Descargar desde SourceForge

  • macOS: Descargar desde SourceForge o usa Homebrew: brew install --cask gtkwave

  • Linux: Descargar desde SourceForge o usa el gestor de paquetes: sudo apt-get install gtkwave

Métodos de instalación alternativos:

# 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 (Recomendado para OpenLane)

Descargas directas:

Instalación:

  1. Descarga e instala Docker Desktop desde el sitio web oficial

  2. Inicia Docker Desktop y asegúrate de que esté ejecutándose

  3. Verifica la instalación: docker run hello-world

Nota: Docker Desktop incluye Docker Engine, Docker CLI y Docker Compose en un solo paquete.

5. OpenLane (Flujo de diseño ASIC)

Método de instalación simple (Recomendado):

# Install OpenLane via pip
pip install openlane

# Pull the Docker image
docker pull efabless/openlane:latest

# Verify installation
docker run hello-world

Ejemplo de uso:

# 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

Beneficios clave:

  • La bandera --dockerized maneja todas las dependencias de herramientas automáticamente a través de Docker

6. KLayout (Visualizador de diseño)

Descargas directas (Recomendado):

Instalación alternativa:

# macOS (Homebrew)
brew install --cask klayout

# Ubuntu/Debian
sudo apt install klayout

Instalación

1. Clonar y compilar el servidor MCP

git clone https://github.com/NellyW8/mcp-EDA
cd mcp-EDA
npm install
npm run build
npx tsc   

2. Estructura del proyecto

mcp-EDA/
├── src/
│   └── index.ts          # Main server code
├── build/
│   └── index.js          # Compiled JavaScript
├── package.json
├── tsconfig.json
└── README.md

Configuración

Integración de Docker Desktop MCP

Este método utiliza la extensión MCP integrada de Docker Desktop para la experiencia de configuración más sencilla.

Requisitos previos

  • Docker Desktop 4.39.0+ instalado y ejecutándose

  • Claude Desktop instalado

Pasos de configuración

  1. Instalar la extensión de Docker Desktop:

    • Inicia Docker Desktop

    • Ve a "Extensions" en el menú de la izquierda

    • Busca "AI Tools" o "Docker MCP Toolkit"

    • Instala la extensión "Labs: AI Tools for Devs"

  2. Configurar la conexión Docker MCP:

    • Abre la extensión instalada "Labs: AI Tools for Devs"

    • Haz clic en el icono de engranaje en la esquina superior derecha

    • Selecciona la pestaña "MCP Clients"

    • Haz clic en "Connect" para "Claude Desktop" o "Cursor IDE"

    Esto configura automáticamente Claude Desktop y Cursor IDE con:

    {
      "mcpServers": {
        "MCP_DOCKER": {
          "command": "docker",
          "args": [
            "run",
            "-i",
            "--rm",
            "alpine/socat",
            "STDIO",
            "TCP:host.docker.internal:8811"
          ]
        }
      }
    }

Configuración de Cursor IDE

  1. Añade tu servidor EDA MCP:

    • Localiza tu archivo de configuración de Claude Desktop, Settings > Developer > Edit Config:

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

      • Windows: %APPDATA%\Claude\claude_desktop_config.json

    • Añade tu servidor EDA a la configuración existente:

    {
      "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. Reinicia Claude Desktop y verifica que ambos servidores se estén ejecutando en Settings > Developer.

Configuración de Cursor IDE

  1. Abrir la configuración de Cursor:

    • Presiona Ctrl + Shift + P (Windows/Linux) o Cmd + Shift + P (macOS)

    • Busca "Cursor Settings"

    • Navega a "MCP" en la barra lateral

  2. Añadir servidor MCP: Haz clic en "Add new MCP server" y configura:

     {
      "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. Habilitar herramientas MCP:

    • Ve a Cursor Settings → MCP

    • Habilita el servidor "eda-mcp"

    • Deberías ver que el estado del servidor cambia a "Connected"

Ejemplos de uso

1. Síntesis de 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. Simulación de 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. Flujo de diseño 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

Qué obtienes tras finalizar:

  • runs/RUN_*/final/gds/design.gds - Diseño GDSII final

  • runs/RUN_*/openlane.log - Registro de ejecución completo

  • runs/RUN_*/reports/ - Informes de análisis de temporización, área y potencia

  • Todos los resultados intermedios (archivos DEF, netlists, etc.)

4. Análisis de formas de onda

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

Solución de problemas

Problemas comunes

  1. Servidor MCP no detectado:

    • Verifica la ruta absoluta en la configuración

    • Comprueba que Node.js esté instalado y accesible

    • Reinicia Claude Desktop/Cursor después de los cambios de configuración

  2. Errores de permisos de Docker:

    sudo groupadd docker
    sudo usermod -aG docker $USER
    sudo reboot
  3. Errores de herramienta no encontrada:

    • Verifica que las herramientas estén instaladas: yosys --version, iverilog -V, gtkwave --version

    • Comprueba la variable de entorno PATH en la configuración de MCP

    • En macOS, asegúrate de que las rutas de Homebrew estén incluidas: /opt/homebrew/bin

  4. Tiempo de espera (Timeout) de OpenLane:

    • El servidor tiene un tiempo de espera de 10 minutos para los flujos de OpenLane

    • Para diseños complejos, considera simplificar o ejecutar múltiples iteraciones

  5. Problemas de GUI de GTKWave/KLayout:

    • En macOS: GTKWave/KLayout pueden necesitar aprobación manual en la configuración de Seguridad y Privacidad

    • En Linux: Asegúrate de que el reenvío X11 funcione si usas sistemas remotos

    • En Windows: Asegúrate de que las aplicaciones GUI puedan iniciarse desde la línea de comandos

Depuración

  1. Comprobar los registros del servidor MCP:

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

    • Cursor: Comprueba el panel de configuración de MCP para ver mensajes de error

  2. Probar herramientas manualmente:

    yosys -help
    iverilog -help
    docker run hello-world
    gtkwave --version
    klayout -v
  3. Verificar el entorno de Node.js:

    node --version
    npm --version

Soporte

Para problemas y preguntas:

  • Consulta la sección de solución de problemas anterior

  • Revisa los registros del servidor MCP

  • Prueba las herramientas individuales manualmente

  • Abre un issue con mensajes de error detallados e información del entorno


Nota: Este servidor MCP requiere la instalación local de herramientas EDA. El servidor actúa como un puente entre los asistentes de IA y tu cadena de herramientas EDA local, permitiendo flujos de trabajo de diseño de hardware sofisticados a través de la interacción en lenguaje natural.

Citar

@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