Re: Fork join proposal


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