English | 简体中文
wave-mcp 是腾讯蓬莱实验室验证团队开源的一款 RTL 波形调试 MCP Server,为 LLM 提供波形调试工具集: 读 FST 波形 + RTL 网表,提供层次探索、信号查询、驱动分析、值/X 态追踪、波形对比与浏览器波形查看器等 37 个 MCP 工具。 Apache-2.0 开源,无需任何商用 License,支持任意并发。
FST 直读,VCD / FSDB 自动转 FST:Verilator
--trace-fst、Icarus 直接产 FST 就能读; 手上只有 VCD 或 FSDB 也没关系,prepare_session自动转换后再建 session(FSDB 转换不占 Verdi license)。 它不跑仿真器,你用自己的流程跑出波形,把结果交给它即可。
芯片验证占据开发周期 50% 以上的时间,波形调试是其中最高频的动作。而 LLM 时代, 工程师希望让 AI Agent 直接读波形、查信号、追 X 态根因,但市面上的商用调试 MCP 需要昂贵的 License,且并发受限。
wave-mcp 用纯开源技术栈(pylibfst + pyslang)提供完整波形调试能力: 免 License、数据准确、真实芯片项目背书。
在真实生产级芯片项目(几十个模块)上完整验证,并把 OpenTitan、香山纳入测试集:
| 维度 | 结果 |
|---|---|
| 测试规模 | 一百多个测试 case(生产级项目 + OpenTitan 27 个 IP + 香山 38 个 IP) |
| 数据准确性 | 225 万信号级验证,值查询正确性 100% |
| 工具调用 | 310 万多次调用全部通过 |
| 驱动分析 | 驱动 / 扇入 / 连通 / 追溯在生产级项目上全量验证 |
| 超大模块 | 百万级 scope 稳定完成分析 |
| 工具覆盖 | 37 个工具全部验证,含 viewer / diff 的单元与浏览器端到端覆盖 |
- 波形查询:设计层次、实例、信号(位宽/方向/类型,含总线聚合)、信号值(点查询 / 区间,随机访问)。
- 静态分析(pyslang 网表):连接、驱动、扇入/扇出、声明位置(文件:行号)。
- 无波形静态分析:
open_static_session只凭 RTL 源码建 session,仿真前即可分析设计结构。 - 值追踪:
trace_value沿驱动链反向遍历、可跨模块下钻,每个节点带真实 FST 值;trace_x追 X 根因。 - 网表自愈:从 pyslang 诊断自动补
+incdir+/ 包源并重编;失败时优雅降级,其余工具不受影响。 - 一致性校验:源码或波形变了但网表没更新会报警,绝不静默给错结果。
- 波形对比:
diff_waveforms对 pass/fail 两份波形定位首个分歧时刻,按分歧时间排序信号,时钟对齐采样过滤毛刺。 - 波形查看器:
open_wave_view让 agent 分析完直接弹浏览器波形,嫌疑信号 + 游标钉在出错时刻 + 分析说明弹窗;双波形对比两栏同步注入;get_view_state确认页面连通与状态送达。 - 多会话与可复现:同一设计可开多个独立 session 共享一份已加载数据;每条查询回复带
_query(有效参数)和_fp(数据集身份/版本 + 问题摘要),两次回答是否来自同一输入同一问题一眼可辨。 - 部署友好:stdio(一人一进程,零运维)/ HTTP(本机免配置,跨机器一个
WAVE_MCP_TOKEN)/ 离线自包含包(隔离网)。
FSDB 转换器(third_party/fsdb2fst)中的部分实现参考了 TraceWeave(MIT),diff_waveforms 的功能优先级亦受其影响,详见 docs/THIRD_PARTY.md。
| 依赖 | 版本要求 | 说明 |
|---|---|---|
| Python | 3.10 – 3.13 | 已测 3.10–3.13 全部通过;mcp SDK 要求 ≥ 3.10 |
| glibc | ≥ 2.28 | pyslang 预编译 wheel 的要求(对应 Ubuntu 18.10+ / Debian 10+ / CentOS 8+) |
| mcp | 2.x(>=2.0.0,<3) |
MCP SDK v2,pip install 自动安装 |
| pylibfst | ≥ 0.2.1 | FST 波形读取(fstapi,随机访问) |
| pyslang | ≥ 11.0.0 | RTL 网表构建(完整 elaboration) |
| vcd2fst(可选) | GTKWave | 仅 VCD→FST 转换需要(apt install gtkwave |


