第六章Visualize 波形调试环境
概述
Visualize 是 JasperGold 的集成调试环境,提供波形查看、源码浏览、信号追踪、根因分析等功能,是调试反例和理解设计行为的核心工具。
Visualize 窗口导览
Classic View(经典视图)
- Waveform Pane:信号波形显示区
- Signal List:信号列表和层次浏览器
- Source Pane:RTL 源码显示,标注执行路径
- Property Pane:属性断言评估状态
Simplified View(简化视图)
精简界面,聚焦于波形调试和反例分析。
窗口停靠(Docking)
所有面板都可以拖拽停靠、浮动或关闭,自定义布局。
Visualize 工作流
Property Visualization
双击属性自动加载其波形,显示断言在每个周期的评估结果(pass/fail)。
RTL Exploration with Waveforms
在 Source Pane 中点击信号可以添加到波形中,实时探索 RTL 行为。
Design-Space Tunneling
从高层次信号自动追踪到底层驱动信号,快速定位问题根源。
State-Space Tunneling
在反例波形中,快速跳转到关键状态转换点。
波形配置
# 在 GUI 中:
# 1. 右键信号 → Add to Waveform
# 2. 使用 Waveform Configuration 保存/加载波形配置
# 3. Freeze 功能:添加信号时冻结当前波形视图
Building Your Waveform
逐步添加信号构建波形视图。使用 Waveform Configuration 保存常用信号集。
QuietTrace 和多 Trace 窗口
管理多个反例波形窗口,比较不同反例。
Local Task Context
在波形中设置局部任务上下文,聚焦特定时间段的行为。
WaveEdit Mode
WaveEdit 模式允许手动编辑波形值,用于"what-if"分析:
- 强制信号值
- 修改激励条件
- 观察设计响应
高级调试功能
Indexed Behaviors Pane
列出所有被触发的行为(命中的 cover、失败的 assertion、违反的 assumption)。
Relevant Logic(相关逻辑高亮)
自动高亮与当前信号/属性相关的逻辑锥,帮助理解因果关系。
Relevant Differences
对比两个波形之间的差异,识别导致不同结果的关键信号。
Why / Driver / Load
- Why:解释信号为什么取当前值(追溯驱动源)
- Driver:查找信号的驱动器
- Load:查找信号的负载
Source Debugging
Source Pane 中:
- 高亮当前执行的语句
- 显示条件分支的取值
- 标注断言位置和评估结果
高级时序调试
Liveness Properties 调试
- 查看和展开 Liveness 循环(loop)
- Frozen Cycle 高亮显示
Comparing Signals
对比多个信号的时序关系,自动对齐关键边沿。
Appendix: Keyboard Shortcuts
Visualize 提供丰富的键盘快捷键加速调试操作,包括:波形缩放/平移、信号导航、时间光标移动等。
Visualize 波形调试
波形调试方法论
Visualize 不是"看看波形"的工具,它是你定位和理解反例的核心武器。证明失败只是告诉你"属性被违反了",但波形告诉你"怎么违反的、为什么违反"。
反例阅读思路
- 从末尾倒推:找到断言失败的时钟周期(红色标记 Current 位置),先看那个周期的信号值,再向前追溯
- 先看输入再看内部:确认输入信号是否合法(如果输入本身就不合法,说明约束不够)
- 关注异常值:波形中红色高亮的信号参与了失败路径,重点关注这些信号
- 用时间游标定位:将游标移到关键变化沿,逐周期分析信号关系
Why 分析:自动找根因
右键信号 → Why 是最高效的调试功能之一。它自动追踪该信号在当前周期值的驱动原因(哪些信号导致它为这个值),递归展开直到找到根因。相当于自动帮你做了"倒推"的工作。
Relevant Logic:聚焦相关逻辑
大设计中波形可能有上百个信号,Relevant Logic 自动筛选出与当前关注信号/属性相关的信号子集,隐藏无关信号,让反例更清晰。
Tunneling:跨层次追踪
Tunneling 功能允许追踪信号穿过模块层次边界,比如追踪一个顶层信号一直到它最终驱动的底层 flop,中间自动展开层次。
WaveEdit:What-if 分析
WaveEdit 允许手动修改波形中的信号值(将某个信号从 0 改为 1),然后观察波形如何变化。这可以用来验证"如果信号 A 是正确的,后面的行为是否正确"——帮助区分设计 bug 和属性错误。
来源文档
jaspergold_visualize_gui.pdfjaspergold_apps_userguide.pdf Ch.7