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

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

日志

多种语言混合验证解决方案

已有 1446 次阅读| 2017-7-22 22:00 |个人分类:验证前沿资讯|系统分类:硬件设计

在一款芯片的验证过程中,根据不同的模块和不同的抽象阶段,经常会使用不同的验证语言,这就使得在验证过程中免不了处理多种语言交叉验证的问题 ,如在一个项目的验证过程中,我们可能会用到Systemverilog,SystemC,C++,e等等,它们分别基于不多种同的验证思想,有UVM,VMM,C++类,怎么把这些基于不同验证思想的组件合理的组合到一起,让他们在顶层环境中发挥应有的作用,对于我们的IP验证人员是一个不小的挑战,针对这个问题,我们一起来看一个可行的解决方案
它的名字叫做UVM-ML OA(Multi-Language Open Architecture),从它的名字上面你也可以看出来,它的底层基于UVM验证方法学的,我们先来看看它可以使用在哪些方面:
一、VIP(Verification IP)的垂直方向上的复用,下面我们给出一个复用的例子,在这个例子中我们的子系统和系统完全是用不同的验证语言来实现,而我们把这样的两个系统放在一起使得我们的一些配置文件,测试激励,同步机制等等势必会穿越两个系统的边界进行作用,如下图所示:二、兼容不同抽象等级的DUT,在我们验证前期,当DUT基本功能还不完善的时候,我们一般会用SystemC语言来构建一个具有DUT功能的模型,根据它来进行验证环境的搭建与调试,而我们真实的DUT使用Verilog或者VHDL语言实现的,这就要求我们的验证环境要对Verilog/VHDL和SystemC语言同时兼容,这就要求我们的验证环境要有多语言的处理能力,这时我们会在验证环境中利用TLM(Transaction-Level Modeling)接口让我们的验证环境对DUT的抽象等级没有那么敏感来实现多语言兼容,如下图:
三、兼容硬件加速验证环境,有时为了加快仿真速度我们会把我们的DUT综合后放在FPGA的板子上去跑仿真,这时我们的BFM以及我们的TB也会包含在里面,在它周围会有一个特殊的软件层来当作中间层,负责传递软件发送的数据到我们的FPGA板子上去,具体如下图:
四、基于软件的覆盖率验证,为了验证我们的DUT能够在现实情况中正常运作,我们会在顶层通过软件方式给DUT输送测试激励,在这种情况下软件部分为一种语言,硬件部分为另一种语言,让软件部分和硬件部分能够顺利发挥作用,一个有意义的多语言验证平台不可或缺
对于多语言验证平台,仿真器的支持也是不可或缺的,对于仿真器部分,Cadence,Synopsys,Mentor的仿真器也都支持不同语言之间的交互,这里不多赘述,具体请参考原文或仿真器文档,了解了UVM-ML OA的应用环境后,我们来看看它的具体实现,下面是它的结构图:
UVM-ML OA的核心是一个backplane库,它就像一个路由一样存在在不同验证语言构成的验证VIP中间,这个拓扑结构中所有的信息对它来说都透明的,它允许任何两个验证VIP进行交互,而且这种交互是在忽略每个验证环境内部抽象等级的基础上,?。也就是说,一个系统级的环境完全可以模块级的验证环境自由沟通,在这个系统中的通信方式无非以下几种:
  1. 各个Framework给backplane提供自己的信息,以供全局传输
  2. 传递信息但从一个framework到另一个framework
  3. 点对点的通信,例如transaction
对于以上及几种方式,任何传递的信息对backplane来说都是透明的,它负责两点之间的通信,而且不需要验证人员做任何的集成工作,但是由于好多语言最初的设计目的都不是服务于多语言系统的,为了能够统一管理测试激励的仿真情况,所以我们需要做一些改变来让他们可以正常通信,在我们的UVM-ML OA系统中包含一个UVM-SC的库,它是由一些C++的类构成的,它以SystemC为基础,加入了UVM的验证方法的概念:标准的测试组件,配置文件,加入了回掉,全局资源池,引入了factory机制等等,这些使得SysteC可以放在更顶层的位置去做验证,也使得SystemC 的framework与UVM的通信变得更加方便,有了通信的基础,我们要做的是通信的媒介,也就是上图的ML-Adapter,它负责链接各自的Framework到我们的中心库UVM-ML backplane,它提供了一个抽象层来翻译信息确保两侧的无缝连接,目前对于backplane支持具体操作有:初始化和注册framework(没有数目限制),各个framework同步的pre-run,run,post-run,基于TLM的通信,测试激励建立和初始化阶段的配置,仿真阶段的同步,全局资源的共享,下面是build阶段的运行图:
至此,UVM-ML OA可以完成基本的功能运行,下面是一个实际中的例子,它的顶层是基于SystemVerilog的测试平台common_subsystem_tb,包含一个抽象模块common_subsystm_top和两个接口host_if和common_if:下面是一个SystemC和顶层软件之间的抽象层,其他更多源代码请参考原文
本文在复用的角度上描述了对于多种语言验证环境中存在的问题以及解决方法,介绍了一种集成多种不同验证语言构成环境的方法,让我们可以以最小的成本来实现资源利用最大化,节省我们宝贵的验证时间。

点赞

评论 (0 个评论)

facelist

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

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

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 253

    粉丝
  • 25

    好友
  • 33

    获赞
  • 45

    评论
  • 访问数
关闭

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

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

GMT+8, 2024-4-26 13:26 , Processed in 0.016096 second(s), 12 queries , Gzip On, Redis On.

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