20 / 20 · 概念
RTL 整合審查與延伸
將學習模型連接至 RTL 介面與驗證證據。
單元可免費閱讀,註冊課程即可儲存學習進度。
分配核心與包裝層責任
陣列核心處理暫存器運算元轉送、有號 MAC、valid/標籤與全域 advance。包裝層處理 start/clear、矩陣維度、分塊座標、錯時邊界供應、遮罩結果收集與輸出交握。以訊號名稱與邊緣契約定義各項責任。
簡單包裝層使用 IDLE、CLEAR、RUN、COLLECT、SEND。CLEAR 保證資料前先有一個初始化邊緣。RUN 推進邏輯步驟零到 K+2N−3。最後 RUN 邊緣之後,結果立即完成;COLLECT 在下一個邊緣複製結果。如此可避免在最終非阻塞更新的同一邊緣,複製到舊累加器。
計算整合延遲範例
N=K=2 時,clear 發生於 E−1,運算於 E0..E3。假設 E4 將四個結果平行複製至結果緩衝器。輸出每邊緣一個結果、ready 永遠為真,依列優先順序在 E5..E8 傳送十九、二十二、四十三、五十。從 clear 到最後傳輸的量測包含 E−1..E8 共十個上升緣,相較於四個運算邊緣。輸出阻塞延長 SEND,不改變已完成數值。
結果負載需要 job 與全域座標,加上明確的原始或量化表示。結果安全複製或消費之前,不要清除累加器。下一次運算與 SEND 重疊,需要緩衝器所有權與工作分離。
延伸設計時重新檢視契約
管線化乘法器改變累加、標籤與完成時序。歸約分塊需要保留部分和與新的位元寬度分析。重疊工作需要獨立累加狀態。FIFO 將 value、valid 與標籤作為同一負載儲存,並需要溢出與下溢檢查。
Gemmini 架構文件 提供本地儲存與資料移動搭配陣列的第一手範例。我們的狀態機與時序範例,是獨立訂定的學習契約。
提交維度、位元寬度、邊界排程、完成定義、暫停與重設策略、輸出順序與計分板紀錄。Node 檢查證明參考模型行為。宣稱成功之前,RTL 模擬、合成、時序收斂與產品整合,都需要各自實際執行的命令與證據。
自己試試看
整合範例在 E6 之後阻塞 ready 兩個邊緣。最後傳輸邊緣與總量測邊緣數變為多少?
查看解說
E7 與 E8 等待,再於 E9 與 E10 傳送剩餘兩個結果。最後傳輸為 E10;E−1..E10 量測包含十二個邊緣。運算仍為 E0..E3 四個邊緣,阻塞資料必須保持。