第六章Clock Viewer
概述
Clock Viewer 是一个集中查看时钟环境信息的 GUI 工具,帮助用户高效探索时钟配置、调试和解决时钟相关问题。
功能
- 时钟域可视化:图形化展示设计中的所有时钟域
- 时钟关系:显示时钟间的频率/相位关系
- 时钟树浏览:查看时钟生成和分发路径
- 时钟问题检测:识别未声明时钟、门控时钟问题等
典型用法
- elaborate 后打开 Clock Viewer
- 检查自动检测到的时钟是否正确
- 对于遗漏的时钟手动声明
- 检查时钟域交叉是否被 CDC App 识别
时钟建模检查清单
为什么时钟是第一优先级?时钟声明错误是形式验证中最隐蔽的问题之一。漏声明一个时钟,那个时钟域的 flop 就不会被正确建模,可能导致假 proven(bug 被遗漏)或假反例。elaborate 后第一件事就是检查时钟。
elaborate 后的时钟检查流程
- 打开 Clock Viewer(Tools → Clock Viewer)
- 检查时钟域列表:数量是否符合预期?每个时钟域的 flop 数合理吗?
- 检查 Unassigned Clocks(未分配时钟)区域:有没有信号被工具检测为时钟但未声明?
- 检查生成时钟关系:分频/倍频时钟是否正确识别?
- 对多时钟设计,用
clock -rate确认信号与时钟域的关联正确
常见时钟问题
| 问题 | 症状 | 解决 |
|---|---|---|
| 漏声明时钟 | 该时钟域的 flop 不出现在形式模型中,CDC 漏检 | 手动声明 clock clk_name |
| 门控时钟误判 | 工具把门控使能信号当成独立时钟 | 检查 Clock Viewer,使用 clock -ideal 或调整设置 |
| 分频时钟未声明 | 分频逻辑被当作普通数据路径 | 用 clock clk_div 2 1 声明分频关系 |
来源文档
jaspergold_apps_userguide.pdf Ch.4