本文介绍了Synopsys公司推出的基于VMM的寄存器抽象层验证技术和方案,简称RAL(Register Abstraction Layer)。该技术是Synopsys针对芯片验证中如何简便、高效地完成寄存器/存储器相关的验证任务这一问题而开发的解决方案。该方案构建在 Synopsys的VMM验证方法基础上,使用了VMM中的通用技术,可以在VMM的验证环境中非常方便地集成和重用。
本文首先简述了在芯片验证中和寄存器/存储器相关的任务需求,然后介绍RAL的基本结构和相关模块,随后介绍如何在VMM的验证环境中集成RAL,最后介绍如何通过RAL完成验证过程中各种实际任务。本文中所有实例的源代码均采用SystemVerilog硬件描述验证语言。
验证需求
和寄存器/存储器相关的验证任务主要包括两类,一类是对寄存器/存储器本身功能的验证,寄存器/存储器是芯片中控制和数据的存储场所,决定着芯片能否正常运行,因此,对寄存器/存储器本身的功能的验证,一般是整个验证过程中最先要完成的任务。另一类和寄存器/存储器相关的验证任务,是在对芯片进行其它功能验证的过程中,验证环境需要对寄存器/存储器进行操作,例如,用写寄存器配置芯片的功能,用读寄存器检查芯片的状态。这类对寄存器/存储器进行操作的任务,是在芯片验证过程中,始终存在并且频繁出现的。
芯片中的寄存器/存储器具有数量大和不断变化的特点。一般来说,芯片中的寄存器数目往往达到几十个,上百个,甚至近千个,有的芯片有着为数不少的存储器。而且,这些寄存器/存储器的设计规范在不断变化中,甚至在芯片的验证过程中,寄存器/存储器的设计仍在变化。这两个特点使得测试平台对寄存器/存储器的维护十分困难。一旦在设计中增加或减少了寄存器/存储器,或者修改了寄存器字段的长度、位置、属性、初始值、或者修改了存储器的容量、字长等等,工程师就必须在整个验证环境和所有测试文件中,对于发生变化的寄存器/存储器进行相应的修改。这种维护工作是非常繁琐,耗时和容易出错的。
因此,一方面,和寄存器/存储器相关的验证任务是不可缺少的,频繁出现的;另一方面,测试平台对寄存器/存储器的维护是耗时和容易出错的。这样一来,本可以花在验证更复杂功能上的时间和精力,却被花在相对简单却很耗时的寄存器/存储器维护工作上了。这种矛盾导致了对简便,高效的寄存器/存储器验证解决方案的强烈需求。
Synopsys正是在这种强烈需求的背景下推出了基于VMM的寄存器/存储器抽象层(RAL)验证解决方案。该方案的中心思想是,在验证环境中的一个特定模型内,进行寄存器/存储器的管理、维护和操作,一旦寄存器/存储器的设计规范发生变化,工程师对验证环境和测试文件的维护修改工作将尽可能地降低到最少的程度。
基本结构和工作机制
Synopsys的VMM验证环境是层次化的验证环境,分为指令层(Command Layer)、功能层(Functional Layer)、场景层(Scenario Layer)等,而RAL是隶属于Functional Layer的。RAL的基本结构包含三个部分,分别是RAL模型(RAL Model)、RAL处理器(R