附录 DProof Accelerator 选型指南
先分清两类 PA
选型之前必须先理解官方对 PA 的分类,这是最容易搞错的一点:
- Verification Component(验证组件):内部包含断言,用来证明设计的数据传输是否正确。
例如各个 scoreboard、
jasper_datapath系列、jasper_cache。 - Abstraction Component(抽象组件):内部不含任何检查,作用是把设计里难啃的大结构
(FIFO、存储器、乘法器、除法器、cache way)替换成简化模型,让形式引擎能够收敛。
例如
jasper_model_*系列。
新手常犯错误:把
jasper_model_fifo 当成"FIFO 检查器"去找上溢/下溢。
它不检查任何东西——它是用来替换大 FIFO 的抽象模型,目的是让 scoreboard 的数据完整性证明跑得动。
真正做检查的是与它配套的 scoreboard / datapath 类 PA。选型决策树
先问"我要证明什么",再问"设计里有什么结构挡住了证明":
第一步:选验证组件(做检查的)
├── 要证明数据穿过设计不丢失/不重复/不乱序/不损坏
│ ├── 数据包或 data beat 穿过桥接/队列/FIFO → jasper_datapath
│ ├── 最多 8 个 initiator 到最多 8 个 target → jasper_datapath_1port
│ ├── 同上,且 initiator 与 target 时钟不同 → jasper_datapath_1port_2clk
│ ├── 最多 8 个 initiator 到 8 个 target,异时钟 → jasper_scoreboard
│ ├── initiator/target 数量任意,异时钟 → jasper_scoreboard_2
│ │ (可配置成按序或乱序传输验证)
│ ├── 单个 initiator 到单个 target → jasper_scoreboard_3
│ ├── 输入数据被约束、或被 DUV 当控制信号用 → jasper_scoreboard_free
│ │ (与 scoreboard_2 类似,但对被检查数据无限制)
│ └── 每个包优先级不同,需在同优先级内保序 → jasper_scoreboard_priority
└── 要证明 cache 对主存接口是透明的 → jasper_cache
第二步:选抽象组件(让证明收敛的)
├── 数据通路里的大 FIFO 拖垮了证明
│ ├── 普通情形 → jasper_model_fifo
│ ├── 需要保留包的优先级信息 → jasper_model_fifo_priority
│ └── 需求由 DUV 中的 FIFO 逻辑驱动 → jasper_datapath_fifo
├── 用来缓存数据包的大存储器拖垮了证明
│ ├── 普通情形 → jasper_model_mem
│ ├── 需要保留包的优先级信息 → jasper_model_mem_priority
│ └── 需求由 DUV 中的存储器逻辑驱动 → jasper_datapath_mem
├── COI 里的存储器让属性不可解
│ ├── 单端口 → jasper_model_ram
│ └── 多端口 → jasper_model_mpram
├── COI 里的乘法器/除法器让属性不可解
│ ├── 乘法器 → jasper_model_multiplier
│ └── 除法器 → jasper_model_divider
└── cache 的 tag/data RAM 成为瓶颈 → jasper_model_cache_way
(与 jasper_cache 配合使用)
其他
├── 低功耗流程中驱动设计走完上电/掉电序列 → jasper_power_sequencer
└── 多时钟域下快慢时钟比值需要在区间内浮动 → jasper_model_frequency_jitter
使用方法
使用 Proof Accelerator 的一般步骤:
- 在 Tcl 脚本中用
analyze -verilog -req读入 PA(需求文件) - 用
connect把 PA 的端口连接到 DUT 的对应信号 - 验证组件内部带断言,连接好后即可
prove;抽象组件不产生断言,只负责替换结构让证明收敛
可参考 proof_accelerators/tutorial_scoreboard_priority/ 和 tutorial_scoreboard_2/ 两个官方教程,
详细解读见第七篇第 15 节。
各 PA 概览
| PA | 类别 | 官方描述要点 |
|---|---|---|
jasper_cache | 验证组件 | 证明数据穿过 cache 的完整性;用于验证 cache 对主存接口是透明的 |
jasper_datapath | 验证组件 | 证明数据包 / data beat 穿过 DUV 的完整性;适用于桥接、队列、FIFO,确保传输中数据不丢失、不损坏、不重复 |
jasper_scoreboard | 验证组件 | 最多 8 个 initiator 到最多 8 个 target、且两侧时钟不同;验证数据不被丢弃、重复、乱序或损坏 |
jasper_scoreboard_2 | 验证组件 | initiator 与 target 数量任意、两侧时钟不同;可配置为按序或乱序传输验证。使用限制:只能对设计中不参与流控(flow control)的包字段做数据完整性检查——只有被 DUV "盲传"的数据字段才能接到本 PA 的 data 端口 |
jasper_scoreboard_3 | 验证组件 | 单个 initiator 到单个 target;通过 data_integrity 断言检查进出数据是否一致 |
jasper_scoreboard_free | 验证组件 | 与 scoreboard_2 类似,但对被检查的数据没有限制;用于输入数据被约束或被 DUV 用作控制的场合 |
jasper_scoreboard_priority | 验证组件 | 每个包的优先级可以不同,保证同一优先级内保序;适用于桥接、队列、FIFO |
jasper_model_fifo | 抽象组件 | 替换数据通路中存包的大 FIFO,只保留 scoreboard 工作所需的行为,缓解状态空间爆炸 |
jasper_model_mem | 抽象组件 | 替换用于缓冲数据包的大存储器,同样只保留 scoreboard 所需行为 |
jasper_model_ram / jasper_model_mpram | 抽象组件 | 把存储器抽象成更简单的模型;存储器在 COI 中会让属性对形式工具不可解,抽象后更易得到证明或提高有界证明的界 |
jasper_model_multiplier | 抽象组件 | 对乘法器做灵活抽象,使含乘法器逻辑的属性能拿到完整、无界的证明(否则通常不可解) |
jasper_model_divider | 抽象组件 | 对除法器做同样的抽象,使含除法器逻辑的属性能拿到完整、无界的证明 |
jasper_model_cache_way | 抽象组件 | 对 cache 中的 tag RAM 与 data RAM 建模;与 jasper_cache 配合,是 cache 透明性属性收敛的关键 |
jasper_power_sequencer | 其他 | 用于低功耗验证流程:实现一个简单状态机,驱动电源感知设计走完典型的掉电与上电序列 |
jasper_model_frequency_jitter | 其他 | 为多时钟域设计建模频率抖动:让快慢时钟的比值可以在给定区间内变化,而不是固定不变 |
来源文档
proof_accelerators/jasper_cache.pdfproof_accelerators/jasper_datapath.pdfproof_accelerators/jasper_datapath_1port.pdfproof_accelerators/jasper_datapath_1port_2clk.pdfproof_accelerators/jasper_datapath_fifo.pdfproof_accelerators/jasper_datapath_mem.pdfproof_accelerators/jasper_model_cache_way.pdfproof_accelerators/jasper_model_divider.pdfproof_accelerators/jasper_model_fifo.pdfproof_accelerators/jasper_model_fifo_priority.pdfproof_accelerators/jasper_model_frequency_jitter.pdfproof_accelerators/jasper_model_mem.pdfproof_accelerators/jasper_model_mem_priority.pdfproof_accelerators/jasper_model_mpram.pdfproof_accelerators/jasper_model_multiplier.pdfproof_accelerators/jasper_model_ram.pdfproof_accelerators/jasper_power_sequencer.pdfproof_accelerators/jasper_scoreboard.pdfproof_accelerators/jasper_scoreboard_2.pdfproof_accelerators/jasper_scoreboard_3.pdfproof_accelerators/jasper_scoreboard_free.pdfproof_accelerators/jasper_scoreboard_priority.pdf