Verilog之event的用法
编写verilog的testbench时,可使用event变量触发事件。
event变量声明为:
event var;
event触发为:
->var;
捕获触发为:
@(var);
在modelsim中可运行的实例码如下:
10个时间单位后reset_trigger事件被触发,捕获后将reset设置一个时钟周期再触发reset_done_trigger。之后再分别设置10个周期的随机信号给enable和reset。
1 `timescale 1ns/100ps 2 module event_test; 3 event reset_trigger; 4 event reset_done_trigger; 5 reg clk; 6 reg reset; 7 reg enable; 8 9 initial 10 begin 11 clk = 0; 12 forever #5 clk = ~clk; 13 end 14 15 initial begin 16 forever begin 17 @(reset_trigger); 18 @(negedge clk); 19 reset = 1; 20 @(negedge clk); 21 reset = 0; 22 -> reset_done_trigger; 23 end 24 end 25 26 initial 27 begin 28 #10 -> reset_trigger; 29 @(reset_done_trigger); 30 fork 31 repeat (10) begin 32 @(negedge clk); 33 enable = $random; 34 end 35 repeat (10) begin 36 @(negedge clk); 37 reset = $random; 38 end 39 join 40 end 41 endmodule
运行结果如下:两个白点处是事件触发的时刻