这就是我在SystemVerilog中使用new
的方式:
class A;
endclass
A a = new();
但有时候,我不需要本地对象,我只想将它直接发送到一个A
的函数。有没有办法在这里明确调用新函数:
function use_a(A obj);
endfunction
use_a(new()); // <--- How to write this call to specify which new to call?
use_a(A::new()); // <--- new not expected here :(
答案 0 :(得分:3)
不幸的是,SystemVerilog的语法不允许这样做。特殊的new
方法不是静态方法,并且由于定义了类内存管理的方式,类句柄必须存在于某个变量中。你可以通过围绕静态方法包装new
来解决这个问题:
class A;
static function A create();
create = new();
endfunction
endclass
...
use_a(A::create());
顺便说一句,UVM在BCL中有create
个方法,你几乎不需要直接调用new()
。