【问题标题】:System Verilog DPI - unknown array sizeSystem Verilog DPI - 未知数组大小
【发布时间】: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 声明没问题。使用svOpenArrayHandlesvHigh()svLow()获取数组的范围也是可以的。

标签: system-verilog system-verilog-dpi


【解决方案1】:

无法将未调整大小的数组传递给带有指针的 C 函数。您将合成硬件,它不能是可变的。它不能根据您的要求增大或缩小。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    • 2014-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-13
    • 2020-11-13
    相关资源
    最近更新 更多