如有错误或疑问,欢迎留言,我将尽力回答!共同学习,共同进步!

一、uvm_config_db的用途大概有如下三种:

*(1) 传递virtual interface到环境中;**(2) 设置单一变量值,如int.string.enum等;**(3) 传递配置对象(config object)到环境中。*

二、在使用uvm_config_db的配置方法时,下面给出一些建议:

· 在使用set/get方法时,传递的参数类型应当上下保持一致。对于uvm_object等实例的传递,如果get类型与set类型不一致,应当首先通过$cast()完成类型转换,再对类型转换后的对象进行操作。

· set/get方法传递的参数可以使用通配符“*”来表示任意的层次,类似于正则表达式的用法。同时,用户需要懂得“*.comp1”与“*comp1”的区别,前者表示在目前层次之下所有名字为“comp1”的组件,而后者表示包括当前层次及当前层次以下的所有名为“comp1”的组件。

· 在module环境中如果要使用uvm_config_db::set,则传递的第一个参数uvm_component cntxt用来表示当前的层次,由于当前层次为最高层,所以用户可以设置为null,也可以设置为uvm_root::get()来表示uvm_root的全局实例。

· 在使用被配置变量时,应当确保先进行了uvm_config_db::get的操作,获得了正确的值以后再使用

· 应当尽量确保uvm_config_db::set方法在其相关配置组件创建前调用。这是因为只有先进行了配置,其相关组件在例化时进入build phase,可以得到期望的值。

· 对于同一实例组件的同一个变量,如果有多个上层组件对该变量进行设置时,更上层组件的配置会覆盖低层的配置;但是如果是同一个层次组件对该变量进行多次配置时,应该遵循后面的配置会覆盖前面的配置。

· 用户应该在使用uvm_config_db::get()方法时,添加便于调试的语句,来通过UVM信息打印得知get方法的变量是否从uvm_config_db获取,如果没有获取,是否需要采取其它的措施。

三、接口的传递

接口的传递从硬件世界到UVM环境中的传递可以通过uvm_config_db来实现。在实现过程中需要注意几点:

1、接口的传递应该发生在run_test()之前。这保证了在进入build phase之前,virtual interface已经传递进入uvm_config_db中。

2、 用户应当把interface与virtual interface的声明区分开来。在传递过程中的类型应当为virtual interface,即实际接口的句柄。

3、在使用uvm_config_db API set/get时,实际发生了如下的后台操作 uvm_config_db::set通过层次和变量名,将这些信息放置到uvm_pkg唯一的全局变量uvm_pkg::uvm_resources。

全局变量uvm_resources用来存储和释放配置资源信息(resource information)。uvm_resources是uvm_resource_pool类的全局唯一实例,该实例中有两个resource数组用来存放配置信息,这两个数组中一个由层次名字索引,一个由类型索引,通过这两个关联数组可以存放任意个通过层次配置的信息。同时,底层的组件也可以通过层次或者类型来取得高层的配置信息。这种方式也完成了信息配置与信息获取的剥离,便于调试和复用。

在使用uvm_config_db::get方法时,通过传递的参数构成索引的层次,然后在uvm_resource已有的配置信息池中索引该配置,如果索引到,方法返回1,否则为0。

四、uvm_config_db如何使用?

uvm_config_db#(int)::set(this, “env.i_agt.drv”, “pre_num”, 100);

set寄信,get收信。

后面有四个参数:对于set而言:第一个和第二个参数联合起来组成目标路径,与此路径符合的目标才能收信。

第一个参数必须是一个uvm_component实例的指针,第二个参数是相对此实例的路径。

第三个参数表示一个记号,用以说明这个值是传给目标中的哪个成员的,第四个参数是要设置的值。

uvm_config_db#(int)::get(this, “”, “pre_num”, pre_num);

get而言:四个参数中,第一个参数,通常可以为 “this”, "null"等实例的指针。

第二个参数,可以为空“”, 也可以用通配符,如截图中的例子,”*yy_agent" “yy_agent.drv”

set 与get的第一个到第三个参数“寄信”与“收信”要符合两个条件:时间的匹配,一定是先寄信再收信,为了避免出错,一般get前最好加判断,2 标记一致,也就是邮件目的地是匹配的。

第四个参数,往往是具体要接收的参数,或者说句柄。

【UVM理论】uvm环境中对uvm_config_db的理解相关推荐

  1. UVM环境中reset复位的处理

    文章目录 前言 一.单独处理reset复位信号 1.1 复位agent的实现 1.2 复位transaction和interface 1.3 environment 1.4 复位sequence 1. ...

  2. [UVM]UVM环境中的clock agent方案

    UVM环境中的clock agent方案 摘要:在验证环境中,我们通常需要多个不同频率的时钟,为了能方便的产生所需时钟,我们可以开发一个clk_agent,通过config来指定频率,通过interf ...

  3. 验证环境中的program为什么必须是automatic

    最近在项目中,发现验证环境中的顶层的program(一般将program作为验证环境的入口),都是automatic的. 其实Program默认是static的,那么为什么需要把验证环境做成autom ...

  4. 2-Entity RANSAC:在变化的环境中进行稳健的视觉定位

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 摘要 视觉定位由于其低成本和稳定的传感器而受到广泛关注, 这在许多 ...

  5. centos7 搭建本地git_本地服务调用K8S环境中的SpringCloud微服务实战

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:原创文章分类汇总及配套源码,涉及Java.Docker.K8S.Devops等 下图是典型的微 ...

  6. 生命如何在复杂环境中生存?信息、调控和几何结构的交织

    来源:集智俱乐部 作者:Jürgen Jost 译者:十三维  编辑:邓一雪  导语 生物有机体生活在复杂的环境中,同时受到环境的促进和限制.比如在三维几何空间中,DNA一维的线性结构更有利于信息存 ...

  7. 理论与实践中的CNN模型结构,如何引领深度学习热潮

    摘要: 深度学习是指多层神经网络上运用各种机器学习算法解决图像,文本等各种问题的算法集合.卷积神经网络(CNN)是深度学习框架中的一个重要算法,本文介绍了CNN主流模型结构的演进过程,从一切的开始Le ...

  8. 计算机技术在环境中的好处,浅谈计算机技术在德育现代化中的作用

    文/黄小燕 计算机技术作为现代教育教学手段,作为各类教育的支持服务系统,由于它具有大规模.多样化.高效力.实践性和灵活性强的特点.具有区别于其他教育方法的独特优势,其在现代德育活动中有着十分不可或缺的 ...

  9. 交互式电子杂志_交互环境中电子杂志的生存发展探析

    [摘要]自1995年3月我国第一份电子杂志--<电子信息与通讯网络杂志>在上海面世以来,我国的电子杂志已经发展了15年.在此期间,电子杂志经历了三代形态变化,即邮件列表形态.传统杂志数字化 ...

最新文章

  1. 知道为啥失败么?87%的机器学习项目都是这么栽了的……
  2. 关于C#应用的授权认证
  3. 让你的eclipse插件只下载一次
  4. cubase怎么添加midi设备_WIDI MASTER:5针无线蓝牙MIDI适配器
  5. Python Matplotlib 画图显示中文
  6. PMCAFF问答龙虎榜,大神云集,等你挑战
  7. LVS峰会 | 阿里云李刚:下一代低延时的直播CDN
  8. hdu 2196 叶子节点最长距离(树DP)
  9. Python 字符串操作基础
  10. 滑雪(信息学奥赛一本通-T1280)
  11. java如何排除多余的依赖_Maven依赖排除 禁止依赖传递 取消依赖的方法 去除jar包中的不想要的依赖关系...
  12. python operator.itemgetter
  13. ajax跨越html,ajax跨域的解决方案
  14. 使用matlab编写协方差矩阵计算矩阵
  15. 基于spring cloud + nacos + gateway + ssm+的学生管理系统
  16. 半透明导航栏css代码,纯CSS实现的紫罗兰风格导航条效果代码
  17. 解决maven打包 无法加载本地lib/下的jar包问题(程序包XXX不存在)
  18. Linux虚拟机无法联网问题解决
  19. 【数据库系统】第一部分 数据库基础(3) 关系数据库标准语言SQL(7) 视图
  20. STM32单片机蓝牙APP手势语音温控电风扇落地扇人体感应

热门文章

  1. rust石墙掉耐久_植物大战僵尸英雄锈铁螺栓新手卡组推荐 rustbolt多手牌陷阱恢复后期流卡组...
  2. V3S移植nes游戏模拟器(附带游戏合集)
  3. XiaoMi手机MIX 2S线刷固件和刷入Recovery、Root
  4. 基于MATLAB的变速故障信号仿真代码
  5. club.topsage.com内容收集
  6. 设计一个算法的方法论
  7. 第五、六周--实验作业
  8. windows游戏命令行
  9. 结构化思考与表达之“金字塔原理”
  10. mini2440的pwm驱动程序和测试程序详解