• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

SOC/IP验证工程师

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

【IEEE_Verilog-9.9】initial和always的用法

9.9 Structured procedures

结构化语句
Verilog HDL中的所有过程语句都在以下四种语句之一中指定:
---initial结构
---always结构
---task
---function
initial和always结构在仿真开始时启用。initial结构只执行一次,当语句执行完成后,活动就停止了。相比之下,always结构重复执行。只有当仿真停止时,它的活动才停止。在initial结构和always结构之间不应有隐含的顺序。initial结构不应在always结构之前调度和执行。在一个模块中,initial结构和always结构的数量没有限制。任务和函数是从其他过程中的一个或多个位置启用的过程。任务和功能将在第10条中描述。

9.9.1 Initial construct/initial结构

initial构造的语法见语法9-15。

例如:
下面的示例演示了在仿真开始时如何使用initial构造来初始化变量。

initial begin
  areg = 0;            // initialize a reg
  for (index = 0; index < size; index = index + 1)
    memory[index] = 0; //initialize memory word
  end

initial结构的另外一个典型用法是波形描述规范,波形描述只执行一次,为仿真电路的主要部分提供激励。

initial begin
  inputs = 'b000000; // initialize at time zero
  #10 inputs = 'b011001; // first pattern
  #10 inputs = 'b011011; // second pattern
  #10 inputs = 'b011000; // third pattern
  #10 inputs = 'b001000; // last pattern
end

9.9.2 Always construct/always结构

在整个仿真过程中,always结构不断重复执行。语法9-16展示了always结构的语法。

always结构,因为它循环的特性,只有当和一些形式的时序控制一起使用时有用。如果一个always结构对仿真时间向前无法控制,它将创建一个仿真死锁情景。
例如,下面的代码创建了一个零延迟无限循环:
always areg = ~areg;
为以上代码提供时序控制将创建一个潜在有用的描述,如下所示:
always #half_period areg = ~areg;

posted on 2022-02-18 21:03  SOC验证工程师  阅读(497)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3