读UVM源代码(三)uvm_config_db与uvm_resource_db 弄UVM的验证工程的过程种,发现之前 resource这块学得不到位,来这补充一下,先补充uvm_config_db,就拿我自己那个工程的代码来举例子说明uvm_config_db是怎么用的。我的工程中主要是对virt… 花火同学发表于花火同学的...打开...
使用uvm_resource_base或uvm_resource来set/get resource时,往往需要多行code才能实现,uvm_resource_db则提供了一组接口,用一行代码实现resource set/get。其提供的主要接口如下。 uvm_resource_db支持debug trace功能,在命令行仿真选项中+UVM_RESOURCE_DB_TRACE,每一次调用uvm_resource_db进行resource读写访问是都会...
1.在testbench中例化了interface,然后通过config_db::set来把interface这个样的一个virtual interface放进resource_pool里面,resource_pool也就是两张表。放起来的目的是为了让需要使用virtual interface的component可以获取这个virtual interface。 module tb; reg clk; always #10 clk =~ clk; DUT_if _if (clk); ...
uvm_resource_db#(T)这个独⽴的类型进⾏封装⼀次,然后注册到pool中 1.typedef uvm_resource #(T) rsrc_t;定义了t型资源,本资源是⼀个resource_base type 2.static function rsrc_t get_by_type(string scope);调⽤resource_base的rsrc_t::get_by_type(scope, rsrc_t::get_type());函数实现...
(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()往data...
(1)uvm_config_db是从uvm_resource_db派生而来的,它对uvm_resource_db的一些功能进行了扩展,这种扩展主要体现在对资源的写入和读取上. (1.1) 在资源的写入操作上,它重载了uvm_resource_db的set函数; (1.2) 在资源的读取操作上,它新建了一个称为get的函数; ...
if(!uvm_resource_db#(bit)::read_by_name(get_full_name(),"control",ctrl)) 46 `uvm_fatal(get_type_name(),"read_by_name failed for resource in this scope"); 47 if(ctrl)my_comp=mycomponent#(8)::type_id::create("my_comp",this); ...
在使用uvm_config_db::get方法时,通过传递的参数构成索引的层次,然后在uvm_resource已有的配置信息池中索引该配置,如果索引到,方法返回1,否则为0。 在使用set/get方法时,传递的参数类型应当上下保持一致。对于uvm_object等实例的传递,如果get类型与set类型不一致,应当首先通过$cast()完成类型转换,再对类型转换后的...
相比uvm_resource_db,uvm_config_db增加了层次化的信息,即uvm_resource_db建立的是一个全局的配置数据库,uvm_config_db建立的是一个局部的配置数据库,需要指定具体配置数据库的层次信息。 When:什么时候使用uvm_config_db? 一个使用uvm_config_db的经典场景是传递virtual interface。interface在顶层例化,连接testbench...
答案在于uvm_config_db内部的m_rsc数组。这是一个由string作为键,uvm_resource#(T)作为值的静态键值对数组,以uvm_component为索引。这意味着,m_rsc数组实际上是一个以uvm_component为键,联合数组为值的结构,其中联合数组内部包含了key(string类型)和value(uvm_resource#(T)类型)。接下来,我们...