PyWellen MCP-通过模型上下文协议进行波形分析
   
PyWellen MCP是一个强大的 模型上下文协议(MCP) 使LLM代理能够与数字波形文件交互的服务器。使用自然语言查询和人工智能工具分析VCD、FST、GHW和其他波形格式。
✨ 特性
- 🎯 35+MCP工具 涵盖9个综合类别
- 📊 多格式支持:VCD、FST、GHW、LXT、LXT2、VZT波形
- 🔍 自然语言查询:用简单的英语询问信号
- ⚡ 高性能:多线程解析、LRU缓存、优化算法
- 🔗 外部集成:GTKWave、Verdi、Simvision查看器支持
- 📤 导出功能:CSV、JSON、YAML、层次树、信号列表
- 🧠 大语言模型优化:信号总结、模式检测、推荐
- 🔒 生产就绪:全面的错误处理、安全、监控
🚀 快速开始
安装
# From PyPI (when published)
pip install pywellen-mcp
# From source
git clone https://github.com/fvutils/pywellen-mcp.git
cd pywellen-mcp
pip install -e ".[dev]"配置
添加到您的MCP客户端配置中(例如,Claude Desktop):
{
"mcpServers": {
"pywellen": {
"command": "pywellen-mcp",
"args": []
}
}
}示例用法
# Chat with your LLM using natural language:
"Open the waveform file /path/to/design.vcd"
"Show me all clock signals"
"What's the value of top.cpu.reset at time 1000?"
"Compare signals clk_a and clk_b"
"Export the signal data to CSV"📊 当前状态
已实施35个工具 | 182/193测试通过 | 成功率94.3%
- ✅ 第一阶段:核心基础设施(4个工具)
- ✅ 第2阶段:层次导航(4个工具)
- ✅ 第三期:信号数据访问(5个工具)
- ✅ 阶段4:调试和分析(7个工具)
- ✅ 阶段5:比较和格式转换(7个工具)
- ✅ 第6阶段:LLM优化(5个工具)
- ✅ 第7阶段:导出和集成(8个工具)
- 🚧 第8阶段:生产准备就绪(CI/CD、安全、监控)
🛠️ 工具类别
核心操作(4个工具)
waveform_open-打开波形文件(VCD、FST、GHW)waveform_close-结束会议waveform_info-获取波形元数据waveform_list_sessions-列出活动会话
层次导航(4个工具)
hierarchy_list_top_scopes-列出顶层设计范围hierarchy_get_scope-获取范围详细信息hierarchy_list_variables-列出作用域中的变量hierarchy_search-使用模式搜索层次结构
信号分析(5个工具)
signal_get_value-获取特定时间的信号值signal_get_values-获取时间范围内的值signal_get_changes-获取值更改事件signal_get_statistics-计算信号统计signal_search-使用过滤器搜索信号
时间管理(2个工具)
time_get_range-获取模拟时间范围time_convert-转换时间单位
调试与分析(7个工具)
debug_find_transitions-查找信号转换debug_trace_causality-追踪信号因果关系debug_compare_waveforms-比较波形debug_build_timeline-建立事件时间表debug_check_protocol-协议检查器debug_identify_glitches-故障检测debug_find_correlation-信号相关性
比较(3个工具)
compare_signals-比较信号值compare_waveforms-比较整个波形compare_time_ranges-比较时间范围
格式转换(4个工具)
format_value-格式化信号值format_as_signed-转换为带符号值format_as_binary-二进制表示format_as_hex-十六进制表示法
LLM优化(5个工具)
query_natural_language-自然语言查询signal_summarize-自动信号汇总recommend_related_signals-信号建议docs_get_started-入门指南docs_tool_guide-工具使用文档
导出和集成(8个工具)
export_to_csv-将信号导出到CSVexport_hierarchy_tree-导出设计层次结构load_signal_list-负载信号配置save_signal_list-保存信号配置export_signal_data-导出为JSON/YAMLintegration_launch_viewer-启动外部查看器integration_watch_file-文件更改监控integration_generate_gtkwave_save-生成GTKWave保存
📖 文档
🎯 用例
供验证工程师使用
- 在不离开LLM聊天的情况下分析波形
- 自然语言调试:“重置变低时显示”
- 自动信号相关工作流程
- 快速协议合规性检查
面向硬件设计师
- 交互式设计探索
- 比较合成前后的波形
- 自动生成测试报告
- 与现有EDA工具集成
面向工具开发人员
- 基于MCP的波形分析API
- 可扩展插件架构
- 支持自定义波形格式
- 基于Python的脚本接口
🔧 高级功能
性能优化
- 多线程VCD解析 为了更快地加载文件
- LRU缓存 用于频繁访问的信号
- 延迟加载 按需提供信号数据
- 高效的时间范围查询 使用二分查找
安全
- 路径验证 阻止目录遍历
- 指令注入保护 用于观众发布
- 文件权限检查 手术前
- 会话隔离 防止跨会话访问
错误处理
- 结构化错误响应 根据上下文
- 恢复策略 常见故障
- 优雅降级 关于缺失数据
- 详细日志记录 用于调试
🧪 发展
运行测试
# Run all tests
pytest
# Run with coverage
pytest --cov=pywellen_mcp --cov-report=html
# Run specific category
pytest tests/unit/test_tools_llm.py
pytest tests/unit/test_tools_export.py绩效基准测试
# Run benchmark suite
python scripts/benchmark.py
# Profile specific operations
python -m cProfile -s cumtime scripts/benchmark.py安全审计
# Run security checks
python scripts/security_audit.py
# Check specific categories
python scripts/security_audit.py --check-paths
python scripts/security_audit.py --check-commands🏗️ 建筑
组件
pywellen-mcp/
├── src/pywellen_mcp/
│ ├── server.py # MCP server implementation
│ ├── session.py # Session management
│ ├── tools_waveform.py # Core waveform operations
│ ├── tools_hierarchy.py # Hierarchy navigation
│ ├── tools_signal.py # Signal analysis
│ ├── tools_time.py # Time management
│ ├── tools_debug.py # Debugging tools
│ ├── tools_compare.py # Comparison operations
│ ├── tools_format.py # Format conversion
│ ├── tools_llm.py # LLM optimization
│ ├── tools_export.py # Export capabilities
│ └── tools_integration.py # External integrations
├── tests/
│ └── unit/ # Comprehensive unit tests
├── scripts/
│ ├── benchmark.py # Performance benchmarks
│ └── security_audit.py # Security checks
└── docs/ # Sphinx documentation会话生命周期
- 打开:
waveform_open创建具有唯一ID的会话 - 使用:工具通过session_id参数访问会话
- 清理:超时1小时或明确关闭后自动
错误处理
所有操作都返回结构化错误:
{
"error": "SESSION_NOT_FOUND",
"message": "Session abc123 not found",
"context": {
"session_id": "abc123",
"active_sessions": ["def456"]
}
}🤝 贡献
我们欢迎捐款!请查看我们的 贡献指南.
开发设置
# Clone repository
git clone https://github.com/fvutils/pywellen-mcp.git
cd pywellen-mcp
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install in development mode
pip install -e ".[dev]"
# Run tests
pytest代码规范
- 风格:黑色格式,符合PEP 8标准
- 类型提示:完整类型注释
- 文档:所有公共API的文档字符串
- 测试:最低80%的代码覆盖率
📝 路线图
第8阶段:生产准备(进行中)
- \[x\] CI/CD管道(GitHub操作)
- \[x\] 性能基准测试套件
- \[x\] 安全审计脚本
- \[x\] 全面的文件
- \[\]内存分析
- \[\]实际波形的集成测试
- \[\]1.0.0版本发布
未来的增强功能
- \[\]基于WebSocket的大波形流媒体
- \[\]大规模设计的分布式分析
- \[\]基于机器学习的异常检测
- \[\]自定义分析器的插件系统
- \[\]支持SystemVerilog断言
- \[\]实时波形监测
🙏 致谢
📄 许可证
根据Apache许可证2.0版授权。看 许可证 了解详情。
🔗 链接
- 首页: https://github.com/fvutils/pywellen-mcp
- 文档: https://fvutils.github.io/pywellen-mcp
- PyPI: https://pypi.org/project/pywellen-mcp/
- 问题: https://github.com/fvutils/pywellen-mcp/issues
- 讨论: https://github.com/fvutils/pywellen-mcp/discussions
📧 联系
- 作者:马修·巴兰斯
- 电子邮件: mballance@fvutils.com
- GitHub: @姆巴兰斯
______________________________________________________________________
由...制作❤️ FVUtils社区
