自动创建SOC测试平台

本文转自:http://www.eetop.cn/blog/html/28/1561828-437620.html

复用对于测试平台的开发和部署是非常重要的,我们经常谈论复用验证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,但总体收益还是巨大的。

### SoC 测试方法概述 在系统级芯片(SoC)的设计过程中,测试扮演着至关重要的角色。为了确保设计的质量和可靠性,必须采用多种有效的测试策略和技术[^1]。 #### 功能验证 功能验证是SoC测试的核心部分之一。通过创建详细的测试计划并执行各种类型的仿真来覆盖不同的操作场景,可以有效地发现潜在的功能缺陷。这通常涉及到编写激励向量、预期响应以及检查实际输出是否符合预期的行为模型。 #### 自动化回归测试 自动化工具被广泛应用于SoC开发流程中的持续集成环境中。这些工具能够自动运行大量预定义好的测试案例,并快速反馈任何新引入的问题给开发者团队以便及时修正错误。此外,在每次修改源代码之后重新进行全面的回归测试也是必不可少的操作,以保证现有功能不会因为新的改动而受到影响。 #### 形式验证 形式验证利用数学逻辑证明电路满足特定属性的能力来进行深层次分析。这种方法不需要依赖具体的输入数据集就能评估整个状态空间下的正确性,因此对于某些难以用传统手段完全检验的情况特别有用处。然而,由于其计算复杂度较高,目前主要适用于较小规模或者具有高度规律性的模块上。 ```python def run_formal_verification(module_specification, property_to_check): """ 运行形式验证过程 参数: module_specification (str): 模块规格说明路径 property_to_check (list of str): 需要验证的性质列表 返回: bool: 如果所有指定性质都成立则返回True;否则False """ result = True # 假设初始状态下所有的性质都是正确的 for prop in property_to_check: if not check_property(module_specification, prop): print(f"Property {prop} failed.") result &= False return result ``` #### 物理层测试 除了上述软件层面的方法外,物理特性同样需要经过严格检测才能确认最终产品能否正常工作于目标应用场景之中。这类测试可能包括但不限于信号完整性测量、功耗估算等实验活动,它们往往借助专业的仪器设备完成,如示波器、频谱仪等等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值