Altifigence Academy

12 / 37 · 概念

MUX 驗證:窮舉檢查與性質

分別檢查組合輸入覆蓋與儲存行為,並縮小反例。

什麼才算正確

1 位元 a、b 加上 sel,共八組輸入。這種規模下,逐一確認全部情況很有效。寬度 W 的 MUX多工器是依選擇訊號,將多個輸入之一連至輸出的組合電路。必須明確定義選擇位元與輸入編號的對應關係。 詳細內容 若直接窮舉全部輸入,連同選擇線共有 22W+12^{2W+1} 組,因此寬度稍增就需要其他策略。

輸出寬度為 W 時,各位元的選擇規則如下。

∀i∈{0,…,W−1},yi=s‾ai+sbi\forall i\in\{0,\ldots,W-1\},\quad y_i=\overline s a_i+s b_i

依錯誤類型挑選激勵

要檢查的錯誤有效的輸入或觀察
a/b 接反讓 a、b 不同,比較 sel=0 與 1
位元順序顛倒只有一個 1 的 walking-one 樣式
stuck-at 固定值缺陷全 0、全 1、交錯位元樣式
儲存邊緣錯誤在邊緣間改變輸入,確認 q 保持
差一週期延遲讓連續邊緣的預期值彼此不同

測試很多不等於驗證良好,必須說得出要偵測哪種缺陷。

下方只選 a、b 不同的情況,每欄是一個測試向量。錯誤選擇式在四欄都產生與 expected 相反的值。

找出選擇反向錯誤的四種組合
查看波形資料
波形資料:每個字元表示一個區間;句點保持先前狀態;p 表示一個時脈週期。
訊號波形匯流排值
a0.1.
b1.0.
sel0101
預期值01.0
選擇反向錯誤10.1

參考模型應獨立於實作

直接複製 DUT 程式,可能把同一錯誤實作兩次。用規格的真值表真值表完整列出所有可能的輸入組合,以及每個組合的輸出。隨時間的變化須另外以波形確認。 詳細內容或索引選擇建立預期值,q 則另外追蹤先前擷取的狀態。出現 mismatch 後,嘗試縮成仍會失敗的最短輸入序列,再解釋原因。

不要只比對最後狀態,應在每個觀察點記錄實際值、預期值與輸入。這份紀錄能區分「模擬執行過」與「符合規格」。

自己試試看

8 位元 MUX 只用 a=0x00、b=0xFF 檢查兩種選擇值。這樣也能找出輸出位元順序顛倒的錯誤嗎?

查看解說

不能。0x00 與 0xFF 顛倒位元順序後仍相同。應用 0x01、0x02 等能顯示位置的樣式,並逐一比較輸出位元。

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