关于UVM使用DPI,能否从C语言中调用sequencer里面的task
时间:10-02
整理:3721RD
点击:
UVM的一个seq中,需要访问读写寄存器,因为有一些数据需要运算,所以我想调用C语言来完成运算。有没有办法在seq中定义两个访问总线的task,比如reg32_write(addr,data),然后在C语言中进行调用这个task达到读写寄存器的目的呢?
我遇到的问题是export不能放在class内部,如果task定义在class外部就不能访问seq里面的内容了。
大家有没有好的解决办法。
我遇到的问题是export不能放在class内部,如果task定义在class外部就不能访问seq里面的内容了。
大家有没有好的解决办法。
用interface做中转站。
为什么不能访问?完全可以把你的数据输入DPI函数,然后再output结果
c要调用的task在uvm的seq中,questa运行时回报告错误,找不到相应的task。
能再具体谈谈思路么,基本上用起来了uvm品台,还不能够灵会贯通
检查一下编译选项,有没有正确include进去,DPI语法对了吗
应该不能调用task,因为task是占用仿真时间的,应该可以调用function..你试试...
c调回sv,访问总线,是需要占用仿真时间的,function真的可以么?
function不占用仿真时间,但是C语言执行过程也不占用仿真时间吧...因此C调用的话应该不能调用占用仿真时间的task
c语言能完成的sv一样可以完成,除非你有现成的c代码,不想重写。
可以在sv中调用c函数进行运算,为什么要c调用sv?