仿真时间:由仿真器维护的时间值,用来对仿真电路所用的真实时间建模。在一个仿真时刻,只有当前仿真时刻的所有事件全部执行完,仿真时间才会向前推进。Verilog 仿真按照仿真时间严格向前推进。
进程是 Verilog 语言中的独立执行单元,包括原语、模块、过程快(initial 和 always)连续赋值语句、过程赋值语句等。进程可以被激活(active)或者挂起(suspend),在每个仿真时刻仿真器总是在处理被激活的进程。
Verilog 的功能仿真是一种事件驱动的仿真。事件是指在特定时刻模型中数值的变化,而 Verilog 的语义则规定了一个事件导致其他事件发生的方式。线网或寄存器值的任何改变被认为是一个更新事件,进程的计算为计算事件。当一个更新事件发生后,所有对该事件敏感的进程会触发计算事件。计算结束后又会触发新的更新事件,二者循环往复,从而推动仿真时间的前进。
Verilog 在仿真时,所有的进程并行同时执行,其顺序是是随机的,仿真器可以根据自己的原则安排它们的执行顺序。这并不违背 Verilog 语言的并发性,因为在当前所有进程执行完毕之前,仿真时间是不会向前推进的。
执行一个进程时,遇到一个事件语句(“@”)、延时语句(“#”)或其他等待语句时,该进程将被挂起。直到“事件发生”、“已经过延时的仿真时间”或“等待语句的表达式为真”,进程被重新激活。