FPGA开发自动化服务

用于Intel Quartus FPGA构建和DE10-Nano开发板管理的自动化服务,支持异步操作以避免阻塞。

  • by abbbe
  • Python
  • 本地部署
  • 10 星标
  • 更新于
在 GitHub 查看 abbbe/fpga-mcp-servers

使用说明

用于DE10纳米FPGA开发的MCP服务器

两个模型上下文协议(MCP)服务器,用于自动化Intel Quartus FPGA构建和DE10 Nano板管理。

服务器

夸图斯mcp

Intel Quartus项目的FPGA构建自动化。

重要提示:构建时始终使用异步模式

Quartus FPGA构建需要20-45分钟。 始终使用 quartus_build_async 以避免堵塞。 同步 quartus_build 将在整个构建期间阻止Claude-不要使用它。

异步工作流:

  1. quartus_build_async() -开始构建,获取task_id,继续工作
  2. quartus_task_status() -检查是否完成(定期轮询)
  3. quartus_task_wait() -阻塞直到完成(当你需要结果时)
  4. quartus_task_cancel() -必要时中止
工具 说明
quartus_build_async(project_path, clean_first?) 使用此 -在后台开始构建,立即返回。
quartus_task_status(task_id?) 无阻塞地检查构建进度。
quartus_task_wait(timeout?) 等待当前构建完成,返回结果。
quartus_task_cancel() 取消当前正在运行的生成。
quartus_task_list() 列出当前+最近完成的构建。
quartus_status(project_path) 检查是否存在构建工件。
quartus_clean(project_path) 清理构建工件。
quartus_build(project_path, clean_first?) 同步构建- 避免 (20-45分钟)。

特征:

  • 自动配置 PATH 和 QSYS_ROOTDIR 第24.1季度
  • 1小时构建超时
  • 分析构建日志以查找错误
  • 返回具有RBF路径和大小的结构化结果
  • 异步构建:在后台运行构建而不阻塞Claude
  • 单一构建执行:每台机器一次只能构建一个版本(通过 ~/.quartus-mcp/state.json)
  • 构建历史记录:保留最后10个已完成的构建及其结果

de10纳米mcp

DE10 Nano(Cyclone V SoC)的板管理和部署。

工具 说明
board_status() 快速健康检查-SSH连接、串行端口、正常运行时间。
ssh_cmd(command, timeout?, sudo?) 通过SSH执行命令。
serial_cmd(command, timeout?) 通过串行控制台(pyserial)执行命令。
sw_sync(local_dir, remote_dir?) 将整个文件夹同步到板上(默认值:~/sw)。
fpga_verify() 读取寄存器以验证比特流是否已加载。
fpga_deploy(rbf_path) 完全部署:备份、复制、重新启动、等待、验证。
fpga_recover() 当主板无法启动时,通过串行进行U-Boot恢复。

特征:

  • 用途 paramiko SSH(适当的超时处理)
  • 用途 pyserial 用于串行(永远不会像shell命令那样挂起)
  • fpga_deploy 重启后在线投票(90秒超时)
  • fpga_recover 自动计算U-Boot的十六进制文件大小 fatwrite

配置

默认电路板设置(硬编码 de10nano_mcp/server.py):

设置 值
SSH主机 analog.local
SSH用户 analog
SSH端口 22
串行端口 /dev/ttyUSB0
串行波特率 115200
启动RBF /boot/soc_system.rbf

默认四分位数设置(in quartus_mcp/server.py):

设置 值
Quartus小径 /opt/altera_lite/24.1std/quartus/bin
QSYS根 /opt/altera_lite/24.1std/quartus/sopc_builder/bin
构建超时 3600 秒(1小时)

安装

cd ~/Documents/dvp/mcp-servers

# Create virtual environment
python3 -m venv .venv

# Install both servers (editable mode)
.venv/bin/pip install -e quartus-mcp -e de10nano-mcp

Claude代码配置

添加到您的项目 .mcp.json:

{
  "mcpServers": {
    "quartus": {
      "command": "/home/abb/Documents/dvp/mcp-servers/.venv/bin/quartus-mcp"
    },
    "de10nano": {
      "command": "/home/abb/Documents/dvp/mcp-servers/.venv/bin/de10nano-mcp"
    }
  }
}

重新启动Claude Code以加载服务器。

用法示例

构建FPGA(异步-推荐)

# Start build in background (returns immediately)
quartus_build_async(project_path="/home/abb/de10-nanon/hdl-phase/projects/cn0579/de10nano")

# Do other work while build runs...

# Check status periodically
quartus_task_status()

# Or wait for completion when you need the result
quartus_task_wait()

部署到董事会

Use fpga_deploy with rbf_path="/home/abb/de10-nanon/hdl-phase/projects/cn0579/de10nano/cn0579_de10nano.rbf"

将软件同步到板上

Use sw_sync with local_dir="/home/abb/de10-nanon/hdl-phase/sw"

这将同步整个 sw/ 文件夹到 ~/sw/ 在董事会上。然后按以下方式运行脚本:

sudo python3 ~/sw/pll_tuner.py monitor

检查板状态

Use board_status (no arguments)

从坏比特流中恢复

如果电路板在出现错误比特流后卡在U-Boot提示符处:

Use fpga_recover (no arguments)

这将:

  1. 通过串行连接
  2. 从SD卡加载备份RBF
  3. 计算文件大小并写入主RBF
  4. 重新启动并验证

异步构建工作流

FPGA构建需要20-45分钟。始终使用异步模式以避免阻塞Claude。

1. START BUILD (returns immediately):
   quartus_build_async(project_path="/path/to/project")
   -> Returns: task_id (e.g., "build-20240122-153000")
   -> Claude can now do other work!

2. CHECK PROGRESS (non-blocking):
   quartus_task_status()
   -> Returns: RUNNING + elapsed time, or SUCCESS/FAILED + results

3. WAIT FOR COMPLETION (when you need the result):
   quartus_task_wait(timeout=3600)
   -> Blocks until build finishes, returns full result
   -> Use this when you're ready to deploy

4. CANCEL IF NEEDED:
   quartus_task_cancel()
   -> Kills the running build process

5. VIEW HISTORY:
   quartus_task_list()
   -> Shows current task + last 10 completed builds

为什么async很重要: 同步构建块Claude 20-45分钟,浪费上下文 Async允许Claude启动构建,执行其他任务(编辑代码, 运行测试,回答问题),然后在构建完成时返回查看。

测试

使用模拟模式运行测试(不需要真正的Quartus):

cd ~/Documents/dvp/mcp-servers-async
QUARTUS_MCP_MOCK=3 .venv/bin/python quartus-mcp/tests/test_quartus_mcp.py

模拟模式环境变量:

  • QUARTUS_MCP_MOCK=1 -启用10秒构建的模拟
  • QUARTUS_MCP_MOCK=<N> -使用N秒构建启用模拟

依赖项

  • Python>=3.10
  • mcp >=1.0.0(MCP Python SDK)
  • paramiko >=3.4.0(SSH)
  • pyserial >=3.5(串行)

许可证

麻省理工学院