第六章Combo Loop Viewer
概述
Combo Loop Viewer 是集中查看和调试组合环(combinational loop)的工具。组合环是指没有寄存器打断的反馈环路,会导致仿真和形式验证中的不确定行为。
GUI 标签页
- Loop Exploration Tab:列出所有检测到的组合环,显示环路径和涉及的信号
- Loop Handling Flow Tab:引导式处理流程,帮助打破组合环
- Constraint Table Tab:管理用于断开组合环的约束
- Signal Heatmap Tab:热图显示哪些信号最频繁出现在组合环中
调试组合环
- elaborate 后打开 Combo Loop Viewer
- 查看检测到的组合环列表
- 在 Schematic 中追踪环路径
- 确定环的根因(通常是设计 bug 或缺少复位)
- 修复 RTL 或添加 cutpoint 约束
组合环处理决策
什么是组合环、为什么怕它
组合环是没有寄存器打断的反馈路径:信号 A → 组合逻辑 → 信号 B → 组合逻辑 → 信号 A。在仿真中,组合环会导致 X 值传播(仿真器无法确定稳态);在形式验证中,组合环会导致状态空间不确定,引擎可能无法收敛或给出不可靠结果。
判断和处理流程
1识别:elaborate 后自动检测
JasperGold 在 elaborate 时自动检测组合环并弹出 Combo Loop Viewer 警告。在 Loop Exploration Tab 查看所有检测到的环。
2分类:判断环的类型
点击一个环,在 Schematic 中查看路径。判断它属于哪类:
- 真 Bug:设计中确实存在错误反馈 → 修 RTL
- 虚假路径:实际工作中不会形成反馈(如 arbitration 逻辑的互斥路径)→ 加 cutpoint
- 工具误报:跨层次连接看起来像环但实际不是 → waive
3处理
修 RTL(真 Bug):插入寄存器打断环,或修改逻辑消除反馈。
Cutpoint(虚假路径):cutpoint signal_name 命令将信号设为自由变量,断开环路。
Waive(误报):添加 waiver 标记为已知安全。
注意:不要过度使用 cutpoint!每个 cutpoint 都会减少形式模型的精度,可能导致假 proven。只在你能确认该路径确实不会被触发时才 cutpoint,并且 cutpoint 后要用 cover 确认关键场景仍然可达。
来源文档
jaspergold_apps_userguide.pdf Ch.5