0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Mentor Graphics Catapult工具的HLS硬件設(shè)計(jì)

路科驗(yàn)證 ? 來源:路科驗(yàn)證 ? 作者:路科驗(yàn)證 ? 2022-08-26 13:59 ? 次閱讀

本文介紹基于Mentor Graphics Catapult工具的HLS(High LevelSynthesis,高層次綜合)硬件設(shè)計(jì)。

e9bb4c44-2501-11ed-ba43-dac502259ad0.png

首先將簡單介紹高層次綜合在數(shù)字芯片流程中所處的層次、其獨(dú)特優(yōu)勢等等;接著將介紹如何基于Catapult工具進(jìn)行HLS設(shè)計(jì),例如Catapult支持的數(shù)據(jù)類型、接口類型;最后將以RMD(RoughMode Decision,粗略模式估計(jì))為例介紹如何實(shí)現(xiàn)寄存器、狀態(tài)機(jī)和RAM等硬件電路基本組件。

e9dcbb90-2501-11ed-ba43-dac502259ad0.png

如圖表所示,數(shù)字芯片的硬件描述層級可以被粗略分為四個(gè),從底向上依次是物理級(晶體管級)、門級、RTL(RegisterTransfer Level,寄存器傳輸級)級和系統(tǒng)級/算法級。隨著芯片復(fù)雜度(晶體管數(shù)量)的不斷提升,在較低層次上描述整個(gè)硬件設(shè)計(jì)變得難以實(shí)現(xiàn)。目前的數(shù)字芯片集中于在RTL級以Verilog/ System Verilog語言描述硬件電路,特殊情況下為了追求極致的性能可能會(huì)在門級/物理級進(jìn)行電路設(shè)計(jì)??傮w來說,主要依靠DC(DesignCompiler), ICC(ICCompiler)這樣的EDA(ElectronicsDesign Automation,電子設(shè)計(jì)自動(dòng)化)工具來實(shí)現(xiàn)硬件描述層次的降低。隨著EDA工具的不斷發(fā)展,在系統(tǒng)級/算法級使用C/C++/SystemC等高級語言描述硬件電路逐漸被廠商采納以提升硬件開發(fā)效率。即在DC和ICC前,再使用HLS的綜合器來實(shí)現(xiàn)硬件描述層次的降低。

ea02e446-2501-11ed-ba43-dac502259ad0.png

HLS的出現(xiàn),讓硬件描述層級再次提升,有利于降低硬件設(shè)計(jì)難度,減少硬件開發(fā)時(shí)間,讓開發(fā)人員可以更多關(guān)注系統(tǒng)級/算法級的設(shè)計(jì)。越高層次的優(yōu)化往往能帶來更多的系統(tǒng)收益。但需注意,使用C等高級語言描述硬件電路本質(zhì)仍是設(shè)計(jì)硬件,在寫相關(guān)代碼時(shí)仍需做到能估計(jì)出相關(guān)的硬件電路。在FPGA開發(fā)流程中,Vivado HLS是最常使用的HLS工具。而在ASIC開發(fā)流程中,Catapult是最常使用的。

ea144bdc-2501-11ed-ba43-dac502259ad0.png

HLS在設(shè)計(jì)和驗(yàn)證方面都存在諸多優(yōu)勢:

在設(shè)計(jì)方面,直接在算法級進(jìn)行電路設(shè)計(jì),有利于進(jìn)行算法/架構(gòu)探索。C/C++代碼開發(fā)后通過HLS+DC/FPGA快速得到硬件代價(jià)(面積/性能)的估計(jì)值。相同的設(shè)計(jì)源碼,通過更改循環(huán)展開/循環(huán)流水的參數(shù)能快速調(diào)整設(shè)計(jì)的吞吐率,進(jìn)而在性能和面積之間輕松調(diào)整;通過調(diào)整HLS的時(shí)鐘周期約束,能快速調(diào)整設(shè)計(jì)所能達(dá)到的最高頻率。同一份代碼,能在多個(gè)平臺/場景間最大化復(fù)用。

在驗(yàn)證方面,仿真C模型后能將其作為golden,和后續(xù)HLS生成的RTL代碼進(jìn)行形式驗(yàn)證,以及同步仿真,即RTL仿真時(shí)復(fù)用C仿真的測試用例。此外,在C模型層次仿真所需時(shí)間更少。

ea250742-2501-11ed-ba43-dac502259ad0.png

高層次綜合和DC綜合過程較為相似:用戶輸入設(shè)計(jì)源文件,設(shè)計(jì)約束和目標(biāo)工藝庫等信息,HLS工具將自動(dòng)分配硬件資源,根據(jù)延時(shí)信息和目標(biāo)頻率將各個(gè)運(yùn)算分配到各個(gè)時(shí)鐘周期里。HLS工具將自動(dòng)插入時(shí)鐘和復(fù)位(同步復(fù)位/異步復(fù)位)。產(chǎn)生的RTL文件可以被用于后續(xù)的FPGA設(shè)計(jì)和ASIC設(shè)計(jì)。

ea48a170-2501-11ed-ba43-dac502259ad0.png

Catapult有一系列EDA工具來輔助HLS設(shè)計(jì):

在C模型(CMODEL)層次,可以使用C Design Checker來進(jìn)行語法檢查和形式驗(yàn)證分析;使用inFactStimulus來仿真C++/RTL,也可指定其他外部仿真工具如VCS;使用CCOVHLS-Aware Coverage來進(jìn)行覆蓋率收集。

在CMODEL到RTL模型(VMODEL)轉(zhuǎn)換中,使用Catapult High-Level Synthesis生成高質(zhì)量、功耗優(yōu)化的RTL。

在VMODL層次,使用SLEC-HLS Formal進(jìn)行C++和RTL的形式驗(yàn)證檢查;使用SCVerify進(jìn)行C-RTL同步仿真,復(fù)用相同的C測試用例。

ea54317a-2501-11ed-ba43-dac502259ad0.png

在RTL設(shè)計(jì)中,以模塊(Module)為最小單元進(jìn)行硬件設(shè)計(jì)。在CatapultHLS設(shè)計(jì)中,支持以函數(shù)(function)和類(Class)作為最小單元進(jìn)行設(shè)計(jì),HLS綜合工具將為其自動(dòng)插入時(shí)鐘和復(fù)位。

ea70b6ba-2501-11ed-ba43-dac502259ad0.png

Catapult HLS支持比特精度的數(shù)據(jù)類型ac_int, 通過設(shè)計(jì)位寬W 和符號標(biāo)志位 S來定義信號。此外,其還支持定點(diǎn)數(shù)類型ac_fixed,在ac_int的基礎(chǔ)上新增整數(shù)位寬I。

ea8840a0-2501-11ed-ba43-dac502259ad0.png

Catapult HLS使用 ac_channel 來定義輸入端口和輸出端口的數(shù)據(jù)類型。若某端口只被讀取,則將其推導(dǎo)為輸入端口;若某端口只被寫入,則將其推導(dǎo)為輸出端口;若某端口既有讀取又有寫入,則會(huì)被推導(dǎo)為雙向端口。如需進(jìn)行累加,建議使用中間變量來進(jìn)行累加,累加結(jié)束后再將結(jié)果寫入,從而避免輸出端口被推導(dǎo)為雙向端口。

ac_channel 支持多種接口協(xié)議,輸入輸出默認(rèn)類型為ccs_in_wait和ccs_out_wait,會(huì)自動(dòng)維護(hù)ready和 valid,也可將其修改為最簡潔的ccs_in/ccs_out類型。

eab33332-2501-11ed-ba43-dac502259ad0.png

Catapult HLS支持循環(huán)展開,用面積換性能,如果迭代塊無數(shù)據(jù)依賴可以被完全展開。

eac2b05a-2501-11ed-ba43-dac502259ad0.png

Catapult HLS支持循環(huán)流水,也是用面積換性能,提升整體的吞吐率,并降低從輸入到輸出的延時(shí)。當(dāng)存在數(shù)據(jù)依賴導(dǎo)致循環(huán)展開無法使用時(shí),可以采用循環(huán)流水的方式優(yōu)化。

eadee78e-2501-11ed-ba43-dac502259ad0.png

對每個(gè)循環(huán)都可以指定其流水與否,II(InitInterval)確定了流水線的初始化間隔,即每隔幾個(gè)周期開啟一次新的數(shù)據(jù)迭代。

eaebad84-2501-11ed-ba43-dac502259ad0.png

可以通過在源碼中加入諸如 #pragaunroll yes的指令來設(shè)置約束;也可以通過tcl指令在腳本中設(shè)置約束,諸如設(shè)置RMD的預(yù)測模塊(enc_rmd_pre)采用流水實(shí)現(xiàn)。

eafefcc2-2501-11ed-ba43-dac502259ad0.png

此外,還可以通過軟件的圖形界面來進(jìn)行設(shè)置約束,即在各個(gè)綜合步驟(SynthesisTasks)中設(shè)置相關(guān)的約束。在圖形界面進(jìn)行設(shè)置后,transcripthistory里會(huì)顯示對應(yīng)的tcl 指令,可將其搜集起來匯總到腳本中,后續(xù)復(fù)用。修改源碼/配置后可以產(chǎn)生新的Solution,工具會(huì)顯示各個(gè)Solution的延時(shí)、吞吐、綜合面積和時(shí)序裕量。

eb2d98de-2501-11ed-ba43-dac502259ad0.png

以RMD模塊為例介紹HLS設(shè)計(jì),其包含了控制、參考像素管理、幀內(nèi)模式預(yù)測、殘差計(jì)算、SATD代價(jià)計(jì)算和模式排序與輸出等等子模塊。使用HLS實(shí)現(xiàn)各個(gè)子模塊,使用verilog進(jìn)行頂層設(shè)計(jì)。RMD將流水處理4個(gè)PU,對每個(gè)PU會(huì)進(jìn)行7種模式預(yù)測。流水線啟動(dòng)延時(shí)為12個(gè)周期,后續(xù)4*7=28個(gè)周期逐漸出結(jié)果。

eb4b9834-2501-11ed-ba43-dac502259ad0.png

采用基于類的方式來實(shí)現(xiàn)模塊設(shè)計(jì)。定義__ENC_RMD_CTL_H__這個(gè)宏以避免多重編譯。define.h中定義了諸如塊尺寸和位寬的一些參數(shù),以及封裝了一些常用的數(shù)據(jù)類型,比如AC_UINT(x)即 ac_int。使用#pragmahls_design top 指定頂層函數(shù)。使用const修飾一些常量參數(shù),使用static來描述寄存器(registers),或者也可使用類的成員變量來描述registers,使用AC_UINT(x)來描述網(wǎng)線(wire)。

將狀態(tài)跳轉(zhuǎn)條件和輸出置于狀態(tài)變量(計(jì)數(shù)器 cnt_mod/pu,狀態(tài)機(jī)state)更新之前,即當(dāng)前輸出與之前的輸入和狀態(tài)變量相關(guān),摩爾型。

eb57f6ec-2501-11ed-ba43-dac502259ad0.png

以Planar預(yù)測模式為例,其將根據(jù)上方、左方和左上方的參考像素來得到當(dāng)前塊的預(yù)測值,pxl_t是封裝了ac_int<8,false>。對兩重循環(huán)使用#pragmahls_unroll yes進(jìn)行循環(huán)展開。定義相應(yīng)位寬的中間變量來記錄中間結(jié)果,避免被截?cái)唷τ谶@類純計(jì)算函數(shù),無需手動(dòng)切流水級,工具將根據(jù)目標(biāo)工藝和時(shí)鐘約束來自動(dòng)調(diào)度,使得各個(gè)周期內(nèi)的運(yùn)算延時(shí)較為均勻。

eb755692-2501-11ed-ba43-dac502259ad0.png

在非頂層函數(shù)的接口中可以使用數(shù)組來簡化后續(xù)索引。為此,在頂層函數(shù)的輸入和輸出處需增加平面格式與多維數(shù)組格式的數(shù)據(jù)格式轉(zhuǎn)換,可使用slc和set_slc進(jìn)行切片操作。

eb8f435e-2501-11ed-ba43-dac502259ad0.png

對于參考像素管理中需要使用到的行緩存,register實(shí)現(xiàn)時(shí)代價(jià)過大,傾向于使用ram實(shí)現(xiàn)。為此,1. 使用 static修飾該數(shù)組;2. 如果不需要將數(shù)組/ram初始化為0,則設(shè)置該數(shù)組的初始化類型為AC_VAL_DC,即 Don’tCare,以避免工具默認(rèn)對ram進(jìn)行初始化為0的操作,節(jié)省若干啟動(dòng)周期。3. 在設(shè)置目標(biāo)庫時(shí)增加相應(yīng)的ram庫,如ccs_sample_mem。此外,可以通過tcl指令來指定某些數(shù)組的默認(rèn)類型,例如將buf_hor_lin_rd 強(qiáng)制設(shè)置為Register類型。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 硬件設(shè)計(jì)
    +關(guān)注

    關(guān)注

    18

    文章

    389

    瀏覽量

    44502
  • 數(shù)據(jù)類型
    +關(guān)注

    關(guān)注

    0

    文章

    236

    瀏覽量

    13582
  • HLS
    HLS
    +關(guān)注

    關(guān)注

    1

    文章

    128

    瀏覽量

    23966

原文標(biāo)題:基于Catapult的HLS硬件設(shè)計(jì)

文章出處:【微信號:Rocker-IC,微信公眾號:路科驗(yàn)證】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    優(yōu)化 FPGA HLS 設(shè)計(jì)

    優(yōu)化 FPGA HLS 設(shè)計(jì) 用工具用 C 生成 RTL 的代碼基本不可讀。以下是如何在不更改任何 RTL 的情況下提高設(shè)計(jì)性能。 介紹 高級設(shè)計(jì)能夠以簡潔的方式捕獲設(shè)計(jì),從而
    發(fā)表于 08-16 19:56

    一種在HLS中插入HDL代碼的方式

    很多人都比較反感用C/C++開發(fā)(HLS)FPGA,大家第一拒絕的理由就是耗費(fèi)資源太多。但是HLS也有自己的優(yōu)點(diǎn),除了快速構(gòu)建算法外,還有一個(gè)就是接口的生成,尤其對于AXI類接口,按照標(biāo)準(zhǔn)語法就可以很方便地生成相關(guān)接口。
    的頭像 發(fā)表于 07-16 18:01 ?586次閱讀
    一種在<b class='flag-5'>HLS</b>中插入HDL代碼的方式

    西門子推出Catapult AI NN:重塑神經(jīng)網(wǎng)絡(luò)加速器設(shè)計(jì)的未來

    的需求,西門子數(shù)字化工業(yè)軟件日前推出了一款名為Catapult AI NN的創(chuàng)新軟件,旨在幫助神經(jīng)網(wǎng)絡(luò)加速器在專用集成電路(ASIC)和芯片級系統(tǒng)(SoC)上實(shí)現(xiàn)更高效的高層次綜合(HLS)。
    的頭像 發(fā)表于 06-19 16:40 ?557次閱讀

    西門子推出Catapult AI NN軟件,賦能神經(jīng)網(wǎng)絡(luò)加速器設(shè)計(jì)

    西門子數(shù)字化工業(yè)軟件近日發(fā)布了Catapult AI NN軟件,這款軟件在神經(jīng)網(wǎng)絡(luò)加速器設(shè)計(jì)領(lǐng)域邁出了重要一步。Catapult AI NN軟件專注于在專用集成電路(ASIC)和芯片級系統(tǒng)(SoC)上實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)的高層次綜合(HLS
    的頭像 發(fā)表于 06-19 11:27 ?743次閱讀

    西門子推出Catapult AI NN軟件

    西門子數(shù)字化工業(yè)軟件日前推出Catapult AI NN軟件,可幫助神經(jīng)網(wǎng)絡(luò)加速器在專用集成電路(ASIC)和芯片級系統(tǒng)(So)上進(jìn)行高層次綜合(HLS)。
    的頭像 發(fā)表于 06-19 10:48 ?652次閱讀

    西門子推出Catapult AI NN軟件,加速神經(jīng)網(wǎng)絡(luò)在ASIC和SoC上綜合

    綜合(HLS)提供強(qiáng)有力的支持。Catapult AI NN的推出,標(biāo)志著西門子在人工智能(AI)與硬件設(shè)計(jì)融合領(lǐng)域邁出了堅(jiān)實(shí)的一步。
    的頭像 發(fā)表于 06-18 17:29 ?913次閱讀

    為何高端FPGA都非常重視軟件

    了數(shù)據(jù)字,并且不需要位交換,則可以使用這些額外的路由資源。 對于他們的HLS入門,Achronix與Mentor合作,后者的Catapult-C可能是市場上最成熟的ASIC HLS
    發(fā)表于 03-23 16:48

    modelsim安裝運(yùn)行patch閃退

    模擬器的安裝和運(yùn)行是計(jì)算機(jī)科學(xué)中非常重要的一環(huán)。ModelSim是一種流行的數(shù)字電子設(shè)計(jì)自動(dòng)化工具,用于驗(yàn)證和仿真硬件設(shè)計(jì)。然而,有時(shí)安裝和運(yùn)行Patch可能會(huì)導(dǎo)致閃退問題。本文將詳細(xì)解釋如何安裝
    的頭像 發(fā)表于 01-04 10:43 ?1298次閱讀

    AMD-Xilinx的Vitis-HLS編譯指示小結(jié)

    流水線指令 pragma HLS pipeline 通過流水線提高性能是計(jì)算機(jī)架構(gòu)設(shè)計(jì)的8個(gè)偉大思想之一,不管是硬件設(shè)計(jì)還是軟件設(shè)計(jì),流水線設(shè)計(jì)(pipeline)都能夠用更多的資源來實(shí)現(xiàn)高速
    發(fā)表于 12-31 21:20

    研討會(huì):利用編譯器指令提升AMD Vitis? HLS 設(shè)計(jì)性能

    AMD Vitis 高層次綜合 ( HLS ) 已成為自適應(yīng) SoC 及 FPGA 產(chǎn)品設(shè)計(jì)領(lǐng)域的一項(xiàng)顛覆性技術(shù),可在創(chuàng)建定制硬件設(shè)計(jì)時(shí)實(shí)現(xiàn)更高層次的抽象并提高生產(chǎn)力。Vitis HLS 通過將 C
    的頭像 發(fā)表于 12-05 09:10 ?468次閱讀
    研討會(huì):利用編譯器指令提升AMD Vitis? <b class='flag-5'>HLS</b> 設(shè)計(jì)性能

    如何用HLS實(shí)現(xiàn)UART

    UART 是一種舊的串行通信機(jī)制,但仍在很多平臺中使用。它在 HDL 語言中的實(shí)現(xiàn)并不棘手,可以被視為本科生的作業(yè)。在這里,我將通過這個(gè)例子來展示在 HLS 中實(shí)現(xiàn)它是多么容易和有趣。
    的頭像 發(fā)表于 11-20 09:48 ?496次閱讀
    如何用<b class='flag-5'>HLS</b>實(shí)現(xiàn)UART

    【原創(chuàng)分享】Mentor PADS Router元件布局設(shè)置及操作

    Mentor PADS Router元件布局設(shè)置及操作 在Router里面也可以進(jìn)行布局操作。 1、布局參數(shù)設(shè)置。執(zhí)行菜單命令【工具】-【選項(xiàng)】,在“布局標(biāo)簽頁”中進(jìn)行布局設(shè)置,如圖1所示。勾選
    的頭像 發(fā)表于 11-16 10:10 ?1433次閱讀
    【原創(chuàng)分享】<b class='flag-5'>Mentor</b> PADS Router元件布局設(shè)置及操作

    使用Vivado高層次綜合(HLS)進(jìn)行FPGA設(shè)計(jì)的簡介

    電子發(fā)燒友網(wǎng)站提供《使用Vivado高層次綜合(HLS)進(jìn)行FPGA設(shè)計(jì)的簡介.pdf》資料免費(fèi)下載
    發(fā)表于 11-16 09:33 ?0次下載
    使用Vivado高層次綜合(<b class='flag-5'>HLS</b>)進(jìn)行FPGA設(shè)計(jì)的簡介

    HLS中組合電路對設(shè)計(jì)的影響

    該項(xiàng)目通過一個(gè)示例演示了 HLS 中組合電路對設(shè)計(jì)的影響。
    的頭像 發(fā)表于 11-03 09:04 ?680次閱讀
    <b class='flag-5'>HLS</b>中組合電路對設(shè)計(jì)的影響

    Mentor Graphics應(yīng)用之PCB設(shè)計(jì)復(fù)用

    Schematic路徑下為原理圖數(shù)據(jù)文件;Design_geom路徑下為物理器件(Geometry)數(shù)據(jù)文件;Pcb路徑下為印制板數(shù)據(jù)文件,其中comps為元器件(Component)數(shù)據(jù)文件,包括器件標(biāo)號(Reference)、邏輯符號(Symbol)、對應(yīng)物理器件(Geometry)、在印制板上的位置(Board_location)以及特性(Properties)等信息;
    發(fā)表于 10-31 15:02 ?1111次閱讀
    <b class='flag-5'>Mentor</b> <b class='flag-5'>Graphics</b>應(yīng)用之PCB設(shè)計(jì)復(fù)用