h1_key

當(dāng)前位置:首頁 >新聞資訊 > 行業(yè)資訊>賽靈思>XILINX(賽靈思)Vitis 高層次綜合用戶指南
XILINX(賽靈思)Vitis 高層次綜合用戶指南
2022-07-06 1194次


Vitis? HLS 是一種高層次綜合工具,支持將 C、C++ OpenCL? 函數(shù)硬連線到器件邏輯互連結(jié)構(gòu)和 RAM/DSP 塊上。Vitis HLS 可在Vitis 應(yīng)用加速開發(fā)流程中實(shí)現(xiàn)硬件內(nèi)核,并使用 C/C++ 語言代碼在 Vivado® Design Suite 中為賽靈思器件設(shè)計開發(fā) RTL IP。

 

Vitis 高層次綜合用戶指南(UG1399)包括Vitis HLS 入門、Vitis HLS 硬件設(shè)計方法論、Vitis HLS C 語言驅(qū)動程序參考資料、Vitis HLS 命令參考資料、Vitis HLS 庫參考資料,以及Vitis HLS 移植指南。由于本指南較長,下文僅摘錄部分內(nèi)容。

 


Vitis HLS 簡介:

 

Vitis 應(yīng)用加速流程中,在可編程邏輯中實(shí)現(xiàn)和最優(yōu)化 C/C++ 語言代碼以及實(shí)現(xiàn)低時延和高吞吐量所需的大部分代碼修改操作均可通過 Vitis HLS 工具來自動執(zhí)行。在應(yīng)用加速流程中,Vitis HLS 的基本作用是通過推斷所需的編譯指示來為函數(shù)實(shí)參生成正確的接口,并對代碼內(nèi)的循環(huán)和函數(shù)執(zhí)行流水打拍。Vitis HLS 還支持自定義代碼以實(shí)現(xiàn)不同接口標(biāo)準(zhǔn)或者實(shí)現(xiàn)特定最優(yōu)化以達(dá)成設(shè)計目標(biāo)。

 

Vitis HLS 設(shè)計流程如下所述:

編譯、仿真和調(diào)試 C/C++ 語言算法。

查看報告以分析和最優(yōu)化設(shè)計。

C 語言算法綜合到 RTL 設(shè)計中。

使用 RTL 協(xié)同仿真來驗(yàn)證 RTL 實(shí)現(xiàn)。

RTL 實(shí)現(xiàn)封裝到已編譯的對象文件 (.xo) 擴(kuò)展中,或者導(dǎo)出到 RTL IP。

 

高層次綜合基礎(chǔ)

 

賽靈思 Vitis HLS 工具可將 C 語言或 C++ 語言函數(shù)綜合到 RTL 代碼中,用于在可編程邏輯內(nèi)進(jìn)行加速。Vitis HLS Vitis 核開發(fā)套件和應(yīng)用加速設(shè)計流程緊密集成。

 

使用高層次綜合 (HLS) 設(shè)計方法論的優(yōu)勢包括但不限于:

編譯、仿真和調(diào)試 C/C++ 語言算法。

查看報告以分析和最優(yōu)化設(shè)計。

C 語言算法綜合到 RTL 設(shè)計中。

使用 RTL 協(xié)同仿真來驗(yàn)證 RTL 實(shí)現(xiàn)。

RTL 實(shí)現(xiàn)封裝到已編譯的對象文件 (.xo) 擴(kuò)展中,或者導(dǎo)出到 RTL IP。

 


?

HLS 包含以下階段:

1,調(diào)度可根據(jù)下列條件判定每個時鐘周期內(nèi)發(fā)生的運(yùn)算:

運(yùn)算的依賴關(guān)系何時已得到滿足或者變?yōu)榭捎谩?/span>

時鐘周期長度或時鐘頻率。

運(yùn)算完成所需時間(由目標(biāo)器件來定義)。

可用資源分配。

整合任意用戶指定的最優(yōu)化指令。

2,綁定會分配硬件資源用于實(shí)現(xiàn)調(diào)度的每項運(yùn)算,并將運(yùn)算符(例如,加法、乘法和移位)映射到特定 RTL 實(shí)現(xiàn)。例如,mult 運(yùn)算可在 RTL 內(nèi)作為組合乘法器或流水打拍乘法器來實(shí)現(xiàn)。

3,控制邏輯抽取可創(chuàng)建有限狀態(tài)機(jī)(FSM),根據(jù)定義的調(diào)度按順序執(zhí)行 RTL 設(shè)計中的運(yùn)算。

 

以調(diào)度和綁定為例,下圖顯示了此代碼示例的調(diào)度和綁定階段的示例:

 

在此示例的調(diào)度階段,根據(jù)高層次綜合的調(diào)度,在每個時鐘周期內(nèi)將執(zhí)行以下操作:

第一個時鐘周期:乘法和第一次加法

第二個時鐘周期:如果在第二個時鐘周期內(nèi)第一次加法的結(jié)果可用,則執(zhí)行第二次加法并輸出生成。

 

在最終的硬件實(shí)現(xiàn)中,高層次綜合將頂層函數(shù)的實(shí)參實(shí)現(xiàn)為輸入和輸出 (I/O) 端口。在此示例中,實(shí)參是簡單數(shù)據(jù)端口。因?yàn)槊總€輸入變量都是 char 類型,所以輸入數(shù)據(jù)端口位寬均為 8 位。return 函數(shù)為 32 int 數(shù)據(jù)類型,而輸出數(shù)據(jù)端口位寬為 32 位。

 

在此示例的初始綁定階段,高層次綜合使用組合乘法器(Mul)實(shí)現(xiàn)乘法運(yùn)算,并使用組合加法器/減法器(AddSub)實(shí)現(xiàn)兩次加法運(yùn)算。

 

在目標(biāo)綁定階段,高層次綜合使用 DSP 模塊資源實(shí)現(xiàn)乘法器和其中一項加法運(yùn)算。部分應(yīng)用使用大量二進(jìn)制乘法器和累加器,這些乘法器和累加器最好在專用 DSP 資源內(nèi)實(shí)現(xiàn)。DSP 模塊是 FPGA 架構(gòu)中可用的計算塊,可在高性能和高效實(shí)現(xiàn)之間達(dá)成理想的平衡。

 


Vitis HLS 進(jìn)程概述

 

Vitis HLS 基于工程,可包含多個變體(稱為解決方案)以驅(qū)動綜合與仿真。每個解決方案均可將 Vivado IP 流程或Vitis 內(nèi)核流程設(shè)定為目標(biāo)?;谀繕?biāo)流程,每個解決方案都將指定不同的約束和最優(yōu)化指令,如 啟用 Vivado IP 流程和啟用 Vitis 內(nèi)核流程中所述。

 

以下提供了典型設(shè)計流程中的綜合、分析與最優(yōu)化步驟:

1,創(chuàng)建新的 Vitis HLS 工程。

2,利用 C 語言仿真來驗(yàn)證源代碼。

3,運(yùn)行高層次綜合以生成 RTL 文件。

4,分析結(jié)果,包括檢驗(yàn)時延、啟動時間間隔 (II)、吞吐量和資源使用情況。

5,執(zhí)行最優(yōu)化,并按需重復(fù)此步驟。

6,使用 C/RTL 協(xié)同仿真驗(yàn)證結(jié)果。

 

Vitis HLS 基于目標(biāo)流程、默認(rèn)工具配置、設(shè)計約束和您指定的任意最優(yōu)化編譯指示或指令來實(shí)現(xiàn)解決方案。您可使用最優(yōu)化指令來修改和控制內(nèi)部邏輯和 I/O 端口的實(shí)現(xiàn),以覆蓋工具的默認(rèn)行為。

 

?

 

C/C++ 代碼綜合方式如下:

1,頂層函數(shù)實(shí)參由 Vitis HLS 自動綜合到 RTL I/O 端口接口內(nèi)。如 定義接口 中所述,該工具創(chuàng)建的默認(rèn)接口取決于目標(biāo)流程、函數(shù)實(shí)參的數(shù)據(jù)類型和方向、默認(rèn)接口模式以及用戶指定的任何 INTERFACE 編譯指示或指令(用于手動定義接口)。

2,頂層 C/C++ 函數(shù)的子函數(shù)綜合到 RTL 設(shè)計的層級內(nèi)的各塊中。

最終 RTL 設(shè)計包含與原始頂層 C 語言函數(shù)層級相對應(yīng)的模塊或?qū)嶓w層級。

Vitis HLS 會將子函數(shù)根據(jù)需要自動內(nèi)聯(lián)到更高層次的函數(shù)中或者內(nèi)聯(lián)到頂層函數(shù)中,以提升性能。

您可通過在解決方案中向子函數(shù)指定 INLINE 編譯指示,或者使用 set_directive_inline 并將其設(shè)置為OFF 來禁用自動內(nèi)聯(lián)。

默認(rèn)情況下,C 語言子函數(shù)的每次調(diào)用使用的 RTL 模塊的實(shí)例是相同的。但您可以通過在解決方案中指定ALLOCATION 編譯指示或者使用 set_directive_allocation 來實(shí)現(xiàn)多個 RTL 模塊實(shí)例以提升性能。

3,控制邏輯抽取可創(chuàng)建有限狀態(tài)機(jī)(FSM),根據(jù)定義的調(diào)度按順序執(zhí)行 RTL 設(shè)計中的運(yùn)算。

Vitis HLS 工具將不會展開循環(huán),除非這樣能夠提升解決方案性能,如展開嵌套的循環(huán)以對頂層函數(shù)進(jìn)行流水打拍。收起循環(huán)時,綜合會為循環(huán)的單次迭代創(chuàng)建邏輯,RTL 設(shè)計會為序列中循環(huán)的每次迭代都執(zhí)行此邏輯。展開循環(huán)允許循環(huán)的部分或全部迭代并行發(fā)生,但也會耗用更多器件資源。

您可以使用 UNROLL 編譯指示或 set_directive_unroll 命令來手動展開循環(huán)。

循環(huán)還可通過如下任一方法進(jìn)行流水打拍:通過有限狀態(tài)機(jī)高精度實(shí)現(xiàn)(循環(huán)流水打拍)或者采用基于較低精度的握手的實(shí)現(xiàn)(數(shù)據(jù)流)。

4,代碼中的陣列將綜合到最終 FPGA 設(shè)計中的塊 RAM (BRAM)、LUT RAM UltraRAM 中。

如果陣列位于頂層函數(shù)接口上,那么高層次綜合可將此陣列作為端口來實(shí)現(xiàn),以便訪問設(shè)計外部的塊 RAM

您可使用 ARRAY_PARTITION ARRAY_RESHAPE 編譯指示或者關(guān)聯(lián)的 set_directive_array 命令更改。

 

綜合后,您可以對先前生成的各項報告中的結(jié)果進(jìn)行分析,以確定結(jié)果質(zhì)量。分析結(jié)果后,您可以為工程創(chuàng)建其它解決方案,指定不同的約束和最優(yōu)化指令,并對這些結(jié)果進(jìn)行綜合與分析。您可對不同解決方案的結(jié)果進(jìn)行比較,查看哪些有效,哪些無效。您可重復(fù)此過程,直至設(shè)計達(dá)成所期望的性能特性為止。您可使用多種解決方案持續(xù)進(jìn)行開發(fā),同時仍可保留先前的解決方案。

 

  • AMD Vitis 軟件平臺2023.2版本發(fā)布
  • AMD宣布 Vitis? 統(tǒng)一軟件平臺 2023.2 版本發(fā)布,該版本提供了一個單一的環(huán)境,便于使用 AMD 自適應(yīng) SoC 與 FPGA 簡化高性能設(shè)計的設(shè)計、仿真與實(shí)現(xiàn)。
    2023-11-02 621次
  • Xilinx賽靈思Vivado? 設(shè)計套件加速自適應(yīng)SoC和FPGA產(chǎn)品設(shè)計
  • Xilinx賽靈思加快推出新型自適應(yīng) SoC 和 FPGA 設(shè)計,硬件設(shè)計人員和系統(tǒng)架構(gòu)師需要探索更為高效的全新工作方式。AMD Vivado? 設(shè)計套件可提供易于使用的開發(fā)環(huán)境和強(qiáng)大的工具,有助于加速大型自適應(yīng) SoC 和FPGA等系列產(chǎn)品的設(shè)計與上市。
    2023-11-02 394次
  • 詳解賽靈思FPGA系列型號
  • Xilinx公司首創(chuàng)了現(xiàn)場可編程邏輯陣列(FPGA)這一創(chuàng)新性的技術(shù),賽靈思FPGA系列型號并于1985年首次推出商業(yè)化產(chǎn)品。2022年AMD以498億美元(約合3165億元人民幣)完成了對賽靈思的收購。
    2023-04-14 4912次
  • 借助AMD自適應(yīng)SoC與XYLON框架毫秒級汽車功能切換
  • AMD Zynq UltraScale+ MPSoC提供的多功能性與自適應(yīng)計算能力,正能滿足領(lǐng)先汽車 OEM 廠商與一級供應(yīng)商所需,因?yàn)樗麄兠媾R快速行動和適應(yīng)不斷變化的需求的持續(xù)壓力。
    2023-03-29 590次
  • 全新AMD?Kria?ODM生態(tài)系統(tǒng)計劃
  • 賽靈思的 Kria?自適應(yīng)系統(tǒng)模塊( SOM )產(chǎn)品組合取得成功的基礎(chǔ)上,推出 KriaTM?SOM ODM 合作伙伴生態(tài)系統(tǒng)——這一全新計劃旨在提供基于 Kria SOM 的量產(chǎn)級、全功能解決方案,加速產(chǎn)品上市進(jìn)程,而無需專用芯片設(shè)計資源。
    2023-02-02 593次

    萬聯(lián)芯微信公眾號

    元器件現(xiàn)貨+BOM配單+PCBA制造平臺
    關(guān)注公眾號,優(yōu)惠活動早知道!
    10s
    溫馨提示:
    訂單商品問題請移至我的售后服務(wù)提交售后申請,其他需投訴問題可移至我的投訴提交,我們將在第一時間給您答復(fù)
    返回頂部