我有點難住。如何調試Verilog代碼,其中仿真功能如預期的那樣工作,但實現沒有?
我有我的模擬(ISIM)測試過的一個相當大的Verilog模塊,並將其用作我想要的。現在我已經將它與現實生活中的其他設備結合使用,並且一些東西可以工作,而有些東西不會。
例如,
我可以發送使用指令A的值,並驗證使用命令B.,正確值被接收工作沒有問題。
但是,如果我用指示C發送的值,我無法驗證它是使用命令D.在模擬它工作正常接收,所以我覺得我真的不能從模擬更多的獲得任何。
我已經看過邏輯分析儀上的信號,並且控制器設備(不是我的設計)發送正確的消息。當我發出命令B時,我可以看到從我的設備返回的值是正確的(我知道SPI工作正常)。我不知道C或D是否正常工作。 D只返回0,所以也許C首先不起作用。沒有辦法通過Verilog,而且這個模塊被封裝爲Vivado的IP。
這裏有兩個截圖。首先是模擬(我發送5,然後是2,然後我希望它在下一次發送時返回4,它會發送;後面是零)。
以下是我在現實中得到(前兩個字節並不重要,5是從之前發送值遺漏):
這裏是一個命令(B),在工作返回一個正確的值(它響應正在發送的0x01):
有沒有人有任何建議來調試?我幾乎不知道如何着手。 我不能在模擬中真正重現此行爲。
你是否合成了RTL來獲得一個門文件。你應該能夠模擬大門並獲得相同的結果。 RTL門限不匹配通常是由於不遵循RTL最佳實踐。你能否創建一個顯示問題的最小例子? – Morgan 2014-10-29 22:01:44