Subject: Re: Fork join proposal
From: Steve Casselman (sc@vcc.com)
Date: Thu May 01 2003 - 12:41:34 PDT
I just had a problem with Join [all | none | any] being the only way to join. Events are fine but the join should have a condition like
fork
S1:
S2:
S3:
join until (S1'done and S2'done) or S3'done;
I'm just using a 'done for example. This would be something like a speculative execution. Keep going if S1 and S2 are done but if S3 gets done forget about everything else. Could be S3 is error checking and if an error is found abandon the other stuff.
Steve
fork
S1: ...
S2: ...
join until S1'done;
So when the fork stmt is eexecuted, S1 gets forked and scheduled, S2 gets forked and scheduled and then
the check for S1'done occurs - all in the same delta cycle. By now, S1'done should be false, else we will not
get the behavior we are looking for. Thus my definition of 'done included "either scheduled or in execution". If
S1 is executed before the join condition is checked, then we are ok.
But there are other problems too. S1 is not a signal - it is a label. We would have to change the definition
of sensitivity list. Can 'done attribute be used in other contexts outside of a fork-join?
A better way to accomplish 'done
is to use events (it is one of the features yet to be defined). You define an event, trigger
the event at the end of whatever sequentail process and check for an event in the sensitivity list of the join.
This is very clean.
- bhasker
------
J. Bhasker, eSilicon Corp
1605 N. Cedar Crest Blvd, Ste 615, Allentown, PA 18104
jbhasker@esilicon.com, 610.439.6831, 610.770.9634(fax)
-----Original Message-----
From: Steve Casselman [mailto:sc@vcc.com]
Sent: Saturday, April 26, 2003 3:11 AM
To: vhdl-200x-tbv@server.eda.org
Cc: Jim Lewis
Subject: Re: Fork join proposal
As I was looking at the Fork-Join proposal I see forkjoin has "join [all | none | any] [fj_label];" I was wondering if maybe it would be good to have an expression to join. It could be a something like "a = 5", [maybe give a sensitivity list?] or maybe Join (MyBlock1'done and MyBlock2'done); implying a 'done parameter.
Steve
This archive was generated by hypermail 2b28 : Thu May 01 2003 - 12:42:39 PDT