always@(mode_ctrol)悲剧
芯片都快要投片了,但今天发现师兄们写的RTL代码有点问题。是这样的
always@(mode_ctrol[3:0])
begin
case(mode_ctrol)
4'b0000: .....
4'b0001:......
这样写肯定不合理呀,应该这样
alway@(mode_ctrol[3:0])
begin
case(mode_ctrol[3:0])
4'b0000: .....
4'b0001:......
mode_ctrol是8位的。
但仿真时都没有发现问题。不知道这样两种写法综合出来的是否是一样的。
谢谢大家的意见。我终于弄明白了。综合出来的网表确实不一样。形式验证也通不过。功能上也有一些差异。但我发现我的设计里没有用到mode_ctrol的前四位,也就是说我的设计保证mode_ctrol的前四位不变。只要前四位不变,两种方法的输出都是一样的。所以不会影响到我的输出。只有mode_crol的前四位出现了变化这时两种网表的功能就会不一样,输出也不一样。
通不过,还要流片?慢慢改吧
我觉得最保险的办法你跟一下综合后的网表看到底对不对
为什么不写成always @(*)
不支持2001的语法么?
看一下综合出来的电路图有没有区别吧
话说最近投片的是哪个foundry的?
UMC 0.25um
仿真当然是对的啦,但综合结果跟综合器有关的,看一下电路结构就好了
悲剧了
谢谢大家的意见。我终于弄明白了。综合出来的网表确实不一样。形式验证也通不过。功能上也有一些差异。但我发现我的设计里没有用到mode_ctrol的前四位,也就是说我的设计保证mode_ctrol的前四位不变。只要前四位不变,两种方法的输出都是一样的。所以不会影响到我的输出。只有mode_crol的前四位出现了变化这时两种网表的功能就会不一样,输出也不一样。
第一种写法,仅当mode_ctrol高4位全为零时,才和第二种写法一样
对,如果前四位不是0结果就不一样。而我的设计的前四位全为0,不会出现其他值,所以应该不会影响我的功能的。不想改了。所有的都弄好了都马上tapeout了。
