1.19使用true表达式的SVA检验器
使用true表达式,可以在时间上延长SⅤA检验器。这代表一种忽略的状态,它使得序列延长了一个时钟周期。这可以用来实现同时监视多个属性且需要同时成功的复杂协议。
序列s18a检查一个简单的条件。序列s18a_ext检查相同的条件,但是序列的成功被往后移了一个时钟周期。当这个序列被用在一个属性的现行算子时,它会造成一些差异。两个序列的结束点不同,因此开始检査后续算子的时钟周期也不一样。
属性p18检查先行算子中的sl8a.end,如果成功,两个时钟周期后,检查s18b.end是否成功。属性p18_ext检查s18a_ext在先行算子中是否成功。这个成功与s18a.ended的成功相同,但是早了个时钟周期。因此属性pl8_ext的后续算子需要在一个时钟周期而不是像p18中定义的两个时钟周期后成功。属性p18和p18_ext检查相同的情况,但是他们在先行算子中的成功点却不同。
`define true 1
sequence s18a;
@(posedge clk) a ##1 b;
endsequence
sequence s18a_ext;
@(posedge clk) a ##1 b ##1 `true;
endsequence
sequence s18b;
@(posedge clk) c ##1 d;
endsequence
property p18;
@(posedge clk) s18a.ended |-> ##2 s18b.ended;
endproperty
property p18_ext;
@(posedge clk) s18a_ext.ended |=> s18b.ended;
endproperty
a18 :assert property (p18);
a18_ext :assert property(p18_ext);
图1-21显示了属性p18和p18_ext在模拟中的响应。可以清楚地看到与断言a18比较,断言a18_ext的起始点被推迟了一个时钟周期。