Vivado MCP
Vivado MCP server — 让 Claude Code / Cursor / Codex 驱动本地 FPGA 全流程。30 个精选工具、8 个证据驱动 Prompt、doctor 环境自检、GUI/Tcl/attach 会话,以及时序和 CRITICAL WARNING 中文诊断。
Vivado MCP is an open-source mcp server by mapleleavessssssss-wq, written mainly in Python, with 167 GitHub stars and the Apache-2.0 license. Its code was last updated Oct 31, 2026.
Scan summary: scanned Nov 5, 2026 at commit b975924. Seen able to connect to databases. Scan policy
b975924 · Nov 5, 2026Findings (1)
- lowLow. Minor, or common in normal tools. Shown for information.No manifest declaring network access and environment variables (agent.json)
Network activity
Tools exposed (32)
get_cdc_report解析 CDC 报告,按时钟对、严重级别和规则计数并返回有界明细 JSON。 现场执行 report_cdc -details -return_string;离线读取原始 UTF-8 报告。 计数单位为报告检查项,摘要与明细不重复累加,不能当总线位/端点数。 未验证完整时钟/IO 约束覆盖,默认报告可能隐藏豁免;signoff 始终 false, 空结果或 All paths are Safely Timed 不代表 CDC clean。本工具不修改约束。 Args: session_id: 现场查询会话 ID。 rep
get_critical_warnings提取并分类 CRITICAL WARNING / ERROR / 非标错误,统一失败诊断入口。 解析指定 run 的 runme.log,按 warning ID 聚合分类,返回中文诊断报告。 包含已知 warning 的分类标签和修复建议。 **三种诊断模式根据 run_name 自动选择**: 1. ``synth_*`` / ``impl_*`` 等综合实现 run:走原流程(``runme.log`` 解析 ERROR/CRITICAL WARNING)。**额外**:errors=0 且 cw=0 但 STATUS 含 ERROR
verify_io_placement_tool验证 IO 引脚分配:比对 XDC 约束与实际布局。 自动读取项目 XDC 文件中的 PACKAGE_PIN 约束(**支持 -dict 和传统两种语法**), 与 report_io 的实际分配结果对比,发现 GT 引脚交叉等严重错误。 GT 端口不匹配标记为 CRITICAL,GPIO 端口标记为 WARNING。 Args: session_id: 目标会话 ID。
xdc_lint对 XDC 约束文件做静态检查(pure Python,不依赖 Vivado 综合)。 综合前就能捕到这些常见错误,省掉 30+ 秒的跑综合等待: - PIN_CONFLICT:同一物理引脚被多个 port 占用 - MISSING_IOSTANDARD:有 PACKAGE_PIN 却没配 IOSTANDARD(NSTD-1 / BIVC-1 隐患) - DUPLICATE_PORT:同 port 被多次约束不同引脚(后者覆盖) - CLOCK_NO_PERIOD:create_clock 缺 -period - PIN_CONFLICT_CR
xdc_auto_fix自动修复 XDC 文件中能安全自修的问题(MISSING_IOSTANDARD / CLOCK_NO_PERIOD)。 默认 dry_run=True 只预览补丁,确认无误后调用 dry_run=False 实际写回。 写回前会为每个被修改文件生成同名 .bak 备份;注意 **.bak 只保留最近一次 修改前的版本**(再次写回会覆盖上一次的 .bak,与 ``sed -i.bak`` 同语义)。 **只修**这两类问题(其他需要人工判断): - MISSING_IOSTANDARD —— 在 PACKAGE_PIN 行之后插入 IOSTANDAR
verilog_compile_check用 iverilog / verilator 做 Verilog 语法 + 连接性检查(比 Vivado 综合快 50 倍)。 典型用途:写完或改完 RTL 想在几秒内确认"能不能过综合",不用等 30-60s Vivado。 需要机器上装 iverilog 或 verilator: Windows: scoop install iverilog / choco install verilator Linux: apt install iverilog / apt install verilator macOS: bre
run_synthesis启动综合;默认等待完成,也可异步提交后查询状态。 不调用 Tcl wait_on_run(会阻塞 Vivado event loop,GUI 模式冻住界面); wait=True 时 Python 每 2 秒查一次状态并上报进度;wait=False 时立即 返回 job_id,随后用 get_run_progress 查询。 Args: run_name: 综合 run 名称,默认 "synth_1"。 jobs: 并行任务数,默认 4。 timeout_minutes: 超时分钟数,默认 30。
run_implementation启动实现(布局布线);默认等待完成,也可异步提交。 不调用 Tcl wait_on_run(会阻塞 Vivado event loop,GUI 模式冻住界面); wait=True 时 Python 每 2 秒查一次 STATUS/PROGRESS;wait=False 时立即 返回 job_id,随后用 get_run_progress 查询。 Args: run_name: 实现 run 名称,默认 "impl_1"。 jobs: 并行任务数,默认 4。 timeout_minutes: 超时分钟数,默认
generate_bitstream生成比特流文件。在实现完成后执行。 默认启用前置安全检查:检测 CRITICAL WARNING 后阻止生成, 需确认无风险后使用 force=True 跳过检查。 Args: impl_run: 实现 run 名称,默认 "impl_1"。 jobs: 并行任务数,默认 4。 timeout_minutes: 超时分钟数,默认 30。 force: 跳过 CRITICAL WARNING 安全检查,默认 False。 session_id: 目标会话 ID。
program_device编程 FPGA 设备。封装 open_hw_manager → connect → program 多步操作。 只烧 .bit 进 FPGA(掉电即丢)。要掉电自启动须烧 SPI flash,见下面配方。 **烧 flash 配方(2019.1,run_tcl 逐步执行)**: 1. 查 flash 型号: ``get_cfgmem_parts -of [lindex [get_hw_devices] 0]`` (或按板上 flash 用 -filter 选,如 mt25ql128-spi-x1_x2_x4) 2. 生成 .mcs: ``wri
parse_xpr离线解析 Vivado 工程文件(.xpr),无需启动 Vivado。 秒级摸底陌生工程 / CI 门禁:不启 Vivado(避开 120s GUI 冷启 + 中文路径 TclStackFree 崩),纯 Python 读 .xpr 拿 part / 顶层 / 源文件(按 fileset 分组, 含 .v/.mem/.xci IP)/ XDC 约束 / synth+impl runs 及 Strategy。 对照 get_project_info(需先 start_session + open_project),本工具完全离线。 Args:
parse_bit_header离线解析 .bit 比特流文件头部,无需启动 Vivado。 只读文件头(不读 payload):提取设计名 / 目标 part(原始 + 规整)/ 构建日期时间 / 文件 SHA256。用于烧录前防错板(part 比对)、交付/返修对账(确认孤立 .bit 是不是 声称的那版)。Vivado 无任何 Tcl 命令读离线 .bit。 注意:.bit 里 part 去 'xc' 前缀 + 去速度等级(如 7k325tffg900);规整字段补回 'xc' 但速度等级无法还原,与 .xpr 的 part 比对时只能比到 package 级。 Ar
parse_ltx离线解析 ILA 调试探针文件(.ltx),无需连板 / 启动 Vivado。 连板 ILA 抓波前先离线拿清单:每个 hw_ila 挂哪些 probe、probe 名、位宽、映射的 net。辅助在写 set_property TRIGGER_COMPARE_VALUE eq<位宽>'h.. [get_hw_probes <probe>] 之前确认正确的 probe 名和宽度。get_hw_probes 需板子在手 + 活 hw session,本工具完全离线。Vivado 2019.1 的 .ltx 是 JSON 格式。 Args:
compare_xci对比两个 XCI 文件的 IP 配置差异。 无需 Vivado 会话,直接读取 XML 文件对比参数。 适用于版本对比、不同板卡间配置迁移验证、调试 IP 参数差异。 Args: file_a: 第一个 XCI 文件路径(如基准/正常配置)。 file_b: 第二个 XCI 文件路径(如待检查/异常配置)。 show_all: 是否显示所有参数(默认仅显示差异)。
inspect_ip_params查询 IP 实例的所有配置参数(含 GUI 中隐藏的参数)。 通过 Vivado Tcl API 获取指定 IP 的所有 CONFIG.* 属性及其当前值。 支持按关键词过滤(如 "gt"、"loc"、"lane"),不区分大小写。 Args: ip_name: IP 实例名称(如 "xdma_0")。 filter_keyword: 可选过滤关键词(如 "gt"、"loc"、"lane"),不区分大小写。 session_id: 目标会话 ID。
get_io_report获取结构化 IO 引脚报告(JSON)。 执行 report_io 并解析为结构化数据,包含: - 每个端口的引脚、站点、方向、IO 标准、Bank - GT / GPIO 类型自动判定 - 汇总统计(总数、GT 数、GPIO 数、未分配数) Args: session_id: 目标会话 ID。
get_timing_report获取结构化时序报告。 执行 report_timing_summary 并解析为结构化摘要 + 关键路径详情。 默认返回中文摘要;JSON 模式返回可保存的版本化证据。report_file 可离线 读取 UTF-8 Vivado 原始报告,无需会话。基线比较只给上下文匹配的观察差值, 不证明约束等价或完整签核;本工具不写文件。 Args: session_id: 目标会话 ID。 output_format: text(默认)或 json;json 模式错误也返回 JSON。 report_file:
check_bitstream_readiness检查比特流生成前的实现状态、时序摘要和严重警告。 这个工具是"发车前的最后一瞥":在你打算 generate_bitstream 或 program_device 之前,一次性给出 PASS/BLOCK/WARN 的综合结论,避免烧板后才发现问题。 检查维度: - impl_1 run 是否已到达 route_design Complete(没布线 = 无法生成比特流) - route 后的 CRITICAL WARNING 数量(> 0 通常意味着潜在功能风险) - 时序是否收敛(WNS/WHS 是否 met) 返回结论:
get_utilization_report获取资源占用摘要(LUT/FF/BRAM/DSP/IO)。 执行 ``report_utilization -return_string`` 并从多个表格里抽取核心资源行, 高亮超过 90% 占用的 [CRITICAL] 项和 70-90% 的 [WARN] 项。 典型用途: - 综合后检查"LUT 够不够 / BRAM 够不够" - 时序收敛困难时先看资源是否超限(> 90% 会导致拥塞) - detail=True 进一步看 BRAM 由 RAMB36 还是 RAMB18 组成(优化位宽/级联时用) Args:
get_project_info获取当前 Vivado 项目的综合信息(项目名 / part / 顶层 / 文件列表 / IP / run 状态)。 一次查询完成"摸底":AI 接手陌生项目时的起点。包含: - 项目名称、目录、Part 型号、顶层模块 - 所有源文件(按类型分组) - XDC 约束文件列表 - IP 实例列表(含 VLNV) - synth_1 / impl_1 的当前状态 Args: session_id: 目标会话 ID。
get_run_progress查看 run 的运行进度(适合长任务等待时看"走到哪一步")。 综合或实现常跑 10-30 分钟,这个工具让你不用开 GUI 就能看到: - 当前状态(running / complete / error)与 PROGRESS 百分比 - runme.log 里最近若干条 Phase 行(Phase 1 → Phase 2.1 → Phase 3 ...) - 日志尾部 N 行(含最新 WARNING / CRITICAL WARNING 原文) - 日志最后更新时间(判断 Vivado 是否还在活跃) Args: run_n
get_next_suggestion根据当前项目状态推断下一步应该做什么。 适合新手、刚打开老项目、或者不知道从哪下手的场景。规则: - 没项目 → 建议 open_project / create_project - 有项目没源文件 → 建议 add_files - 没顶层 → 建议 set_property TOP - 没 XDC → 建议添加约束 - 有 testbench 且没跑过行为仿真 → 先 launch_simulation - 可综合 → xdc_lint + run_synthesis - 综合完成 → run_implementation
get_ip_status检查项目中所有 IP 的版本状态(哪个需要升级、哪个已锁定)。 老项目打开后 Vivado 常提示"N 个 IP 需要升级"。这个工具一次性列出: - 需要升级的 IP(Vivado 更新了更好的版本) - 已锁定的 IP(IS_LOCKED 属性为 TRUE,改动需先解锁) - 已最新的 IP 附带升级建议(单个升级 / 全部升级 / 升级后验证)。 Args: session_id: 目标会话 ID。
get_pre_commit_summary生成一段可以贴进 git commit body 的工程摘要(时序/资源/CW)。 典型用途:做完 RTL 改动、跑完 impl 之后,想把关键数字写进 commit body, 避免 "改了 UART 模块" 这种无信息量的 commit。本工具一次性采样: - 项目 + part + 顶层 - 时序摘要(WNS / WHS / 失败端点数) - 资源占用(LUT / FF / BRAM / DSP / IOB 百分比) - CW / ERROR 计数(若有 impl_run) - 综合生成 READY/WARN/FAIL 门禁标签
start_session启动一个新的 Vivado 会话。 三种模式: - ``"gui"`` (默认) — MCP 自动 spawn ``vivado -mode gui``,你能看到 Vivado 图标 并实时观察 Tcl Console / Block Design / 波形等 GUI 内容。首次使用会自动 通过 ``-source`` 注入 TCP server,或先运行一次 ``vivado-mcp install`` 持久化。 - ``"tcl"`` — ``vivado -mode tcl`` 无头子进程(无 GUI,适合 CI / 批处理)。
stop_session关闭指定的 Vivado 会话。 Args: session_id: 要关闭的会话标识符。
list_sessions列出所有活跃的 Vivado 会话及其状态。
run_tcl执行任意 Vivado Tcl 命令。支持所有 Vivado Tcl API。 这是最通用的工具,可以执行任何 Vivado Tcl 命令,包括: - 项目: ``create_project``, ``open_project``, ``add_files``, ``set_property top`` - 约束: ``create_clock``, ``set_property PACKAGE_PIN`` - IP: ``create_ip``, ``generate_target``, ``set_property CONFIG.*`` - B
safe_tcl执行带参数的 Tcl 命令模板,自动用 Tcl list 规则转义参数。 适用场景:命令中含文件路径、端口名、字符串值等可能有特殊字符的输入。 Tcl 的 ``$``、``[]``、``{}``、反斜杠、空格都会被正确转义,防注入且防解析错。 用法示例: - ``safe_tcl("create_project {0} {1} -part {2}", args=["my_proj", "C:/path with space", "xc7a35tcpg236-1"])`` - ``safe_tcl("read_verilog {0}",
set_wave_zoom设置波形时间缩放窗口(改 wcfg XML 后 close -force + open 重载)。 本地价值(§1.3 条件3 跨命令协议):Vivado 2019.1 无 Tcl zoom 命令,缩放窗存在 .wcfg 的 <zoom_setting> 里,要改它再让 XSim 重载。重载顺序极易踩—— close 漏 -force 报 [Wavedata 42-26];同名 wcfg 已 open 时直接 open 报 42-52, 故必须先 close 再 open。本工具封装这条多步协议。 ⚠ wcfg 未保存(current_wave_con
set_wave_analog把信号设为模拟(Analog)波形显示(纯 Tcl 配方,实测 Vivado 2019.1 可渲染)。 本地价值(§1.3 条件2 本地知识库,三个实测静默坑): 1. WaveformStyle 必须传 STYLE_ANALOG(带 STYLE_ 前缀);裸传 ANALOG 时 Vivado 收下 不报错但渲染器不认,只显示数字格。推翻早期"Analog 无 Tcl 接口只能 GUI 右键"的误判。 2. get_waves 只匹配显示名(y0[15:0])/glob,直接传全路径 /tb/y0 返回空;工具自动按 DESIGN_OBJE
query_waveform离线发现 VCD 信号或查询有界波形变化,返回 JSON。 无需 Vivado 会话。仅 .vcd,最大 32 MiB,不支持 FST/WDB。 event/real/string 可发现但不可查询,event 瞬时触发不能视为持久逻辑位。 返回 timescale 与整数 ticks;同一时间戳更新合并,initial_values 是 start_time 全部更新后的值,events 是之后的变化。条件查询返回 matches, equals/unknown/all_equals 也检查初值,change 仅检查之后的变化。 scan_t
Automated result for the commit shown. See our scan policy. View the scan log
Maintainers can claim the listing to rescan, or dispute a result.
Vivado MCP alternatives
View more →Similar mcp servers in Coding Agents, ranked by GitHub stars. Compare licence, recent activity and scan status before you choose.
| Name | Stars | Licence | Last updated | Scan |
|---|---|---|---|---|
| Vivado MCP (this page) mapleleavessssssss-wq | 167 | Apache-2.0 | Oct 31, 2026 | Scanned, no flagged issues |
| Context Mode mksglu | 33k | None found | Nov 1, 2026 | Not scanned yet |
| Serena oraios | 31k | None found | Oct 28, 2026 | Not scanned yet |
| Fastmcp PrefectHQ | 28k | Apache-2.0 | Nov 1, 2026 | Scanned, no flagged issues |
| Nuclear nukeop | 19k | AGPL-3.0 | Nov 1, 2026 | Scanned, no flagged issues |
| MCP For Beginners microsoft | 18k | MIT | Oct 30, 2026 | Scanned, no flagged issues |