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里做了这样的一步操作...
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...
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(); \ /...
uvm_config_db# (uvm_object_wrapper)::set(this, "env.agt.sqr.main_pahse", "default_sequence", my_sequence::type_id::get()); endfunction 注意: my_case0是继承了base_test的一个子类, 是base_test的一个更具体的实现,也就从这里形成了testcase的概念,这个testcase的名字就是my_case0。
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...
宏会为注册的类创建一个名为type_id的静态代理类(因为专门用于代替new来构造函数),起到间接实例化对象的代理作用 get_type,返回对象类型 get_object_type返回对象类型,不是静态类 factory机制与override机制 需要在对象实例化之前完成替换 get_type通过宏来实现,因此需要注册宏 代码实现: 会自动把路径补全 代码实现...
virtual function uvm_object_wrapper get_object_type(); \ return type_id::get(); \ endfunction 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 这个宏里面只做了两件事情: 定义了一个参数化的类,这个参数化的类叫type_id; 给class定义了两个函数,get_type()函数与get_object_type()函数。
type_id就是你注册到工厂里面的类型。这里一句话里用到了两次两个冒号,第一个双冒号是在工厂里面找到我们注册的类,第二个双冒号用来创建对象,输入的内容根据定义类继承的父类情况选择传入name+uvm_component parent还是name。 uvm_coreservice_t类 该类内置了UVM世界核心的组件和方法,它们主要包括: ...
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); ...