SystemVerilog Assertions应用指南 第一章(1.23章节 “intersect”运算符)

111 篇文章 17 订阅
100 篇文章 19 订阅

        “ intersect”运算符和“and”运算符很相似,它有一个额外要求。两个序列必须在相同时刻开始且结束于同一时刻。换句话说,两个序列的长度必须相等。属性p28检验与属性p27相同的情况。唯一的区别是它使用的是“ Intersect”构造而不是“and”构造。

sequence s28a;
	@(posedge clk) a##[1:2] b;
endsequence

sequence s28b;
	@(posedge clk) c ##[2:3] d;
endsequence

property p28;
	@(posedge clk) s28a intersect s28b;
endproperty

a28: assert property(p28);

        图1-30显示了属性p28在模拟中的响应。表1-14总结了断言p28的状态和所有相关信号的采样值。图1-30也显示了在同一条件下使用“and”构造的断言a27的结果,从而可以帮助理解“and”和“ intersect”的区别。

        由于缺少有效开始而导致的失败与前一节相同。第二类的失败是由于属性中单个序列未能成功匹配。这类的失败发生在时钟周期11和12。第三类的失败是在属性中所有单个序列都匹配时发生的。这些失败是由于两个序列达到匹配的时间长度不一致而发生的。在时钟周期3显示的失败中,序列s28a花了一个时钟周期实现匹配(“a”在时钟周期3为真,且“b”在时钟周期4为真),而序列s28b花了两个时钟周期实现匹配(“c”在时钟周期3为真,且“d”在时钟周期5为真)。在时钟周期7显示的失败中,s28a花了两个时钟周期完成匹配(“a”在时钟周期7为真,且“b”在时钟周期9为真),而s28b花了三个时钟周期完成匹配(“c”在时钟周期7为真,且“d”在时钟周期10为真)。
        三次成功分别发生于时钟周期8,9,10。在所有这三个例子中,两个序列都经过相同的时间长度匹配。
        在时钟周期8显示的成功中,序列s28a匹配了两次,分别在时钟周期9和10。序列s28b同样也匹配了两次,分别在时钟周期10和两个序列匹配的共同时间长度是两个时钟周期。因此intersect在s28a和s28b都在时钟周期10时匹配成功,它们各自的长度是两个时钟周期。



        在时钟周期9所示的成功中,序列s28a在时钟周期10和11各有一次匹配。序列s28b也有两次匹配,分别在时钟周期1l和12。两个序列匹配的通用长度为两个时钟周期。因此 intersect构造因为s28a和s28b都在时钟周期ll匹配而成功。每个序列的长度都是两个时钟周期。在时钟周期10所示的成功中,序列s28a在时钟周期11和12各有一次匹配。序列s28b在时钟周期12也有一次成功。两个序列匹配的通用长度为两个时钟周期。因此 intersect构造因为s28a和s28b都在时钟周期12有匹配而成功。每个序列的长度都是两个时钟周期。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值