Re: ISSUE:DirectC:DirectC i/f should support mechanism for calling Verilog task/function from a DirectC application


Subject: Re: ISSUE:DirectC:DirectC i/f should support mechanism for calling Verilog task/function from a DirectC application
From: Kevin Cameron x3251 (Kevin.Cameron@nsc.com)
Date: Mon Oct 21 2002 - 09:55:02 PDT


> From owner-sv-cc@server.eda.org Sat Oct 19 20:56:07 2002
> X-Original-From: "Swapnajit Mittra" <mittra@juno.com>
> To: sv-cc@server.eda.org
> cc: mittra@juno.com
> Subject: ISSUE:DirectC:DirectC i/f should support mechanism for calling
> Verilog task/function from a DirectC application
> From: "Swapnajit Mittra" <mittra@juno.com>
>
> ISSUE:DirectC:DirectC i/f should support mechanism
> for calling Verilog task/function from a DirectC
> application
>
> I believe this has been discussed many times over email
> and in the meetings. I am formally filing this as an ISSUE
> to keep a record of this. (The other emails related to this
> proposal are attached below).
>
> As many of you had pointed out earlier, the idea of calling
> a Verilog task or function from a C function is not new,
> and has been there in CBlend/Superlog for some time. I am
> proposing the following at the risk of being redundant if
> a CBlend donation takes place in the future.
>
> In any case, here are my proposals.
>
> o A DirectC application shall be allowed to call a Verilog
> task or function from a C function similar to a call to
> another C function.
>
> o If an external C function calls a Verilog task, no
> simulation time must elapse during the execution of that task.
> (This is, because a C function in DirectC is a zero-time event).
> However, no such restriction shall be in place when a Verilog
> task is called from a cmodule.
>
> o The type of the arguments and the return type (for a Verilog
> function) shall be one of the types allowed by DirectC for
> a Verilog task or function calling a C function.
>
> o The called Verilog task or function can be specified from
> the DirectC domain by Verilog full pathname. (This will
> allow us to call a specific Verilog task or function in
> the design hierarchy. We need to think about the actual
> syntax of this).

I would suggest considering module instances as being like class
instances in C++. You could get the handle to a module instance
using the standard PLI mechanisms and then use it in C++ as a
class instance pointer with the tasks and functions of the module
as virtual functions.

Doing this stuff in C rather than C++ is awkward because C doesn't
support overloading of names, so you would have to come up with
some name mangling scheme.

Kev.

PS:
Previous post - http://www.eda.org/sv-cc/hm/0005.html

 
> ==================================================================
> Previous emails on this subject:
>
> On Sep 24 2002, Swapnajit Mittra wrote:
> ...
> o It appears to me (and somebody pointed this out during
> the meeting too) that in DirectC there is no straightforward
> way of calling a Verilog task from C function. I mention this
> because I run a Verilog PLI related website and I get the
> question on how to call a Verilog task from C function
> (reverse direction of PLI) regularly. I believe CBlend of
> Superlog provides this already. I think we should consider
> providing this feature in SV-CC too.
> ...
>
>
> On Sep 26 2002, Stuart Sutherland wrote:
> ...
> I agree that there should be a mechanism for C functions to call
> Verilog tasks.
> ...
>
> On Sep 26 2002, Alain Raynaud wrote:
> ...
> 3) Regarding calling Verilog tasks from DirectC, is there any technical
> reason why it can't be done (syntax, scheduling...)? Otherwise, I assume
> we could add it at some point, since there is so much demand for it. And
> it fits the idea above that C and Verilog modules and tasks could be
> swapped transparently.
> ...
>
> On Sep 24 2002, Joao Geada wrote:
>
> Swapnajit,
>
> you are correct, DirectC includes no functionality for
> invoking Verilog tasks from within the C code, though
> it does posses mechanisms to wait on Verilog signals
> and to wait for a specific amount of time to pass. As
> many people seem interested in this other direction (C
> invoking Verilog), it seems reasonable that this be
> added to the DFLI requirements. Once it is in the
> requirements, we, as a committee, can work on extending
> the donations to support this capability.
> ...
>
> On Oct 07 2002, Doug Warmke wrote:
>
> ...
> *** C-calls-HDL task/function feature ***
>
> DirectC lacks a C-calls-HDL task/function feature.
> We should add that feature with similar syntax.
> i.e. the function call looks like C, but in fact
> is implemented in SV. The linker/elaborator would
> bind the runtime image based on function name,
> just like a C linker. The CBlend binding mechanism
> allowed for that. Would there be any problem from
> the Synopsys/Co-Design point of view if that aspect
> of CBlend was resurrected in the SV standard?
> ...
>
> (Please send me a pointer to any other email on this
> that I may have missed. I will add them to the list.)
>
> - Swapnajit.
>
>
> --
> Swapnajit Mittra
> http://www.angelfire.com/ca/verilog
>
>
>



This archive was generated by hypermail 2b28 : Mon Oct 21 2002 - 09:58:53 PDT