I have created a simple example for dpi functions. Below is the code:
CODE: C_file.c
#include "stdio.h"
#include "svdpi.h"
//int main()
//{
extern void export_func(void);
void import_func()
{
export_func();
}
//}
CODE: SV_file.sv
module sv_file;
export "DPI-C" function export_func;
import "DPI-C" context function void import_func();
function void export_func();
$display("SV: Hello from SV ");
endfunction
initial
begin
import_func();
end
endmodule
I am running the code with the command,
irun –sv sv_file.sv c_file.c
The dpi functions are working fine as expected.
But this code is without main() function. When I try running the code with main function, the sv code is not able to find the import_func definition in C.
- So I wanted to know whether dpi functions can be used in an environment where we have only C testcases instead without sv testcases (ie) C is in the top of the environment and execution starts and ends in C.
- And, I am not able to run the code when I am trying to use only the export function (ie) calling the C-defined function in SV. Is it possible to use only the export function without import?
Your help will be very useful for me.
Thanks,
Vimala