You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Verilog中initial与always块的执行起始时间及顺序问询

Verilog中initial与always块的执行时机

所有initial块和always块都是从时间t=0时刻开始启动执行的,不存在initial块执行完毕后才启动always块的情况。

Verilog的仿真模型基于并发执行逻辑,同一层级的initial和always块属于并行执行单元,仿真器会在t=0时刻将这些块同时加入事件队列,同步启动执行。

补充两个核心特性:

  • initial块是一次性执行块,从t=0开始按顺序执行内部语句,执行完成后就不再运行;
  • always块是循环执行块,启动于t=0时刻,之后会根据敏感列表(如时钟边沿)或无敏感列表的持续循环逻辑反复触发执行。

可以通过一段简单代码直观验证执行时机:

initial begin
    $display("Initial block runs at time %0t", $time);
    #10 $display("Initial block after 10 time units at time %0t", $time);
end

always begin
    $display("Always block starts at time %0t", $time);
    #20 $display("Always block loops at time %0t", $time);
    #20; // 等待20个时间单位后再次进入循环
end

仿真输出结果如下:

Initial block runs at time 0
Always block starts at time 0
Initial block after 10 time units at time 10
Always block loops at time 20
Always block starts at time 40
...

内容的提问来源于stack exchange,提问作者user5193259

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 07:35:26