Altifigence Academy

25 / 37 · 概念

驗證計畫、覆蓋率與獨立參考模型

區分測試通過與符合規格,將邊界、交叉條件及最小反例納入驗證計畫。

驗證計畫把規格轉成可檢查的主張

不要只寫「運作良好」,而要列出重設後狀態、正常輸入輸出、暫停時保持、非法輸入處理與完成時點等具體主張。每項至少對應一個測試與觀察點,就容易找出遺漏條件。

功能主張激勵觀察
reset 優先reset 與 enable 同為 1下一狀態為初值
保留資料順序連續非對稱樣式所有輸出值與 valid
精確邊界回捲最大狀態前後M-1→0,無範圍外值
暫停時保持輸入變動、accept=0儲存狀態不變
允許重疊樣式10101第三、第五個接受輸入偵測成功

為何需要獨立參考模型

若把移位 RTL 的切片切片選取向量中一段連續的位元範圍。選取範圍決定結果的位寬與位元順序。 詳細內容原樣複製為參考模型,索引錯誤也可能一起複製。改用整數乘法與 modulo,或字串尾碼比較等表示方式,有助於相互審查。但形式不同不會自動證明獨立性,仍要手算小案例確認。

覆蓋率不是通過次數

程式行被執行的 coverage,不等於功能情況已被檢查。reset×enable、state×input、full×push×pop 等交叉條件可能揭露錯誤。不要只靠隨機測試,應用定向測試補上少見但重要的組合。

N 個輸入的組合電路可窮舉 2N2^N 組,但循序電路還有輸入時間序列。需分析所有狀態是否可達,以及不變量不變量是在所有允許的執行過程中都必須成立的條件。例如,深度為 4 的 FIFO,其儲存數量必須一直介於 0 至 4。是否在全部轉移中維持。有限次模擬通過紀錄,不能說成無限時間的數學證明。

由規格獨立產生答案,不要複製實作。發現失敗時,除實際值外,也記錄緊接之前的輸入與狀態。

驗證的四個觀察環節
  1. 規格與激勵: 選擇邊界與交叉條件
  2. 獨立參考模型: 計算預期值及其有效時點
  3. 與 DUT 比較: 在相同觀察時點比對
  4. 記錄第一個不一致: 保存最小反例與 seed

縮小並記錄失敗

記下第一次 mismatch 的前狀態、輸入、預期值與實際值。刪除無關激勵,形成仍會失敗的最小反例後再修正。不只讓修改的測試通過,也要重新執行既有邊界與重設重設將狀態回復至規格指定的初始值。必須一併定義它是同步或非同步,以及是否優先於其他控制訊號。 詳細內容迴歸檢查。

自己試試看

RTL 程式碼覆蓋率 100%,一萬次隨機測試都通過,卻從未產生 reset 與 enable 同為 1,還需補什麼?

查看解說

先確認規格中的交叉條件,再加入非零初值的定向測試以揭露優先權。程式碼覆蓋率或測試數量,不能取代特定功能條件的驗證。

此選擇適用於本瀏覽器,隨時可從頁尾變更。