欢迎光临
我们一直在努力

SV断言入门二

SV断言入门二

背景

这里介绍SV断言的一些常用方法

核心内容

  • SV内嵌函数
  • 操作符
  • 我的理解

    内嵌函数

    SV中有很多函数适合用于断言检查

    $rose(expr):等待信号从0->1
    $fell(expr):等待信号从1->0
    $stable(expr):检测信号和上一个时钟周期相比保持稳定不变
    $changed(expr):检测信号和上一个时钟周期相比发生变化
    $past(expr, n):返回第n个周期前的值
    $countones(expr):统计1的个数
    $onehot(expr):检测信号中仅1位为1
    $onehot0(expr):检测信号中仅1位为1或全0
    $isunknown(expr):检测信号是否包含X/Z

    操作符

    ##m:延时m个时钟周期
    ##[m:n]:延时m-n个时钟周期,剩余的操作符也有类似的操作
    [*m]:重复m个周期
    [=m]:重复寻找重复m个次的情况
    [->m]:检查是否有重复m次的情况
    sig1 throughout seq1:sig1在seq1执行完成前保持为1
    seq1 within seq2:seq1在seq2执行后开始,在seq2执行PASS前PASS
    seq1 and seq2:seq1和seq2同时开始,并均PASS
    seq1 or seq2:seq1和seq2同时开始,并有至少一个PASS
    seq1 intersect seq2:seq1和seq2同时开始,并同时PASS
    first_match(seq):检查到第一个符合条件的情况就检查PASS,常在delay范围中使用
    not<property_expr>:套在property外的操作符,给断言结果取反

    一句话总结

    使用各种操作符和内嵌函数可以让断言变得高效且精准

    赞(0)
    未经允许不得转载:171主机测评 » SV断言入门二
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址