How To: Integrate C/C++ Files with Your Design

Modified on Wed, 24 Apr at 8:16 AM

How To: Integrate C/C++ Files with Your Design

Given a C file my_project/src/my_dpi_code.c or C++ file my_project/src/my_dpi_code.cpp, you can integrate it with your HDL design by passing it to DSim Cloud to compile and link into the generated image.


1. Modify my_dpi_code.cpp to prefix each DPI function with extern "C". For example:


 

extern "C"
int byte_cfunc(const svOpenArrayHandle data) { 
return svDimensions(data);
}

extern "C"
int bit_cfunc(const svOpenArrayHandle data) {
return svDimensions(data);
}

extern "C"
int bit2_cfunc(const svOpenArrayHandle data) {
return svDimensions(data);
}

 

Henceforth, my_dpi_code.cpp and my_dpi_code.c are used interchangeably.


2. Append my_dpi_code.c or my_dpi_code.cpp to your DSim elaboration command with compiler options:


 

my_project> mdc dsim -a '-genimage myimage -F filelist.txt -top my_test -timescale 1ns/1ps +acc+b src/my_dpi_code.cpp -c-opts "<compiler options>"'

 

3. Confirm the compilation of my_dpi_code.cpp by observing the following message in your terminal:


 

=N:[C/C++] Compiled file src/my_dpi_code.cpp

 

4. If your C/C++ code requires a system library, add -sv_lib to your DSim run command to load the library from the system:


 

my_project> mdc dsim -a '-image myimage -waves waves.mxd -sv_lib lib<library name>.so'

 

For more information, see the C Language Support section of User Guide: DSim Common Options.


Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select at least one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article