ahb_timer模块里的断言及ovl断言库使用

断言包括立即断言和并行断言。立即断言可以在build phase中判断是不是拿到config,如果没有拿到就报error;并行断言指的是与数据输送并行过程中的断言,一般是用于检查信号的时序问题例如timer中检查apb的总线协议,一般写在接口里面,通过initial语句,$asserton和$assertoff系统函数来控制所有assertion开关。

assertion可以独立通过assert去开启 一个property,也可以声明多个property,property内部声明各自开启的条件,然后在上层通过$asserton和$assertoff系统函数对所有的assertion进行的统一的管理。property代表明的是一个有触发过程的时序逻辑属性(eg:只有等到a触发了后面的才能进行),property内部可以有多个sequence,sequence代表的是一个信号序列(eg:a发生了##1b也发生了)。

在timer模块里,我对apb的时序协议做了断言检查和断言覆盖率收集。断言时序检查例如:在psel拉高时写入的地址不能是未知的,pready拉高的情况下在psel拉高后的下一拍penable拉高,penable拉高的下一个周期penable拉低,penable和pwite拉高时pwdata信号发生变化,penable拉低后paddr和pwrite信号不变直到下一次psel来。断言覆盖率:在写操作时分别进行连续写和非连续写。对同一个地址做连续两次读。。。

ovl断言库

库文件中内置了多个检查器供设计使用,用于检查设计中的逻辑。ahb_timer中使用到了几个检查器;assert_impalication:通过预设一个先行表达式,该检测器在时钟的上升沿(之前)持续采样,当满足该表达式,验证后面结论表达式是否为真。在timer中可以用assert_impalication来对寄存器内部的值做验证,eg:将先行表达式设置为ovl_read_access & PADDR = ...; 结论表达式设置为 PRDATA = 寄存器的值,这样就可以检查对应寄存器里的值是不是期望的值;timer中也用assert_always来对APB中的返回值做检查,保证PSLVERR一直为0;timer中也用assert_unknown来保证TIMERINT和PRDATA不是x值

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值