A constant SVA cycle delay within a range?

In reply to warnerrs:

I did find a good generate loop for that code. After I converted $past(a,#) to a shift register, the solution became apparent.


	assign     n_observed_delay[0] = observed_delay[0] ||   past_a[0] && /*!past_a[-1]*/  && b;
	for( genvar N=1; N<=10; N++ ) begin: delay
	    assign n_observed_delay[N] = observed_delay[N] || ( past_a[N] &&   !past_a[N-1:0] && b );
	end