论文部分内容阅读
随着集成电路以及计算机图像技术的发展,人们对于图像质量的要求越来越高,GPU得以飞速发展。GPU中的核心部分为3D引擎,用于渲染3D图像,而图像处理单元作为3D引擎的主要组成部分,用于实现纹理操作、像素操作以及图像处理等功能。图像处理单元作为GPU中主要的数据通路及处理图像的主要手段,其丰富的数据通路及巨量的数据计算给传统的验证手段带来了挑战。功能验证是芯片开发工程中不可或缺的一个阶段,通常占用开发周期的75%左右,而采用SystemVerilog验证语言,基于事务级验证技术可在大程度上提高功能验证的效率。本论文以GPU3D引擎中的核心部分图像处理单元为研究对象,重点开展基于SystemVerilog的图像处理单元模块验证工作的研究。首先,对图像处理单元功能规范以及OpenGL协议进行了研究,详细剖析了图像处理单元包括图像管线、图像处理子集、纹理操作、像素操作等功能,并据此制定了验证策略,提取出了待验证的功能点。随后,针对图像处理单元所要验证的功能点,本论文使用SystemVerilog验证语言,基于事务级验证技术,搭建了实现自动比对的图像处理单元验证平台,包括基于interface的功能总线模型、参考模型、事务发生器、监控器四个部分。其中,基于interface的功能总线模型可完成图像处理单元外围模块与图像处理单元的交互功能;参考模型可实现图像处理单元模块的所有功能,同时分块式的设计可用于模块级仿真的重用;事务发生器将与图像处理单元有关的OpenGL函数封装起来作为事务级操作;监控器具有自动比对并输出对错的功能,与参考模型一起可完成验证平台的自动比对。最后,为了保证验证的完备性和正确性,基于验证策略,设计并编写相关测试用例,使用设计好的验证平台,从基本资源测试、函数功能测试、图像处理单元内部模块功能测试、异常测试、边界测试五个方面的验证(基本资源测试可用于测试SRAM、寄存器等基本单元,函数功能测试可用于测试支持的OpenGL函数功能,图像处理单元内部模块功能测试可用于测试图像处理单元内部各模块的功能,异常测试可用于测试异常场景,边界测试可用于测试临界场景)来完成图像处理单元的功能验证工作。在所有测试用例仿真完成并通过后,利用回归测试批量仿真来收集覆盖率,覆盖率总体超过了95%,达到了验证要求。此外,本论文还采用一种可视化的验证方法,即:验证平台收集处理后的图片,并与处理前的图片进行比较。这样一种可视化的验证方法不仅可评估设计效果,更可以方便检视出bug并修改。本论文提出的一种基于SystemVerilog的图像处理单元的验证方法具有可重用性高、自动化高的特点,该验证方法合理可行,并给类似于图像处理单元系统级验证的大数据量、多功能性、难以观察的待测设计的功能验证提供了解决思路。