verilog使用PLI来和C语言程序交互。System Verilog引入了直接编程接口(DPI,Direct Programming Interfarce),可以更直接地连接c/c++或者其他非verilog编程语言。在我们日常的验证过程中,难免需要调用一些算法模型,此时使用dpi调用C模型就是我们验证需要掌握的必要手段之一。
下面我以一个简单的加法器案例来记录在验证平台通过DPI引入C模型的过程:
如上图所示,图中包含verilog、cmodel以及TB。在TB中添加import "DPI-C"就可以导入cmodel;
下图是编译并运行的过程:
vcs -full64 -sverilog rtl.v add.c test.sv -timescale=1ns/1ps -debug_access+all -R
但是在编译的过程中由于C也需要编译,当以后有大量的C文件需要编译的话会导致整体仿真速度的变慢,因此可以通过下面手段,先将C文件编译成为共享库文件.so:
gcc -lm -m64 -Wall -g -fPIC -I $VCS_HOME/include -shared -lstdc++ -o add.so add.c
然后在编译的代码如下,减少C部分的编译时间:
vcs -full64 -sverilog rtl.v test.sv -timescale=1ns/1ps -debug_access+all
之后在仿真的时候:
./simv -sv_lib add