微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 下面两种case综合是否等效

下面两种case综合是否等效

时间:10-02 整理:3721RD 点击:
一 donot care
case(addr)
   3’d0: output = 3’d0;
    3’d1: output = 3’d1;
    3’d2: output = 3’d2;
    3’d3: output = 3’d3;
    3’d4: output = 3’d4;
     defaultutput = 3'dx;
endcase
二 synopsys 编译指导
case(addr)                      // // synopsys full_case
   3’d0: output = 3’d0;
    3’d1: output = 3’d1;
    3’d2: output = 3’d2;
    3’d3: output = 3’d3;
    3’d4: output = 3’d4;
endcase
加入default和fullcase两者应该都是为了避免锁存器,采用x引入无关项应该可以更好的优化,default x和full_case是不是一样的效果呢?

x本就不是一个能被综合器接受的一个值

同问,不过可能不同的综合工具,得到的结果不一样。

学习学习

两者应该是一样的,
公司里要求语法什么的尽量简单化,不要用full case, casez, casex等语句,避免人为或工具的差异导致问题

同意楼上的,还是把代码控制好,不要用那种容易出问题的代码

一样的,CASE所有的可能都写到酒不会生成透明的LATCH,你用DEFAULT也是这个作用,只是X这个复制综合的时候它会认为这是一个不需要关心的信号,不过个人的习惯是不用X,因为这个东西远离大家都知道,但是各家对它的支持不一样,所以可以在DEFAULT里写一个对你无效的值

我的理解,X状态是不定态,并是说板子里的程序跑到了X值,数字电路中,不是1,就是0,在每次上电是X状态就确定了是0或1,只是在不同的上电情况下,不一定是0或1

真正的数字里要么是1要么是0。
x是指不定太,所谓的不定太,就是指的可能是1可能是0。0和1都对你没有影响,所以你上面的两个综合的结果应该都是一样的,都可能是1或者0。所以还是一个不知道的值。
最后是default是一个你设定的值,不然综合器会给你一个随机的值。



    x是告诉综合其这个是无关项,所以综合工具可以更加大胆的优化无关项,
     综合后的结果当然不会是无关项了,会是固定的0或者1的组合,就看卡诺图的优化结果了。
    小编看我说的对么?

理论上应该是一样的

随便这东西最难弄了,不要把综合器想的那么智能,他有时候笨的就跟猪似的



    我已经在DC上综合过,上面两种情况的综合后的结果是一摸一样的

1.综合前综合后模型行为不一致
2.不能保证设计结果的一致性



    恩,明白小编的意思了,所以你的建议还是写明确default有一个明确的值咯。
   否则前仿和综合后仿的结果一个是x,一个是值,这样不太好,而且形式验证也可能报错么?
   小编是这个意思么?

没错没错

学习留印

7楼好建议

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

网站地图

Top