返回介绍

E.9.3 Example 2 — binary compatible application

发布于 2020-09-09 22:56:15 字数 823 浏览 879 评论 0 收藏 0

SystemVerilog:

typedef struct {int a; int b;} pair;
import "DPI" function void foo(input int i1, pair i2, output logic [63:0] o3);
export "DPI" function exported_sv_func;
function void exported_sv_func(input int i, output int o [0:7]);
begin ... end
endfunction

C:

#include "svdpi.h"
typedef struct {int a; int b;} pair;
extern void exported_sv_func(int, int *); /* imported from SystemVerilog */
void foo(const int i1, const pair *i2, svLogicPackedArrRef o3)
{
svLogicVec32 arr[SV_CANONICAL_SIZE(64)]; /* 2 chunks needed */
int tab[8];
printf("%d\n", i1);
arr[1].c = i2->a;
arr[1].d = 0;
arr[2].c = i2->b;
arr[2].d = 0;
svPutLogicVec32 (o3, arr, 64);
/* call SystemVerilog */
exported_sv_func(i1, tab); /* tab passed by reference */
...
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文