【導讀】今天的設計團隊如果采用傳統(tǒng)的RTL設計流程,將花費很多時間才能將運算密集型網(wǎng)絡帶入到硬件中,該領域亟需一個有別于以往RTL流程,同時又能有效提高生產(chǎn)力的方法。
今天的設計團隊如果采用傳統(tǒng)的RTL設計流程,將花費很多時間才能將運算密集型網(wǎng)絡帶入到硬件中,該領域亟需一個有別于以往RTL流程,同時又能有效提高生產(chǎn)力的方法。
CATAPULT HLS平臺的時代來臨
15年前,Mentor認識到設計和驗證團隊需要從RTL升級到HLS層級,并開發(fā)Catapult®HLS平臺。該平臺提供了從C + +到最佳化RTL的完整流程(圖1)。
圖1:Catapult HLS平臺
Catapult HLS平臺為算法設計師提供硬件設計解決方案,可以從C++/SystemC描述,生成高品質的RTL,并且以ASIC、FPGA或eFPGA為目標。此平臺能在合成之前檢查設計中的錯誤、為功能驗證和覆蓋率分析提供無縫且可重復使用的測試環(huán)境,同時支持在生成的RTL與原始HLS來源之間執(zhí)行形式等效性檢查。
該解決方案的優(yōu)勢包括:
支持后期階段變更??呻S時變更C++算法,重新生成RTL代碼或使用新制程。
支持硬件評價??裳杆俚靥剿鞴摹⑿阅芎兔娣e選項,而無需變更原始代碼。
加快時程。將設計和驗證所花時間從一年縮短至幾個月,可在數(shù)日內增添新功能,使用的C/C++代碼行數(shù)比RTL減少5倍。
AI加速器生態(tài)系統(tǒng)
同時,Mentor在Catapult HLS平臺中部署了AI加速器生態(tài)系統(tǒng)(圖2),為AI設計師提供能快速展開項目的環(huán)境。
圖2:Catapult AI加速器生態(tài)系統(tǒng)
AC MATH數(shù)據(jù)庫
Algorithmic C Math(AC Math)中的所有函數(shù)都以C ++模板參數(shù)寫成,讓設計師可依據(jù)目標應用來指定數(shù)值的精準度。許多函數(shù)都使用不同的近似策略,例如,自然對數(shù)提供兩種形式,即分段線性近似和cordic形式。在可接受準確度稍有誤差的情況下,前者較小且較快; 后者雖然較慢,但準確許多。所有情況下都能自定義來源以達成設計目標。每個功能/內存塊都附有詳細的設計文件和C ++驗證程序。由于Catapult HLS平臺會利用C ++驗證程序,因此很容易根據(jù)來源設計來驗證RTL準確度。
該數(shù)據(jù)庫中的數(shù)學函數(shù)類別包括:
分段線性函數(shù)-絕對值、正規(guī)化、倒數(shù)、對數(shù)和指數(shù)(自然和底數(shù)2)、平方根、反平方根和正弦/余弦/正切(正和反)
激勵函數(shù),如雙曲正切、S函數(shù)和Leaky ReLU函數(shù)
線性代數(shù)函數(shù),如矩陣乘法和Cholesky分解
DSP數(shù)據(jù)庫
Algorithmic C DSP(AC DSP)數(shù)據(jù)庫定義了DSP設計師通常所需要的可合成C ++函數(shù),例如濾波器和FFT。這些函數(shù)采用以C ++類別為主的設計,讓設計師能輕松示例物件的眾多變體,以打造復雜的DSP子系統(tǒng)。與AC Math數(shù)據(jù)庫一樣,輸入和輸出參數(shù)都會參數(shù)化,以便能在所需的定點精確度下執(zhí)行算術,從而在為合成的硬件執(zhí)行面積和性能折衷時,提供高度的彈性。
DSP數(shù)據(jù)庫包含:
濾波器函數(shù),如FIR、1-D移動均值,以及多相位抽取
快速傅立葉變換(FFT)函數(shù),如radix-22單一延遲回授、radix-2x動態(tài)就位和radix-2就位圖像處理數(shù)據(jù)庫Algorithmic C圖像處理數(shù)據(jù)庫(AC IPL)首先會定義一些常見的像素格式類型定義。
AI加速器生態(tài)系統(tǒng)還可提供豐富的工具組,由真實且經(jīng)過測試的加速器參考設計示例,團隊可以研究、修改和復制這些示例,迅速展開項目。這些隨Catapult提供的套件,包含了可設定的C++/SystemC IP原始代碼、文件紀錄、驗證程序和指令碼,讓設計能進行HLS合成和驗證流程。這些工具組展示了各種能用來對性能(延遲)、幀率、面積或功率的折衷進行實驗的方法和編寫程序技術。
PIXEL-PIPE視訊處理工具組
該視訊處理工具組展示了一個使用pixel-pipe加速器的即時圖像處理應用程序(圖3)。加速器內存塊使用C++類階層構架來實作。該內存塊將圖像縮小,并將圖像從彩色轉換為單色,以執(zhí)行邊緣偵測,然后放大圖像。Xilinx®PetaLinux下的CPU上,執(zhí)行了一個使用者空間應用程序,此程序能讓軟件控制開啟或關閉邊緣偵測內存塊。工具組文件紀錄會顯示如何使用Xilinx IP將該內存塊整合到Xilinx電路板中,以便團隊展示該系統(tǒng)。
圖3:Pixel-pipe視訊處理工具組
2-D折積工具組
該工具組展示了如何以C++對Eyeriss1處理元件(PE)數(shù)組進行編碼,實作2-D折積以執(zhí)行圖像的強化(銳化、模糊和邊緣偵測)。處理元件(圖4)可以執(zhí)行3x1乘積累加(折積)。
圖4:Eyeriss處理元件
TINYYOLO物件辨識工具組
物件辨識工具組(圖5)展示了使用折積加速器引擎的物件辨識應用程序,該引擎使用2-D Eyeriss工具組中的PE數(shù)組實現(xiàn)。該工具組展示了如何透過AXI4互連(從系統(tǒng)內存來讀取核心權重數(shù)據(jù))取得高速數(shù)據(jù)路由,并展示如何定義高效能內存構架。該工具組提供TensorFlow整合能力,可以C++語言的網(wǎng)絡層能進行推理測試。
圖5:TINYYOLO工具組示例-系統(tǒng)視圖
系統(tǒng)整合
加速器內存塊并非獨立存在,Catapult HLS提供“界面合成”能力,以將時間性協(xié)定加入至非時間性C++函數(shù)界面變數(shù)。設計師只需要在Catapult GUI中,為協(xié)定設定構架約束條件。此工具可支持典型的協(xié)定,例如AXI4視訊串流、請求/認可交握,以及內存界面。這讓設計師不必變更C++原始碼,就能探索界面協(xié)定。
AXI示例
AXI示例(圖6)顯示了如何使用Catapult HLS產(chǎn)生的AXI界面IP,在AXI SoC子系統(tǒng)中示例一個或多個加速器元件。提供主控端、受控端和串流示例。
圖6:AXI示例
基礎處理器示例
基礎處理器示例(圖7)顯示了如何將機器學習加速器連接到完整的處理器型系統(tǒng)中,并采用了AXI示例。此示例中的機器學習加速器采用了簡單的乘積/累加構架,搭配2-D折積和區(qū)域取最大值。支持數(shù)個第三方處理器IP模型,并包含一個用于裸金屬編程的軟件流程(含有相關數(shù)據(jù))。
圖7:基礎處理器平臺示例
免責聲明:本文為轉載文章,轉載此文目的在于傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請聯(lián)系小編進行處理。