简单说就是字符串的正则匹配,在UVM内部是通过uvm_glob_to_re()和uvm_re_match()这两个函数来实现的,它们是在uvm_config_db背后默默工作的功臣。 在TB调用uvm_config_db::set()的时候,set函数会将参数cntxt和inst_name拼接起来后,调用用uvm_glob_to_re()转换格式,再存到uvm_resource类里的scope字符串变量...
在test中set:class my_test extends uvm_test;my_config cfg;...function void bulid_phase(uvm_phase phase);...uvm_config_db#(my_config)::set(this,"env","cfg",cfg);...endfunctionendclass 在test.env中get:class my_env extends uvm_env;my_config cfg;...function void bulid_phase(uvm_pha...
uvm_config_db可以将scope字符串与组件层次结构中的完整层次结构名称相关联,这样就可以通过组件层次来更加方便地访问数据库的条目(储存的信息)。 config_db 是参数化的,它的类型可以是标量、类句柄、队列、列表,甚至是虚拟接口。通过uvm_config_db::set 和 uvm_config_db::get 函数进行全局存储和检索数据库中的信...
由于实例化sequence时的名字一般是不固定的,因此我们在sequence中使用config_db时一般在路径参数中加入通配符 uvm_config_db#(int)::set(this,"env.i_agt.sqr.*","count",9);uvm_config_db#(int)::get(null,get_full_name(),"count",count); 值得关注的是get的第一个餐宿。在component中这个参数一般为...
uvm_config_db#(bit)::set(uvm_root::get(),"uvm_test_top.env0.scb","cmp_en",0); //可以set 到uvm_component中。 ... void'(uvm_config_db#(bit)::get(uvm_root::get(), get_full_name(), "first_start", first_start) if(first_start) ...
弄UVM的验证工程的过程种,发现之前resource这块学得不到位,来这补充一下,先补充uvm_config_db,就拿我自己那个工程的代码来举例子说明uvm_config_db是怎么用的。 我的工程中主要是对virtual interface用到了config_db,流程是这样的: 1.在testbench中例化了interface,然后通过config_db::set来把interface这个样的一...
component派生类来说,field_automation 机制最重要的是可以在build_phase中自动获取uvm_config_db#():set()的数值(必须加(phase) -也就是不用写 uvm_config_db#():get()注意:field_automation 的macro的类型要和 uvm_config_db的参数类型一致:如下示例代码,field_int vs uvm_config_db#(bit47:0)这个时候(...
4.unpack_bytes:将byte 流逐一恢复到某个class的实例中。 5.pack 将所有字段打包成bit 流。 6.unpack将一个bit流逐一恢复到某个类的实例中。 7.pack_ints 将所有字段打包成int。 8.unpack_ints:把一个int流恢复到某个类的实例中。 9.print。 10.clone。 11.config_db::set。
build_phase主要的作用就是通过config_db的set和get操作来做一些数据的配置和传递,以及实例化成员变量等。值得注意的是,super.build_phase这条语句是必须的,在父类uvm_build_phase 中执行了一些必要的操作,必须显式地调用并执行它。 build_phase和main_phase的区别 ...
uvm_config_db#(bit)::set(uvm_root::get(), "uvm_test_top.v_sqr.*", "first_start", 0); (3)一个sequence是在task phase中运行的,当其设置一个参数的时候,起事件往往是不固定的。针对这种不固定的设置参数的方式,UVM提供了wait_modified任务。当它检测当第三个参数的值被更新过后,它就返回,否则一...