【发布时间】:2013-08-25 11:02:10
【问题描述】:
我有以下代码:
file.sv
module svtest();
import "DPI-C" function void my_func(output bit [31:0] id, input bit [31:0] size);
bit [31:0] my_id;
bit [31:0] my_size;
initial
begin
my_size = 1 << 30;
my_func(my_id, my_size);
$finish();
end
endmodule
filc.c
void my_func(svBitVecVal* id, svBitVecVal* size)
{
. . . . .
}
我遇到的问题: 我希望“大小”的位向量不是 const 长度(32 位),我希望将未定义的位向量传递给 c 文件。 我看到了“svOpenArrayHandle”类型——看起来不错,但我不知道如何在 DPI 导入中声明它:
import "DPI-C" function void my_func(output bit [31:0] id, input bit size[]) -> 引发错误 :-(
有什么建议吗?
谢谢。
【问题讨论】:
-
我使用 INCISIV 12.1,DPI 声明没问题。使用
svOpenArrayHandle和svHigh(),svLow()获取数组的范围也是可以的。
标签: system-verilog system-verilog-dpi