微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > always@(mode_ctrol)悲剧

always@(mode_ctrol)悲剧

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

芯片都快要投片了,但今天发现师兄们写的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了。

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

网站地图

Top