uvm_config_db的全称是configuration database,它是建立在 uvm_resource_db 之上的便利层,resource database储存的是与scope字符串相关联的name-value对(如下图所示) 。uvm_config_db可以将scope字符串与组件层次结构中的完整层次结构名称相关联,这样就可以通过组件层次来更加方便地访问数据库的条目(储存的信息)...
uvm_config_db可以将scope字符串与组件层次结构中的完整层次结构名称相关联,这样就可以通过组件层次来更加方便地访问数据库的条目(储存的信息)。 config_db 是参数化的,它的类型可以是标量、类句柄、队列、列表,甚至是虚拟接口。通过uvm_config_db::set 和 uvm_config_db::get 函数进行全局存储和检索数据库中的信...
uvm_config_db#(virtual my_if)::set(null, "uvm_test_top", "vif", input_if); 2. 收信(Get): 在`my_driver`或其他UVM组件中,他们在开始工作之前会通过`uvm_config_db#(...)::get(...)`来“收信” - 即查找并获取接口实例的地址。 // 在my_driver中 - 收信 virtual my_if vif; if (...
这里我们知道set的内容放到了一个键值对联合数组m_rsc里了,由于这个键值对联合数组是一个static类型,所以通过uvm_config_db类都可以访问,并且这个键值对联合数组在set函数里就已经做了优先级替换的判断了,于是这就回答了我们上面提出的第一个问题。 剩下的get函数无非就是到键值对联合数组里取值,就比较简单了。 至...
1.config机制成对出现 1.1 简单示例 如在某个case(派生自uvm_test)的build_phase中可以做如下设置: 1uvm_config_db#(int)::set(this,"env.agent.driver","pre_num_max",100); 那么在driver的build_phase中需要: 1uvm_config_db#(int)::get(this,"","pre_num_max",pre_num_max); ...
综上,uvm_config_db::set()和uvm_resource_db::set()是没有任何继承继承关系的。 从user的角度来讲,uvm_config_db::set/get是经常用到的。 第一个参数是uvm_component,所以一定要特别留心在sequence中参数设定的时候,这里不能是this,必须要是一个uvm_component的类型。
uvm_config_db#(virtual my_if)::get(this, "", "vif", vif) 在以上两个函数set和get是使用它时要调用的函数,set表示把要处理的资源放进全局可见的数据库,get表示从全局可见的数据库输出需要的资源,使用set和get函数时有五个参数需要制定,第一个是uvm_config_db类的参数#(T),T表示要set或get的资源的...
UVM config_db set/get配置方式 class my_env extends uvm_env; ... function void build(); ahb_cfg = ahb_config::type_id::create("ahb_cfg"); ahb_cfg.width = 16; // set additional fields uvm_config_db#(ahb_config)::set( this,"ahb_agent","ahb_cfg",ahb_cfg); ...
uvm_config_db#(int)::set(this,”env.agent.driver”,”pre_num_max”,100); 那么在driver的build_phase中要这样做: uvm_config_db#(int)::get(this,””,”pre_num_max”,pre_num_max); 这样,设置的pre_num_max的数值100就会传递给driver的pre_num_max。
get()和set()是用于从uvm_config_db存储或检索信息的主要方法。任何验证组件都可以使用set()方法为config_db存储一些配置信息,还可以控制哪些其他组件对相同信息具有可见性。可以将其设置为具有全局可见性,或者仅对一个或多个特定测试平台组件可见。get()函数从数据库中检查与参数匹配的共享配置。