下面两种case综合是否等效
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楼好建议
