微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 完整case情况下的default该怎么写?

完整case情况下的default该怎么写?

时间:10-02 整理:3721RD 点击:

举个简单的例子:
always@(a)
  case(a)
    1'b0: b=4'ha;
    1'b1: b=4'hb;
    default:
  endcase
此处default有两种写法
1. default: b=4'hx;
2. default: b=4'ha;
请问这种情况怎么写好,综合出来有什么区别,特别是在状态机中,在状态编码是完全使用的情况下(此处a=0和a=1的情况都有了),default是state<=IDLE,还是state<=4'bx;
这两种情况会有什么区别,综合出来的电路有什么区别?
谢谢

没人愿意帮助解释一下吗?

x比较好吧……
虽然综合出来一样,但rtl仿真阶段,default是x更有利于x的传播。
俺也是新手,欢迎指正~


1'b1:
改成
default:
-----------
完整case时综合结果一样,但有利于代码覆盖率检查。

6楼的意见比较好,如果是完全编码的case的话,额外的default在做代码覆盖率检查时是不覆盖的,但是不是这种写法是推荐写法?状态机中也一样吗?

如果是完整的case没有必要写default,虽然不会有什么问题,但是增加了工作量同时会降低代码覆盖率。
而且,以小编的例子来说,当a = x的时候,b也是x,增加一条default: b= 4'hx没有任何意义。

6楼的想法不错。

写成X完全是为了方便仿真阶段出错时易于发现,对于综合应该没有区别。

举个简单的例子

xuexile!

看你怎么要求了,如果是要求安全设计的话,应该是赋值给一个安全状态;如果省资源的话,用xx好些。

学习了~

给个默认的就OK了,或不写

当然是增加一条default后赋值x好了。
其实写代码不要以个人的主观意念去写,而是应该考虑综合器的实际工作模式。
如果前面case实际可能到达的分支都有了,default值是不可能到达的,显然,default的值也不是需要关心的,那么写出一个default分支并赋值x有什么好呢?其实这么一写,就是告诉综合器:别的分支情况我不关心了,你想赋什么值都可以的。综合器就会根据前面的赋值情况,综合出一个面积最小的组合逻辑出来。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top