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

标题: 完整case情况下的default该怎么写? [打印本页]

作者: kexin74    时间: 2011-3-3 17:49
标题: 完整case情况下的default该怎么写?
本帖最后由 kexin74 于 2011-3-3 21:47 编辑

举个简单的例子:
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;

这两种情况会有什么区别,综合出来的电路有什么区别?

谢谢
作者: kexin74    时间: 2011-3-3 21:48
没人愿意帮助解释一下吗?
作者: orlye    时间: 2011-3-3 21:55
x比较好吧……
虽然综合出来一样,但rtl仿真阶段,default是x更有利于x的传播。
俺也是新手,欢迎指正~
作者: jackertja    时间: 2011-3-4 08:53

1'b1:
改成
default:
-----------
完整case时综合结果一样,但有利于代码覆盖率检查。
作者: kexin74    时间: 2011-3-4 09:06
6楼的意见比较好,如果是完全编码的case的话,额外的default在做代码覆盖率检查时是不覆盖的,但是不是这种写法是推荐写法?状态机中也一样吗?
作者: hover99    时间: 2011-3-4 10:11
如果是完整的case没有必要写default,虽然不会有什么问题,但是增加了工作量同时会降低代码覆盖率。
而且,以楼主的例子来说,当a = x的时候,b也是x,增加一条default: b= 4'hx没有任何意义。
作者: exiaohu    时间: 2011-3-4 12:46
6楼的想法不错。。。。。。
作者: chlor    时间: 2011-3-4 14:22
写成X完全是为了方便仿真阶段出错时易于发现,对于综合应该没有区别。
作者: yinjunabiao    时间: 2011-3-4 15:34
举个简单的例子
作者: 晒太阳    时间: 2011-3-6 12:39
xuexile!
作者: tonylzez    时间: 2011-3-6 21:45
看你怎么要求了,如果是要求安全设计的话,应该是赋值给一个安全状态;如果省资源的话,用xx好些。
作者: JD.WARLOCK    时间: 2011-3-6 22:51
学习了~~~~~~~
作者: forrest320    时间: 2011-3-27 17:42
给个默认的就OK了,或不写
作者: hahalucky    时间: 2011-3-27 21:52
当然是增加一条default后赋值x好了。
其实写代码不要以个人的主观意念去写,而是应该考虑综合器的实际工作模式。
如果前面case实际可能到达的分支都有了,default值是不可能到达的,显然,default的值也不是需要关心的,那么写出一个default分支并赋值x有什么好呢?其实这么一写,就是告诉综合器:别的分支情况我不关心了,你想赋什么值都可以的。综合器就会根据前面的赋值情况,综合出一个面积最小的组合逻辑出来。




欢迎光临 EETOP 创芯网论坛 (原名:电子顶级开发网) (https://bbs.eetop.cn/) Powered by Discuz! X3.5