1.22“and”构造
进制运算符“and”可以用来逻辑地组合两个序列。当两个序列都成功时整个属性才成功。两个序列必须具有相同的起始点,但是可以有不同的结束点。检验的起始点是第一个序列的成功时的起始点,而检验的结束点是使得属性最终成功的另一个序列成功时的点。
序列s27a和s27b是两个独立的序列。属性p27将两者用运算符“and”组合起来。当两个序列都成功时,属性成功。
sequence s27a;
@(posedge clk) a##[1:2] b;
endsequence
sequence s27b;
endsequence
property p27;
@(posedge clk) s27a and s27b;
endproperty
a27 :assert property(p27);
图1-29显示了属性p27在模拟中的响应。表1-13总结了断言a27的状态和所有相关信号的采样值。一共有三种结果。一种是没有有效开始所导致的失败。当在给定的时钟边沿信号“a”或者信号“c”不为高(时钟周期1,2,4,5,6,13,14)。
还有5个不同的成功,它们各自的长度也不同。一个有效的检验开始于时钟周期7和时钟周期8,但是它们同时结束于时钟周期10。从时钟周期7开始的检验,信号“b”在时钟周期9为真,且信号“d”在时钟周期10为真。而从时钟周期8开始的检验,信号“b”在时钟周期9为真,且信号“d”在时钟周期10为真。
此外还有两个失败,分别在时钟周期11和12。它们有相同的长度,但是失败的原因却不相同。对于从时钟周期11开始的检验,信号“b”在时钟周期12为真。但是信号“d”在时钟周期3和14都不为真,因此检验失败于时钟周期14。对于从时钟周期12开始的检验,信号“b”在时钟周期3不为真。而且在时钟周期14信号“b”和信号“d”都不为真,因此检验在时钟周期14失败。