基于System Verilog的可重用验证平台设计及验证结果分析


基于System Verilog的可重用验证平台设计及验证结果分析

时间:2025-03-13  作者:Diven  阅读:0

采用System Verilog语言设计了一种具有层次化结构的可重用验证平台,该平台能够产生各种随机、定向、错误测试向量,并提供功能覆盖率计算。将验证平台在Synopsys公司的VCS仿真工具上运行,并应用到包交换芯片的仿真验证中。仿真结果显示,新设计的验证平台能通过修改随机信号约束条件和产生随机信号的权重值,使芯片的功能覆盖率达到100%。随着集成电路制造工艺技术水平不断进步,芯片设计规模越来越大,验证所花费的时间占据了整个产品设计周期的70%,而且随着设计复杂度的提高呈指数性增加[1]。芯片一次流片的成功率从很大程度上取决于功能验证是否充分[2]。因此,验证已经成为制约芯片开发的瓶颈问题。

传统的验证平台主要依赖验证人员观察波形的方法进行验证,验证效率低,不能满足当今验证规模的需求。VMM验证方法学[3]的出现极大程度上提高了验证的效率,进而出现了一批借鉴VMM验证方法学的验证平台[4-7],如参考文献[4]所设计的验证平台就采用了VMM验证技术。但是其设计的验证平台只产生了随机激励,验证时仅使用随机激励很难测试到电路的边界情况,而且验证过程收敛性差。

为了快速定位设计中的问题及边界情况,同时提高验证效率,本文拟采用System Verilog语言,根据VMM验证方法学中的分层设计思想,搭建一个可重用的验证平台,以求同时提供定向测试、受约束的随机测试和错误激励测试。

1 平台框架

验证平台可分为4层,即测试层、建立层、事务层和物理层,如图1所示。

(1)物理层:包括被测设计模块(DUT)集合和电路模型。

电路模型用来与被测代码进行比较,以实现自检验的验证。采用Verilog语言或者System Verilog语言模拟与设计代码等价的功能。

(2)事务层:包括激励产生器、监视器、和覆盖率统计器等。

激励产生器的主要功能是驱动DUT和电路模型的接口信号。本平台的激励产生器能够产生定向测试向量、错误测试向量和受约束的随机向量。

监视器的主要功能是监视DUT和电路模型输出的信号,并对两者进行比较。当DUT的输出信号和电路模型的输出信号不一致时,仿真可能被强迫结束,同时打印出当时出错的时间和出错的信号名称及内容。

覆盖率统计器的主要功能是根据激励产生器产生的测试向量、DUT输出信号以及覆盖点的要求统计出电路功能的覆盖概率。覆盖点是一种有效的验证机制[8],它的编写根据具体的测试对象而定,可以对单个信号进行功能覆盖率统计,也可以统计多个信号的交叉覆盖率。

以上介绍了事务的类型,根据不同的测试需求可以创建各种平台所需的事务,如随机事务、各种回调函数事务等。

(3)建立层:包括验证框架的建立和电路初始配置。

验证框架建立的主要功能是利用事务层的各种事务构建出整个平台的框架。包括平台环境的配置及参数的设定;激励产生器和监视器的句柄定义和对象声明;与覆盖率相关的回调函数类的句柄定义和对象声明;激励产生器和监视器与回调函数的通信建立。本平台还研发了面向通信交换设备的配置软件和专用的图形界面。

(4)测试层:包括配置文件和测试用例。

在平台搭建好之后,测试层的主要功能是提供定向测试的测试实例和与DUT相关的一些配置信息。例如对高性能路由器转发单元进行验证时,需要通过微机接口对转发单元进行配置,不同的配置参数DUT将会提供不同的功能。本文设计开发了面向定向测试的数据块/包的软件辅助工具。测试人员可以使用辅助工具来产生所需要的数据。

2 通信交换设备验证平台

2.1 交换功能介绍

本文假定所测试的交换设备具有N个输入/输出端口,这里N通常是2的整数次幂,考虑到内部复用,这N个端口可以映射到k组总线,每m=N/k个端口分时复用一组总线,k 2.2 验证平台

验证平台需要按照数据包/块格式的要求提供各种不同类型、包长、优先级、源端口和目的端口,以及包含其他参数和配置的网络数据包,同时能够根据各个端口输出的数据包个数计算出该端口的速率,以此来产生链路的忙/闲状态,模拟配置规定的速率和其他要求。

根据层次化结构,并结合交换设备的功能,对验证平台进行了详细的设计。

(1)物理层:DUT采用Verilog语言编写,电路模型采用System Verilog编写,编写过程不是设计的重点,所以这里不再进行叙述。

(2)事务层:根据功能描述可知,如果要从端口处进行验证,本验证平台需要N个激励产生器,用于产生来自N个输入端口的数据包/块,还需要N个监视器来观察N个输出端口的数据包/块。如果要从总线处进行验证,则需要k个激励产生器和k个监视器用于监视来自电路模型和DUT的k组总线上的输出数据。这里,每个激励产生器需要模仿m=N/k个端口及其速率,每个监视器需要记录m个端口的输出。同时还需要一个覆盖率统计器用于统计激励产生器产生的所有情况下的数据包。

①激励产生器:将激励产生器定义为一个类,该类的属性包含了虚接口的定义、待发送包的队列定义、激励发生器编号和回调函数队列定义等,此外还包含了运行方法、定向测试、随机测试、端口速率配置方法、定向包入队方法、定向包驱动方法、随机包产生方法、随机包入队方法、随即包驱动方法和丢弃概率计算方法等。

其中定向测试的测试流程如图2所示。