In reply to ben@SystemVerilog.us:
One more comment: MAny experts on SVA frown upon the use of the first_match() from a style point of view and prefer to use the goto operator if possible. Thus, you could write the following:
// Instead of
@(posedge clk) $fell(X) ##0 (##[1:$] (X == 1)[*2]) |-> ##2 (1, pass_action);
// Write
@(posedge clk) $fell(X) ##0 X==1[->1] ##1 X==1 |-> ##2 (1, pass_action);
Ben SystemVerilog.us