路科验证(Rocker IC)专注于验证系统思想和前沿工程资讯,拥有一支活跃的技术原创团队,著有《芯片验证漫游指南》一书,致力为高校微电子相关专业学生与IC从业人员提供技术食粮。 您可以在手机移动端同步关注微信订阅号“路科验证”或是登录网页www.rockeric.com了解更多资讯。如果您需要联系我们,请发送邮件至 rocker.ic@vip.163.com 。

SV及UVM高级话题篇之五(终):OVM与UVM的混合仿真(续)

上一篇 / 下一篇  2018-06-29 19:08:48 / 个人分类:验证系统思想

XVM

对于上面的两种方法,都有一些不足,例如UMV-ML尽管照顾了多种语言和方法学的交互,然而确为此不得不将C作为中间的数据中转站,这也使得语言之间的资源开销较大;而对于OVM兼容层的思想,由于需要OVM原生的方法行为与UVM对应的方法并不是严格一致的,这就增加了后期在OVM兼容层上调试OVM代码的难度,同时在OVM兼容层的照顾下,仍然需要修改一部分已经废止掉的OVM代码使其与UVM代码习惯保持一致。


在这个背景下,同样来自于Intel公司的Mohamed Elmalaki提出了XVM的理念,并且成功在项目中应用。该思想也借鉴了UVM-ML,并且由于照顾的只是OVM与UVM的兼容,因此并不需要额外依靠C来做数据转换适配,而是通过开发一个小型的数据适配包XVM来实现OVM与UVM真正地在仿真环境中并存,进行真•混合仿真。虽然XVM的包暂时没有被开源出来,但路桑希望通过分享这一思想,使得读者有实践经验可以参考,并考虑将这一思想运用到自己所处的OVM、UVM混合仿真中去。




首先来看一看,OVM与UVM的组件如何实现共存呢?下面是一个例子,该环境的顶层是OVM,而例化了一个UVM的组件在其中。XVM的核心思想是,“尘归尘,土归土”,OVM与UVM的组件在例化中,应该属于不同的层次结构。下面的ovm scoreboard的顶层是soc_env(OVM),而uvm monitor尽管也在soc_env中例化,但它无法挂靠在一个OVM组件上,因此它选择了全局的静态变量xvm_pkg::xvm_uvm_parent。






这种方式使得OVM与UVM的组件看似共存在一个顶层下面(OVM顶层或者UVM顶层),但实际上它们无法保持混合的结构方式,即OVM组件无法将UVM环境作为自己的parent,UVM组件也无法将OVM环境作为自己的parent。因此上面例码中的xvm_pkg::xvm_uvm_parent的定义如下:




在解决了组件层次的问题之后再来考虑如何开始仿真的问题。XVM提供的开始仿真的方式可以完成下面要素:

  • 启动UVM的phase调度器(scheduler)。

  • 启动OVM的phase调度器。

  • 同步OVM与UVM之间的phase。





我们在之前的《UVM世界观篇》中就介绍了UVM的各个phase,而这些phase与OVM的phase通过XVM实现了同步。XVM实现的同步时两种方法学调度器之间的同步。



在保证了OVM与UVM之间的phase同步,使得它们都在同一起跑线出发之后,还需要考虑OVM与UVM组件之间的通信问题。读者已经知道OVM与UVM的组件不能直接相见,隔窗而望的同时还要保持克制,以免发生意外。因此,XVM也提供了中间的TLM缓冲通道,该缓冲通道可以实现从OVM到XVM到UVM,或者从UVM到XVM到OVM的数据传输。




下面的例码即是利用XVM的缓冲桥,实现不同方法学组件之间的通信:



因此从上述对XVM的主要实现来看,它通过数据中转同步的方式(基于SV),实现了OVM与UVM的混合仿真:

  • 通过OVM与UVM的独立顶层,实现了双方的组件互补依赖,各自保持独立的层次关系。

  • 保证OVM与UVM环境在各个phase阶段的同步。

  • 通过中间数据缓存区,实现了OVM与UVM组件的数据同步。


到此,我们已将SV和UVM相关的高级话题介绍完毕,尽管还有不少的遗珠可以考虑为路粉们做介绍,然而顾及到二八原则,我们在本书的第一版中主要以满足UVM的新手和日常实际问题为主。本书的十八掌经历了一年三个月,也就可以打完收工告一段落了。手机阅读不便于记笔记、做练习,路粉们也可以期待本书的早日出版,尽早结束每周的追新。而对于本书的内容,路桑仍不免对其不完美的地方惴惴不安,因此也在编校第一版的同时下了决心,伴随着功能验证技术的日新月异,我们本书的内容也会做出后续的更新,比如说第二版。至于十八掌后还有没有十九章,想有还是会有的,路桑也会精心策划我们后续的章节,并作为本书第二版的内容基础。


谢谢你对路科验证的关注,也欢迎你分享和转发真正的技术价值,你的支持是我们保持前行的动力。





TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

路科验证

路科验证

路科验证(Rocker IC)专注于验证系统思想和前沿工程资讯,拥有一支活跃的技术原创团队,为高校微电子相关专业学生与IC从业人员提供技术食粮。 您可以在手机移动端同步关注微信订阅号“路科验证”。如果您需要联系我们,请发送邮件至 rocker.ic@vip.163.com 。

日历

« 2018-11-15  
    123
45678910
11121314151617
18192021222324
252627282930 

数据统计

  • 访问量: 185380
  • 日志数: 248
  • 建立时间: 2016-06-25
  • 更新时间: 2018-09-10

RSS订阅

Open Toolbar