官方论坛
官方淘宝
官方博客
微信公众号
点击联系吴工 点击联系周老师

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

发布时间:2020-02-20   作者:admin 浏览量:

 

本文为明德扬原创文章,转载请注明出处!


在综合时发现会有很多如下警告出现:has a constant value of 0 in block


意思是该信号的值始终为0,在优化过程中可能被优化。

 

但是该信号为数据输入,是不可以被优化的,所以找到该代码处查找问题。

 

null

 

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

 

null

 

从代码可以分析,f2p_data_in一直为0,有可能是条件一直没满足,也有可能是条件满足的时候,data_out一直为0

情况不太明确,先排除是不是data_out的影响。方法如下:将图中12处的data_out信号改成固定输入值,16’hffff,和 16’h0000 ,修改后重新综合发现之前出现的警告并未出现。这说明了条件是有满足的时候的,问题应该出现在data_out信号上。

 

然后找到data_out输出模块查看问题。

 

null

always块就是对data_out这个输入信号打2拍。按照前面的思路,将图中rx_done位置修改为1,查看情况是否与data_out有关(将之前给f2p_data_in赋固定值的操作取消)。

重新综合后发现,警告也没有出现,说明该警告的生成和data_out无关,而是与条件rx_done信号有关,可能该信号一直为0

 

下一步找到rx_done信号模块查找问题。

 

null

 

在检查该模块时发现,rx_done1的条件并不成立,所以rx_done一直无法为1,导致后续data_out一直输出为0

 

总结:

1. 对于警告等信息,一定要读懂,并理解其含义。例如本课说某信号一直为0,这是问题,那为什么?则是要根据这个含义去分析。

2. 对于难以分析的,可以尝试修改代码,以方便验证。注意,这只是为了验证某种设想,验证完后,代码要改回来。

   拓展阅读