17 / 20 · 概念
計分板與不變條件
除了最終矩陣,也檢查項目、標籤、邊緣與輸出傳輸。
單元可免費閱讀,註冊課程即可儲存學習進度。
區分兩種參考
以直接數學參考,使用獨立 i/j/k 迴圈計算寬位元總和。另用獨立時序模型,讓 A 向右、B 向下移動。將 RTL 索引輔助函式複製至黃金模型,可能重現相同錯誤。先從固定手算範例開始,再擴展至可重現的隨機輸入。
結果計分板以 job 與全域輸出座標為鍵。比較各接收值,並將鍵標為已接收。重複鍵表示重複,非預期鍵表示位址錯誤,未接收的預期鍵表示遺漏。零結果仍須交付。填補的超範圍座標絕不得寫入。
檢查陣列內不變條件
各 PE 必須恰好消費 [0,1,...,K−1]。相配的有效運算元需要相同 job 與 k 標籤。Count 保持於零到 K。暫停邊緣保持運算元、valid、標籤、累加器與 count。Clear 後 count 與累加器為零,且沒有有效權杖。阻塞結果在 valid 持續成立時保持 data 與 job。
| 層次 | 失敗範例 | 可能錯誤 |
|---|---|---|
| 算術 | 23 而非 19 | 索引、正負號或位元寬度 |
| 項目 | [0,1,1] | 重複權杖 |
| 時序 | 最後 PE 在 E2 完成 | 過早完成 |
| 暫停 | 暫停時 count 改變 | 只有部分狀態保持 |
| 輸出 | 同一鍵接收兩次 | 交握控制 |
2×2 範例中,最後 PE 在 E2 之後為十八,E3 之後為五十。E2 的全域 done 錯誤應同時使數值與時序檢查失敗。反之,重複與遺漏相同值的乘積可能保留最終總和;項目追蹤能抓出這種巧合。
儲存隨機種子、矩陣、維度、位元寬度與暫停位置。記錄第一個不符的 PE、項目與實體邊緣。刻意標籤錯誤應明顯失敗,而非悄悄消失。
一致地觀察 E_t 之後狀態。Node 參考執行、RTL 編譯、RTL 模擬、合成、時序收斂、DDS 專案執行與開發板測試,各自證明不同事實。提供的 Node 程式驗證算術與排程模型。未來 RTL 測試可重用測試資料,但必須保留自己的工具版本、命令與紀錄。
自己試試看
建立一組輸入,讓只檢查最終總和會漏掉一個重複與一個遺漏項。
查看解說
A 列 [1,1] 與 B 欄 [5,5] 正確總和為十。消費 [0,0] 也得到十,卻重複 k0、遺漏 k1。同時要求數值與精確 [0,1] 項目清單,可偵測錯誤。