Token导航 LogoToken导航TokenDH.com
vivado MCP logo
设计创作stdio官方级别未说明来源级核验

vivado MCP

MCP Server

Vivado MCP Server是一款通过MCP协议实现AI助手与AMD/Xilinx Vivado FPGA开发工具直接交互的服务,支持会话管理、项目操作、设计流程控制及仿真等功能。

工具数

37

提示词数

0

GitHub Stars

44

资源数

0
PythonClaude设计Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

coreyhahn

提供方

coreyhahn

最后核验

2026/5/17 20:20

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install -e .

详细介绍

MCP 服务器

一个模型上下文协议(MCP)服务器,使Claude等AI助手能够直接与AMD/Xilinx Vivado FPGA开发工具进行交互。

特性

  • 会话管理:启动/停止持久Vivado TCL会话(避免每个命令启动30秒)
  • 项目管理:打开/关闭Vivado项目(.xpr文件)
  • 设计流量:运行合成、实现和比特流生成
  • 报告与分析:获取时间摘要、利用率报告和设计分析
  • 设计查询:探索层次结构、端口、网络和单元
  • 模拟:控制Vivado的集成模拟器(xsim)
  • 原始TCL:执行任意Vivado TCL命令进行高级操作

需求

  • Python 3.10+
  • 已安装AMD/Xilinx Vivado(已在2023.2+版本中测试)
  • Vivado必须在您的PATH中,或者在启动会话时指定完整路径

安装

来自GitHub

git clone https://github.com/coreyhahn/vivado_mcp.git
cd vivado_mcp
pip install -e .

配置Claude代码

添加到您的Claude Code MCP配置中(~/.claude/claude_desktop_config.json 或项目级别 .mcp.json):

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

或者,如果你想指定Python解释器:

{
  "mcpServers": {
    "vivado": {
      "command": "python",
      "args": ["-m", "vivado_mcp"]
    }
  }
}

用法

配置后,Claude可以通过自然语言与Vivado交互。工作流程示例:

  1. 启动Vivado会话:“开始Vivado会话”
  2. 打开项目:“在/path/to/project.xpr打开我的项目”
  3. 运行合成:“综合设计”
  4. 检查计时:“时间总结是什么?是否符合时间要求?”
  5. 检查利用率:“显示资源利用率”
  6. 关闭会话:“停止Vivado会话”

可用工具

会话管理

  • start_session -启动持续的Vivado TCL会话
  • stop_session -停止Vivado会话
  • session_status -获取会话统计信息

项目管理

  • open_project -打开Vivado项目(.xpr)
  • close_project -关闭当前项目
  • get_project_info -获取项目信息(零件、目录等)

设计流量

  • run_synthesis -运行合成
  • run_implementation -跑步地点和路线
  • generate_bitstream -生成比特流

报告与分析

  • get_timing_summary -获取时间摘要(WNS、TNS、WHS、THS)
  • get_timing_paths -获取故障/关键路径的详细时序路径
  • get_utilization -获取资源利用率(LUT、FF、BRAM、DSP)
  • get_clocks -获取时钟信息
  • get_messages -获取综合/实施消息

设计查询

  • get_design_hierarchy -获取模块/实例层次结构
  • get_ports -获取顶级端口
  • get_nets -搜索网
  • get_cells -搜索单元格/实例

模拟

  • launch_simulation -启动行为/合成后/内爆后模拟
  • run_simulation -在指定时间内运行模拟
  • restart_simulation -从时间0重新启动
  • close_simulation -关闭模拟器
  • get_simulation_time -获取当前模拟时间
  • get_signal_value -获取信号的当前值
  • get_signal_values -按模式获取多个信号值
  • add_signals_to_wave -将信号添加到波形查看器
  • set_simulation_top -设置测试台模块
  • get_simulation_objects -列出范围内的信号
  • get_scopes -列出层次结构范围
  • step_simulation -步进模拟
  • add_breakpoint -添加信号断点
  • remove_breakpoints -删除所有断点

高级

  • run_tcl -执行原始TCL命令
  • generate_full_report -生成完整报告以归档
  • read_report_section -阅读大型报告的部分内容
  • request_feature -请求新功能
  • list_feature_requests -列出提交的请求

建筑

┌─────────────────┐     MCP Protocol      ┌─────────────────┐
│   Claude Code   │◄────(JSON-RPC)────────►│  Vivado MCP     │
│   (AI Client)   │     over stdio        │    Server       │
└─────────────────┘                       └────────┬────────┘
                                                   │
                                                   │ pexpect
                                                   │ (TCL commands)
                                                   ▼
                                          ┌─────────────────┐
                                          │ Vivado Process  │
                                          │  (TCL mode)     │
                                          └─────────────────┘

服务器在TCL模式下维护一个持久的Vivado进程。命令通过pexpect发送,并通过等待Vivado提示符捕获输出。这避免了为每个命令启动Vivado时可能出现的约30秒的启动开销。

用Claude重新创建此MCP服务器

这个MCP服务器完全是通过与Claude的对话创建的。以下是如何创建类似的MCP服务器:

1.从明确的目标开始

告诉克劳德你想构建什么:

“我想创建一个MCP服务器,让你控制Vivado FPGA工具。你应该能够启动Vivado、打开项目、运行合成、检查时序等。”

2.描述架构

解释关键技术挑战:

“Vivado需要30秒才能启动,所以我们需要一个持久的会话。Vivado有一个我们可以使用的TCL接口。我们需要将Vivado的文本输出解析为结构化数据。”

3.迭代工具

从基本工具开始,添加更多:

  1. 会话管理(启动/停止)
  2. 项目管理
  3. 设计流命令
  4. 报告和查询
  5. 仿真控制

4.使用的关键设计模式

单打比赛:一次只能运行一个Vivado进程

_session: Optional[VivadoSession] = None

def get_session() -> VivadoSession:
    global _session
    if _session is None:
        _session = VivadoSession()
    return _session

过程管理展望:使Vivado在命令之间保持活力

self.child = pexpect.spawn(
    f'{self.vivado_path} -mode tcl -nojournal -nolog',
    encoding='utf-8',
    timeout=self.timeout
)
self.child.expect('Vivado%', timeout=10)  # Wait for prompt

输出解析:将文本报告转换为结构化JSON

def parse_timing_summary(output: str) -> dict:
    wns_match = re.search(r"WNS\(ns\)\s*:\s*([-\d.]+)", output)
    if wns_match:
        result["wns"] = float(wns_match.group(1))

响应截断:优雅地处理大输出

def truncate_response(content: str, max_chars: int) -> dict:
    if len(content) > max_chars:
        return {"content": content[:max_chars], "truncated": True}

5.MCP服务器结构

每个MCP服务器都需要:

from mcp.server import Server
from mcp.server.stdio import stdio_server
from mcp.types import Tool, TextContent

server = Server("your-server-name")

@server.list_tools()
async def list_tools() -> list[Tool]:
    return [Tool(name="...", description="...", inputSchema={...})]

@server.call_tool()
async def call_tool(name: str, arguments: dict) -> list[TextContent]:
    # Handle tool calls
    return [TextContent(type="text", text=json.dumps(result))]

async def main():
    async with stdio_server() as (read_stream, write_stream):
        await server.run(read_stream, write_stream,
                        server.create_initialization_options())

6.创建自己的MCP服务器的提示

将此提示模板与Claude一起使用:

I want to create an MCP server for [YOUR TOOL].

Background:
- [Tool] is a [description] that [what it does]
- It has a [CLI/API/etc] interface that accepts [commands/requests]
- Key operations I want to support: [list operations]

Technical considerations:
- [Startup time, persistent state, output formats, etc.]

Please help me create an MCP server with:
1. Session/connection management
2. Core operations as tools
3. Proper error handling
4. Structured JSON responses
5. Comprehensive code comments

Start with the basic structure and we'll iterate from there.

贡献

欢迎投稿!请随时提交问题和拉取请求。

许可证

MIT许可证-有关详细信息,请参阅许可证文件。

致谢

目录标签

目录标签

PythonClaude设计FPGA开发本地部署工具交互AI集成设计自动化硬件仿真

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

session

工具数量(toolCount,工具数)

37

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiosession部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP