引言
对于SV,无论是构造测试激励,还是模拟硬件的并行行为,DPI都是非常方便的。上次我们介绍了SV里面通过“import”导入并调用C函数。
本小节,我们通过一个简单的例子来说明C语言函数如何调用SV的task和function。
1,SV部分
/*
* test.v Rill create for dpi test at 2014-10-20
*/
`timescale 1ns/1ns
module tb;
import "DPI-C" context function int c_func(input int num);// or import "DPI-C" context task c_display(input int num);
reg tmp;
initial begin
#10
tmp = c_func(1);
end
m1 M1();
m2 M2();
endmodule // top
module m1;
import "DPI-C" context function void c_get_m1_scope();
export "DPI" function m1_add;
reg tmp;
reg [7:0] m1_value;
function int m1_add(input [7:0] num);
m1_add = num + m1_value; //or return (num + m1_value);
endfunction // m1_add
initial begin
c_get_m1_scope();
m1_value