42 / 63 · 概念
移位電路驗證與資料、valid 對齊
找出被對稱樣式掩蓋的錯誤,以及有效訊號差一週期的錯位。
單元可免費閱讀,註冊課程即可儲存學習進度。
選擇能揭露錯誤的位元序列
只移動 0000 或 1111 會掩蓋方向反轉。用 1000 這類非對稱樣式,或只有一位為 1 的輸入,追蹤各位置。初始狀態若也只用全 0,可能漏掉部分初始化路徑與保持錯誤。
3 位元暫存器暫存器儲存多個位元的狀態。本課程中的同步暫存器會在時脈邊緣儲存指定的輸入。 詳細內容由 000 依序輸入 1,0,0,得到 001→010→100;反方向實作則為 100→010→001,第一個邊緣就能區分。
以兩種表示審查參考模型
每個有效邊緣比較此數值模型與實際切片切片選取向量中一段連續的位元範圍。選取範圍決定結果的位寬與位元順序。 詳細內容、串接 RTL 是否一致。N=3 等小規模可窮舉八個正常狀態與兩種輸入,共 16 個轉移,再另外加入 reset 與 enable 組合。
每欄是一次上升緣上升緣是時脈由 0 變成 1 的瞬間。它與表示整段 CLK=1 期間的高準位不同。 詳細內容的觀察紀錄。輸入為邊緣前值,名稱含「後」的狀態為更新後值。欄位對齊表示取樣順序,並未繪出實體傳播延遲傳播延遲是輸入改變後,輸出穩定至正確值所需的時間。邏輯式是否等價與時間特性是兩個不同問題。 詳細內容。
初始 q=000。第二個邊緣 enable=0,因此即使 din 改變,也保持 q=001。請分開計算邊緣數與接受數。
查看波形資料
| 訊號 | 波形 | 匯流排值 |
|---|---|---|
| 邊緣 | 2345 | E0 → E1 → E2 → E3 |
| enable | 101. | |
| din | 10.1 | |
| q 後 | 2.34 | 001 → 010 → 101 |
親自重現波形:先以 din=1 前進一個邊緣得到 001,再以 enable=0、din=0 前進,仍保持 001。重新啟用 enable,依序給 din=0,1,得到 010,101。此模型只處理資料暫存器;valid 也必須依相同 enable 條件暫停,會在下一節另行檢查。
同步 reset 優先於 enable。enable=0 時,保持已儲存的值。 q=000; q_next = (2q + din) mod 8
Valid 也是資料路徑的一部分
若資料停住但 valid 繼續移動,或資料移動而 valid 停住,輸出使用者就會消費錯誤樣本。只驗證「輸出位元正確」,不能認定介面正確。
| 測試 | 預期行為 |
|---|---|
| 連續正常輸入 | 位元順序與固定有效延遲一致 |
| 中途 enable=0 | 資料與 valid 一起保持 |
| 中途 reset | 清除前一資料框的有效狀態 |
| 連續新資料框 | 分清前框結尾與新框開頭 |
分析失敗時,同時記錄輸入接受序號,就不會與實際時脈編號混淆。保留包含資料框邊界的最小反例,比重複查看整段長波形有效。
自己試試看
資料暫存器只有 enable=1 才移動,valid 延遲線卻每個時脈都移動。用什麼輸入最容易看出錯誤?
查看解說
在兩筆不同資料之間加入 enable=0 的暫停邊緣,就會看到 valid 提早到達或附到另一筆資料。應與對資料及中繼資料套用相同接受條件的參考模型比較。