有没有办法在每个时钟周期断言已声明的属性是否为假?
例如,
status[idx]
req[idx]
只有当两者都为高时才应enable[idx]
为高。
我想要的是针对上述情况的负面情景检查器。即当或或低status
时,不应该变高。req
enable
我在下面尝试过,但是 vcs 给了我下面的编译错误
sequence seq_a (int idx);
!(req[idx] & enable[idx])
endsequence
sequence seq_b (int idx)
status[idx] == 1
endsequence
property ppty_ab (int idx)
disable iff (f_req[idx] & f_enable[idx])
seq_a(idx) |=> seq_b(idx)
endproperty
generate
for (idx=0; idx<5; idx++) begin
a_ab : assert property (@(posedge clk) (not ppty_ab(idx)))
else $display("ppty_ab [%0d] failed at %t",idx,$time)
end
endgenerate
错误-[PIWDOAACS] 不正确使用“禁用 iff”
带有 'disable iff' 的属性实例只允许在“assert”、“assume”和“cover”语句中使用。属性 p_RiseIntDischeck 可能不会在此上下文中实例化。
seq_a
并且seq_b
已经被声明并用于其他一些断言。重用这些序列并为上述情况创建负面场景检查器的最佳/推荐方法是什么?