原子测试在svtb(systemverilog testbench)中的应用

首先引入原子测试的概念:

原子测试是一种专注于测试单一功能的测试,它明确了解您测试的是什么。如果测试失败,那么您还应该清楚需要修复的问题。

例如,比较两个数组是相等,通常我们会首先判断数组大小是否一致,然后比较每个元素是否相等,如果大小一致,且每个元素都相等,那么我们认为这两个数组相等。那么有没有更简洁的写法呢?如果告诉你其实可以直接将两个数组进行比较,你该怎么测试这个语法是否正确呢?

if(array0 == array1) begin
   ...
end
else begin
   ...
end

假如你有一个具有相当规模的testbench,仅仅编译就需要十几二十分钟,或者更长的时间(一两个小时都有可能),如果你在这个环境中测试‘array0==array1’,那么等待你的将是漫长的等待,这对时间非常紧张,工作繁忙的验证工程师来说,是不可接受的。我等待十几二十分钟,就是为了测试一个sv语法是否可用。那么有没有更加简单快捷的方法呢?

原子测试DangDangDang粉墨登场了。

这时,你需要写一个尽可能简单的test,并写个小的makefile或者csh脚本运行vcs仿真,来测试该语法。那么有没有更加简单快捷的方法呢?

其实针对systemverilog的语法特性(不仅仅局限于sv语法),synopsys的vcs安装目录下,提供了一系列的测试小例子,每个例子单独存放在一个文件夹。

一般在vcs安装目录的doc目录下:

通常每个测试文件夹有如下文件:


README为自述文件,提供小测试的简单描述以及运行方法。*.sv文件为测试源文件。

测试源文件和Makefile都准备好了,我们只需要在*.sv测试源文件添加需要测试的语句就可以。

synopsys提供了如下例子:


猜你喜欢

转载自blog.csdn.net/zhajio/article/details/80569179