首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何手动编译共享的dpi库?

如何手动编译共享的dpi库?
EN

Stack Overflow用户
提问于 2019-07-06 18:14:43
回答 1查看 464关注 0票数 0

我试图导入一些在SystemVerilog中生成数组的C-函数。

这是代码:

代码语言:javascript
复制
#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);
}
代码语言:javascript
复制
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代码时,会在链接阶段生成一个错误:undefined reference to 'svGetArrayPtr'

我以前没有使用过svOpenArrayHandle,它已经足够连接头文件"svdpi.h“了。我试图在questa文件夹中查找一些svdpi.dll库,但没有找到。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-06 19:23:22

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56916572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档