Communitygithub.com

pynq-cv-accelerator

在 PYNQ 上將影像或數值張量連接到 HLS/RTL 運算單元,建立輸入輸出契約、管理連續緩衝和快取、比對黃金參考、定位管線延遲。適用於視覺檢測、濾波、特徵及矩陣運算的部署與遷移,不綁定模型類別或板卡位址。

pynq-cv-accelerator 是什麼?

此技能專為 PYNQ 環境中的視覺與數值張量處理加速器部署而設計。它能協助開發者將 HLS/RTL 硬體運算單元與軟體陣列對接,透過統一的張量契約(tensor contract)管理資料型態、形狀、量化參數等輸入輸出規格,並支援多種驗證路徑:從首次接線檢查、結果不一致除錯,到吞吐量與延遲異常分析。技能同時涵蓋標準 AXI DMA 與自訂 HLS IODMA 的緩衝管理、硬體綁定驗證、以及精確比對腳本(如 compare_raw.py)。支援平台包括任何搭載 PYNQ 的 FPGA 板卡(如 Zynq、Zynq UltraScale+),不限定特定模型或板卡位址。開發者僅需提供演算法、黃金輸入輸出、bit/HWH 或 HLS 頂層檔案,即可逐步完成部署、除錯與效能最佳化,並確保結果可重現、可遷移。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Coldsnow123/Yunheng-eye-PYNQ7020/tree/HEAD/skill/pynq-cv-accelerator

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

PYNQ 視覺運算子部署

目標是讓軟體陣列、硬體介面與驗證結果相互對應。先確定使用者要完成的是新運算子部署、既有故障定位還是效能最佳化,沿用已有授權和工程狀態;不要把每種任務都擴成完整重訓練或重構。

最小輸入

需要演算法/預處理、至少一組黃金輸入輸出、bit/HWH 或 HLS 頂層、實際板卡與 PYNQ 環境。缺少某項時先做已有資料能支援的離線檢查,指出哪項結論仍依賴缺失資料。

讀取 遷移說明,填寫 張量契約。範例是通用灰階張量,不是可直接載入到任意板卡的硬體組態。新模型必須重新確定 shape、dtype、layout、顏色、縮放/填充、量化尺度、捨入、飽和、輸出解碼和傳輸位元組數。打包 INT4 等位元級格式需另寫 packing 規則,現有契約檢查器只接收未打包數字陣列。

選擇驗證路徑

  • 首次接線:契約檢查 → 固定輸入整數參考 → 單幀 PL 原始輸出 → 連續幀 → 應用精度 → 分段計時。
  • 結果不一致:逐級儲存預處理、量化節點及 PL 原始張量,定位第一個出現差異的位置;先不要修改後處理閾值掩蓋前級錯誤。
  • 吞吐或延遲異常:固定輸入條件,記錄同一時脈域下的幀號及時間戳;用 計時腳本 區分排隊、PL/DMA 與後處理。
  • 更換板卡:重新識別 DMA、位址寬度、快取一致性、時脈復位及中斷;保留黃金參考和比對方法。

可複製的完整提示詞見 工作流,只讀取目前任務對應一項。

硬體與緩衝

先區分標準 AXI DMA 和自訂 HLS IODMA。標準簡單模式可參考 配接範本;自訂介面必須按暫存器和固定長度/TLAST 契約實現。不要將 Python API 名稱當作硬體協定。

連續緩衝需要明確所有權:CPU 寫入後同步到裝置;硬體完成且不再存取後,再同步到 CPU。異常時保留在途緩衝,不在 finally 中無條件 free。細節見 DMA 生命週期。

HWH 是介面描述,不證明磁碟 bit 已經載入。綁定已載入硬體時,核對載入身份、位址和參考輸出。LCD 與推理共用 PL 時,不能透過依次載入兩個完整 Overlay 獲得組合硬體。

驗證與最佳化

整數硬體原始輸出原則上逐元素精確一致;浮點演算法使用事先規定的絕對容差,記錄 dtype 與非有限值。使用 比對腳本,不能用放大容差替代介面修復。量化模型準確度與實現一致性分別評價。

同時檢查 LUT、Slice、FF、BRAM、DSP、時序與流反壓。FIFO 對照固定權重、輸入、頻率與並行度;模型改變後的結果另列。吞吐按有效完成幀數除真實量測視窗,延遲按同一幀兩端時間計算,不相加各階段中位數。

交付契約、原始輸出、來源碼/bit/HWH 身份、檢查結果及量測範圍。常見錯誤與方法失效條件見 排錯清單。專案效果與可遷移邊界見 驗證說明。

相關技能