avigailr
Newbie level 1
Hi,
I'm trying to use a DPI-C function in my SV env (creating a dpi.so lib and running it using VCS):
"vcs -debug_all -full64 -sverilog -R file.sv dpi.so"
This works fine for "basic" C functions.
Now my "dpi.so" library contain a function that uses another shared library, say utils.so (The reason for using it, is that utils.so contains some functions I need to use, supplied by 3rd party, but the argument they accept are structs defined in C header file).
When I try compiling it I get the following error:
And get the compilation error:
when I try compiling for C++:
And got the following:
How can I compile a DPI when the C code uses another shared lib?
Does anyone have any experience in using this C model supplied by Xilinx IP for verification in SV?
Thanks
I'm trying to use a DPI-C function in my SV env (creating a dpi.so lib and running it using VCS):
"vcs -debug_all -full64 -sverilog -R file.sv dpi.so"
This works fine for "basic" C functions.
Now my "dpi.so" library contain a function that uses another shared library, say utils.so (The reason for using it, is that utils.so contains some functions I need to use, supplied by 3rd party, but the argument they accept are structs defined in C header file).
When I try compiling it I get the following error:
PHP:
vcs -debug_all -full64 -sverilog -R file.sv utils.so dpi.so
And get the compilation error:
PHP:
/usr/bin/ld: warning: librdi_commoncwebtalk.so, needed by /opt/Xilinx/Vivado/2017.1/lib/lnx64.o/librdi_simulator_kernel.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: librdizlib.so, needed by /opt/Xilinx/Vivado/2017.1/lib/lnx64.o/librdi_simulator_kernel.so, not found (try using -rpath or -rpath-link)
/opt/Xilinx/Vivado/2017.1/lib/lnx64.o/librdi_simulator_kernel.so: undefined reference to `std::thread::_State::~_State()@GLIBCXX_3.4.22'
/opt/Xilinx/Vivado/2017.1/lib/lnx64.o/librdi_simulator_kernel.so: undefined reference to `uncompress'
/opt/Xilinx/Vivado/2017.1/lib/lnx64.o/librdi_simulator_kernel.so: undefined reference to `compress2'
/opt/Xilinx/Vivado/2017.1/lib/lnx64.o/librdi_simulator_kernel.so: undefined reference to `typeinfo for std::thread::_State@GLIBCXX_3.4.22'
/opt/Xilinx/Vivado/2017.1/lib/lnx64.o/librdi_simulator_kernel.so: undefined reference to `std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)())@GLIBCXX_3.4.22'
/opt/Xilinx/Vivado/2017.1/lib/lnx64.o/librdi_simulator_kernel.so: undefined reference to `IDT::WebTalk::send(char const*, IDT::WebTalk::ProductType)'
/opt/Xilinx/Vivado/2017.1/lib/lnx64.o/librdi_simulator_kernel.so: undefined reference to `IDT::WebTalk::add(char const*, char const*, IDT::WebTalk::SectionType)'
/opt/Xilinx/Vivado/2017.1/lib/lnx64.o/librdi_simulator_kernel.so: undefined reference to `IDT::WebTalk::internal()'
when I try compiling for C++:
PHP:
vcs -lstdc++ -cpp -debug_all -full64 -sverilog -R file.sv libIp_xfft_v9_0_bitacc_cmodel.so dpi.so
And got the following:
PHP:
make: full64: Command not found
Makefile:107: recipe for target 'product_timestamp' failed
make: [product_timestamp] Error 127 (ignored)
../simv up to date
Error-[EXEC_NEX] Cannot run executable
Cannot run executable 'simv' ; either it does not exist or not executable.
Use -o <exe_name> if different than simv.
How can I compile a DPI when the C code uses another shared lib?
Does anyone have any experience in using this C model supplied by Xilinx IP for verification in SV?
Thanks