speedzheng23的个人空间 https://blog.eetop.cn/xiaogangzheng [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

SyestemVerilog Assertion

已有 201 次阅读| 2024-7-4 18:23 |系统分类:其他

bind用法

bind module_name1 module_name2 inst_name();

module_name1:被bind的module

module_name2:发起bind的module

应用场景:module_name2中做assertion,去bind rtl内部module;module_name2是interface


关键词property用来区分立即断言和并行断言

交叠交错 |->

非交叠蕴含 |=>


$ rose:判断上升沿。如果表达式的值跳变为1,$rose函数返回真,否则返回假

$ fell:判断下降沿。如果表达式的值跳变为0,$fell函数返回真,否则返回假

$ past:返回当前时钟周期之前的一个时钟周期的表达式的采样值

$ stable:判断信号的稳定不变,如果表达式的值保持稳定不变,$ stable函数返回真,否则返回假

$ sampled:在时钟事件的最后时刻采样表达式的值


sequence:表示一个或多个时钟周期内的时序描述,是property基本构建模块,可组合来描述复杂的功能属性。

expect:

    assert、assume和cover都是非阻塞的方式,即它们本身并不会阻塞后续的语句,然而expect是一种阻塞的property使用方式。

    可以使用wait语句的地方,即可以使用expect语句。

    task automatic wait_for(integer value, output bit success);

        expect(@(posedge clk) ##[1:10] data == value) success =1;

        else success = 0;

    endtask

first_match操作符:如果有多个匹配序列时,first_match操作符只返回第一个操作序列

or操作符:两个序列至少需要有一个满足。

throughout:检查一个信号或者一个表达式在贯穿( throughout)一个序列时是否满足要求

within:

    SEQ1 within SEQ2

    seq1满足在seq2的一部分连续时钟周期内成立

[*n]:重复n次,n为非负数,不能为$

    a ## 1 b[*2:5] is equivalent to

    a ##1 b ##1 b

    a ##1 b ##1 b ##1 b

    a ##1 b ##1 b ##1 b ##1 b

    a ##1 b ##1 b ##1 b ##1 b ##1 b

[=m]:重复发生m次,但不需要在连续周期内发生 

[->m]:与[=m]不同的是表达式的最后一个匹配项应该在整个序列匹配结束之前的周期内发生

    property goto_repetition_p;

    @(posedge clk) $rose(a) |-> b[->3] ##1 c;

    endproperty

    pass:

         !a  a  !b  !b  b  !b  !b  b  !b  b  c

    fail:

         !a  a  !b  !b  b  !b  !b  b  !b  b  !b  c



点赞

全部作者的其他最新日志

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 4

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 0

    粉丝
  • 3

    好友
  • 0

    获赞
  • 0

    评论
  • 46

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-7-7 15:37 , Processed in 0.043563 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部