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