System Verilog通过DPI使用C memory块
时间:10-02
整理:3721RD
点击:
通过DPI接口,SV中能够获得C side分配的一个内存块(由malloc分配)的handle,但是如何在SV side访问这个内存块的内容呢?我尝试了两种方法,都不行,请了解的人指导下~多谢
方式一:
chandle memory;
import "DPI" function chandle golden();
memory = golden();
$display(memory[0]);//编译报错,说不能这么操作chandle变量
方式二:
int memory;
import "DPI" function int golden();
memory = golden();
$display(memory[0]);//C side指针类型也是int型,这里虽然可以打印数据,但打印出的数据完全不对
在C端的memory是值这个memory需要在SV 与C都可读可写吗?
应该在SV端做一个memory1数组,输入到golden中,golden输出一个memory2复制到memory1就好了
SV数组与C端交换是需要转换的
SystemVerilogC(输入)C(输出)
open arry[]const svOpenArrayHandlesvOpenArrayHandle