改进的if...else判断语句

改进的if…else判断语句

SystemVerilog的判断修饰符unique和priority可以和if…else一起使用。使用这些修饰符不仅可以减少此类判断语句的不确定性,还可以在建模早期发现潜在的设计错误。
1、unique if…else判断语句
unique if…else可以并行求值
修饰符unique表示条件排列的顺序并不重要。软件工具会将推断出的判断顺序优先级优化掉。

logic[2:0] sel;
always_comb 
beginunique if(sel==3'b001) mux_out = a;else if(sel==3'b010) mux_out = b;else if(sel==3'b100) mux_out =c;
end

unique条件检查
unique if…else不能包含重叠的条件
软件工具会对unique if判断语句进行检查,以确保在一连串if…else…if的所有判定条件都是互斥的。这允许判断语句并行执行,而不需要优先级编码。若软件工具发现有多条判定条件为真,则产生运行期警告。这样的警告信息可以在编译或运行期出现。这种附加的检查会帮组工程人员在模块验证的早期发现建模的错误。
防止无意产生锁存逻辑
unique if…else对未指明状态进行警告
当if语句指定了unique修饰后,如果软件工具发现if语句执行时没有一条分支语句执行,就会报告一条运行期警告。
这种运行期的语法检查确保了在执行过程中实际出现的所有判定条件都全部指明了。当判断序列执行时,总会有一个分支执行。这样也保证了用纯粹的组合逻辑实现,而不需要锁存器。
2、priority if判断语句
priority if…else必须按顺序进行求值
修饰符priority表示分支的次序是重要的。软件工具必须按照原有次序进行计算。

always_comb
beginpriority if(irq0) irq=4'b0001;else if(irq1) irq=4'b0010;else if(irq2) irq=4'b0100;else if(irq3) irq=4'b1000;
end

因为模块本身已经显式地说明了上面的判断序列必须按照次序进行求值,因此所有的软件工具都会保持推断出的优先级编码。
防止无意中产生锁存逻辑
priority if…else必须指定所有条件
和使用unique修饰一样,当if语句中指定了priority修饰符后,软件工具会在运行期检查if…else…if序列每次都会执行一个分支。

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

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

相关文章

FPGA的IP核

http://blog.sina.com.cn/s/blog_5f6fcfce01012w4g.html IP核概述 利用IP核设计 电子系统 ,引用方便,修改基本元件的功能容易。具有复杂功能和商业价值的IP核一般具有知识产权,尽管IP核的市场活动还不规范,但是仍有许多 集成电路…

亚马逊正式发布关系型数据库Amazon Aurora

在去年的AWS re:Invent大会上,亚马逊宣布了Amazon Aurora。Aurora是一个关系型数据库,可以跨3个可用区域复制6份数据,其设计目标是提供高性能和高可用性(99.99%),并且存储可以轻松高效地扩展到64TB。近日&a…

刘小东的“空城记”

刘小东的“空城记” 。从“三峡移民”到“金城小子”,从“温床”,再到"新疆和田 ”,今天,刘小东又把“鄂尔多斯” 纳入自己介入现实的创作计划。鄂尔多斯,一个中国曾经最贫瘠的所在,因为矿产开发,迅…

鼠标键盘驱动分析

link: http://blog.21ic.com/user1/5585/archives/2009/59432.html

有限状态机建模

有限状态机建模 1、使用枚举类型建立状态机模型 枚举类型有固定的数值 枚举类型提供了一种定义一个具有有限合法数值集合的变量的方法。数值是用标签而不是数字逻辑值表示的。 枚举类型支持抽象FSM类型 枚举类型支持更高抽象层次的建模,并且能描述精确的、可综合的…

时钟周期及秒(s) 毫秒(ms) 微秒(μs) 纳秒(ns) 皮秒(ps)之间转换

1秒1000毫秒(ms) 1毫秒1/1,000秒(s) 1秒1,000,000 微秒(μs) 1微秒1/1,000,000秒(s) 1秒1,000,000,000 纳秒(ns) 1纳秒1/1,000,000,000秒(s) 1秒1,000,000,000,000 皮秒(ps) 1皮秒1/1,000,000,000,000秒(s)

聆听南音

北京。半木空间。聆听南音古曲。 南音亦称弦管、南乐。起于晋唐,盛于南宋,至今流传于泉州闽南地区。被誉为“中国音乐史上的活化石” 。今晚,南音传人蔡雅艺率三位南音大师现场演出、宣讲并与"半木"品牌创始人吕永中先生对话交流…

不是每个人都适合linux

开源特性 Copyleft意味着,linux用户要学会一定程度的DIY。这不仅仅是说,你需要一些预备知识才可以开始。这包含的另一层意思是,在出现了问题的时候,用户很可能并不会得到及时有效的外来援助。   开源社区发布的内容通常是主题比…

WinCE中的paging pool

我们知道,在Config.bib配置中,RAM指定的内存区域会被划分为程序内存和对象存储。但在使用paging pool时,RAM段要减去paging pool的大小,剩余空间再划分为程序内存和对象存储。其中程序内存主要为正在运行的程序保存堆和栈的内容。…

在FSM模型中使用两态数据类型

在FSM模型中使用两态数据类型 1、使用两态类型和枚举类型对FSM复位 在仿真刚开始时,四态数据类型的值是逻辑X。类似有限状态机这样的模型中,四态变量的X逻辑值可以用来表示模型还没有复位,或复位逻辑的建模不正确。 仿真刚开始时&#xff0c…

没有建立对验证码签名的目录的发布者信任

在Windows 7下安装 FX3 USB驱动,一直提示 “没有建立对验证码签名的目录的发布者信任” 导致无法安装驱动,后来测试很多的方法,包括复制 inf 和sys文件到相应的 C:\windows\inf 与 C:\windows\system32\driver 目录下,设置 IE浏览…

QCon北京2016启动筹备 众多热点专题诚征演讲嘉宾

QCon是由InfoQ主办的全球顶级技术盛会,每年在伦敦、北京、东京、纽约、圣保罗、上海、旧金山召开。\u0026#xD;\n\u0026#xD;\n在即将过去的2015年,我们在中国成功举办了QCon北京和QCon上海。我们紧扣热点,坚持实践驱动,很多精彩演讲…

洪莆日美

韩国女艺术家洪莆日美,曾在台湾研习美学,现为韩国釜山高神大学美术系教授。她的作品与其是在黑与白之间,毋宁说是在暗与光之间,它是东方阴阳哲学与简约主义艺术实践的圆满和结晶。她在自述中写道: “我以纸墨布局&…

关闭Eclipse光标悬浮自动提示

最近几个版本的Eclipse默认鼠标移动到方法、属性等上面会出现悬浮窗提示,但鼠标下移后不会消失,编写代码的时候很烦人。 设置preferences-->General-->Editors-->Text Editors--> when mouse moved into hover:选择Close hover

层次化设计

层次化设计 1、模块原型 外部的模块声明 SystemVerilog允许用户为被实例化的模块指定一个原型,这就简化了编译过程。原型的定义使用关键字extern,extern之后是模块及其端口是声明。 //使用Verilog-1995代码风格的原型 entern module counter(cnt,d,clo…

ASP.NET WebHooks RC 1发布

正如消息队列能够让同一个组织内的多个应用相互通信一样, WebHooks也为来自不同组织的网站提供了一种以异步的形式进行通信的方法。\u0026#xD;\n\u0026#xD;\n从本质上说,WebHook就是一种回调机制。用户可以在WebHook提供者中注册一个自定义的URL&#xf…

远程管理 KVM 虚机 - 每天5分钟玩转 OpenStack(5)

上一节我们通过 virt-manager 在本地主机上创建并管理 KVM 虚机。其实 virt-manager 也可以管理其他宿主机上的虚机。只需要简单的将宿主机添加进来 填入宿主机的相关信息,确定即可。 接下来,我们就可以像管理本地虚机一样去管理远程宿主机上的虚机了。 …

WM的Image格式分析

定制 WM 时 ,生成的image的扩展名很多,dio ,nb0 ,bin等等,他们都是什么关系。看一个例子。 Memory.cfg.xml的内容如下 我们可以看见image由4个分区组成,分别为ULDR,NK,OS,Storage(最多只能有4个分区)。这4…

随机取不重复的数字

for( int i 0; i < 25; i) a[i] i;srand( time(NULL) ); for( i 0; i < 25; i) swap( a[0], a[rand()%25] );

DSP笔记

DSP笔记 duty:占空比&#xff1b;DFT:可测性设计头文件的主要作用是&#xff1a;包含一些宏定义和函数。头文件作为一种包含功能函数、数据接口声明的载体文件&#xff0c;主要用于保存程序的声明&#xff0c;而定义文件用于保存程序的实现。入门&#xff0c;GPIO输入输出&…