引言
在进行IC验证时,尤其是规模较大的时候,单纯用Verilog和SV来构建testbench,可能会稍显吃力。
在这种情况下,使用C或者C++等软件语言往往会大大加快验证速度,提高验证效率。
PLI,VPI,DPI正是基于这个原因开发的,很多仿真器都会提供支持。
之前,我们介绍过VPI的使用,本小结就来说一下更易使用的DPI。
1,基本功能
还是惯例,通过一个具体的实验来体会DPI的使用。
环境:IUS820(Ncsim)。
我们将使用C语言来分别实现一个加法器和一个乘法器。
其中加法器以task的形式实现,乘法器以function的形式实现。
需要注意的是,在实际的项目开发中,我们一般不建议在verilog或SV中直接调用用C语言实现的函数或者task,建议加一个verilog或者SV的wrapper,做一个隔离,利于维护和更新。
2,testbench
/*
* tb.v
* dpi test
* Rill
* 2014-09-28
*/
module tb;
reg clk;
reg rst_n;
reg enable;
reg [7:0] a;
reg [7:0] b;
wire [31:0] sum;
reg [7:0] c;
reg [7:0] d;
reg [31:0] mul_cd;
`include "mul.v"
add add0