在下面的示例中,我试图将data
输出脉冲到my_interface
. 但是,data
始终保持为 0。
interface my_interface(
input clock,
output data);
clocking cb @(posedge clock);
output data;
endclocking
endinterface // my_interface
module test;
logic clock;
wire data;
my_interface my_interface(.*);
initial begin
clock = 0;
#1 $display("%0d data:%0d", $time, data);
#10;
my_interface.cb.data <= 1;
#1 $display("%0d data:%0d", $time, data);
@(my_interface.cb);
my_interface.cb.data <= 0;
#1 $display("%0d data:%0d", $time, data);
#20 $display("%0d data:%0d", $time, data);
$finish();
end
always #5 clock = ~clock;
endmodule
模拟输出是:
# 1 data:z
# 12 data:z
# 16 data:0
# 36 data:0
我想了解为什么在上面的示例中data
从未1
出现过?我可以通过替换来解决这个问题#10
,@(my_interface.cb);
但我不知道为什么这个修复有效。
EDA Playground 上的代码和结果:http ://www.edaplayground.com/s/4/198