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

条件语句

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

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

 

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

条件if elseifunique ifunique0 ifpriority 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 语句时,它立即结束循环。

流程图:

Untitled Diagram-Page-1 drawio (5)

语法:

break;

continue

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

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

流程图:

Untitled Diagram-Page-1 drawio (6)

语法:

continue;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/471130.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL,力扣题目1127, 用户购买平台

一、力扣链接 LeetCode_1127 二、题目描述 支出表: Spending ---------------------- | Column Name | Type | ---------------------- | user_id | int | | spend_date | date | | platform | enum | | amount | int | ------------------…

【计算机网络】【传输层】【习题】

计算机网络-传输层-习题 文章目录 10. 图 5-29 给出了 TCP 连接建立的三次握手与连接释放的四次握手过程。根据 TCP 协议的工作原理,请填写图 5-29 中 ①~⑧ 位置的序号值。答案技巧 注:本文基于《计算机网络》(第5版)吴功宜、吴英…

群控系统服务端开发模式-应用开发-前端个人信息功能

个人信息功能我把他分为了3部分:第一部分是展示登录者信息;第二步就是登录者登录退出信息;第三部分就是修改个人资料。 一、展示登录者信息 1、优先添加固定路由 在根目录下src文件夹下route文件夹下index.js文件中,添加如下代码 …

Qwen2-VL:发票数据提取、视频聊天和使用 PDF 的多模态 RAG 的实践指南

概述 随着人工智能技术的迅猛发展,多模态模型在各类应用场景中展现出强大的潜力和广泛的适用性。Qwen2-VL 作为最新一代的多模态大模型,融合了视觉与语言处理能力,旨在提升复杂任务的执行效率和准确性。本指南聚焦于 Qwen2-VL 在三个关键领域…

Java面向对象高级2

1.代码块 2.内部类 成员内部类 public class Demo{public static void main(String[] args) {outer.inner innew outer().new inner();in.run();}}class outer{private String str"outer";public class inner{public void run(){String sstr;System.out.println(s);…

Elasticsearch 8.16:适用于生产的混合对话搜索和创新的向量数据量化,其性能优于乘积量化 (PQ)

作者:来自 Elastic Ranjana Devaji, Dana Juratoni Elasticsearch 8.16 引入了 BBQ(Better Binary Quantization - 更好的二进制量化)—— 一种压缩向量化数据的创新方法,其性能优于传统方法,例如乘积量化 (Product Qu…

androidstudio下载gradle慢

1,现象: 2,原因,国内到国外网址慢 3,解决方法:更改gradle-wrapper.properties #Wed Sep 26 20:01:52 CST 2018 distributionBaseGRADLE_USER_HOME distributionPathwrapper/dists zipStoreBaseGRADLE_USER…

浅谈:基于三维场景的视频融合方法

视频融合技术的出现可以追溯到 1996 年 , Paul Debevec等 提出了与视点相关的纹理混合方法 。 也就是说 , 现实的漫游效果不是从摄像机的角度来看 , 但其仍然存在很多困难 。基于三维场景的视频融合 , 因其直观等特效在视频监控等相关领域有着…

探索Python的HTTP利器:Requests库的神秘面纱

文章目录 **探索Python的HTTP利器:Requests库的神秘面纱**一、背景:为何选择Requests库?二、Requests库是什么?三、如何安装Requests库?四、Requests库的五个简单函数使用方法1. GET请求2. POST请求3. PUT请求4. DELET…

【算法一周目】双指针(2)

目录 有效三角形的个数 解题思路 C代码实现 和为s的两个数字 解题思路 C代码实现 三数之和 解题思路 C代码实现 四数之和 解题思路 C代码实现 有效三角形的个数 题目链接:611. 有效三角形的个数题目描述:给定一个包含非负整数的数组nums&…

基于Python的网上银行综合管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

C++编程技巧与规范-类和对象

类和对象 1. 静态对象的探讨与全局对象的构造顺序 静态对象的探讨 类中的静态成员变量(类类型静态成员) 类中静态变量的声明与定义&#xff08;类中声明类外定义&#xff09; #include<iostream> using namespace std;namespace _nmspl {class A{public:A():m_i(5){…

边缘的检测

边缘检测效果&#xff0c;是一种用于突出图像中的边缘&#xff0c;使物体的轮廓更加明显的图像处理技术&#xff0c;边缘检测的主要目的是找到图像中亮度变化显著的区域&#xff0c;这些区域通常对应于物体的边界&#xff0c;边缘检测相当于利用 Shader 代码自动给屏幕图像进行…

HP G10服务器ESXI6.7告警提示ramdisk tmp已满

物理服务器是HP G10 VCENTER内两台服务器报错提示ramdisk"tmp"已满&#xff0c;无法写入文件 登录ESXI命令行后发现两台主机的/tmp目录都没有空间了 定位到是ams-bbUsg.txt文件占用了大量的空间 1、关闭集群的DRS功能 2、迁移当前主机上面运行的所有虚拟机至其他主…

深度学习中的感受野:从基础概念到多层次特征提取

在深度学习&#xff0c;特别是计算机视觉任务中&#xff0c;感受野&#xff08;Receptive Field&#xff09;是一个至关重要的概念。它指的是在神经网络中某一层的神经元在输入图像上“看到”的区域大小。感受野的大小影响了网络能捕捉的特征层级&#xff0c;从而决定了它的特征…

Diffusion Policy——斯坦福机器人UMI所用的扩散策略:从原理到其编码实现(含Diff-Control、ControlNet详解)

前言 本文一开始是属于此文《UMI——斯坦福刷盘机器人&#xff1a;从手持夹持器到动作预测Diffusion Policy(含代码解读)》的第三部分&#xff0c;考虑后Diffusion Policy的重要性很高&#xff0c;加之后续还有一系列基于其的改进工作 故独立成本文&#xff0c;且写的过程中 …

【数据结构与算法】第12课—数据结构之归并排序

文章目录 1. 归并排序2. 计数排序3. 排序算法复杂度及稳定性分析在这里插入图片描述 1. 归并排序 分治法&#xff08;Divide and Conquer&#xff09;是一种重要的算法设计策略&#xff0c;其核心思想是将一个复杂的大问题分解为若干个小规模的子问题&#xff0c;递归地解决这些…

2024 年 Apifox 和 Postman 对比介绍详细版

Apifox VS Postman &#xff0c;当下流行的的两款 API 开发工具&#xff0c;2024 版对比&#xff01;

vue请求数据报错,设置支持跨域请求,以及2种请求方法axios或者async与await

设置跨域 通过vite创建的项目&#xff0c;一般会在你项目文件中自动生成一个名为vite.config文件&#xff0c;点击添加支持跨域的代码 import { defineConfig } from vite import vue from vitejs/plugin-vue// https://vitejs.dev/config/ export default defineConfig({plu…

【ACM出版】第四届信号处理与通信技术国际学术会议(SPCT 2024)

& 第四届信号处理与通信技术国际学术会议&#xff08;SPCT 2024&#xff09; 2024 4th International Conference on Signal Processing and Communication Technology 2024年12月27-29日 中国深圳 www.icspct.com 第四届信号处理与通信技术国际学术会议&#x…