RE: [sv-bc] dynamic process?

From: Steven Sharp <sharp_at_.....>
Date: Tue Aug 05 2008 - 14:18:43 PDT
I looked back at the Accellera LRM, and it defines dynamic processes as
the ones created by join_any and join_none.  It classifies processes
created by fork..join as static processes.

I suspect that at some point the text referred to statements inside
fork..join, and dynamic processes.  Then someone added join_any and
join_none to the text about fork..join, and it became redundant with
the statement about dynamic processes.

The Accellera LRM is incorrect about processes created by fork..join being
static processes anyway.  If fork..join were only used in initial blocks
and always blocks, and tasks could not be re-entered, then this could be
true.  Processes could be statically allocated for each statement in the
fork..join, and started by the execution of the fork.  

However, fork..join can appear in a task, and a task can be re-entered.
That requires as many processes for each statement as there can be
concurrent calls to the task.  Even in Verilog, the task could be called
recursively from one of the subprocesses, creating an unbounded number of
processes.  A correct implementation of fork..join must be able to
dynamically create processes, just like fork..join_none.

Steven Sharp
sharp@cadence.com


-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Tue Aug 5 14:19:35 2008

This archive was generated by hypermail 2.1.8 : Tue Aug 05 2008 - 14:20:05 PDT