static function type_id get_type(); \ return type_id::get(); \ endfunction \ virtual function uvm_object_wrapper get_object_type(); \ return type_id::get(); \ endfunction T显然就是我们传入的component类,比如上文中的txt_driver,而后在m_uvm_component_registry_internal里做了这样的一步操作...
408 typedef uvm_object_registry#(T,`"S`") type_id; \ //每个object都有一个属于自己的代理类,这个type_id就是对应object的代理 409 static function type_id get_type(); \ //uvm_object_registry针对每个object都是一个单态类,也就是一个object,有只有一个代理 410 return type_id::get(); \ /...
virtual function void my_env::build_phase(uvm_phase phase); uvm_config_db# (uvm_object_wrapper)::set(this, “agt.sqr.main_pahse”, “default_sequence”, my_sequence::type_id::get()); endtask 树形结构通信通道变化: 原始: 现在: 注意: 蓝色部分: top_tb与树形结构的连接 紫色部分: transa...
$display("%0s",get_type()); $display(“%0s”,get_type_name()); … endclass 而这个class在env中例化: classjerry_envextendsuvm_env; … jerry_component u_jerry_c; … function void build_phase (uvm_phase phase); u_jerry_c = jerry_component::type_id::create(“u_jerry_so_cool”,t...
static function type_id get_type(); \ return type_id::get(); \ endfunction \ virtual function uvm_object_wrapper get_object_type(); \ return type_id::get(); \ endfunction 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 这个宏里面只做了两件事情: ...
21 //uvm_config_db#(uvm_object_wrapper)::set(this,22 //"env.i_agt.sqr.main_phase",23 //"default_sequence",24 // my_sequence::type_id::get());25 endfunction26 27 function void base_test::report_phase(uvm_phase phase);28 uvm_report_server server;29 int err_num;30 super.report...
my_sequence::type_id::get() ); endfunction : build_phase 在env的connect_phase,连接ifu_sqr,lsu_sqr的实例。代码如下所示: function void my_env::connect_phase(uvm_pkg::uvm_phase phase); // TODO Auto-generated function stub super.connect_phase(phase); ...
uvm_config_db#(uvm_object_wrapper)::set(this,"env.i_agt.sqr.main_phase","default_sequence",case0_sequence::type_id::get()); (3)使用uvm_config_db#(uvm_sequence_base)配置default_sequence functionvoidmy_case0::build_phase(uvm_phase phase);case0_sequence cseq;super.build_phase(phase);...
uvm_config_db#(uvm_object_wrapper)::set(this, "i_agt.sqr.main_phase", "default_sequence", my_sequence::type_id::get()); 2.5 建造测试用例 2.5.1 加入base_test class base_test extends uvm_test; my_env env; function new(...) ...
位于uvm_globals.svh中的run_test()函数通过uvm_root::get()创建(这里应该是uvm_root::get()第一次被调用,所以说是创建了uvm_root的实列,其他地方调用是reuturn返回的实例,都是在此处创建的)唯一的uvm_root。然后调用uvm_root中的run_test()函数,代码如下图: ...