在2003年IEEE 1800 SV LRM 3.1a中提出了一种直接编程语言接口DPI(Direct Programming Interface),SystemVerilog DPI(直接编程接口)是将SystemVerilog与外部语言连接的一个接口;DPI能够更简洁的连接C/C++或者其他非verilog编程语言,只要使用 import 声明和使用,导入一个C子程序,就可以像调用SystemVerilog中的子程序一样来调用该C子程序;
DPI由两层组成:SystemVerilog层和外部语言层,两层都彼此隔离,实际使用哪种编程语言作为外语是透明的,与此接口的SystemVerilog端无关;理论上外部语言可以是C,C ++,SystemC以及其他语言。但是现在,SystemVerilog仅为C语言定义了一个外部语言层,也就是说目前 DPI 只支持 C;
来看下面一个简单的例子:
module test;
import "DPI-C" pure function void from_c();//导入外部c
initial begin
$display("Entering in sv initial block");
#20;
from_c();
#5;
$display("Exiting from sv initial block");
end
endmodule
外部的C :
#include