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