事件(event) SystemVerilog
1.定义
在数字逻辑仿真中,事件(event) 是一种机制,用于触发模型中的更新或计算。这种机制是仿真器用来追踪信号的变化以及调度进程执行的核心。
2.分类
事件可以分为以下两种类型:
-
更新事件(Update Event)
例子:信号
触发信号值的更新,意味着某个信号将在某个时间点被赋予新的值。b
在仿真时间15
设置为1
。- 仿真器会在时间
15
更新b
的值为1
。
- 仿真器会在时间
-
评估事件(Evaluation Event)
例子:某个信号的值改变后,会触发一个
触发进程(如always
或initial
块)的执行,用于计算新信号值或进行逻辑操作。always
块重新运行,以便计算其他信号
3.为什么需要事件?
在仿真中,信号和逻辑块可能并不总是需要每个时钟周期都运行,而是只有在输入改变时才需要执行。通过事件驱动机制:
- 提高效率:只在需要更新的时间点触发计算,减少不必要的操作。
- 模拟真实行为:在数字电路中,信号的传播有时间延迟,事件系统可以精确地模拟这些延迟。
4.示例
module test;reg a, b, c;always @(a or b) beginc = a & b; // c 是 a 和 b 的逻辑与endinitial begin#5 a = 1; // 延迟 5 个时间单位后,将 a 的值设置为 1。触发 always 块评估事件(Evaluation Event),计算 c。#10 b = 1; // 再延迟 10 个时间单位后,b 变为 1。触发另一次 always 块评估事件,更新c。end
endmodule