1.Verilog中事件(event)如何使用?
Verilog里面可以定义事件(event),可以对testbench里面的信号进行监测,满足事件触发条件就触发事件并引发相应的处理,Verilog里面的event只用于仿真,不能综合 。与Verilog里的事件相关的语法如下:
- 定义一个事件:
event reset_trigger
; - 触发事件:
#10 -> reset_trigger
; - 由事件引发的操作:
@ (reset_trigger)
;
例子如下:
`timescale 1ns/100ps
module event_test;
event reset_trigger;
event reset_done_trigger;
reg clk;
reg reset;
reg enable;
initial
begin
clk = 0;
forever #5 clk = ~clk;
end
//设置事件触发条件
initial begin
forever begin
@(reset_trigger);
@(negedge clk);
reset = 1;
@(negedge clk);
reset = 0;
-> reset_done_trigger;
end
end
initial
begin
#10 -> reset_trigger;
@(reset_done_trigger);
fork
repeat (10) begin
@(negedge clk);
enable = $random;
end
repeat (10) begin
@(negedge clk);
reset = $random;
end
join
end
endmodule
最终仿真结果如下:白色标记为事件触发位置