In reply to ben@SystemVerilog.us:
Ben, thanks for the response. I tried doing this:
sequence q_dynamic_delay(count);
int v;
(1, v=count) ##0 first_match((1, v=v-1'b1) [*0:$] ##1 v<=0);
endsequence
// Checks that expire occurs without any expire occurring before delay or that pet occurs sometime between that period
assert property (@(posedge clk) $fall(pet) |->
(1 [*0:$] ##0 pet) or
(~expire throughout q_dynamic_delay(terminal_count) ##1 expire)) else $error("WDT failure");
But I can’t seem to get it to fail when the dynamic delay value is purposefully set lower which leads me to think maybe one of the sequences are evaluating to true all the time. I also wonder if vivado reacts properly to this sequence definition, I put something like
assert property (@(posedge clk) 1 |=> 0) else $error("Checking error works");
after the sequence definition and it wouldn’t give any errors unless it was pasted before the sequence def. Very odd.
Thanks!,
-mike