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 initReceived 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