明德扬吴老师 发表于 2020-2-23 09:19:39

问题定位方法-某信号一直为0的警告


    本文为明德扬原创文章,转载请注明出处!   在综合时发现会有很多如下警告出现

    意思是该信号的值始终为0,在优化过程中可能被优化。
    但是该信号为数据输入,是不可以被优化的,所以找到该代码处查找问题。

    检查代码后,在此always块中并未发现f2p_data_in信号的书写有何问题。所以尝试查找是否是与f2p_data_in信号相关或者相连接的信号出现问题,导致该警告的出现。

    从代码可以分析,f2p_data_in一直为0,有可能是条件一直没满足,也有可能是条件满足的时候,data_out一直为0。
    情况不太明确,先排除是不是data_out的影响。方法如下:将图中1和2处的data_out信号改成固定输入值,16’hffff,和 16’h0000 ,修改后重新综合发现之前出现的警告并未出现。这说明了条件是有满足的时候的,问题应该出现在data_out信号上。
    然后找到data_out输出模块查看问题。

    此always块就是对data_out这个输入信号打2拍。按照前面的思路,将图中rx_done位置修改为1,查看情况是否与data_out有关(将之前给f2p_data_in赋固定值的操作取消)。
    重新综合后发现,警告也没有出现,说明该警告的生成和data_out无关,而是与条件rx_done信号有关,可能该信号一直为0。
    下一步找到rx_done信号模块查找问题。

    在检查该模块时发现,rx_done为1的条件并不成立,所以rx_done一直无法为1,导致后续data_out一直输出为0。
总结:
1. 对于警告等信息,一定要读懂,并理解其含义。例如本课说某信号一直为0,这是问题,那为什么?则是要根据这个含义去分析。
2. 对于难以分析的,可以尝试修改代码,以方便验证。注意,这只是为了验证某种设想,验证完后,代码要改回来。
页: [1]
查看完整版本: 问题定位方法-某信号一直为0的警告