MCP4EDA: 논문 구현 - LLM 기반 Model Context Protocol RTL-to-GDSII 자동화 및 백엔드 인지 합성 최적화
요약
Model Context Protocol(MCP)을 활용하여 LLM이 EDA 도구를 직접 제어할 수 있도록 돕는 MCP4EDA 서버 구현 사례입니다. Verilog 합성, 시뮬레이션, ASIC 설계 흐름(RTL-to-GDSII)을 AI 어시스턴트와 통합하여 자동화합니다.
핵심 포인트
- MCP를 통해 Claude Desktop 및 Cursor와 EDA 도구 통합
- Yosys, Icarus Verilog 등을 활용한 Verilog 합성 및 시뮬레이션 자동화
- OpenLane 및 Docker를 이용한 RTL-to-GDSII 설계 흐름 지원
- GTKWave 및 KLayout을 통한 파형 및 레이아웃 시각화 지원
논문 구현: MCP4EDA: LLM 기반 Model Context Protocol RTL-to-GDSII 자동화 및 백엔드 인지 합성 최적화 (Backend Aware Synthesis Optimization)
Claude Desktop 및 Cursor IDE와 같은 AI 어시스턴트를 위해 전자 설계 자동화 (EDA) 도구 통합을 제공하는 포괄적인 Model Context Protocol (MCP) 서버입니다. 이 서버를 통해 AI는 통합된 인터페이스를 통해 Verilog 합성 (Synthesis), 시뮬레이션 (Simulation), ASIC 설계 흐름 (Design flows) 및 파형 분석 (Waveform analysis)을 수행할 수 있습니다.
MCP_demo2.mp4
Verilog 합성, 시뮬레이션 및 ASIC 설계 흐름을 보여주는 EDA MCP 서버 시연
Verilog 합성 (Verilog Synthesis): 다양한 FPGA 타겟(generic, ice40, xilinx)을 위해 Yosys를 사용하여 Verilog 코드 합성
Verilog 시뮬레이션 (Verilog Simulation): 자동화된 테스트벤치 실행과 함께 Icarus Verilog를 사용하여 설계 시뮬레이션
파형 보기 (Waveform Viewing): VCD 파일 시각화 및 신호 분석을 위해 GTKWave 실행
ASIC 설계 흐름 (ASIC Design Flow): Docker 통합을 통한 OpenLane을 사용하여 RTL-to-GDSII 흐름 완료
레이아웃 보기 (Layout Viewing): 물리적 설계 검사를 위해 KLayout에서 GDSII 파일 열기
리포트 분석 (Report Analysis): PPA 지표 및 설계 품질 평가를 위해 OpenLane 리포트 읽기 및 분석
이 MCP 서버를 사용하기 전에 다음 EDA 도구들을 설치해야 합니다:
macOS (Homebrew):
brew install yosys
Ubuntu/Debian:
sudo apt-get update
sudo apt-get install yosys
소스로부터 설치 (From Source):
# 필수 구성 요소 설치
sudo apt-get install build-essential clang bison flex \
libreadline-dev gawk tcl-dev libffi-dev git \
...
대안 - OSS CAD Suite (권장):
다음에서 전체 툴체인을 다운로드하세요: https://github.com/YosysHQ/oss-cad-suite-build/releases
macOS (Homebrew):
brew install icarus-verilog
Ubuntu/Debian:
sudo apt-get install iverilog
Windows:
다음에서 설치 프로그램을 다운로드하세요: https://bleyer.org/icarus/
직접 다운로드 (권장):
Windows: SourceForge에서 다운로드
macOS: SourceForge에서 다운로드하거나 Homebrew 사용: brew install --cask gtkwave
Linux: SourceForge에서 다운로드하거나 패키지 관리자 사용: sudo apt-get install gtkwave
대안 설치 방법 (Alternative Installation Methods):
# macOS (Homebrew)
brew install --cask gtkwave
# Ubuntu/Debian
...
직접 다운로드 (Direct Downloads):
Windows: Windows용 Docker Desktop 다운로드
macOS: Mac용 Docker Desktop 다운로드 또는 brew install --cask docker
Linux: Linux용 Docker Desktop 다운로드
설치 (Installation):
- 공식 웹사이트에서 Docker Desktop을 다운로드하여 설치합니다.
- Docker Desktop을 실행하고 정상적으로 작동하는지 확인합니다.
- 설치 확인:
docker run hello-world
참고 (Note): Docker Desktop은 Docker Engine, Docker CLI, 그리고 Docker Compose를 하나의 패키지로 포함하고 있습니다.
간편 설치 방법 (권장) (Simple Installation Method (Recommended)):
# pip를 통해 OpenLane 설치
pip install openlane
# Docker 이미지 가져오기 (Pull)
...
사용 예시 (Usage Example):
# 프로젝트 디렉토리 생성
mkdir -p ~/openlane-projects/my-design
cd ~/openlane-projects/my-design
...
주요 장점 (Key Benefits):
--dockerized플래그는 Docker를 통해 모든 도구 의존성 (tool dependencies)을 자동으로 처리합니다.
직접 다운로드 (권장) (Direct Downloads (Recommended)):
Windows: Windows용 KLayout 다운로드
macOS: macOS용 KLayout 다운로드 또는 brew install --cask klayout
Linux: Linux용 KLayout 다운로드 또는 sudo apt install klayout
대안 설치 (Alternative Installation):
# macOS (Homebrew)
brew install --cask klayout
# Ubuntu/Debian
...
git clone https://github.com/NellyW8/mcp-EDA
cd mcp-EDA
npm install
...
mcp-EDA/
├── src/
│ └── index.ts # 메인 서버 코드 (Main server code)
...
이 방법은 가장 쉬운 설정 경험을 위해 Docker Desktop의 내장된 MCP 확장을 사용합니다.
-
Docker Desktop 4.39.0+ 설치 및 실행 중
-
Claude Desktop 설치됨
-
Docker Desktop 확장 설치 (Install Docker Desktop Extension):
-
Docker Desktop을 실행합니다.
-
왼쪽 메뉴에서 "Extensions"로 이동합니다.
-
"AI Tools" 또는 "Docker MCP Toolkit"을 검색합니다.
-
"Labs: AI Tools for Devs" 확장을 설치합니다.
Docker MCP 연결 설정 (Configure Docker MCP Connection):
- 설치된 "Labs: AI Tools for Devs" 확장을 엽니다.
- 우측 상단의 기어 아이콘을 클릭합니다.
- "MCP Clients" 탭을 선택합니다.
- "Claude Desktop" 또는 "Cursor IDE"에 대해 "Connect"를 클릭합니다.
이렇게 하면 Claude Desktop 및 Cursor IDE가 다음과 같이 자동으로 설정됩니다:
{ "mcpServers": { "MCP_DOCKER": { "command": "docker", "args": [ "run", "-i", "--rm", "alpine/socat", "STDIO", "TCP:host.docker.internal:8811" ] } } }
EDA MCP 서버 추가 (Add Your 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" } } } }
- Claude Desktop 설정 파일 위치를 찾습니다. Settings > Developer > Edit Config:
Claude Desktop 재시작 (Restart Claude Desktop) 후 Settings > Developer에서 두 서버가 모두 실행 중인지 확인합니다.
Cursor 설정 열기 (Open Cursor Settings):
-
Ctrl + Shift + P(Windows/Linux) 또는Cmd + Shift + P(macOS)를 누릅니다. - "Cursor Settings"를 검색합니다. -
사이드바에서 "MCP"로 이동합니다.
-
누릅니다.
MCP 서버 추가 (Add MCP Server): "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"로 변경되는 것을 확인해야 합니다.
Claude에게 질문: "이 counter 모듈을 ice40 FPGA용으로 합성할 수 있나요?"
module counter(
input clk,
...
Claude에게 질문: "테스트벤치(testbench)와 함께 이 adder를 시뮬레이션해 주세요"
// Design
module adder(
...
Claude에게 질문: "이 설계에 대해 10ns 클록 주기(clock period)로 전체 ASIC 플로우(flow)를 실행해 주세요"
module simple_cpu(
input clk,
...
완료 후 얻게 되는 결과물:
runs/RUN_*/final/gds/design.gds
- 최종 GDSII 레이아웃(layout)
runs/RUN_*/openlane.log
- 전체 실행 로그(execution log)
runs/RUN_*/reports/
-
타이밍(Timing), 면적(area), 전력(power) 분석 보고서
-
모든 중간 결과물 (DEF 파일, 넷리스트(netlists) 등)
Claude에게 질문: "프로젝트 ID abc123의 시뮬레이션 파형(waveforms)을 보여줘"
MCP 서버를 감지할 수 없는 경우:
-
설정 파일의 절대 경로(absolute path)를 확인하세요.
-
Node.js가 설치되어 있고 접근 가능한지 확인하세요.
-
설정 변경 후 Claude Desktop 또는 Cursor를 재시작하세요.
Docker 권한 오류:
sudo groupadd docker sudo usermod -aG docker $USER sudo reboot
도구를 찾을 수 없는 오류:
- 도구가 설치되어 있는지 확인하세요:
yosys --version
, iverilog -V
, gtkwave --version
-
MCP 설정에서 PATH 환경 변수를 확인하세요.
-
macOS의 경우, Homebrew 경로가 포함되어 있는지 확인하세요:
/opt/homebrew/bin -
도구가 설치되어 있는지 확인하세요:
OpenLane 타임아웃(Timeout):
-
서버에는 OpenLane 플로우에 대해 10분의 타임아웃이 설정되어 있습니다.
-
복잡한 설계의 경우, 설계를 단순화하거나 여러 번 반복 실행하는 것을 고려하세요.
GTKWave/KLayout GUI 문제:
-
macOS: GTKWave/KLayout은 보안 및 개인정보 보호(Security & Privacy) 설정에서 수동 승인이 필요할 수 있습니다.
-
Linux: 원격 시스템을 사용하는 경우 X11 포워딩(forwarding)이 작동하는지 확인하세요.
-
Windows: GUI 애플리케이션이 명령줄(command line)에서 실행될 수 있는지 확인하세요.
MCP 서버 로그 확인:
Claude Desktop: ~/Library/Logs/Claude/mcp*.log (macOS)
Cursor: MCP 설정 패널에서 에러 메시지를 확인하세요.
수동 도구 테스트 (Test Tools Manually): yosys -help, iverilog -help, docker run hello-world, gtkwave --version, klayout -v
Node.js 환경 확인 (Verify Node.js Environment): node --version, npm --version
문제 해결 및 문의 사항:
- 위의 문제 해결 (troubleshooting) 섹션을 확인하세요
- MCP 서버 로그를 검토하세요
- 개별 도구들을 수동으로 테스트하세요
- 상세한 에러 메시지와 환경 정보를 포함하여 이슈 (issue)를 생성하세요
참고: 이 MCP 서버는 EDA 도구의 로컬 설치를 필요로 합니다. 이 서버는 AI 어시스턴트와 사용자의 로컬 EDA 툴체인 (toolchain) 사이의 가교 역할을 하며, 자연어 상호작용을 통해 정교한 하드웨어 설계 워크플로우 (workflow)를 가능하게 합니다.
@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},
...
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기