jaz*_*lue 2 factory class system-verilog uvm
我对以下用于向工厂注册 UVM 测试的 SystemVerilog 构造感到困惑:
class random_test extends uvm_test;
`uvm_component_utils(random_test);
...
function new (...
Run Code Online (Sandbox Code Playgroud)
这里我们有一个类的定义random_test,在定义内部我们调用一个方法,而它的参数是正在定义的类。
这是我的问题:
`uvm_component_utils甚至在 random_test 类构造任何对象之前是否在时间 0 调用?`uvm_component_utils在该类定义中传递一个类?`uvm_component_utils不是一个方法,它是一个在编译时评估的宏。
您可以在 UVM 源代码中查看该宏的作用。看一下src/macros/uvm_object_defines.svhUVM 分布。
您的课程示例random_test将扩展为如下所示:
typedef uvm_component_registry #(random_test,"random_test") type_id;
static function type_id get_type();
return type_id::get();
endfunction
virtual function uvm_object_wrapper get_object_type();
return type_id::get();
endfunction const static string type_name = "random_test";
virtual function string get_type_name ();
return type_name;
endfunction
Run Code Online (Sandbox Code Playgroud)