在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 899|回复: 7

[求助] 求助大佬,dpi的方式找不到import的function

[复制链接]
发表于 2024-5-7 21:06:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
使用了分部编译,编译命令如下:
vcs +vcs+lic+wait -sverilog -l vcs_compile.log -full64 /apps/eda/installs/Synopsys/vcs/S-2021.09-SP2/etc/uvm-1.2/src/dpi/uvm_dpi.cc \
-CFLAGS -DVCS -Mupdate +vcs+flush+all -debug_access+all -debug_region+cell -kdb -lca \
-timescale=1ns/1ps -top tb +lint=TFIPC-L +notimingcheck /project/xxx/xxx/xxx/dv/harness/vo/cmodel/TPG_hw.cpp \
-CFLAGS -I/project/xxx/xxx/xxx/dv/harness/vo/cmodel/define

vlogan -full64 -sverilog +incdir+/apps/eda/installs/Synopsys/vcs/S-2021.09-SP2/etc/uvm-1.2/src \
/apps/eda/installs/Synopsys/vcs/S-2021.09-SP2/etc/uvm-1.2/src/uvm.sv +define+SVT_UVM_TECHNOLOGY \
+define+SYNOPSYS_SV +define+UVM_NO_DEPRECATED -debug_access+all -debug_region+cell \
-kdb -lca +v2k -timescale=1ns/1ps -l vcs_vlog.log -f /project/xxx/xxx/xxx/de/dev_ip/display/gmd_vo/filelist/gmd_vo_sim.f \
-f /project/xxx/xxx/xxx/dv/harness/vo/filelist/vo_tb.f +define+DATA_MODEL \
-assert svaext

说明下:TPG_hw.cpp是cmodel,这个文件里面include了一些头文件,有三个头文件,存放在上面标红的目录
仿真的时候就报了如下错误,请大佬指点下非常感激不尽
ps:那些头文件都是 .h结尾的,有啥办法直接让vcs认识是c代码吗,如何把头文件和主文件一起放在编译命令里面编译不报错,求指导呀,再次跪谢!

Error-[DPI-DIFNF] DPI import function not found
/project/xxx/xxx/xxx/dv/harness/vo/uvc/env/./vo_reference_model.sv, 239
  The definition of DPI import function/task 'TPGHwFunc' does not exist.
  Please check the stated DPI import function/task is defined, and its
  definition is either passed in a source file at compile-time, or provided in
  a shared library specified using the LRM Annex-J options at run-time.

发表于 2024-5-8 10:01:29 | 显示全部楼层
把c用gcc编译成.so,然后./simv的时候吃进去。不过直接vcs编译应该也行的。
发表于 2024-5-8 10:12:19 | 显示全部楼层
.c文件放在vcs命令行后面,c的头文件不放在命令行后面,用-CFLAGS "-Ixxx"的方式;或者用gcc将.c文件编译成.so文件,VCS命令行-load xxx.so,要先设置LD_LIBRARY_PATH环境变量。
发表于 2024-5-9 17:20:43 | 显示全部楼层
一定要注意c语言那测调用导入的dpi函数时的作用域问题,如果作用域不匹配,就会报这种错,具体解决办法是在调用这个函数时指定一次作用域,调用完再把作用域恢复成本来的那个域
 楼主| 发表于 2024-5-9 21:02:32 | 显示全部楼层


紫薯布丁 发表于 2024-5-9 17:20
一定要注意c语言那测调用导入的dpi函数时的作用域问题,如果作用域不匹配,就会报这种错,具体解决办法是在 ...


作用域怎么指定呢 ?
 楼主| 发表于 2024-5-10 15:48:32 | 显示全部楼层


年轻的韭菜 发表于 2024-5-8 10:01
把c用gcc编译成.so,然后./simv的时候吃进去。不过直接vcs编译应该也行的。


vcs支持多个cpp可以一起编译吗 ? 我当前试1个cpp可以,多个就会报错,不知道怎么处理
 楼主| 发表于 2024-5-10 15:49:17 | 显示全部楼层


saipolo 发表于 2024-5-8 10:12
.c文件放在vcs命令行后面,c的头文件不放在命令行后面,用-CFLAGS "-Ixxx"的方式;或者用gcc将.c文件编译成 ...


vcs支持多个.cpp文件一起编译吗
发表于 2024-5-10 16:06:02 | 显示全部楼层
C编译为so 文件,make file 编译选项和仿真选项添加“-sv_lib so文件路径”
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-18 21:24 , Processed in 0.020573 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表