Hi,AT this moment the System Verilog standard only defines a DPI layer for C. I believe there is lot of code out there which may need a C++ DPI wherein C++ and Systemverilog can talk in terms of object rather than simple data types.I was wondering how people are handling this issue?One of the methods could be to provide C methods to query C++ data structures. The problem with this method is that either you have to define global objects in C++ part of your code (or static members) or you can only work with the C++ objects with the C function being called from SystemVerilog. Thanks,Nitin
Hi Nitin,Was equally frustrated with these issues when i experimented with DPI early this year. Did "google" and found a few techniques that that SV LRM talks about. Read the section on "scope". Eventhough the LRM talks about these mechanism, mangling in C++ was a problem and hence I gave up. I reseorted to your last option."c++ objects with the C function being called from SystemVerilog" Regards,RaviP.S. There are some papers sitting out there that may interest you.
Hi Ravi,Thanks for your e-mail. Would it be possible for you to publish pointers to the papers you talked about?C++ mangling would definately be a problem if one wants to call the C++ methods directly. Did you try to call class objects? Another problem I see is that the communication between C and SystemVerilog domain is through basic data types. Did you try them communicate through class objects?Nitin
Hi Nitin,Apologize for the delay in answering. 1) http://www.systemverilog.org/pdf/DPIExampleCode-DAC2003-rev1.pdfFor 2) & 3) Had to convert the class objects to struct and then had to transfer the infomation. A REAL BAD HACK to live with. I wish there was an easier way to deal wit this. Regards,Ravi
Nitin,Name mangling can be overcome by just adding the extern "C" before your method. I am working on the C++ database with SV and am not facing any issues. Regards,Vivek
Have you tried the techniques shown at this web site? This facilitates encapsulating the C++ inside C code.http://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html