1、uvm object 使用config_db。 <1>. uvm_object中通过config_db get得到变量 class my_config extends uvm_object; `uvm_object_utils(my_config) virtual my_if vif;functionnew(stringname ="my_config"); super.new(name); $display("%s", get_full_name());if(!uvm_config_db#(virtual my_if)...
$sformatf("test_sig=%0d",test_sig),UVM_LOW)`uvm_info(this.name,"build_phase active.",UVM_LOW)if(!uvm_config_db#(virtualwr_interface)::get(this,"","wr_drv_if",wr_drv_if))begin`uvm_fatal(this.
我们看到uvm_config_db是从uvm_resource_db继承而来的。 这个uvm_resource是个什么数据类型? 进一步挖下去看看uvm_resource_base是什么。 可以看到只是一个从uvm_object继承而来的virtual类而已,uvm_resource继承后增加了个参数化,而uvm_resource_db中定义(typedef)了一个跟其参数一致的参数化的uvm_resource类型rsrc_t...
uvm_config_db#(virtual my_if)::set(null,"uvm_test_top.env.o_agt.mon","vif",output_if);end//方式2:initialbeginuvm_config_db#(virtual my_if)::set(null,"uvm_test_top.env.i_agt*","vif", input_if); uvm_config_db#(virtual my_if)::set(null,"uvm_test_top.env.o_agt*","vif...
在使用uvm_config_db::get()方法时,通过传递的参数构成索引层次,然后在 uvm_resource已有的配置信息池中索引该配置,如果索引到,方法返回1,否则返回0。 建议: 在使用set()/get()方法时,传递的参数类型应当上下保持一致。对于uvm_object等实例的传递,如果get类型与set类型不一致,应当首先通过$cast()完成类型转换,...
无论是将寄存器模型通过config_db层次化配置,还是间接通过封装在配置对象(configuration object)中的寄存器模型句柄,都需要scoreboard可以索引到寄存器模型。 在读取寄存器或者寄存器域的值时,用户需要加以区分。不少初学者默认uvm_reg类中应该对应有类似value的成员来表征其对应硬件寄存器的值,然而并没有。要知道,uvm_reg...
一、uvm_config_db简介 uvm_config_db的全称是configuration database,它是建立在 uvm_resource_db 之上的便利层,resource database储存的是与scope字符串相关联的name-value对(如下图所示) 。uvm_config_db可以将scope字符串与组件层次结构中的完整层次结构名称相关联,这样就可以通过组件层次来更加方便地访问...
6.在top_tb 中使用config_db 对interface 进行传递,可以使用绝对路径: 7.如果不使用绝对路径,可以通过静态变量来实现。新建一个类,将验证平台中所有可能的interface 放到此类中作为成员变量: 在top_tb 中为这个类的interface 赋值: 1)get 函数是if_object 的一个静态函数,通过它可以得到if_object 的一个实例,并...
在UVM提供了uvm_config_db配置类以及几种方便的变量设置方法来实现仿真时的环境控制,常见的uvm_config_db类的使用方式包括: 传递virtual interface到环境中; 设置单一变量值,例如int,string,enum等; 传递配置对象(config object)到环境; • uvm_config_db#(T): :set(uvm_component cntxt, string inst_name, ...
• 对于 mcdf_rgm 的集成, 我们倾向于顶层传递的方式, 即最终从 test 层传入寄存器模型句柄。 这种方式有利于验证环境 mcdf_bus_env 的闭合性, 在后期不同 test 对 rgm 做不同的配置时可以在顶层例化, 而后通过 uvm_ config_ db 来传递。 • 寄存器模型在创建之后要显式调用 build()函数。 需要注意 uv...