gpt4 book ai didi

c - SystemVerilog DPI-C 指针

转载 作者:太空宇宙 更新时间:2023-11-04 03:42:58 31 4
gpt4 key购买 nike

我有一个关于 SystemVerilog 和 C 之间的 DPI 连接的问题。具体来说,我有一个看起来像这样的 C 函数:

unsigned short C_FUN(unsigned char* data)

我想传递给它的是一个bit[7:0] my_darray[];

哪种方法最好?提前致谢。

最佳答案

混合打包/解包动态数组在 DPI 的 C 层中作为 svOpenArrayHandle 进行处理。您将必须创建一个包装函数,将 SystemVerilog 类型转换为您的类型:

#include "svdpi.h"

unsigned short c_fun_wrapper(const svOpenArrayHandle a) {
unsigned char* data;
// convert 'a' to your type
// ...

// call your function
return c_fun(data);
}

有关如何转换的更多信息,请查看 IEEE 1800-2012 standard 、第 35 节和附件 H。

您基本上拥有一些可用于对数组进行操作的不错的函数(在 svdpi.h 文件中定义):

int svLength(const svOpenArrayHandle h, int d);
void *svGetArrElemPtr1(const svOpenArrayHandle, int indx1);

您可以使用这些函数遍历所有元素并填充 data 将指向的 char 数组。

关于c - SystemVerilog DPI-C 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27078094/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com