最近在看别人uvm环境时发现一个宏:`uvm_new_func,使用了这个宏后就没有手写new函数了,于是去源码里看了看是怎么回事。这个宏在uvm_object_defines.svh里,代码如下:
`define uvm_new_func \
function new (string name, uvm_component parent); \
super.new(name, parent); \
endfunction
其实就是将new函数封装成了宏,但是只在uvm_component里使用。
一般来说new函数里不需要实现其他的操作,如果要实例化某些东西也可以放在build_phase里,所以使用这个宏可以减少一点代码量。