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

天哪!竟然还有UVM寄存器模型的隐藏剧情

上一篇 / 下一篇  2018-12-01 20:45:49 / 个人分类:验证前沿资讯

rockeric.com

不少路粉对寄存器模型的使用可能还停留在这个阶段:

也就是说,通过寄存器句柄,配合读写指令,即可完成一次总线上的访问。

当然,你也可以通过指定BACKDOOR,来做后门访问。这两种方式在红宝书中,我们都已经详细介绍过了。今天路桑再来介绍一点儿不一样的,针对一些特殊的寄存器,有的时候这个寄存器可能是未映射的、非线性连续的,又或者需要通过BURST模式才能访问,总之无法通过一次SINGLE总线数据传输完成读写,这个时候,我们就可以考虑采用自定义的前门序列来实现了。


所以,今天路桑带来了一篇DVCon 2017的论文,Doing Funny Stuff with the UVM Register Layer: Experiences Using Front Door Sequences, Predictors, and Callbacks,来自于Dolous的John Aynsley,来深入谈一谈如何使用自定义的register sequence,来完成前门以及后门访问。



自定义前门访问序列

从这张图上可以看到,原有的前门访问是通过将寄存器级别的操作类型经过adapter转换为了总线级别的transanction,或者利用其反向路径完成转换,作为响应数据交回给寄存器模型一侧。当我们无法通过在adapter中使用bus transaction,而是需要通过多次bus transaction的组合来完成一次复杂的寄存器访问时,我们就可以使用用户自定义的寄存器前门序列,下面给出一段代码。


其中,rw_info是uvm_reg_item类型,是uvm_reg_frontdoor的成员变量,该对象包含着用来读写的目标uvm_reg的信息,譬如rw_info.kind为读写类型,rw_info.value表示读写数据,rw_info.status表示访问状态。在下面这个例子中,即是通过寄存器模型中的一个“虚拟寄存器”,其内容非连续分布在DUT中。因此,对于该寄存器的一次读写操作,实际上需要转换为两次读或者写操作,才可以通过两次访问非连续的地址,对其中片段数据完成操作才最终实现了该“虚拟寄存器”的读写操作。


其中task one_transaction的定义很直观:


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-12-11  
      1
2345678
9101112131415
16171819202122
23242526272829
3031     

数据统计

  • 访问量: 198131
  • 日志数: 268
  • 建立时间: 2016-06-25
  • 更新时间: 2018-12-09

RSS订阅

Open Toolbar