在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: MohanGrace

[求助] verilog中if else和case语句有什么区别?

[复制链接]
发表于 2015-1-5 21:01:54 | 显示全部楼层
举个例子,如果你用IF实现译码器,综合出的是有优先级的译码器。如果用CASE,综合出的就是一个无优先级的译码器。也就是说IF是有优先级的,执行的次序有先后。而CASE执行的时候是没有先后顺序的。不知你明白没。
发表于 2015-1-6 11:27:22 | 显示全部楼层
实际上还是条件完备性的问题吧

独热和普通还有格雷码不同编译器好像有不同的处理方法呢

就书写来说,ifelse更切合人类对于优先级的思维,而case更切合并行的思路

编译器怎么想就是另外一回事了。。。
发表于 2015-1-6 19:35:04 | 显示全部楼层
受教了,以前只管用,没想那么多
发表于 2015-1-7 11:07:44 | 显示全部楼层
表回复 1# MohanGrace


专门跑一下,工具用的DC 2010.3-SP5,库是smic-18,没有symbol_lib,所以不能上图,只能看netlist,下表的情况分别用compile和compile_ultra跑了,在此部分无差别。看到前面有兄弟用的else out_reg <= 1'bx这种用法,个人不推荐,DC的结果是,else的分支逻辑是前面else if分支的逻辑结果(视当时条件),case 的default最好也不用1'bx。
另,DC一般是不会出多选器的,优化方向都是尽量使用NOR/NAND/AOI/OAI这种,以一个4路选择逻辑为例,可用一个MX4X1M,也可用3个(OA122X1M/AOI22X1M),前者面积大40%左右,此处是smic-18库的数据。
   
  

  
  

if-else

  
  

case

  
  

  
  

else

  


out_reg<=1’bx

  
  

else

  

out_reg<=out_reg

  
  

//synopsys parallel_case

  
  

no

  
  

二进制

  
  

无优先级

  
  

else out_reg<=out_reg优先级高,其他无优先级

  
  

无优先级

  
  

无优先级

  
  

独热码

  
  

无优先级

  
  

else out_reg<=out_reg优先级高,其他无优先级

  
  

无优先级

  
  

无优先级

  
发表于 2015-1-7 16:57:04 | 显示全部楼层
okokokokokokok
发表于 2015-1-7 18:11:02 | 显示全部楼层
学习了
发表于 2015-1-8 12:19:37 | 显示全部楼层
随着综合工具的进步,已经不需要讨论if-else 和case的区别了,两者可以等同。
发表于 2015-1-8 19:03:02 | 显示全部楼层
啊发生的故事地方玩儿发放发的发生大发
发表于 2016-6-8 15:43:23 | 显示全部楼层
长见识了,看来以后学习还是要扎实一点
发表于 2016-7-29 07:45:51 | 显示全部楼层
写得好
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-23 00:05 , Processed in 0.021462 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表