我想在设计中检查一下,当信号b被置为有效时,信号a应该在3至5个周期之前被置为有效。
我正在寻找不同的检查方法。
当前我正在使用以下逻辑
sequence s_test();
##1 $rose(a) ##[3:5] 1;
endsequence
property p_test();
##1 $rose(b) |-> s_test.triggered();
有没有一种方法可以在不使用序列触发机制的情况下检查该属性?我想我也可以使用$ past(a,3)||之类的东西。 ... || $ past(a,5),但这很麻烦。
还有触发序列和匹配机制之间的区别是什么?
答案 0 :(得分:1)
我们可以在此处采用两种方法:先造成后造成后果或由于原因造成后果。
然后造成影响的方法:
您可以使用基于基于时间的断言来说明,当触发$.ajax({
type: "POST"
, url: "serverIP/WebProject/WebContents/view/filename/function name"
, data: null
, contentType: "application/json; charset=utf-8"
, dataType: "json"
, async: false
, success: function (jSonResult) {
},
error: function (xhr, status, error) {
console.log(error + "\n" + status + "\n" + xhr.responseText);
}
});
时,s_test
应该在1-5个时钟周期的时间窗口内变高:
b
效果然后导致方法:
或者,如果s_test.triggered |-> ##[1:5] $rose(b);
是信号,则可以使用粘合逻辑来监视s_test
的5个值。此后,断言检查s_test
从0上升到1时s_test
的较早值必须至少具有1'b1。
b
答案 1 :(得分:1)
您可以使用$past
,如下所示。
property test_past;
@(posedge clk)
$rose(b) |-> ##[3:5] $past(a);
endproperty
答案 2 :(得分:1)
triggered
和matched
方法对于单时钟和多时钟序列有所不同。
这两种方法都显示序列的终点,但是如果操作数序列在特定时间到达其终点,则triggered
方法的计算结果为true,否则为false。
而matched
方法检测多时钟序列引用的序列端点。因此,它提供2个序列之间的同步,并在匹配后评估为true,直到到达目标序列的第一个时钟滴答为止。
triggered
状态在观察区域中设置,并在其余时间段内保持不变。而matched
的状态在观察区域中设置,并一直持续到匹配后目标序列的第一个时钟滴答到达的观察区域。