Como se muestra en las siguientes preguntas:
class Transaction
logic [31:0] addr = 'h10;
logic [31:0] crc,data[8];
function new(logic [31:0] a =3, d =5);
addr = a;
foreach (data[i])
data[i] = d;
endfunction
endclass
initial begin
Transaction tr,tr1;
tr = new(10);
tr1 = new();
end
Para comprender el proceso de creación de objetos mediante new (), en primer lugar, new (10) abre espacio de acuerdo con los tipos de variables en la clase, addr, crc y data, luego a addr se le asigna el valor 16. Después de eso, pasamos el parámetro 10 a la función, y el valor del addr se sobrescribe a 10.
Cuando se llama a la función new (), no se pasan parámetros desde el exterior, por lo que se asigna el valor addr 3.
Creación y destrucción de objetos:
class word
byte nb[];
function new(int n);
nb = new[n]; //动态数组空间开辟
endfunction
endclass
initial begin : initial_1
word wd;
for(int i=1;i<=4;i++) wd = new(i); //创建了4个对象
end
initial begin : initial_2
#1ps
$display("How many Bytes are allocated for word instance?")
end
Si el espacio requerido para wd = new (1) es 1B, entonces el espacio se crea después de la ejecución:
Después de ejecutar wd, el controlador apunta al cuarto objeto, 4B. Dado que la variable inicial es estática, si la ejecución inicial se completa, la variable todavía está allí.
class Transaction
static intcount= 0;
int id;
function new();
id = count++;
endfunction
endclass
Transaction t1,t2;
initial begin
t1 = new();
t2 = new();
$display("Second id=%d, count = %d",t2.id,t2.count);