'event' 是如何工作的?

How does 'event' works?

我正在学习 SystemVerilog event data types。但我无法理解 仿真结果。

事件在 SystemVerilog 中如何工作?

更新

1 module events();
  2 // Declare a new event called ack
  3 event ack; 
  4 // Declare done as alias to ack 
  5 event done = ack; 
  6 // Event variable with no synchronization object
  7 event empty = null; 



  9 initial begin
 10    #1  -> ack;
 11    #1  -> empty;
 12    #1  -> done;
 13    #1  $finish;
 14 end
 15 
 16 always @ (ack)
 17 begin
 18   $display("ack event emitted");
 19 end
 20 
 21 always @ (done)
 22 begin
 23   $display("done event emitted");
 24 end
 25 
 26 /*
 27 always @ (empty)
 28 begin
 29   $display("empty event emitted");
 30 end
 31 */
 32 
 33 endmodule

如何显示如下?

 ack event emitted
 done event emitted
ack event emitted <== I don't understand here Why does it happens?
 done event emitted

我觉得应该是这样的

 ack event emitted

 done event emitted

 done event emitted

我想你可能对为什么多次打印事件感到困惑?看看第 5 行:

event done = ack;

现在 ack 和 done 是彼此的同义词,只要一个事件被触发,另一个事件也会被触发,因为每个事件都会在您获得 4 个打印输出时触发。