WFU

2019年5月21日 星期二

深度學習物件偵測 IP 的設計與驗證

Chips&Media 設計的 c.WAVE100 IP 可用來偵測物件,如人體和汽車,可以處理 4K 解析度以及 30fps 視訊輸入。採行的 Deep Neural Network (DNN) 演算法基於 Google 的 TensorFlow 框架。先利用 C 語言建立模型再合成出 RTL 程式碼。



使用 HLS 的原因


使用 HLS 的原因有二:
  • 為了節省面積,處理週期,必須探索許多不同的架構。
  • DNN 演算法也正在進化中

因此,非常適合使用 HLS 進行設計。但是因為首次採用 HLS, 所以在此專案仍然成立兩個部門,分別使用傳統的 RTL,以及 HLS 流程來設計,相互比較。


  • 允許做最後階段的改變:使用 HLS 設計,可以容許對 C/C++ 程式碼在任何階段改變,重新產生 RTL 程式碼。
  • 快速評估硬體:探索許多架構,對 Power、Performance、Area (PPA) 做最佳化而不需要更動原始碼。
  • 加速開發時程:可以精簡設計和驗證週期,以 C/C++ 增加新功能,比起 RTL,C/C++的 程式碼行數少了數倍。



在流程中的  Catapult Design Checker 可以做靜態 (linting) 以及正規 (formal) 的程式碼檢查,沒問題才進行後續的模擬和合成。,

Catapult SCVerify 可以做 RTL 和 C model 的偕同模擬,比較結果。


使用 HLS 的結果


開發週期比較,RTL 團隊花了 5 個月,而 HLS 團隊僅 2 .5 個月。面積在 TSMC 28HPC 中相仿,而 HLS 團隊認為將時脈頻率降低,可以更精簡邏輯閘數量,縮小面積。因此改動時脈重新模擬合成,獲得更小的面積。而這樣的評估,運用傳統 RTL 設計方法是不可能做到的。

寫 C 程式碼時不需要考慮有限狀態機 (finite state machine),也不需要考慮寄存器 (register) 之間的時序。相較於 RTL,C 程式碼可讀性更高,模擬速度更快,大為加速開發時程。

SCVerify 可根據 C testbench 自動產生測試框架,提供 RTL 測試時重複使用。


總結


以 c.WAVE100 深度學習的物件偵測晶片為案例,可以得知 HLS 特別適合開發實現新的演算法,探索許多架構和 PPA 的結果 。

HLS 的結果很容易在  FPGA 或是 embedded FPGA 實現,也容易移植成客製化 ASIC,在不同的製程上實現 IP。