| |
复用对于测试平台的开发和部署是非常重要的,我们经常谈论复用验证IP(简称VIP),然而,复用测试平台的结构同样很重要。手动构建测试平台是一个耗时和成本昂贵的过程,此外,它很难保证一致性。为了缓解这个问题,Cypress 创建了一个测试平台自动生成器,并命名为TBGen。
TBGen实际上就是能自动生成测试平台(TB)的脚本,这意味着它可以生成任何测试平台。它的整体流程如图一所示:
VIP: Verification Intellectual Property(验证知识产权)
SAS: System Architecture Specification(系统架构规范)
TBGen有两个主要输入:一是SAS Database,从这可以获得验证平台设计的具体数据,比如哪个子系统被用来创建平台,每个子系统的实例数目,传递给每个子系统的配置参数,以及该系统寄存器映射等。二是Collection of VIP,可以提供每个VIP里预定义信息,比如接口或连接性的信息是通过绑定模板预定义。
并且,集成测试可以自动检查针对特定IP的相应实例,通过建立由验证管理系统(VMS)认可的测试架构,可自动生成和启动测试列表。最后,TBGen要求以统一的方式搭建每个VIP,如果某个VIP没有基于TBGen准则搭建,它将是无效的。一旦遵从准则,并提供所有需要的信息,测试平台就很容易搭建起来,以减少验证开发时间。
图2显示建立一个平台所需的基本构建模块,基础是VIP Guidelines(准则)。(Bind Templates)接口绑定,(Paremeter Passing)参数处理,(Test Integration)自动测试整合,以及(Multiple Instace)多实例都是必要的,将会在后文逐一介绍。框架基础是与验证工程师沟通需求的Guidelines(准则),一旦工程师在构建子系统测试平台时遵从这些准则,那么将这些子平台集成将会被实现:TBGen将从SAS数据库中提取信息,将子系统测试平台集成在一起,成为一个整体的测试平台。
A 设计和测试平台参数类
这些设计参数被用于子系统测试平台核心中,目的是创建一个包含测试平台参数的class(类),这些类被顶层TB使用,从而顶层TB可以通过它和子系统TB传递参数。每个IP的设计参数被放在一个特定的类中,类的名字针对与特定的IP名;TB(测试平台)参数也被放在一个类里,命名是类名和“v”前缀的组合。
所有的参数类被打包在sys里,通过“sys::*”将参数导入需要的命名空间。
B 连接
TBGen一个主要的功能就是将TB和DUT连接起来,如图6所示,就是连接模型,包含协议代理,SystemVerilog的接口,和DUT接口。每个DUT的接口都被连接到System Verilog的接口上,协议代理又连接着System Verilog的接口。
C 绑定模板
一个绑定方法被定义为允许子系统VIP机制,绑定顶层TB实例。
图7包含两个简单的绑定模板例子。首先,vip2 声明了一个对断言模块的绑定模板,断言模块被绑定到了ip2,但是没有接口,没有配置句柄和定义命名。里面声明了interface=no, 提供了3个连接信号。断言模块三个信号sig1,sig2,sig3被连接到input1, input2, input3。第二,vip3声明了一个到名字为sample_if接口的绑定模板,如果ip3 类里参数PARAM2>0,这个接口就被绑定到ip3。接口sample_if应该用`ifdef包裹IF_ON与之对应,并且,ip3设计参数PARAM1在实例化时会自动传递,还有两个连接信号,接口信号if_sig1, if_sig2会连接到input1, input2。
在平台级,TBGen将借助这些绑定模板生成正确的绑定实例,可以在 dut_wrapper.sv 中看出来, assetions_0 被绑定到 if2的实例 u_ip2_top , sample_if_0 被绑定到ip3的实例 u_ip3_top。TBGen还将生成一个函数: set_value_in_global_config,调用 sample_if_0 而不是 assertions_0。
D 支持设计多实例
在SOC中,一些子系统可以具有多个实例。图8给出一个简单的例子,其中顶层的环境(env.svh)中,同时示出了SOC和子系统的TB。子系统的环境(vip_env)在SOC环境中被实例化了两次,第一个实例通过 sys::ip1_0 和 sys::vip1_0 将参数在TB和design之间传递;第二个实例同样道理。通过这种方法,ip1_env可以接收到正确的类并配置这些类的实例。
E 子系统集成测试
要实现全自动化,TBGen必须不仅仅建立一个测试平台,它还必须创建或启用自动递归测试。子系统VIP开发人员可以在特定目录下创建名为integration_tests和integration_seqs文件夹,TBGen将找到这些文件夹,并自动将它们复制到测试平台的目录结构中,同一类型的所有序列和测试被放置在一个目录下,而从子系统VIP集成序列或测试文件夹会被放在一个文件夹中。
Cypress的VMS工具用来自动创建一个递归名单,VMS的开发是为了处理文件的编译,测试列表的创建和测试载入,关于如何做到这一点的详细信息不在讨论的范围之内。对于测试列表的创建,基本概念是,VMS可以遍历测试文件夹,并根据配置信息和文件夹结构确定测试名称,该测试的名称和配置信息相结合,构建适当的参数测试列表,一旦列表被创建,VMS将使用该测试列表,载入每一个测试。
F 生成内置寄存器包
Cypress的测试平台使用基于Mentor Graphics公司的集中式寄存器包,在子系统级别中,寄存器包生成是由SAS中寄存器对子系统描述驱动的;在SoC级,寄存器包生成是由SAS寄存器描述中对SOC中包含的子系统描述驱动的,因此描述用于生成相同的子系统的寄存器块可以在子系统和SOC中复用。
不同的设计参数可以导致子系统的寄存器块之间的差异。寄存器生成脚本由两个阶段操作处理这个问题,第一阶段读取一个给定的子系统SAS寄存器描述和设计参数;第二阶段,平面文件中的信息转换成实际字段,寄存器,寄存器块,寄存器映射类。如图10所示:
总结
TBGen借助必备验证IP库,提供了一个搭建SOC层次TB的自动化环境。它通过处理子系统测试实例和统一配置方式来实现,使用这个工具减少了创建新的SOC级测试平台的时间,此外,具有自动集成测试和VMS,SOC级测试平台的创建和递归测试可用两个简单的步骤来完成,启动TBGen并启动 VMS。虽然还需要额外的努力来为TBGen准备验证IP,但总体收益还是巨大的。
您可以在手机移动端同步关注订阅号“路科验证”。
如需转载请联系路科验证,并注明出处“路科验证”。