在 AIoT 智能晶片的演進與設計一文中,提到著名的案例都使用高階合成 (High Level Synthesis, 簡稱 HLS),HLS 有幾個重大優點:
HLS 和 RTL 相較起來,最大的優勢是可以持續探索演算法和架構,如同 Chips&Media 使用 HLS 的原因:
再以設計開發的階段來區分,可以下圖表示,和 RTL 開發最大差異是設計 (design) 是以 C++ 來作進行,至於利用 Oasys-RTL 和 Nitro-SoC 分別作 RTL 合成以及自動布局繞線和,都是屬於實現 (implementation) 階段 了。最後在簽核 (signoff) 階段利用 Bluewave PI 作功耗完整性 (power integrity) 的驗證,用 Optimus-DS 作靜態時序 (static time analysis) 分析。
物理驗證包括,寄生電阻電容的萃取 (extraction)、虛擬金屬的填充 (dummy fill)、設計規則檢查 (DRC)、電子規則檢查,例如:IR drop、ESD、Latchup 則用 Calibre PERC 完成。Calibre 是業界的物理驗證的黃金標準 (golden standard)。
因此,能確保此流程實現出的晶片,能在各大晶圓廠順利投片量產。最後以全流程,從 C/C++/System C 到 RTL 到布局實現、物理驗證以及產出 GDSII 來投片,來總結整體的開發流程。
- 演算法開發者喜歡用 C/C++,HLS 可讓開發者專注於演算法,C/C++ 模型的模擬又快,更少的資源,更快的開發時程。
- 使用 HLS 設計,可以容許對 C/C++ 程式碼在任何階段改變,重新產生 RTL 程式碼。
- 驗證方便,可先建立純粹全功能的 C-model,和 HLS C-model 相互比較,可以快速完成功能性的驗證。比起 RTL,C/C++的 程式碼行數少了數倍,更容易檢查。
- HLS 的 C/C++ 程式碼具有可攜性,可以分別針對在 FPGA、embedded FPGA、Custom ASIC 產生 RTL 程式碼,也可在不同的製程之間移植。
- 可以更動規格模擬看到 PPA 的結果,進而最佳化。譬如,Chips&Media 的 HLS 團隊認為將時脈頻率降低,可以更精簡邏輯閘數量,縮小面積。因此改動時脈重新模擬合成,獲得更小的面積。而這樣的評估,運用 RTL 設計方法是不可能做到的。
HLS 和 RTL 開發流程比較
在 RTL 開發流程中,必須先確定演算法, 才能撰寫 RTL 程式碼並且模擬除錯,同時開發測試的架構。要再更動演算法,是很困難的。
HLS 和 RTL 相較起來,最大的優勢是可以持續探索演算法和架構,如同 Chips&Media 使用 HLS 的原因:
- 為了節省面積,處理週期,必須探索許多不同的架構
- DNN 演算法正在進化中,必須持續修改
開發流程的主要模組
- Oasys-RTL:RTL 合成工具,將 RTL 程式合成為 Gate-level netlist。
- Nitro-SoC:使用 Gate level netlist 來做自動布局繞線 (Place and Route)
- FormalPro: 做正規驗證 (formal verification),確定 RTL 程式碼與 Gate level netlist 為相等
- Tessent:可測試性的設計 (Design For Test, 簡稱 DFT),Tessent 是業界標準工具。
- Catapult:就是 HLS 工具本尊了。
再以設計開發的階段來區分,可以下圖表示,和 RTL 開發最大差異是設計 (design) 是以 C++ 來作進行,至於利用 Oasys-RTL 和 Nitro-SoC 分別作 RTL 合成以及自動布局繞線和,都是屬於實現 (implementation) 階段 了。最後在簽核 (signoff) 階段利用 Bluewave PI 作功耗完整性 (power integrity) 的驗證,用 Optimus-DS 作靜態時序 (static time analysis) 分析。
物理驗證包括,寄生電阻電容的萃取 (extraction)、虛擬金屬的填充 (dummy fill)、設計規則檢查 (DRC)、電子規則檢查,例如:IR drop、ESD、Latchup 則用 Calibre PERC 完成。Calibre 是業界的物理驗證的黃金標準 (golden standard)。
因此,能確保此流程實現出的晶片,能在各大晶圓廠順利投片量產。最後以全流程,從 C/C++/System C 到 RTL 到布局實現、物理驗證以及產出 GDSII 來投片,來總結整體的開發流程。