当我在网上浏览时,我发现了这个问题how to use verilog PLI communicate with c by ncverilog compiler
我跟着最后一个答案,但它不起作用。 其中一个错误是hello_vpi.c:" vpi_user.h没有这样的文件或目录" hello_vpi.c 12:错误' s_vpi_systf_data'未声明(首次使用此功能) ....
我应该解决什么?
@Greg ::我的模拟器是Incisive15.10.002和Linux6.0。
我遇到了一些问题,就像我这样运行gcc hello_vpi.c -fPIC -shared -o hello_vpi.so -I /cadence/Incisive/Incisive15.10.002/tools.lnx86/include
然后我收到了一些消息。
hello_vpi.c:Infunction' register_hello' :
hello_vpi.c:16:警告:从不兼容的指针类型中分配。
当我运行此命令时,我收到了一些错误消息
ncverilog test.v +access+r -v hello_vpi.so
...
* W.LIBNOU:图书馆" hello_vpi.so但未使用。
...
$你好;
无法识别的系统任务或功能
...
libvpi.so无法打开shaed对象文件:没有这样的文件目录或文件无效ELFCLASS64库
...
* E,MSSYSTF:在仿真期间注册并在仿真中使用的用户定义的系统任务或函数($ hello)在仿真期间尚未注册。
我不知道我该怎么做?
答案 0 :(得分:2)
删除-I
gcc hello_vpi.c -fPIC -shared -o hello_vpi.so -I/cadence/Incisive/Incisive15.10.002/tools.lnx86/include
您也可以尝试:(注意:我猜测Incisive附带的gcc的路径)
/cadence/Incisive/Incisive15.10.002/tools.lnx86/bin/gcc hello_vpi.c -fPIC -shared -o hello_vpi.so
如果ncverilog test.v +access+r -v hello_vpi.so
不起作用,请尝试:
ncverilog test.v +access+r -loadvpi ./hello_vpi.so:register_hello