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

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

日志

uvm_config_db在UVM验证环境中的应用

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

如何在有效的使用uvm_config_db来搭建我们的uvm验证环境对于许多验证团队来说仍然是一个挑战,一些验证团队完全避免使用它,这样就不能够有效利用它带来的好处,另一些验证团队却过多的使用它,这让他们的验证环境变得不稳定,本篇论文,我们讨论如何简单有效平衡的在我们的验证环境中使用uvm_config_db,让它为我们的验证环境贡献最多的力量,却又不会成为我们验证环境的累赘

接下来我们通过三部分来进行阐述:

  1. uvm_config_db的使用方法

  2. uvm_config_db的作用对象

  3. uvm_config_db的具体应用


第一部分:uvm_config_db的使用方法

uvm_config_db作用是把验证环境的一些资源配置为类似全局变量一样,使得它对于整个验证环境来说是可见的,最常见的是我们在验证环境顶层通过它对一些组件进行配置,组件可以在建立的阶段读取这些配置实现组件不同工作模式的切换,下面是使用uvm_config_db的语法


在以上两个函数set和get是我们使用它时要调用的函数,set表示把我们要处理的资源放进全局可见的数据库,get表示从全局可见的数据库输出我们需要的资源,使用set和get函数时有五个参数需要我们指定,第一个是uvm_config_db类的参数#(T),T表示我们要set或get的资源的类型,它可以是虚拟接口,sequencer等等,第二个cntxt和第三个参数inst_name一起定义了uvm_config_db中set或get函数的作用范围,第四个参数决定了是对作用范围中的那个对象或变量进行操作,第五个参数value会存储当前操作对象的句柄或着操作变量的值,需要注意的是当我们指定的第二个参数是一个uvm组件时,uvm会用它的全局名字去替换它,而全局名字会通过uvm的get_full_name去获得。


第二部分:uvm_config_db的作用对象

在uvm验证环境中并不是所有的资源我们都会用uvm_config_db去配置,这样会让我们的验证环境变得不可维护,下面是一些典型的在验证环境中使用uvm_config_db去配置的资源:

  • 虚拟接口,虚拟接口提供了一个访问真实虚接口的入口,我们会把虚拟接口的句柄放到我们全局的数据库中,uvm中的这些组件会通过get函数拿到虚拟接口的句柄对接口数据进行操作

  • 配置数据,负责配置环境的类中包含许多可以控制验证环境的变量,它会改变这些变量,并且通过set函数把它放到我们全局的数据库中,其他的组件通过get函数来取到这些变量的值,再根据这些值去改变工作模式

  • sequencers,在uvm中sequencers负责把我们写的sequence进行排队送到driver上去,所以sequence需要有对sequencer的访问入口,我们同样通过uvm_config_db的方式来把sequencer的句柄传给sequence


第三部分:uvm_config_db的具体应用

上图是我们一个设计实例,下面我们来介绍针对上图的实例我们怎么来应用uvm_config_db,首先我们把上图中可以配置的资源用一张更清晰的表列出来,如下:

在上面的表中,一种有四列,分别列出了五个接口的描述,类型,传送的数据类型以及它们自己唯一性的名字,下面我们把它对应到uvm_config_db的调用函数set和get中,对于第二列type类型,我们会把它放入uvm_config_db的第一个参数#(T)的位置,表示我们处理的数据类型是axi_if,如下图:

而对于第三列,transaction是在配置srquencer时要指定的传送类型,然后再把sequencer放到全局数据库中去,如下图:

对于identifier这一列会被放在前面语法解析部分中的inst_name部分,这一列的名字要求是唯一的,但是如果接口或者sequencer的类型不同,则允许重复,例如如果都是axi_if类型,那么要求名字必须具有唯一性,因为它们处于同一个数据库(axi_if数据库)中,而如果一个类型是ahb_if,另一个是axi_if,则不要求唯一性,因为它们处于不同数据库的区域中。


上面为了能够更清楚的展示细节,所有的identifier都是用字符串,但在实际项目中为了以后的复用,我们会考虑定义一个package文件,把所有的identifier都用一个全局变量代替,这样方便以后维护,具体如下图:

配置interface到全局数据库

配置sequencer为默认sequencer


配置发送数据波形可见

总结

本篇论文详细介绍了uvm_config_db在uvm验证环境中的应用(interface,config,sequencer),它的使用可以极大的方便我们对一些需要全局可见的变量或类的处理,让我们能够更容易的去管理验证环境中的一些组件,也在一定程度上方便了构建测试激励的验证人员,他们无须关注验证环境的细节便可以构建测试场景对设计行为进行验证




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

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


Easy uvm_config_db use.pdf(711 KB)


点赞

评论 (0 个评论)

facelist

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

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

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 253

    粉丝
  • 25

    好友
  • 33

    获赞
  • 45

    评论
  • 访问数
关闭

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

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

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

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