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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1199|回复: 4

[求助] 关于sv_lib选项的使用,dpi找不到

[复制链接]
发表于 2024-3-26 16:54:50 | 显示全部楼层 |阅读模式

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

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

x
两种c语言dpi的使用方式
方式一
C和RTL+平台一起编译,.c文件放到命令行后面,c的编译选项放到-CFLAGS "xxx",xxx表示你的c编译选项;
方式二
先用gcc把c源文件xxx.c编译成xxx.so,最后simv -sv_lib xxx,注意xxx是链接库的名字,不带后缀名。

推荐用方式2,更改c不用耗时再编译RTL+平台,只需要用gcc再编译c就行了,一秒钟时间都不到。

针对第二种方式,出现下列的问题:
提示DPI import function not found

使用的debug方式
使用nm工具查看链接库.so文件,需要导入的dpi function是存在的;
sv导入时参数,函数类型也都是对的

路过的兄弟们帮忙看看可能是什么问题吗?
由于sv的编译部分耗时太长,所以一定要使用第二种方式。


 楼主| 发表于 2024-3-26 17:32:42 | 显示全部楼层
#ifdef __cplusplus
extern "C" {
#endif

<函数定义>


#ifdef __cplusplus
}
#endif
发表于 2024-3-28 11:35:47 | 显示全部楼层


ICJJ 发表于 2024-3-26 17:32
#ifdef __cplusplus
extern "C" {
#endif


加上这个解决了是吗
 楼主| 发表于 2024-3-29 14:07:32 | 显示全部楼层
本帖最后由 ICJJ 于 2024-3-29 14:08 编辑


年轻的韭菜 发表于 2024-3-28 11:35
加上这个解决了是吗


对于我来说是解决了,


如果大家没解决的话,可以尝试下面的解决方式
原因1:
export的函数又被import的函数调用的情况且export的位置和import函数使用的位置不在同一个scope中
解决方式
在c函数中使用下面的代码,将scope设置为export所在的模块
scopeNmae 是 包含模块名的字符串
详细使用问题可以查看svdpi.h文件函数的定义

    svScope my_scope;
    my_scope = svGetScopeFromName(scopeName);
    svSetScope(my_scope);


发表于 2024-3-29 18:59:58 | 显示全部楼层


ICJJ 发表于 2024-3-29 14:07
对于我来说是解决了,


好的,多谢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-11-15 23:26 , Processed in 0.016778 second(s), 6 queries , Gzip On, Redis On.

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