【SystemVerilog学习笔记】6-SystemVerilog 过程块、任务和函数

本文详细解读SystemVerilog中的always_comb、always_latch和always_ff过程块,探讨如何改进任务和函数,包括隐式语句组、返回值、早退和空函数等特性。通过实例解析,提升逻辑建模的清晰度与可综合性。

SystemVerilog新增内容:

  • 组合逻辑过程块:always_comb
  • 锁存逻辑过程块:always_latch
  • 时序逻辑过程块:always_ff
  • 改进任务和函数

6.1 Verilog 通用目的always块

  • always块
    是一个能重复执行块中语句的无限循环。为了使仿真时间向前推进,循环中必须包含一些时间控制或事件控制语句。
  • 敏感表
    在always开头所写的边沿敏感的事件控制条件。
  • 用法
    1. 在RTL级,always过程块可以用作组合逻辑锁存逻辑时序逻辑的建模。
    2. 用于更抽象的逻辑建模。
  • always块的硬件推断
    综合编译和形式工具必须检查过程块中的语句以及它的事件控制条件来判断该块描述的硬件类型。
  • 存在的问题
    1. 推断硬件类型的过程增加了软件工具的负担,甚至可能出错
    2. Verilog通用的always块的建模指导原则可能不被其他工具采用,可能造成仿真和综合结果不一致。

6.2 SystemVerilog 特有的过程块

SystemVerilog新增3个特有的可综合的过程块:always_comb(组合逻辑过程块)、always_latch(锁存逻辑过程块)和always_ff(时序逻辑过程块)
解决的问题:

  • 明确了设计的意图,如果意图与逻辑不匹配软件工具将发出警告。
  • 设计思路清晰,便于维护。

6.2.1 组合逻辑过程块

always_comb组合逻辑过程块表示建立组合逻辑模型。

对比项目 always@(*) always_comb
敏感表 需要指明或者用通配符* 自动推断
敏感表范围 过程块中的额所有变量以及任务/函数调用的参变量 对块内读取的信号和块内调用的函数读取的信号都敏感。
触发 至少一个敏感信号改变 除敏感表触发外,在零时刻自动执行确保输出与输入值的一致性(在零时刻产生与输入相对应的输出结果)。具体见例子1

例子1:零时刻保输出与输入值的一致性

  1. always @(state):仿真开始时变量都state和nextStat
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChipWeaver

觉得有用的话点个赞吧 :)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值