FPGA开发自动化服务器

一个用于Xilinx Vivado FPGA开发的自动化服务器,支持通过Claude Code和其他MCP兼容工具进行项目构建、综合和管理。

  • by slauzinho
  • Python
  • 本地部署
  • 7 星标
  • 更新于
在 GitHub 查看 slauzinho/vivado-mcp

使用说明

MCP 服务器

用于Xilinx Vivado FPGA开发自动化的MCP(模型上下文协议)服务器。该服务器允许Claude Code和其他兼容MCP的AI工具与Vivado交互,以构建、合成和管理FPGA项目。

特性

  • 自动Vivado检测 -查找Windows和Linux上的Vivado安装
  • 完整构建流程 -运行合成、实现和比特流生成
  • 个性化构建步骤 -分别运行合成、实现或比特流
  • 持续的TCL会话 -保持Vivado运行以实现快速迭代命令
  • 构建状态检查 -查询以前版本的状态
  • 清洁建筑 -删除构建工件以进行新的重建

先决条件

  • Python 3.10或更高版本
  • 已安装Xilinx Vivado(已在2023.x和2024.x上测试)
  • 紫外线 (推荐)或pip

安装

选项1:使用紫外线从源头安装(建议用于开发)

# Clone the repository
git clone https://github.com/yourusername/vivado-mcp.git
cd vivado-mcp

# Install with uv
uv sync

选项2:使用pip安装

pip install vivado-mcp

选项3:使用pip从源代码安装

git clone https://github.com/yourusername/vivado-mcp.git
cd vivado-mcp
pip install -e .

使用Claude代码

Claude Code可以使用MCP服务器来扩展其功能。要将此服务器添加到Claude Code中,请执行以下操作:

步骤1:添加MCP服务器配置

运行此命令将服务器添加到Claude Code配置中:

claude mcp add vivado-mcp

出现提示时,输入启动服务器的命令:

如果安装了紫外线(来源):

uv run --directory /path/to/vivado-mcp vivado-mcp

如果与pip一起安装:

vivado-mcp

步骤2:替代方案-手动配置

您还可以手动编辑Claude Code MCP设置。设置文件位于:

  • macOS: ~/.claude/claude_desktop_config.json
  • Linux: ~/.config/claude/claude_desktop_config.json
  • 视窗: %APPDATA%\Claude\claude_desktop_config.json

将以下内容添加到 mcpServers 章节:

如果安装了紫外线:

{
  "mcpServers": {
    "vivado-mcp": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/vivado-mcp", "vivado-mcp"]
    }
  }
}

如果与pip一起安装:

{
  "mcpServers": {
    "vivado-mcp": {
      "command": "vivado-mcp"
    }
  }
}

使用Vivado配置的环境变量:

{
  "mcpServers": {
    "vivado-mcp": {
      "command": "vivado-mcp",
      "env": {
        "VIVADO_PATH": "/opt/Xilinx/Vivado/2023.2",
        "VIVADO_VERSION": "2023.2"
      }
    }
  }
}

步骤3:重新启动Claude代码

添加配置后,重新启动Claude Code以使更改生效。您可以通过要求Claude列出可用工具或检测Vivado安装来验证服务器是否正在运行。

手动运行服务器

您也可以直接运行服务器进行测试:

# With uv
uv run vivado-mcp

# With pip install
vivado-mcp

# Or directly with Python
python -m vivado_mcp.server

配置

服务器可以通过环境变量或配置文件进行配置。

环境变量

变量 描述 示例
VIVADO_PATH Vivado安装的显式路径 /opt/Xilinx/Vivado/2023.2
VIVADO_VERSION 要使用的特定版本 2023.2
VIVADO_SEARCH_PATHS 其他搜索路径(冒号/分号分隔) /custom/path1:/custom/path2

配置文件

创建 vivado-mcp.json 项目目录或主目录中的文件:

{
  "vivado_path": "/path/to/vivado/2023.2",
  "vivado_version": "2023.2",
  "additional_search_paths": ["/custom/search/path"]
}

Vivado自动检测

服务器会自动在标准位置搜索Vivado:

  • 视窗: C:\Xilinx\Vivado\*
  • Linux: /opt/Xilinx/Vivado/*, /tools/Xilinx/Vivado/*, ~/Xilinx/Vivado/*
  • macOS: /Applications/Xilinx/Vivado/*, ~/Xilinx/Vivado/*

可用工具

检测活的

检测系统上的Vivado安装。

参数:

  • version (可选):要查找的特定版本(例如“2023.2”)
  • include_all (可选):返回所有安装,而不仅仅是默认安装

Claude中的示例用法:

“检测我的系统上安装了哪些Vivado版本”

run_build

运行完整的Vivado构建流(合成->实现->比特流)。

参数:

  • project_path (必需):.xpr项目文件或.tcl构建脚本的路径
  • vivado_version (可选):要使用的特定Vivado版本
  • timeout (可选):超时时间(秒)

Claude中的示例用法:

“在/home/user/projects/fpga/myproject.xpr上构建我的Vivado项目”

run_synthesis

仅运行Vivado合成(无实现或比特流)。

参数:

  • project_path (必需):.xpr项目文件或.tcl构建脚本的路径
  • vivado_version (可选):要使用的特定Vivado版本
  • timeout (可选):超时时间(秒)

Claude中的示例用法:

“在我的项目上运行合成以检查错误”

运行实施

仅运行Vivado实现(需要完成合成)。

参数:

  • project_path (必需):.xpr项目文件或.tcl构建脚本的路径
  • vivado_version (可选):要使用的特定Vivado版本
  • timeout (可选):超时时间(秒)

生成比特流

仅生成比特流(需要完成实现)。

参数:

  • project_path (必需):.xpr项目文件或.tcl构建脚本的路径
  • vivado_version (可选):要使用的特定Vivado版本
  • timeout (可选):超时时间(秒)

get_build_status

检查以前的Vivado构建是否成功完成。

参数:

  • project_path (必需):.xpr项目文件或项目目录的路径

Claude中的示例用法:

“我上次构建的状态是什么?”

清洁建筑

清理Vivado生成输出目录(.runs/、.cache/、.gen/、.hw/、.ip_user_files/)。

参数:

  • project_path (必需):.xpr项目文件或项目目录的路径

Claude中的示例用法:

“清理构建输出,以便我可以进行新的构建”

start_tcl_session

启动一个持久的Vivado TCL shell会话,以获得更快的迭代命令。

参数:

  • vivado_version (可选):要使用的特定Vivado版本
  • working_directory (可选):会话的工作目录

run_tcl_command

在Vivado会话中执行TCL命令(如果可用,则使用持久会话,否则使用批处理模式)。

参数:

  • command (必填):要执行的TCL命令
  • session_id (可选):要使用的特定会话ID
  • timeout (可选):超时秒数(默认值:300)

Claude中的示例用法:

“运行TCL命令:get_property STATUS[get_runs synth_1]”

close_tcl_session

关闭持续的Vivado TCL shell会话。

参数:

  • session_id (可选):要关闭的会话ID(如果未指定,则默认关闭)

list_tcl_sessions

列出所有活动的Vivado TCL shell会话。

故障排除

服务器未启动

  1. 检查是否安装了Python 3.10+: python --version
  2. 验证软件包是否已安装: pip show vivado-mcp
  3. 尝试手动运行服务器以查看错误: vivado-mcp

未检测到Vivado

  1. 确保Vivado安装在标准位置
  2. 设置 VIVADO_PATH Vivado安装的环境变量
  3. 使用 detect_vivado 工具与 include_all: true 看看发现了什么

Claude Code看不到服务器

  1. 确保配置文件位于正确的位置
  2. 更改配置后重新启动Claude Code
  3. 检查命令路径是否正确(如果需要,请使用绝对路径)

发展

运行测试

uv run pytest

类型检查

uv run mypy src/

代码检查

uv run ruff check src/

许可证

麻省理工学院