验证的结构篇之一:测试平台概述
从这一章开始,我们将结束之前验证各个方面纵论的部分(第一部分),来进入验证师的日常工作,即认识设计、搭建平台、创建测试场景和结果检查的部分。为了让读者能够首先对验证平台有直观的认识,我们将以简单的设计开始,由浅入深贯穿整个第二部分(验证平台概论,SystemVerilog实践和UVM应用)。
从第二部分开始,我们将基于设计实例,结合实际,以代码、框图、测试输出结果,目的在于读者能够在学习基本的SystemVerilog和UVM的同时,还可以伴随更多的思考,通过比较两者之间的异同来更进一步的认识SystemVerilog作为一门语言的特性和UVM作为一种方法学的优点。
而在开始SV和UVM的章节之前,我们有必要单独给出一章来模拟实际的情景,结合对硬件设计的理解,来考虑如何构建一个模块验证环境,同时,也需要对不同的验证组件的功能给出描述。在对单一组件介绍完以后,我们也会介绍组件之间的连接和互动,以及整个验证平台的结构。
测试平台实际上是整个验证系统的总称,它包括有验证结构中的各个组件、组件之间的组成关系、测试平台的配置和控制,从更系统的意义来讲,它还包括有编译仿真的流程、结果分析报告和覆盖率检查等。从狭义上讲,我们主要关注验证平台的结构和组件部分,他们从整体上可以产生设计所支持的各种输入,也在此基础上进行设计功能的检查。
我们首先给出一幅经典的测试平台结构图,从图中可以看到:
-
各个组件之间是互相独立的
-
验证组件与设计之间需要通过连接
-
验证组件之间也需要进行必要的通信
-
验证环境也需要一致的时钟和复位信号的驱动

验证平台从实现语言来看,这么多年以后经过了需要的不断变化,常用的语言有VHDL、Verilog、Open Vera、e、SystemC、C/C++、SystemVerilog等。不同语言的选择以及测试平台语言应用的趋势可以从下图看到:

不难发现,近年以来SystemVerilog的比例明显占据主要地位,我们会在日后的SystemVerilog部分通过介绍它的重点特性,来对比不同的语言,体现它的优势。此外,对于SystemC和C/C++在验证部分的应用,我们也将会在验证方法的高级应用部分进行介绍。
对于验证师而言,构建一个验证平台,除了需要对设计部分的充分了解之外,他也需要考虑在平台上给出更丰富完备的测试场景,并且有能力使得验证组件针对丰富的激励可以做出细致的判断,最终合理地分析设计的功能是否符合硬件描述。
在下一节,我们将具体围绕整个第二部分的设计进行介绍,包括它的结构、功能、时序描述。作为验证工作展开的第一步,我们有理由相信只有对设计结构足够了解,才能进行验证结构的规划和搭建。
浙公网安备 33010602011771号