SystemVerilog学习笔记(六):控制流

条件语句

条件语句用于检查块中的语句是否被执行。条件语句创建语句块。如果给出的表达式是 true,执行块中的语句集,如果表达式为 false,则 else 块语句将最后执行。

序号 条件语句
1. if
2. if-else
3. if-else ladder
4. unique if
5. unique0 if
6. priority if

不同条件表达式之间的差异

条件 if elseif unique if unique0 if priority if
只有一个条件表达式为真 执行 true 条件块内的语句集 执行 true 条件块内的语句集 执行 true 条件块内的语句集 执行 true 条件块内的语句集
多个条件表达式为真 执行第一个 true 条件块语句,不显示警告 执行第一个为真的条件块语句,显示警告 执行第一个为真的条件块语句,显示警告 执行第一个 true 条件块语句,不显示警告
没有 else,条件表达式都不为真 不执行 true 条件块内的语句, 不显示警告 不执行 true 条件块内的语句, 显示警告 不执行 true 条件块内的语句, 不显示警告 不执行 true 条件块内的语句, 显示警告

unique if、unique0 if 和priority if 是 SystemVerilog 中 if-else 条件语句的更新版本。这些条件语句显示警告,有助于检测死代码或未使用的条件语句。

死代码(Dead code)是对模拟或综合没有任何影响的代码。死代码的示例是从未使用的信号或从未触发的条件。

死代码不会打扰模拟器或综合工具。然而,它会消耗任何阅读代码的人的精神能量。人们会尝试找出给定语句的目的,可能需要一段时间才能意识到他们正在处理死代码。这使得审查代码和重用代码的成本更高。一般来说,死代码是一种应该避免的技术债务。

case 语句

case 语句允许我们执行特定 case 表达式的代码。这将为长代码提供正确的结构,并降低代码的复杂性。

case 语句计算给定的表达式,并根据计算值(匹配特定条件)执行与其关联的语句。基本上,它用于根据不同的条件执行不同的操作。

systemVerilog case 语句以 case 关键字开始,以 endcase 关键字结束。多个语句的块必须分组在开始和结束语句中。

在 case 语句中,使用 default 语句。 default语句是可选的,一个case语句中只能有一个default语句。

如果给定的 case 条件都不成立,则执行 default 语句中的语句。

如果没有任何项目与条件匹配并且未给出默认语句,则执行将退出 case 块而不执行任何操作。

如果我们想在 case 语句中给出范围值,这将在 inside 语句的帮助下完成。

语法: case(condition) inside

condition_1_[a:b]: Statements ;

condition_2:_[c:d] Statements ;

...........

conditon_N_[y:z]: Statements;

endcase
在 case 语句中使用 break 时,会发生错误。

使用 disable 关键字禁用任务内的嵌套循环

unique case

在 unique case 语句中,如果所有的 case 条件都为假,它将显示一个警告(没有找到匹配的 case 语句),但不会有错误。 如果所有的条件都为真或有多个条件为真,它将读取第一个正确或匹配的 case 条件,并显示输出,同时伴随一个警告,但不会有错误。

语法:

unique case(condition)

condition_1: Statements ;

condition_2: Statements ;

............

conditon_N: Statements;

endcase

unique case 语句带 default 语句

在这里,我们将在 unique case 语句中使用 default 语句。 如果 unique case 语句中的所有条件都不为真,那么将执行 default 语句。

语法:unique case(condition)

condition_1: Statements ;

condition_2: Statements ;

............

conditon_N: Statements;

default : Statements;

endcase

uniuqe0 case

在 uniuqe0 case 中,如果所有的 case 条件都为假,它将不会显示警告,也不会有错误。 如果所有的条件都为真或有多个条件为真,它将读取第一个正确或匹配的 case 条件,并显示输出,同时伴随一个警告,但不会有错误。

语法:unique0 case(condition)

condition_1: Statements ;

condition_2: Statements ;

...........

conditon_N: Statements;

endcase

priority case

在这种类型的 case 语句中,如果有多个 case 条件为真,它将在不提供任何错误或警告的情况下显示输出。

语法: priority case(condition)

condition_1: Statements ;

condition_2: Statements ;

...........

conditon_N: Statements;

endcase

break

break 语句用于立即终止循环。当在循环内部遇到 break 语句时,循环迭代立即停止。通常情况下,我们在使用 if 语句在代码中给出条件后使用 break。

我们可以在任何循环(for、foreach、forever、do-while、while、do-while)中使用 break 语句来终止循环的执行。它总是在循环内部使用。当遇到 break 语句时,它立即结束循环。

流程图:

语法:

break;

continue

continue 语句用于跳过循环的当前迭代。我们可以在任何类型的循环中使用 continue 语句,比如 for、while 和 do-while 循环。基本上,continue 语句用于在我们想要继续循环但不想执行循环中特定迭代的情况下使用。

使用 continue,我们可以跳过循环的当前迭代,并立即跳转到循环的下一迭代。

流程图:

语法:

continue;

相关推荐
解局易否结局29 分钟前
昇腾CANN上手笔记:从cann-learning-hub学会ops-transformer
笔记·深度学习·transformer
吃好睡好便好6 小时前
用while循环语句求和
开发语言·学习·算法·matlab·信息可视化
摇滚侠6 小时前
Java 零基础全套教程,集合框架,笔记 153-163
java·开发语言·笔记
ゆづき7 小时前
计算机数据存储全解:从底层进制转换到存储介质演进
笔记·学习·生活
小+不通文墨7 小时前
树莓派玩转EMQX的常用指令清单
经验分享·笔记·学习
kdxiaojie8 小时前
U-Boot分析【学习笔记】(12)
linux·笔记·学习
吃好睡好便好8 小时前
用for循环语句求和
开发语言·人工智能·学习·matlab·学习方法
玄米乌龙茶1238 小时前
LLM成长笔记(五):提示词工程与模型调用
人工智能·笔记
不会编程的懒洋洋9 小时前
VisionPro 中 几何相交工具 Geometry-Intersection
图像处理·笔记·c#·视觉检测·机器视觉·visionpro
_李小白9 小时前
【C++学习笔记】新特性之inline变量
c++·笔记·学习