SystemVerilog更好的复制类的方法

e19*_*001 1 system-verilog

哪两种复制功能更好?

A.使用对函数参数的引用:

function void copy(ref MyClass copyme);
    MyClass copyme = new this;
endfunction
Run Code Online (Sandbox Code Playgroud)

B.返回新实例化的副本:

function MyClass copy();
    return new this;
endfunction
Run Code Online (Sandbox Code Playgroud)

dav*_*_59 6

类似A的东西是copy()的首选.使用clone()进行创建然后复制.复制和克隆通常写为

class Myclass;
  int A;
  function void copy(Myclass rhs)
    this.A = rhs.A;
  endfunction
  virtual function Myclass clone();
    clone = new();
    clone.copy(this);
  endfunction
endclass
Run Code Online (Sandbox Code Playgroud)

请注意,clone虚拟的,copy不虚.此外,您不需要将类句柄作为ref参数传递- 类变量已经是引用.