在module中定义一个interface,子module中可以直接用这个interface,而不需要传递什么的。
interface bfm;
logic[7:0] data;
logic[7:0] addr;
endinterface;
module parent;
bfm bif();
initial begin
bif.data=0;
bif.addr=0;
$display("@ %0t : [parent] begin test",$time);
for(int i=0;i<5;i++) begin
#100ns;
bif.addr = i;
bif.data = i;
$display("@ %0t : [parent] addr is %0d",$time,bif.addr);
$display("@ %0t : [parent] data is %0d",$time,bif.data);
end
$display("@ %0t :[parent] end test",$time);
end
child m_child();
endmodule
module child;
begin
$monitor("@ %0t : [child] bif.addr is %0h\tbif.data is %0h",$time,bif.addr,bif.data"); //监控bif的信号,当信号改变的时候,打印
//在child中直接使用接口bif
end
endmodule
module tb;
parent m_parent;
endmodule
上面代码中,在子module 中直接使用接口bif,不需要传递。
输出如下所示;