请教systemverilog中类(类中含类)的构造函数执行顺序?
时间:10-02
整理:3721RD
点击:
问题如下:
先定义了个interface:
interface Iff(..);
clocking ck;
...
endclocking
modport recv(clocking ck);
...
endinterface
typedef virtual Iff.recv VrecvIff;
class A_CLASS;
VrecvIff pif;
function new(VrecvIff pif);
this.pif = pif;
endfunction
endclass
class B_CLASS;
A_CLASS a;
function new(VrecvIff pif);
a = new(pif);
endfunction
endclass
class C_CLASS;
B_CLASS b;
function new(VrecvIff pif);
b = new(pif);
endfunction
endclass
在top.sv中会例化interface: top_iff(此处省略)
在test.sv中代码:
program test;
VrecvIff vr_if;
C_CLASS c;
vr_if = top.top;
c = new(vr_if);
end
我的问题是:当调用new()创建类c的时候,类A,B,C的new(pif)是按怎样的顺序执行的,以及其interface参数是如何传递的?。
先定义了个interface:
interface Iff(..);
clocking ck;
...
endclocking
modport recv(clocking ck);
...
endinterface
typedef virtual Iff.recv VrecvIff;
class A_CLASS;
VrecvIff pif;
function new(VrecvIff pif);
this.pif = pif;
endfunction
endclass
class B_CLASS;
A_CLASS a;
function new(VrecvIff pif);
a = new(pif);
endfunction
endclass
class C_CLASS;
B_CLASS b;
function new(VrecvIff pif);
b = new(pif);
endfunction
endclass
在top.sv中会例化interface: top_iff(此处省略)
在test.sv中代码:
program test;
VrecvIff vr_if;
C_CLASS c;
vr_if = top.top;
c = new(vr_if);
end
我的问题是:当调用new()创建类c的时候,类A,B,C的new(pif)是按怎样的顺序执行的,以及其interface参数是如何传递的?。
new是自顶向下的顺序来的。
在new里面加打印不就知道了。
学习了