什麼是 DPI?
自 SystemVerilog3.1a之後,SystemVerilog 推出了一個與第三方語言介接的功能,稱之為DPI(Direct Programming Interface),可以方便在SystemVerilog中引入其它的語言來使用。在本文中將介紹其中最常被使用的 C語言,說明如何在 SystemVerilog中運行以 C語言所寫成的功能。
在 SystemVerilog 使用 import 來呼叫 C function。
import 的語法:
import "DPI" [from_c_name =] [pure][context] function type to_sv_name(args);import "DPI" [from_c_name =] [context] task to_sv_ame (args);
lab1.sv
module top;
import "DPI-C" context function void helloDPI();
initial begin
helloDPI();
end
endmodule
helloDPI.c
#include <stdio.h>
void helloDPI()
{
printf("-----------\n");
printf(" Hello DPI\n");
printf("-----------\n");
}
run.do
vlib work
# Compile the HDL source(s)
vlog -sv -dpiheader dpiheader.h lab1.sv helloDPI.c
# Simulate the design.
onerror {quit -sim}
vsim -c top
run -all
quit -f
編譯指令
vsim -c -do run.do
運行結果