Home > Community > Forums > Functional Verification > DPI which can talk C++

Email

* Required Fields

Recipients email * (separate multiple addresses with commas)

Your name *

Your email *

Message *

Contact Us

* Required Fields
First Name *

Last Name *

Email *

Company / Institution *

Comments: *

 DPI which can talk C++ 

Last post Fri, Dec 1 2006 4:49 AM by archive. 5 replies.
Started by archive 01 Dec 2006 04:49 AM. Topic has 5 replies and 2243 views
Page 1 of 1 (6 items)
Sort Posts:
  • Fri, Dec 1 2006 4:49 AM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,950
    DPI which can talk C++ Reply

    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


    Originally posted in cdnusers.org by nitin_sharma
    • Post Points: 0
  • Mon, Dec 4 2006 4:05 PM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,950
    RE: DPI which can talk C++ Reply

    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,
    Ravi

    P.S. There are some papers sitting out there that may interest you.


    Originally posted in cdnusers.org by venravi
    • Post Points: 0
  • Mon, Dec 4 2006 4:14 PM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,950
    RE: DPI which can talk C++ Reply

    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


    Originally posted in cdnusers.org by nitin_sharma
    • Post Points: 0
  • Tue, Jan 2 2007 1:38 PM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,950
    RE: DPI which can talk C++ Reply

    Hi Nitin,
    Apologize for the delay in answering.
    1) http://www.systemverilog.org/pdf/DPIExampleCode-DAC2003-rev1.pdf
    For 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


    Originally posted in cdnusers.org by venravi
    • Post Points: 0
  • Thu, Feb 15 2007 10:05 PM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,950
    RE: DPI which can talk C++ Reply

    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


    Originally posted in cdnusers.org by prasad_vc
    • Post Points: 0
  • Wed, Mar 7 2007 7:13 AM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,950
    RE: DPI which can talk C++ Reply

    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


    Originally posted in cdnusers.org by dfechser
    • Post Points: 0
Page 1 of 1 (6 items)
Sort Posts:
Started by archive at 01 Dec 2006 04:49 AM. Topic has 5 replies.