文章目录
《Assertion-Based Verification – Introduction to OVL》阅读笔记
OVL:Open Verificationi Library : 将 systemVerilog Assertions 集成成单元,在verilog 中直接调用,减少了自己编写可能出现的错误
1、ovl 模块使用率
2、几种典型的 ovl 模块示例
逻辑互斥(Mutually exclusive)
ovl_always mutex(clk, rst_n, !(grant0 & grants)); // grant0 和 grant1 必须逻辑互斥(Mutually exclusive)
相同(隐含推断)逻辑
ovl_implication u1(clk, rst_n, start, go); // start 推断出go
只有小于等于1bit active,与 SVA function $onehot0 相似
ovl_zero_one_hot #('OVL_ERROR,2) mutex(clk, rst_n, {grant0, grant1}); // grant0 和 grant1 不会同时为1
与 SVA a |-> ##n c, (for n >0, default n=1)
ovl_next awvalid (clk, rst_n, (awvalid & ~awready), awvalid); // awvalid & ~awready 后的下一个周期(这里n=1),awvalid 必为有效;否则报错
ovl_next wvalid ( clk ,rst_n, (wvalid & ~wready), wvalid); // wvalid & ~wready 后的下一个周期(这里n=1),wvalid 必为有效,否则报错
在 start_event 和 end_event之间,test_expr 不变
ovl_win_unchange #(0,8) u1(clk ,rst_n, we, addr, done); # addr[7:0], 0bit开始,总共8bit;start_event 为 we,end_event 为 done,二者之间时 addr 不变
3、ovl 特点
OVL 被 Design Engineers 所喜欢
对于 验证工程师:
- 高级 Assertions:集中于需求;黑盒 assertions
- 计入测试计划
- 规范的可追溯性
- 创建可复用的 ABV IP
对于设计工程师
- 低级 Assertions: 集中于实现;白盒 assertions
- 不计入测试计划
- 提升可观测性
- 减少debug时间
4、OVL 的使用
1、OVL 语言参考手册:
2、快速手册
3、assertion datasheet
4、参考书籍: