Infinite delay assertion

The assertion doesn’t check for ‘a’ after ‘b’ is high, hence it passes
Your intention “when z is high, then a becomes high and keeps high until b becomes high.” doesn’t mention it as well

Check this_link
Try using

property pr1;
 @(posedge clk)
 $rose(z) |-> ##1 $rose(a) ##0 a[->1] ##0 $rose(b) ##1 $fell(a);
endproperty
1 Like