SystemVerilog新增内容:
- 组合逻辑过程块:always_comb
- 锁存逻辑过程块:always_latch
- 时序逻辑过程块:always_ff
- 改进任务和函数
6.1 Verilog 通用目的always块
- always块
是一个能重复执行块中语句的无限循环。为了使仿真时间向前推进,循环中必须包含一些时间控制或事件控制语句。 - 敏感表
在always开头所写的边沿敏感的事件控制条件。 - 用法
- 在RTL级,always过程块可以用作组合逻辑、锁存逻辑和时序逻辑的建模。
- 用于更抽象的逻辑建模。
- always块的硬件推断
综合编译和形式工具必须检查过程块中的语句以及它的事件控制条件来判断该块描述的硬件类型。 - 存在的问题
- 推断硬件类型的过程增加了软件工具的负担,甚至可能出错。
- Verilog通用的always块的建模指导原则可能不被其他工具采用,可能造成仿真和综合结果不一致。
6.2 SystemVerilog 特有的过程块
SystemVerilog新增3个特有的可综合的过程块:always_comb(组合逻辑过程块)、always_latch(锁存逻辑过程块)和always_ff(时序逻辑过程块)
解决的问题:
- 明确了设计的意图,如果意图与逻辑不匹配软件工具将发出警告。
- 设计思路清晰,便于维护。
6.2.1 组合逻辑过程块
always_comb组合逻辑过程块表示建立组合逻辑模型。
| 对比项目 | always@(*) | always_comb |
|---|---|---|
| 敏感表 | 需要指明或者用通配符* | 自动推断 |
| 敏感表范围 | 过程块中的额所有变量以及任务/函数调用的参变量 | 对块内读取的信号和块内调用的函数读取的信号都敏感。 |
| 触发 | 至少一个敏感信号改变 | 除敏感表触发外,在零时刻自动执行确保输出与输入值的一致性(在零时刻产生与输入相对应的输出结果)。具体见例子1 |
例子1:零时刻保输出与输入值的一致性
- always @(state):仿真开始时变量都state和nextStat

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

被折叠的 条评论
为什么被折叠?



