路科验证的个人空间 https://blog.eetop.cn/1561828 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

自动创建SOC测试平台

已有 2766 次阅读| 2016-7-31 16:20 |个人分类:验证前沿资讯

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





您可以在手机移动端同步关注订阅号“路科验证”。

如需转载请联系路科验证,并注明出处“路科验证”。


Automatic SOC Test Bench Creation.pdf(757 KB)


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 253

    粉丝
  • 25

    好友
  • 33

    获赞
  • 45

    评论
  • 访问数
关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-20 23:02 , Processed in 0.021065 second(s), 11 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部