static function bit get(uvm_component cntxt,string inst_name,string field_name,inout T value);它的四个参数的定义与set大致一样,不同的是 前两个参数:就像是两个要去见面的朋友一样,比如一个人(set)从洛阳去另一个人(get)所在的西安。从洛阳到西安的路线(由cntxt和inst_name构成的层级路线)是绝...
config_db 是参数化的,它的类型可以是标量、类句柄、队列、列表,甚至是虚拟接口。通过uvm_config_db::set 和 uvm_config_db::get 函数进行全局存储和检索数据库中的信息。 二、set和get函数 1、set函数 set函数的原型为 staticfunctionvoidset(uvm_component cntxt, stringinst_name, stringfield_name, T valu...
在UVM中,`config_db`(配置数据库)就像一个邮局,你可以使用它来“寄信”(`set`操作)告诉邮局你家的地址(`input_if`接口)。然后,服务员(`my_driver`)会去邮局“收信”(`get`操作),得知派对的地址,这样他们就知道在哪里工作了。 这是对应到UVM代码的“寄信”和“收信”过程: 1. 寄信(Set: 在`top_tb`...
3.3调用uvm_config_db::set函数传递字符串变量: 3.4在另一个component,声明一个句柄,并调用uvm_config_db::get函数和from_name函数。 4.传递队列 传递队列和传递数组是一样的步骤。 总结:三种都是自定义一个类型,然后调用uvm_config_db::set函数等,有一个缺点,每次使用都是单一传递,变量值改变,就需要再次传递。
注1:在top module中通过config_db机制的set函数设置virtual interface时,set的第一个参数为null; 在这种情况下,UVM会自动把第一个参数替换为uvm_root::get(),即uvm_top; (2.1) set的第一个参数用以说明是哪个component对pre_num_max进行设置,通常是一个uvm_component的指针,一般使用填写this; ...
对于uvm_config_db来说,在调用get()函数检索数据库的时候,get()函数传递的{cntxt,”.”, inst_name}会作为uvm_re_match()的str的实参,set()函数设置的{cntxt,”.”, inst_name}在经过uvm_glob_to_re()处理后作为uvm_re_match()的实参,这也就是为什么set()参数的inst_name支持正则格式,而get()参数...
1.config_db::set 的第二个参数是字符串,经常出错,可以通过get_full_name 来获得。对driver 进行设置: 对sequence 某个参数设置,可以: 2.但在build_phase 时,整棵UVM 树还为形成,会引起空指针错误。要想这么做有两种方法: 1)都在new 中create
综上,uvm_config_db::set()和uvm_resource_db::set()是没有任何继承继承关系的。 从user的角度来讲,uvm_config_db::set/get是经常用到的。 第一个参数是uvm_component,所以一定要特别留心在sequence中参数设定的时候,这里不能是this,必须要是一个uvm_component的类型。
回到问题的核心,当我们调用set函数时,所设置的变量存储在哪里?答案在于uvm_config_db内部的m_rsc数组。这是一个由string作为键,uvm_resource#(T)作为值的静态键值对数组,以uvm_component为索引。这意味着,m_rsc数组实际上是一个以uvm_component为键,联合数组为值的结构,其中联合数组内部包含了...
UVM:3.5.7 config_db 机制对通配符的支持,config_db::set时,第二个参数都是完整的路径。还可以用通配符*:之前:可以把前两个set合并为一个set:可以进一步简化为:不推荐使用通配符,容易产生交互问题。