p1: assert property (@(posedge clk) ($past(b, 2, c)) === 0);
when I run assert in VCS, it failed at 13s, 15s, 17s...
I don't know why it failed at 13s.
in 11s, $past(b, 2, c) is 0 (sampled at 7s)
but in 13s, c = 0, why $past(b, 2, c) get sampled value in 9s?

Using
$pastwith an enable is complicated because it gates both the sampling and the history together. This of it as operating like this:BTW, it would really help to provide the exact stimulus in example code. A picture is nice, but trying to recreate it take a lot of people's time.