【发布时间】:2021-12-21 18:55:50
【问题描述】:
请考虑这段代码...
virtual class SomeThing extends uvm_pkg::uvm_object;
`uvm_object_utils(SomeThing)
...
endclass
class MyThing extends SomeThing#(MyTransaction);
`uvm_object_param_utils(MyThing)
function new(string name = "MyThing");
super.new(name);
`uvm_info(get_name(), {"Created a ", get_type_name(),
" using transactions of type: ",
MyTransaction::get_type_name()}, // <--
UVM_LOW)
endfunction
...
endclass: MyThing
我的问题被标记为<--。这是非法的,因为get_type_name() 不是静态方法,不能与范围解析运算符:: 一起使用。 (Synopsys 和 Cadence 模拟器都有类似的抱怨。)
为什么这个方法不是静态的?绕过访问器方法来读取包含我想要的值的“const静态字符串”感觉不对。
谢谢!
【问题讨论】:
-
试试
MyTransaction::type_name
标签: system-verilog uvm