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;

相关推荐
努力遇见美好的生活7 分钟前
Java学习日记——Day8
学习
YuCaiH23 分钟前
【STM32】USART串口数据包
笔记·stm32·单片机·嵌入式硬件
Daydreamer1032 分钟前
学习笔记——PLCT汪辰:开发RISC-V上的操作系统(持续更新)
笔记·学习·risc-v
地球空间-技术小鱼44 分钟前
2024-Calculate-gentoo安装fcitx拼音输入法
linux·运维·服务器·学习
王夏奇2 小时前
C代码—单元测试中的覆盖率—学习笔记
笔记·学习·单元测试
scdifsn2 小时前
动手学深度学习10.1. 注意力提示-笔记&练习(PyTorch)
pytorch·笔记·深度学习·注意力机制·注意力提示
雷神乐乐2 小时前
Flume学习
hadoop·学习·flume
向上的车轮2 小时前
ODOO学习笔记(8):模块化架构的优势
笔记·python·学习·架构
HC182580858323 小时前
“倒时差”用英语怎么说?生活英语口语学习柯桥外语培训
学习·生活
学习路上_write4 小时前
FPGA/Verilog,Quartus环境下if-else语句和case语句RT视图对比/学习记录
单片机·嵌入式硬件·qt·学习·fpga开发·github·硬件工程