gpt4 book ai didi

c - 如何手动编译共享dpi lib?

转载 作者:行者123 更新时间:2023-11-30 16:15:55 24 4
gpt4 key购买 nike

我尝试导入一些在 SystemVerilog 中生成数组的 C 函数。
这是代码:

#include "svdpi.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void getPacket(int packetSize, svOpenArrayHandle fpSig, svOpenArrayHandle err)
{
int* cfpSig = (int*) calloc(packetSize, sizeof(int));
double* cerr = (double*)calloc(packetSize, sizeof(double));

for(int i = 0; i < packetSize; ++i)
{
cfpSig[i] = i;
cerr[i] = 1.1*i;
printf("%d %f\n",cfpSig[i],cerr[i]);
}
printf("----------");
memcpy((int*) svGetArrayPtr(fpSig),cfpSig,packetSize);
memcpy((int*) svGetArrayPtr(err),cerr,packetSize);
free(cfpSig);
free(cerr);
}
import "DPI-C" function void getPacket(input int packetSize,
output int fpSig[], output real err[]);
module top();
initial begin
parameter int packetSize = 4;
int fpSig[packetSize];
real err[packetSize];
getPacket(packetSize,fpSig,err);
for(int i = 0; i < packetSize; ++i) begin
$display("fpSig: %d\nerr : %f",fpSig[i],err[i]);
end
end

endmodule

但是当我手动编译c代码时,在链接阶段会生成错误:对'svGetArrayPtr'的 undefined reference
我以前没有使用过 svOpenArrayHandle,连接头文件“svdpi.h”就足够了。我尝试在 questa 安装文件夹中查找一些 svdpi.dll lib,但没有找到。

如果我通过 vlog 编译 c 文件,它工作正常,但我想手动编译它,因为我计划包含 matlab 库,并且通过 vlog 编译会变得不舒服。

最佳答案

在 Questasim 模拟器中,包含 svGetArrayPtr 符号的库是 mtipli.dll

关于c - 如何手动编译共享dpi lib?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56916572/

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