Verilog 通过VPI调用任务或函数

Verilog 通过VPI调用任务或函数,verilog,system-verilog,vpi,Verilog,System Verilog,Vpi,我知道可以通过Verilog编程接口(VPI)更改信号和变量的值。还可以通过对其执行vpi\u put\u值(…)来触发命名事件 是否可以调用函数或启动任务?VPI不允许您从C调用任务或函数,但DPI允许。从技术上讲,DPI只允许从SystemVerilog调用的C例程调用SystemVerilog例程。DPI有一个导入/导出机制,需要维护由SystemVerilog代码创建的所有线程的进程标识。VPI不允许您从C调用任务或函数,但DPI允许。从技术上讲,DPI只允许从SystemVerilog

我知道可以通过Verilog编程接口(VPI)更改信号和变量的值。还可以通过对其执行
vpi\u put\u值(…)
来触发命名事件


是否可以调用函数或启动任务?

VPI不允许您从C调用任务或函数,但DPI允许。从技术上讲,DPI只允许从SystemVerilog调用的C例程调用SystemVerilog例程。DPI有一个导入/导出机制,需要维护由SystemVerilog代码创建的所有线程的进程标识。

VPI不允许您从C调用任务或函数,但DPI允许。从技术上讲,DPI只允许从SystemVerilog调用的C例程调用SystemVerilog例程。DPI有一个导入/导出机制,需要维护SystemVerilog代码创建的所有线程的进程标识。

这不是我想要的。通过DPI意味着我必须导出函数。我想做的是获得一个类对象的句柄,并使用VPI调用它的函数(即反射)。不能跨语言边界传递类句柄。你需要做的是创建一个可以导出的包装函数,这个函数可以调用class方法,这不是我想要的。通过DPI意味着我必须导出函数。我想做的是获得一个类对象的句柄,并使用VPI调用它的函数(即反射)。不能跨语言边界传递类句柄。您需要做的是创建一个可以导出的包装函数,该函数可以调用类方法。