我有以下文件:
C文件的功能:
// funcs.c
#include <stdio.h>
void something() {
printf("something\n");
sayHello();
}
系统Verilog文件:
// hello_world.v
module kuku;
export "DPI-C" function sayHello;
import "DPI-C" function void something();
initial something();
function int sayHello ();
$display("hello world");
sayHello = 1;
endfunction
endmodule
我如何编译它并使它工作,以便当我something()
从SV调用时,它将调用C函数,而当我sayHello()
从C调用时,它将调用SV函数?
回答自己:
使用VCS编译SV代码时,首先将其转换为C代码。
当exporting
某个函数不在SV中时,它将生成一个C头文件vc_hdrs.h
,该文件应包含在C文件中。
所以我在C文件中所做的更改是添加以下行:
#include "vc_hdrs.h"
然后,我只是将C函数文件添加到VCS编译命令中:
> vcs -sverilog hello_world.v funcs.c
有用!
我得到的输出是:
something
hello world
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句