[sv-ec] wait_order specification ambiguity

From: francoise martinolle <fm_at_.....>
Date: Thu Jan 19 2006 - 05:33:26 PST
 I think that the wait_order specification behaviour is ambiguous if you
have an event specified more than
once in the wait_order.

IEEE Std 1800 section 14.6 para 3 has the following:

"For wait_order to succeed, at any point in the sequence, the subsequent
events-which must all be un-triggered

at this point, or the sequence would have already failed-must be triggered
in the prescribed order. 

Preceding events are not limited to occur only once. That is, once an event
occurs in the prescribed order, it can be triggered again without causing
the construct to fail."

Consider two events a, b, and a process that has the following construct:
 
wait_order(a, b, a);
 
 
Do the following sequences of event triggering cause the wait_order to
succeed or not?
 
->a; ->b; ->a;             // clear exact sequence SUCCESS
->a; ->a; ->b; ->a;      // ? I think it should FAIL second 'a' is out of
order but the spec seems to indicate that it is SUCCESS
->a; ->b; ->b; ->a;      // ? 
->a;- >b; ->a; ->b;      // sub-sequence SUCCESS at second 'a'
 
I am not clear if the second and third sequences of events causes
wait_order(a, b, a) to succeed or not.
 
If I have wait_order(a, b, a)

and the sequence ->a; ->b; ->b; ->a;   occurs, does it succeed?

If I have wait_order(a, b, a, b)

and the sequence  ->a; ->b; ->b; ->a; ->b  occurs, does it succeed?

I think that the sentence:

Preceding events are not limited to occur only once. That is, once an event
occurs in the prescribed order, it can be triggered again without causing
the construct to fail."

Should be rewritten as:

Preceding events are not limited to occur only once. That is, once an event
occurs in the prescribed order, it can be triggered again without causing
the construct to fail, unless it is expected to occur again. 

If an event appears multiple times in a wait_order, it is an error for it to
occur out of order until after the last expected occurence in the
wait_order.

With that, If I have wait_order(a, b, a) and the sequence ->a; ->b; ->b;
->a;  The wait will succeed.

But if I have  wait_order(a, b, a, b) and the sequence  ->a; ->b; ->b; ->a;
->b   The wait will fail at the second 'b'.
Received on Thu Jan 19 05:33:37 2006

This archive was generated by hypermail 2.1.8 : Thu Jan 19 2006 - 05:37:19 PST