如何编译和运行一个调用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 调用。

查看模拟器输出,它应该是您的示例代码的预期结果。