uvm_config_db与uvm_resource_db的区别(转载)

1. uvm_config_db与uvm_resource_db的区别与联系

(1) uvm_config_db是从uvm_resource_db派生而来的,它对uvm_resource_db的一些功能进行了扩展,这种扩展主要体现在对资源的写入和读取上.

(1.1) 在资源的写入操作上,它重载了uvm_resource_db的set函数;

(1.2) 在资源的读取操作上,它新建了一个称为get的函数;

(2) uvm_resource_db虽然也是一种用来共享数据的类,但是层次关系在该类中没有作用; 与uvm_config_db相比,尽管uvm_resource_db也有内建的数据库,可以通过字符串或类型来索引配置数据,但缺点是层次的缺失和因此带来的自顶向下的配置覆盖关系的缺失.

(2.1) uvm_resource_db采用的是”last write wins”,即对同一配置,最后的写入有效;

(2.2) uvm_config_db采用的是”parent wins + last write wins”(假设在env中已经有配置,而test的级别高于env).

(3) uvm_config_db与uvm_resource_db共享同一套database; 因此可能会出现通过uvm_config_db::set()往database中存入信息,但用uvm_resource_db::read_by_name()从database中读取信息;

2. 选用uvm_resource_db还是uvm_config_db

(1) 选取uvm_resource_db还是uvm_config_db取决于当前的setting是否需要考虑层次信息;如果会考虑层次,则采用uvm_config_db; 如果不考虑层次,则应该使用uvm_resource_db;

原文链接:篇5-uvm_config_db与uvm_resource_db的区别 - 蚕食鲸吞 - 博客园 (cnblogs.com)https://www.cnblogs.com/csjt/p/15556969.html


config_db::set一共有4个参数。

    a. 头两个参数的作用是合起来形成一个范围,只有在这个范围内的单位才可以通过config_db::get来获得我们set的东西。

    b. 第三个参数是我们自己瞎起的一个名字,就是个string型的标签,到时候系统在执行config_db::get的时候,就依据我们起的这个名字以及我们规定的类型(在这里类型就是virtual DUT_if)来在资源池里找我们要的东西。

    c. 第四个参数就是我们正儿八经要放进资源池的东西,我想应该就是放了个地址进type表和name表里面。

原文链接:第三段:uvm_config_db与uvm_resource_db分析(二次更新)_年糕的博客-CSDN博客https://blog.csdn.net/qq_16064553/article/details/110240808
————————————————
版权声明:本文为CSDN博主「吃辣椒的年糕」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_16064553/article/details/110240808


个人积累:

  1. config_db与resource_db区别;

config_db_set只能set给UVM树(sequence),set给sequence时,需要采用(null,*,“XX_seq_cfg”,“XX_seq_cfg”);sequence的get采用(null,$sformat(get_full_name()),“XX_seq_cfg”,“XX_seq_cfg”)

如果在顶层想给XX_agent_cfg(uvm_object)传递参数,需要采用resource_db;

2、uvm_resource_pool,它里面就是两个放资源的联合数组。一个按名字排的,一个按类型排的。

简言之,get的时候会比较按名字查找到的资源与按类型查找的资源是否一致,只有一致才能个月到;

整个调用uvm_resource_db中set的过程,就是一层层往下调用最后往整个工程所共用的两张资源表里面放东西的过程。


  1. uvm_config_db extends uvm_resource_db
  2. uvm_config_db如果有多个set,则按照“父获胜,同一层次内最后写入获胜”的顺序,而uvm_resource_db直接按照"最后写入获胜"的顺序。uvm_config_db更便于在test中更改配置(假设在env中已经有配置,而test的级别高于env)。
  • 3
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值