数字集成电路设计-17-svunit环境构建

引言

做IC验证时,除了采用SVA,DPI等验证手段,还可以采用svunit来实现module级别的验证。


1,什么是svunit?

SVUnit is a unit test framework for developers writing code in systemverilog. Verify systemverilog modules, classes and interfaces in isolation with SVUnit to eliminate bugs before they infest your design!


2,svunit使用步骤

2.1,下载最新svunit支持代码:v2.11

http://sourceforge.net/projects/svunit/

 

2.2,解压:生成svunit-code目录

Tar -xvf svunit-v2.11.tar.gz

 

2.3,按照README.txt操作,熟悉一下基本的构建过程

 

3,下面我们以一个加法器的例子来说明svnuit的用法

3.1,编写DUT:add.sv


/*
* Rill for svunit test 2015-04-20
*/

module add
(
	input clk,
	input rst_n,
	
	input enable,
	input [3:0] a,
	input [3:0] b,
	output [7:0] sum
);

	logic [7:0] sum_r;
	
	always_ff @(posedge clk)
		if(~rst_n | ~enable)
			sum_r <= 8'b0;
		else if(enable)
			sum_r <= a + b;

	assign sum = sum_r;
endmodule:add

3.2,生成包装代码并添加激励和检查代码

数字集成电路设计-17-svunit环境构建_第1张图片


数字集成电路设计-17-svunit环境构建_第2张图片



3.3,测试结果






注:svunit的脚本主要是用Perl写的,所以需要主机上有perl语言库,如果出现类似“/perl command not found”的提示,说明你的主机上没有安装perl支持库,或者perl版本太旧,或者安装perl后环境变量没有指定正确。


4,附录:svunit使用步骤

1> 解压:tar -xvf svunit-v2.11.tar.gz

2> mkdir my_svunit_test; cdmy_svunit_test

3> touch add.sv并编辑

4>复制Setup.bsh到my_svnuit_test,并修改SVUNIT_INSTALL路径,最后执行:source Setup.bsh

5>生成封装文件:create_unit_test.pl add.sv

6>编辑封装文件:add_unit_test.sv

7>生成Makefile:create_svuit.pl

8>指定使用的仿真工具:修改Makefile

9>运行:make


5,小结

svunit的好处在于提供了几个脚本,可以自动将待测module进行自动封装,省去了一些编码工作。个人感觉目前svunit的功能还比较弱。每个SVTEST块实际是一个fork/join_any块,所有SVTEST块顺序执行。

在实际的项目中可以通过三种方式使用svunit:

   1>构建子模块测试流程,按照svunit提供的脚本,将主要子模块进行测试。模块的激励以及assert内容都需要自己加。

   2>参考svunit的思想,针对主要模块的某部分代码(比如从某个文件的第100行到第200行),利用force/deposit作为激励,利用assertion作为检测手段,构建block测试流程。

   3>将UVM和svunit结合使用。


你可能感兴趣的:(数字集成电路设计-17-svunit环境构建)