下面的代码(第二行)是什么意思,其中创建了内部类uvm_resource_pool定义,实例(对象)rp?
class uvm_resource_pool;
static local uvm_resource_pool rp = get();
// Function: get
//
// Returns the singleton handle to the resource pool
static function uvm_resource_pool get();
if(rp == null)
rp = new();
return rp;
endfunction
答案 0 :(得分:4)
这就是单例模式在SystemVerilog中编码的方式。单例模式是一种OOP技术,它确保只构造一个类类型的一个实例。构造函数以及对象rp
被声明为local。检索类类型uvm_resource_pool
的对象实例的唯一方法是调用静态方法get()
,它在第一次调用时构造它,但是下次它将只返回{{ 1}}。这也是如何解决静态类初始化命令fiasco 。您永远不会直接引用静态变量,您总是使用在第一个引用上构造它的get()方法。