Re: List of 3.1 Items


Subject: Re: List of 3.1 Items
From: Jayant Nagda (jayantn@cupertino.synopsys.com)
Date: Fri Apr 26 2002 - 18:04:54 PDT


What is the use of Dynamic processes statements? I cant see how these co-relate to
synthesizable hardware. I would recommend not adding to it unless it is fully "baked".

Jayant

Kevin Cameron x3251 wrote:

> > From owner-vlog-pp@eda.org Fri Apr 26 16:15:13 2002
> >
> > Hi Everyone,
> >
> > I had an action to review all the correspondence and meeting minutes, and
> > come up with a list of items for which it was agreed that the discussion
> > should be deferred to SystemVerilog 3.1.
> >
> > Here is the list based on every email where...
>
> > Kevin, Mar02 - Dynamic process naming and control
>
> If nobody has a major objection to this (or something like it), I would
> recommend adding it in 3.0., otherwise I recommend removing dynamic
> processes - never found relying on processes to commit suicide worked in
> practice :-)
>
> I don't think it's a good idea to leave "half baked" stuff in the LRM, it
> just gives people something to object to if they want to reject the whole
> thing.
>
> Kev.
>
> ----- Begin Included Message -----
>
> >From owner-vlog-pp@eda.org Mon Apr 1 11:43:34 2002
>
> Dynamic process statements create a potentially semi-infinite array of processes which
> may or may not persist.
>
> Proposal:
>
> The name from a dynamic process statement refers to an array of processes. Each
> time the statement is called a process is added to (the end of) that array.
>
> When a process terminates its name refers to a non-existant item until the array
> the indexing wraps back to that index (which is at least a 32 bit). Allocation of
> indices is not guaranteed to be contiguous or monotonic (for ease of implementation).
>
> Extra functionality should be added to track the minimum and maximum indices
> of the array and controlling the processes. E.g.:
>
> <process index> = $first(<process name>); // get first index
> <process index> = $last(<process name>); // get last index
>
> <process index> = $next(<process name>,<process index>);
> // get next (by creation order)
>
> <status> = $kill(<signal>,<process name>["["<process index>"]"]);
> // manipulate a process
>
> '$kill' can be used to identify, stop, start and kill an individual process or all processes
> in the array in a Unix-like manner:
>
> task foo;
> dyn_prcss: process ...;
> ...
>
> unsigned int pid = $first(foo.dyn_prcss);
>
> $kill(`SIG_STOP,foo.dyn_prcss[pid]); // put it to sleep
>
> '$kill(0,...)' would return '0' (as per Unix) if the process exists, and a non-zero status
> would indicate either it never existed, is dead, or the name is bad (index out-of range).
> Used without a "[<process id>]" in the name it applies to all processes in the array.
>
> Dynamic processes can spawn more processes, so a parent process will exist
> as a "zombie" until its children are dead so that they are reachable by name.
>
> An unamed dynamic process would be attached to its parent block, e.g. if the
> dynamic process "dyn_prcss" in "foo" above was not named the process would
> be reachable as "foo.process[<process id>]". That makes all processes acccessible
> for control/debugging by name.
>
> Feel free to offer alternative syntax/functionality.
>
> Regards,
> Kev.
>
> ----- End Included Message -----



This archive was generated by hypermail 2b28 : Fri Apr 26 2002 - 18:06:03 PDT