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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2964|回复: 1

[求助] 通过DPI在SystemVerilog中调用SystemC事务级函数时出错

[复制链接]
发表于 2014-3-24 10:51:12 | 显示全部楼层 |阅读模式

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

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

x
小弟初学验证,项目要求用UVM验证一个SystemC事务级建模的模块,这个模块里有读写两个函数,其中写函数中包含wait()函数。

我决定先解决通信问题再搭建UVM,于是写了个简单的SV Testbench,并用Modelsim的DPI接口将SC的函数导过来进行调用,两个函数如下:
import "DPI-SC" context function void top_write_byte (input int unsigned address, input byte unsigned data);
import "DPI-SC" context function byte unsigned top_read_byte (input int unsigned address);

但仿真时modelsim出现报错(Code 222)并立即退出,提示原因:wait()只能在SC_THREAD中调用,在SC_METHODS中调用将出错。

1. 我分析是仿真工具将SV的testbench认为是方法而非线程,因此尝试在SV中使用fork-join语句、建立任务,但都没有作用,请问各位大侠是否有办法解决?

2. Mentor推出了支持SC与SV的TLM通信的库UVM Connect,但不支持个人下载,请问我是否应该直接用这个库实现通信?难度如何
发表于 2014-4-9 13:37:24 | 显示全部楼层
SC的LRM里面提到过wait 只能现在线程进程SC_THREAD SC_CTHEREAD 里面使用,我之前也遇到过这个问题,你分析的第一条是不对的   工具在执行SC函数的时候发wait语句 不是在线程进程里面调用提示的
解决方法是 将wait从SC的函数里面去除 在SV调用 top_write_byte 的里面 SC module里面将SV传递的transction保存起来到FIFO,然后trigger一个event,SC里面create一个进程监测event 然后driver 这个transaction
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-23 01:51 , Processed in 0.021698 second(s), 10 queries , Gzip On, Redis On.

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