Hello.
Below is the example code using variable in property with disable statement.
property p_test;
int t;
@(negedge clk) disable iff (!rstn || a)
$rose(b) |-> ##0 (1, t = 100)
##1 (b, t = t - 1)[*0:$]
##0 t <= 0;
endproperty
a_test: assert property (p_test) else `uvm_error("debug", "error");
Assume both ‘a’ and ‘b’ are 0.
When ‘b’ is asserted, the property will be enabled.
If ‘a’ is assert 50 clks after the assertion of ‘b’, I expect the property to be canceled.
If the property fails here, will it be a problem of the tool?
Please correct me if I’m wrong.
Below is the similar code without using variable in the property.
property p_test;
@(negedge clk) disable iff (!rstn || a)
$rose(b) |-> b[*100];
endproperty
a_test: assert property (p_test) else `uvm_error("debug", "error");
No issue with this type of property.
I would like to know if I am understanding ‘disable iff’ correctly.
If there is nothing wrong with the first code, I might contact the vendor.
(I used VCS and Verdi.)