RE: SCE-MI 2.0 and Recursion

From: Per Bojsen <bojsen_at_.....>
Date: Thu Aug 25 2005 - 13:43:31 PDT
Hi Russ,

> 1) Limits on recursion
>
>   My view on this, after working extensively on several test cases
> in pure
> simulation, is that Per's list of cases, items A) through D) is adequate.
> Maybe it can be rephrased to make it clearer:
>   -- exported functions can be called without restrictions
>   -- an exported function  cannot call an imported function
> I believe this results in the same specification, am I right?

I believe so.  Furthermore, *if* we decide to impose limits this
is the only limit that makes sense.  Allowing more but still
imposing limits would seem to become too complex to describe and
delineate.  Allowing less would be too restrictive.  So in my mind
for practical reasons we will be choosing between the above limits
or unlimited nesting.  Can we agree to talk about function call
nesting rather than recursion, BTW?   Recursion implies calling
a function (directly or indirectly) from itself.  Nesting is more
general.

In the 10 minutes we spent on this topic other concerns were
raised as well:

  1) Should exported tasks that consume time be supported?

  2) Initial blocks: do we support those?  Or are they beyond
     the scope of SCE-MI and to be considered a modeling issue?

  3) Duaine's mentioned a scenario where an imported function which
     spawns threads and then returns and where the threads later call
     exported functions and/or tasks.  From a SCE-MI implementation
     point of view, is this really different than an imported function
     calling an exported function/task?  Is it different from a
     specification point of view?

  4) Should we support calling two or more imported functions
     from the same Verilog context without passing time?

  5) Should we support calling two or more exported functions/tasks
     from the same C context without passing time between the calls?

  6) Whether to allow return values of functions and whether void
     versus non-void functions are conceptually different.

There is one use model that Zaiq finds particularly useful.  This is
where an imported function calls a series of exported tasks/functions.
This imported function may never return.  This implies that the
exported tasks need to be time consuming or the simulation would not
advance.  The imported function might be called from an init
Received on Thu Aug 25 13:43:44 2005

This archive was generated by hypermail 2.1.8 : Thu Aug 25 2005 - 13:44:54 PDT