果然跟我想的一樣,1'bx 在 Verilog 中屬於 false 的情況。
我的 Testbench 結束條件是某個 register bit != 1,IP Vender Testbench 的結束條件是判斷 bit == 1'b1,就會繼續在 while loop 中。
但不知為何,我失敗的 Test case 會讀到 1'bx,因為等於 false,自然會跳出迴圈。
下面是我模擬程式的示意圖。
雖然 IP Vender 判斷條件寫的 code 不嚴謹!但問題不是出在這裡,而是為什麼除了 REVISION_CHECK 外的測試,在讀 Shadow register 時居然會讀到 0 or 1 以外的值?
感覺問題本質又回到了原點:
01. 客戶給的 C code 和 firmware 是否正確?
02. 是否有哪個設定是錯的,比如像 cfg 到底是不是 hard code?
03. Testbench 是否有哪邊給的訊號是錯的或是說是否需要調整 timing,就像我用 APB 連 REVISION_CHECK 都過不了?
沒有留言:
張貼留言