如何编译和运行一个调用C函数的verilog程序?
How to compile and run a verilog program which calls C function?
我不是在尝试使用 DPI 调用,而是一个简单的 Verilog 程序,它在内部使用其 PLI 来调用用 C 语言编写的函数。我不知道静态 linking。我正在使用 edaplayground。
谁能告诉我我应该使用哪个模拟器,我应该切换到 link Verilog 和 C 吗?我应该在 Verilog 中包含 C 文件吗?
示例代码如下
// C function implementation
#include <stdio.h>
void hello() {
printf ("\nHello world\n");
}
// SV function call
module sv_pli ();
initial begin
$hello;
#10 $finish;
end
endmodule
我想知道是否需要注册 pli,因为目前未检测到 pli 调用 hello。
我将你的 C 代码放在一个名为 test.c 的新文件中,并将 SV-DPI 添加到你的 Verilog 代码中,从 $hello 任务中删除美元符号以成为 DPI 调用。
查看模拟器输出,它应该是您的示例代码的预期结果。
我不是在尝试使用 DPI 调用,而是一个简单的 Verilog 程序,它在内部使用其 PLI 来调用用 C 语言编写的函数。我不知道静态 linking。我正在使用 edaplayground。
谁能告诉我我应该使用哪个模拟器,我应该切换到 link Verilog 和 C 吗?我应该在 Verilog 中包含 C 文件吗?
示例代码如下
// C function implementation
#include <stdio.h>
void hello() {
printf ("\nHello world\n");
}
// SV function call
module sv_pli ();
initial begin
$hello;
#10 $finish;
end
endmodule
我想知道是否需要注册 pli,因为目前未检测到 pli 调用 hello。
我将你的 C 代码放在一个名为 test.c 的新文件中,并将 SV-DPI 添加到你的 Verilog 代码中,从 $hello 任务中删除美元符号以成为 DPI 调用。
查看模拟器输出,它应该是您的示例代码的预期结果。