Описание
Server for EDA Tools, Duke University
README
An end‑to‑end digital implementation reference that couples Synopsys Design Compiler (RTL‑to‑gate) with Cadence Innovus (physical implementation), wrapped in lightweight Python + FastAPI micro‑services.
1. Repository Layout
.
├── config/ # CSV knobs for each stage
│ ├── synthesis.csv
│ ├── imp_global.csv
│ ├── placement.csv
│ └── cts.csv
├── designs/
│ └── <design>/ # one folder per design
│ ├── rtl/ # Verilog sources
│ └── implementation/ # auto‑generated results
├── libraries/ # FreePDK45 libs (timing/LEF/GDS)
├── scripts/
│ └── FreePDK45/
│ ├── tech.tcl # common tech include
│ ├── frontend/ # Design Compiler TCL
│ └── backend/ # Innovus TCL 1‑8
└── server/ # 8 FastAPI services
├── synth_setup_server.py
├── synth_compile_server.py
├── floorplan_server.py
├── powerplan_server.py
├── placement_server.py
├── cts_server.py
├── route_server.py
└── save_server.py
2. Prerequisites
| Tool | Version (tested) | Notes |
|---|---|---|
| Python | 3.8 + | create a venv, pip install -r requirements.txt |
| Synopsys DC | V‑2023.12‑SP2 | dc_shell in $PATH |
| Cadence Innovus | 21.1 s075 | innovus in $PATH |
| FreePDK45 / Nangate 1.3 | — | already vendored under libraries/ |
Valid DC & Innovus licenses must be reachable from the host.
3. One‑shot Pipeline
./restart_servers.sh # (re)launch all 8 REST services
./run_pipeline.sh # run setup → save in one go
run_pipeline.sh:
- Detects the most recent RTL → tags a synthesis version (
syn_ver). - Chooses a row from each
*.csv(indicesg_idx / p_idx / c_idx). - Calls each REST endpoint in sequence, streaming JSON to the console.
- Stores artefacts under
designs/<design>/FreePDK45/{synthesis,implementation}/….
A green “✅ All stages completed successfully!” means you have a routed
DEF + GDS + SPEF + netlist in pnr_out/.
4. Hitting Individual Stages
Every stage is a micro‑service exposing POST /<stage>/run.
Example – placement (default port 13337):
curl -X POST http://localhost:13337/place/run -H 'Content-Type: application/json' -d '{
"design" : "aes",
"tech" : "FreePDK45",
"impl_ver" : "syn1__g0_p0",
"restore_enc" : "designs/aes/…/floorplan.enc",
"force" : true
}' | jq .
| Port | Service | Depends on | Output key file |
|---|---|---|---|
| 13333 | setup | RTL | .mapped.v / .sdc |
| 13334 | compile | setup | *_mapped.v |
| 13335 | floorplan | compile | floorplan.enc |
| 13336 | powerplan | floorplan | powerplan.enc |
| 13337 | placement | powerplan | placement.enc |
| 13338 | CTS | placement | cts.enc |
| 13339 | route | CTS | route_opt.enc |
| 13340 | save | route | gds / lef / … |
All endpoints accept force:true to overwrite previous runs.
5. Configuration via CSV
Instead of burying numbers inside TCL, each tunable lives in CSV:
imp_global.csv– floor‑plan effort, aspect ratio, util…placement.csv– density caps, place legalization settings…cts.csv– CCOpt buffer lists, density, cloning…synthesis.csv– compile effort, clock period…
At runtime the Python wrapper:
- Selects a row by index (
g_idx,p_idx,c_idx, …). - Exports the pairs as env‑vars (
export design_flow_effort=medium). - The TCL scripts reference them:
setDesignMode -flowEffort $env(design_flow_effort).
Editing CSV + git commit = fully reproducible flow.
6. Logs & Reports
| Location | Content |
|---|---|
logs/<stage>/*.log |
Full Innovus / DC std‑out |
pnr_reports/ |
key reports aggregated per stage (*_timing.rpt.gz, *_drc.rpt) |
pnr_save/ |
intermediate checkpoints (*.enc, *.enc.dat) |
pnr_out/ |
final deliverables (DEF / GDS / SPEF / netlist) |
Each micro‑service returns the important report snippets as JSON so that a CI pipeline can parse WNS/TNS/DRC counts directly.
7. Bringing Your Own Design
- Copy RTL into
designs/<your‑design>/rtl/. - Create
designs/<your‑design>/config.tcl:
set TOP_NAME "<top>"
set RTL_LIST [glob $::env(BASE_DIR)/designs/<your‑design>/rtl/*.v]
- Update
run_pipeline.sh→design="<your‑design>". - Adjust clock period in
synthesis.csv.
No path hacking elsewhere.
8. Troubleshooting Cheatsheet
| Symptom | Likely fix |
|---|---|
floorplan.enc not found |
check Innovus log – usually floorplan DRC, decrease density / effort. |
| placement WNS > 0 | lower target_util, loosen density caps |
| route DRC over 1 M | add more power stripes (M4/M5) in 3_powerplan.tcl |
…enc.dat not found in later stage |
earlier stage crashed – open its .log |
9. Roadmap
- add OpenROAD backend for full open‑source flow
- parameter sweeps via
sweep.py+ SLURM - Prometheus exporter in each service
Made with ❤️ by the MCP team.
Установка EDA Server
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/Euler-Zhu/MCP-EDA-ServerFAQ
EDA Server MCP бесплатный?
Да, EDA Server MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для EDA Server?
Нет, EDA Server работает без API-ключей и переменных окружения.
EDA Server — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить EDA Server в Claude Desktop, Claude Code или Cursor?
Открой EDA Server на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectCompare EDA Server with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
