本文為明德?lián)P原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明出處!
在綜合時(shí)發(fā)現(xiàn)會(huì)有很多如下警告出現(xiàn):has a constant value of 0 in block
意思是該信號(hào)的值始終為0,在優(yōu)化過(guò)程中可能被優(yōu)化。
但是該信號(hào)為數(shù)據(jù)輸入,是不可以被優(yōu)化的,所以找到該代碼處查找問(wèn)題。
檢查代碼后,在此always塊中并未發(fā)現(xiàn)f2p_data_in信號(hào)的書(shū)寫(xiě)有何問(wèn)題。所以嘗試查找是否是與f2p_data_in信號(hào)相關(guān)或者相連接的信號(hào)出現(xiàn)問(wèn)題,導(dǎo)致該警告的出現(xiàn)。
從代碼可以分析,f2p_data_in一直為0,有可能是條件一直沒(méi)滿足,也有可能是條件滿足的時(shí)候,data_out一直為0。
情況不太明確,先排除是不是data_out的影響。方法如下:將圖中1和2處的data_out信號(hào)改成固定輸入值,16’hffff,和 16’h0000 ,修改后重新綜合發(fā)現(xiàn)之前出現(xiàn)的警告并未出現(xiàn)。這說(shuō)明了條件是有滿足的時(shí)候的,問(wèn)題應(yīng)該出現(xiàn)在data_out信號(hào)上。
然后找到data_out輸出模塊查看問(wèn)題。
此always塊就是對(duì)data_out這個(gè)輸入信號(hào)打2拍。按照前面的思路,將圖中rx_done位置修改為1,查看情況是否與data_out有關(guān)(將之前給f2p_data_in賦固定值的操作取消)。
重新綜合后發(fā)現(xiàn),警告也沒(méi)有出現(xiàn),說(shuō)明該警告的生成和data_out無(wú)關(guān),而是與條件rx_done信號(hào)有關(guān),可能該信號(hào)一直為0。
下一步找到rx_done信號(hào)模塊查找問(wèn)題。
在檢查該模塊時(shí)發(fā)現(xiàn),rx_done為1的條件并不成立,所以rx_done一直無(wú)法為1,導(dǎo)致后續(xù)data_out一直輸出為0。
總結(jié):
1. 對(duì)于警告等信息,一定要讀懂,并理解其含義。例如本課說(shuō)某信號(hào)一直為0,這是問(wèn)題,那為什么?則是要根據(jù)這個(gè)含義去分析。
2. 對(duì)于難以分析的,可以嘗試修改代碼,以方便驗(yàn)證。注意,這只是為了驗(yàn)證某種設(shè)想,驗(yàn)證完后,代碼要改回來(lái)。