日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > > ZYNQ

連載目錄

一、Vitis 2019.2 軟件平臺發(fā)行說明

1.1 Vitis 軟件平臺中的內容

1.1.1 硬件加速的應用程序開發(fā)流程

1.2 改變行為

1.2.1 從SDAccel遷移

1.2.2 從SDSoC遷移

1.3 支持平臺

1.3.1 數據中心加速卡

1.3.2 嵌入式平臺

二、安裝

三、Vitis 加速環(huán)境簡介

3.1 簡介與概述

3.2 FPGA加速

3.3 執(zhí)行模型

3.4 建立過程

3.4.1 主機程序構建過程

3.4.2 FPGA二進制構建過程

3.5 建立目標

3.5.1 軟件仿真

3.5.2 硬件仿真

3.5.3 系統(tǒng)

3.6 使用Vitis軟件平臺加速應用程序的方法論

3.6.1 文件受眾和范圍

3.6.2 加速:工業(yè)類比

3.6.3 設計設備加速應用程序的方法

3.6.4 開發(fā)C / C ++內核的方法論

四、開發(fā)應用程序

4.1 程序設計模型

4.2 主機申請

4.2.1 設置OpenCL環(huán)境

4.2.2 在FPGA中執(zhí)行命令

4.2.3 后處理和FPGA清理

4.2.4 摘要

4.3 RTL內核

4.3.1 RTL內核的要求

4.3.2 RTL內核開發(fā)流程

4.3.2.1 將RTL代碼打包為Vivado IP

4.3.2.2 創(chuàng)建內核描述XML文件

4.3.2.3 從RTL內核創(chuàng)建XO文件

4.3.3 RTL內核向導

4.3.4 摘要

五、構建和運行程序

5.1 設置Vitis環(huán)境

5.2 建立目標

5.2.1 軟件仿真

5.2.2 硬件仿真

5.2.3 系統(tǒng)硬件目標

5.3 構建主機程序

5.4 構建FPGA二進制文件

5.4.1 在Vivado HLS中創(chuàng)建內核

六、對應用程序進行性能分析,優(yōu)化和調試

七、使用Vitis分析儀

7.1 處理報告

7.2 了解葡萄分析儀

7.3 創(chuàng)建運行配置

7.4 配置葡萄分析儀

八、使用Vitis IDE

8.1 Vitis命令選項

8.2 創(chuàng)建Vitis IDE項目

8.2??.1 啟動Vitis IDE工作區(qū)??

8.2.2 創(chuàng)建一個應用程序項目

8.2.3 管理平臺和存儲庫

8.2.4 了解Vitis IDE

8.2.5 添加源

8.2.5.1 添加源文件

8.2.5.2 創(chuàng)建和編輯新的源文件

8.2.5.3 在項目編輯器視圖中工作

8.2.5.4 在助理視圖中工作

8.3 建立系統(tǒng)

8.3.1 Vitis IDE指導視圖

8.3.2 從Vitis IDE使用Vivado工具

8.4 Vitis IDE調試流程

8.5 配置Vitis IDE

8.5.1 Vitis項目設置

8.5.2 Vitis Build配置設置

8.5.3 Vitis運行配置設置

8.5.4 Vitis二進制容器設置

8.5.5 Vitis硬件功能設置

8.5.6 Vitis工具鏈設置

8.5.6.1 Vitis內核編譯器和鏈接器選項

8.5.6.2 emconfigutil設置

8.5.6.3 G ++主機編譯器和鏈接器設置

8.6 項目進出口

8.6.1 導出Vitis項目

8.6.2 導入葡萄項目



正文

一 Vitis 2019.2軟件平臺發(fā)行說明

1.1 Vitis軟件平臺中的內容

1.1.1 硬件加速的應用程序開發(fā)流程

對于基于FPGA的加速,Vitis核心開發(fā)工具包允許使用API構建軟件應用程序,比如建立一個軟件應用程序的OpenCL? API,運行硬件(HW)內核上加速卡,如賽靈思 Alveo數據中心加速卡。所述葡萄核心開發(fā)套件還支持運行運行Linux,如嵌入式處理器平臺上的軟件應用ZYNQ的UltraScale +片上多核設備。對于嵌入式處理器平臺,Vitis核心開發(fā)套件執(zhí)行模型還使用OpenCL API和基于Linux的Xilinx 運行時(XRT),用于調度硬件內核并控制數據移動。

VItis具包可支持Alove 200,U250,U280和數據中心加速卡,還有zcu102_base,zcu104_base,zc702_base和zc706_base嵌入式處理器平臺。除了這些現成的平臺以外,還支持自定義平臺。

通過Vitis軟件平臺,您可以將數據中心應用程序遷移到嵌入式平臺。所述Vitis核心開發(fā)工具包括在V++臺上的硬件內核編譯器,g++編譯器用于編譯在x86主機上運行的應用,以及ARM®用于交叉編譯應用程序到的嵌入式處理器上運行的編譯器的Xilinx設備。

1.2 改變行為

1.2.1 從SDAccel遷移

下表列出了SDAccel開發(fā)環(huán)境和Vitis軟件平臺之間的差異。

1.2.2 從SDSoC遷移

  • 總覽

該葡萄的核心開發(fā)工具包是仿照SDAccel?編程和執(zhí)行模型。Vitis環(huán)境的一項優(yōu)勢是它對數據中心和邊緣應用程序的支持。這意味著您可以在標準數據中心平臺(例如Alveo?數據中心U200加速卡)上對應用程序進行原型設計,然后在可用時將應用程序重定向到邊緣平臺。有關更多信息,請參閱構建主機程序。

在Vitis環(huán)境中,您需要調用Arm交叉編譯器以構建主應用程序代碼,并調用Vitis編譯器以構建硬件內核。您為主機(.elf)創(chuàng)建一個可執(zhí)行文件,為硬件內核(.xclbin)創(chuàng)建一個映像。您將使用OpenCL API和基于Linux的Xilinx運行時(XRT)來控制主應用程序和內核之間的數據移動,并計劃任務的執(zhí)行。

對于嵌入式處理器平臺(或項目),Vitis環(huán)境僅支持運行Linux主機操作系統(tǒng)且平臺已將XRT和ZOCL驅動程序添加到根文件系統(tǒng)的平臺。平臺創(chuàng)建者需要提供一個sysroot,以便通過OpenCL包含文件和庫交叉編譯到Arm 核心。在主機編譯期間,您將需要使用適當的標頭。

要從SDSoC環(huán)境遷移到Vitis環(huán)境,您將必須修改構建腳本和源代碼。本節(jié)討論遷移步驟,包括命令行示例,這些示例使用sysroot中的文件,使用Vitis編譯器編譯硬件內核,并使用Arm cross編譯器編譯主機應用程序。提供的代碼示例僅用于教育目的,不應用于您的設計。

基本遷移步驟如下:

  • 遷移主機應用程序
    • 更新所需的#include文件
    • 根據需要編輯主要功能以及任何其他軟件的僅特定功能
  • 遷移硬件功能
    • 使用編譯指示定義內核接口
  • 建立系統(tǒng)
    • 構建和鏈接內核
    • 編譯和鏈接應用程序
  • 遷移主機應用程序

在本節(jié)中,您將回顧具有和加速功能的簡單SDSoC?程序,main()以識別必須更改的元素。要開始將應用程序和硬件功能遷移到Vitis環(huán)境平臺和工具的過程,請檢查您的主要功能和硬件功能代碼。此處提供的代碼是mmult示例應用程序。

以下代碼段是main()原始開發(fā)應用程序項目中的示例函數。

#include  #include #include "mmult.h" #include "sds_lib.h" #define NUM_TESTS 5 void printMatrix(int *mat, int col, int row) { for (int i = 0; i < col; i++) { for (int j = 0; j < row; j++) {
 std::cout << mat[i*row+j] << "\t";
 }
 std::cout << std::endl;
 }
 std::cout << std::endl;
}

int main() {
 int col = BUFFER_SIZE;
 int row = BUFFER_SIZE;
 int *matA = (int*)sds_alloc(col*row*sizeof(int));
 int *matB = (int*)sds_alloc(col*row*sizeof(int));
 int *matC = (int*)sds_alloc(col*row*sizeof(int));

 std::cout << "Mat A" << std::endl;
 printMatrix(matA, col, row);

 std::cout << "Mat B" << std::endl;
 printMatrix(matB, col, row);

 //Run the hardware function multiple times for(int i = 0; i < NUM_TESTS; i++) {
 std::cout << "Test #: " << i << std::endl;
 // Populate matA and matB
 srand(time(NULL)); for (int i = 0; i < col*row; i++) {
 matA[i] = rand()%10;
 matB[i] = rand()%10;
 }

 std::cout << "MatA * MatB" << std::endl;
 mmult(matA, matB, matC, col, row);

 }
 printMatrix(matC, col, row); return 0;

該代碼為存儲為一維數組的三個不同的二維矩陣分配內存matA,matB使用隨機數填充和 ,然后相乘matA并matB計算 matC。結果打印到屏幕上,測試運行十次。

轉到Vitis環(huán)境sds++時,需要由應用程序開發(fā)人員顯式管理由編譯器和運行時隱式處理的一些任務。

  • 遷移硬件功能

從SDSoC?環(huán)境遷移硬件功能以用于Vitis環(huán)境時,需要記住的內容很少。

為了在PL中執(zhí)行,現在將硬件功能單獨編譯為.xo文件,因此它不包含在main()函數中,并且不需要像SDSoC環(huán)境中那樣的用于函數定義的特定頭文件。在丟棄頭文件之前,必須將BUFFER_SIZE聲明復制 到mmult函數中。您還可以評論或刪除該 #include語句。

  • 建立系統(tǒng)

在SDSoC?環(huán)境中,sds++編譯器同時構建主應用程序(.elf)和硬件加速功能(PL區(qū)域的位流)。在簡單的示例中,用于編譯main()函數和mmult硬件函數的命令行如下:

sds++ -Wall -O0 -g -I"../src" -c -fmessage-length=0 -MT"src/mmult.o" -MMD \
-MP -MF"src/mmult.d" -MT"src/mmult.o" -o "src/mmult.o" "../src/mmult.cpp" \
-sds-hw mmult mmult.cpp -sds-end -sds-sys-config a53_linux -sds-proc      \
a53_linux -sds-pf "zcu102" 

從該單個命令中,該sds++命令處理該sds-hw塊以編譯mmult函數,然后再鏈接main.o對象文件以構建目標應用程序main.elf。最后,它將生成sd_card文件夾,其中包含啟動和運行應用程序所需的適當文件。

在Vitis環(huán)境中,硬件內核和主要應用程序的編譯由兩個單獨的編譯器執(zhí)行。

  • 高級主題:多個計算單元和內核流

1.3 支持平臺

1.3.1 數據中心加速卡

Xilinx提供了幾種可用于數據中心的加速卡:

  • Alveo U50數據中心加速卡
  • Alveo U200數據中心加速卡
  • Alveo U250數據中心加速卡
  • Alveo U280數據中心加速卡

有關每個加速卡和可用目標平臺的規(guī)格,請參閱數據中心加速卡。

1.3.2 嵌入式平臺

不支持 Artix®-7,Kintex®-7,Virtex®-7以及裸機和RTOS平臺進行加速。對于基于非加速的設計,請參見《Vitis Unified軟件平臺文檔:嵌入式軟件開發(fā)(UG1400)》。

下面列出了可與Vitis核心開發(fā)套件一起使用的嵌入式平臺,可以在Xilinx官網上找到它們。

  • zcu102_base:基于ZCU102 Zynq UltraScale + MPSoC和XRT。
  • zcu104_base:基于ZCU104 Zynq UltraScale + MPSoC和XRT。
  • zc702_base:基于ZC702Zynq®- 7000SoC 和XRT。
  • zc706_base:基于ZC706Zynq®- 7000SoC 和XRT。

二、安裝

三、Vitis 加速環(huán)境簡介

3.1 簡介與概述

Vitis unified 軟件是一個將Xilinx軟件開發(fā)的各個方面結合到一個統(tǒng)一環(huán)境中的新工具。Vitis軟件平臺既支持Vitis嵌入式軟件開發(fā)流程,也支持Vitis應用程序加速開發(fā)流程,Vitis嵌入式軟件開發(fā)流程是為希望使用下一代技術的Xilinx軟件開發(fā)工具包(SDK)用戶設計的,Vitis應用程序加速開發(fā)流程是為希望使用最新的Xilinx FPGA軟件加速開發(fā)流程的軟件開發(fā)人員設計的。該內容主要涉及應用程序加速流,以及Vitis核心開發(fā)工具包和Xilinx運行時(XRT)的使用。

Vitis應用程序加速開發(fā)流程為使用軟件和硬件組件的標準編程語言開發(fā)和交付FPGA加速應用程序提供了一個框架。軟件組件或主機程序是使用C/ c++開發(fā)的,可以在x86或嵌入式處理器上運行,并使用OpenCL API調用來管理與加速器的運行時交互??梢允褂肅/ c++、OpenCL C或RTL開發(fā)硬件組件或內核。Vitis軟件平臺支持各種方法,允許您從開發(fā)應用程序或內核開始。

下圖是Vitis軟件平臺示意圖。如圖所示,Vitis 統(tǒng)一軟件平臺包含以下功能和元素:

  • Vitis技術的目標是加速硬件平臺,例如Alveo?數據中心加速器卡或Zynq®UltraScale +?MPSoC和基于Zynq®-7000SoC的嵌入式處理器平臺。
  • XRT為您的宿主程序提供了API和驅動程序,以使其與目標平臺連接,并處理宿主程序和加速內核之間的事務。
  • Vitis核心開發(fā)套件提供了軟件開發(fā)工具堆棧(例如編譯器和交叉編譯器),用于構建主機程序和內核代碼;分析器(可讓您分析和分析應用程序的性能);調試器(可幫助您定位和修復任何問題)您的應用程序中的問題。
  • Vitis加速庫通過最少的代碼更改即可提供性能優(yōu)化的FPGA加速,而無需重新實現算法即可利用Xilinx自適應計算的優(yōu)勢。Vitis加速庫可用于數學,統(tǒng)計,線性代數和DSP的常用功能,也可用于特定領域的應用程序,例如視覺和圖像處理,定量財務,數據庫,數據分析和數據壓縮。有關Vitis加速庫的更多信息,請參見Xilinx github庫,https://xilinx.github.io/Vitis_Libraries/。

3.2 FPGA加速

與傳統(tǒng)的CPU / GPU加速相比,Xilinx FPGA具有許多優(yōu)勢,包括能夠實現可在處理器上運行的任何功能的自定義架構,從而以較低的功耗實現了更好的性能。與處理器體系結構相比,在Xilinx器件中包含可編程邏輯(PL)架構的結構在應用程序執(zhí)行中實現了高度的并行性。

為了在Xilinx器件上實現軟件加速的優(yōu)勢,可以考慮在硬件中加速應用程序的大型計算密集型部分。在自定義硬件中實現這些功能可以使您在性能和功耗之間達到理想的平衡。

有關如何構建具有最佳性能的應用程序以及其他推薦設計技術的更多信息,請查看使用Vitis軟件平臺加速應用程序的方法。

3.3 執(zhí)行模型

在Vitis核心開發(fā)套件中,應用程序在主機應用程序和硬件加速的內核之間分割,并在它們之間建立通信通道。使用C / C ++編寫并使用API抽象(例如OpenCL)的主機程序在主機處理器(例如x86服務器或 用于嵌入式平臺的Arm處理器)上運行,而硬件加速的內核則在主機的可編程邏輯(PL)區(qū)域內運行。一個賽靈思設備。

由XRT管理的API調用用于處理主機程序和硬件加速器之間的事務。主機和內核之間的通信(包括控制和數據傳輸)通過PCIe®總線或嵌入式平臺的AXI總線進行。當控制信息在硬件中的特定內存位置之間傳輸時,全局內存用于在主機程序和內核之間傳輸數據。主機處理器和硬件加速器均可訪問全局內存,而主機應用程序只能訪問主機內存。

例如,在典型的應用程序中,主機首先將要由內核操作的數據從主機內存?zhèn)鬏數饺謨却?。內核隨后對數據進行操作,將結果存儲回全局內存中。內核完成后,主機將結果傳輸回主機內存。主機和全局內存之間的數據傳輸會引入延遲,這可能會給整個應用程序帶來巨大的成本。為了在實際系統(tǒng)中實現加速,硬件加速內核所獲得的好處必須超過數據傳輸所增加的延遲。

Vitis核心開發(fā)套件應用程序的體系結構

目標平臺包含FPGA加速內核,全局存儲器以及用于存儲器傳輸的直接存儲器訪問(DMA)。內核可以具有一個或多個全局存儲器接口,并且是可編程的。該葡萄的核心開發(fā)工具包執(zhí)行模型可以分解為以下步驟:

  • 1.主機程序通過Alveo數據中心加速器卡上的PCIe接口,或通過嵌入式平臺上的AXI總線,將內核所需的數據寫入連接的設備的全局存儲器中。
  • 12.主機程序使用其輸入參數設置內核。
  • 13.主機程序觸發(fā)FPGA上內核功能的執(zhí)行。
  • 14.內核根據需要執(zhí)行所需的計算,同時從全局內存中讀取數據。
  • 15.內核將數據寫回到全局內存,并通知主機它已完成任務。
  • 16.主機程序將數據從全局存儲器讀回主機存儲器,并根據需要繼續(xù)處理。

FPGA可以在加速器上容納多個內核實例,不同類型的內核以及同一內核的多個實例。XRT透明地協(xié)調了主機程序和加速器中內核之間的交互。Xilinx Github存儲庫上提供了XRT體系結構文檔,https://xilinx.github.io/XRT/。

3.4 建立過程

Vitis的核心開發(fā)工具包提供了所有標準的軟件開發(fā)環(huán)境的特點:

  • 在x86或Arm®處理器上運行的主機應用程序的編譯器或交叉編譯器。
  • 交叉編譯器,用于構建FPGA二進制文件。
  • 調試環(huán)境可幫助識別和解決代碼中的問題。
  • 性能分析器可識別瓶頸并幫助您優(yōu)化應用程序。

構建過程遵循主機程序和內核代碼的標準編譯和鏈接過程。如下圖所示,主機程序是使用GNU C ++編譯器(g++)或GNU C ++ Arm交叉編譯器為基于MPSoC的設備構建的。FPGA二進制文件是使用Vitis編譯器構建的。

3.4.1 主機程序構建過程

主應用程序g++通過以下兩步過程進行編譯并與編譯器鏈接:

  • 1.將任何所需的代碼編譯到目標文件(.o)中。
  • 2.將對象文件(.o)與XRT共享庫鏈接以創(chuàng)建可執(zhí)行文件。

3.4.2 FPGA二進制構建過程

內核可以用C / C ++或OpenCL C代碼描述,也可以從打包的RTL設計中創(chuàng)建。如上圖所示,每個硬件內核都獨立編譯為Xilinx目標(.xo)文件。

Xilinx對象(.xo)文件與硬件平臺鏈接,以創(chuàng)建FPGA二進制文件(.xclbin),該文件已加載到目標平臺上的Xilinx設備中。

構建FPGA二進制文件的關鍵是確定要生成的構建目標。有關更多信息,請參閱構建目標。

有關構建過程的詳細說明,請參見構建FPGA二進制文件。

3.5 建立目標

Vitis編譯器生成過程生成主機程序可執(zhí)行文件和FPGA二進制(.xclbin)。FPGA二進制文件的性質由構建目標確定。

  • 當構建目標是軟件或硬件仿真時,Vitis編譯器會生成FPGA二進制文件中內核的仿真模型。這些仿真目標使您可以在相對較快的周期內構建,運行和迭代設計。調試應用程序并評估性能。
  • 當構建目標是硬件系統(tǒng)時,Vitis編譯器使用Vivado Design Suite運行綜合和實現,從而為硬件加速器生成.xclbin 。它使用這些工具進行預定義的設置,這些設置被證明可以提供良好的結果質量。使用Vitis核心開發(fā)套件不需要這些工具的知識。但是,精通硬件的開發(fā)人員可以充分利用這些工具,并使用所有可用功能來實現內核。

Vitis編譯器提供了三種不同的構建目標,用于調試和驗證目的的兩個仿真目標,用來產生實際的FPGA二進制文件的默認硬件目標:

  • 軟件仿真(sw_emu)

主機應用程序代碼和內核代碼都被編譯為在主機處理器上運行。這樣可以通過快速的構建和運行循環(huán)來優(yōu)化迭代算法。該目標對于識別語法錯誤,對與應用程序一起運行的內核代碼執(zhí)行源代碼級調試以及驗證系統(tǒng)的行為很有用。

  • 硬件仿真(hw_emu)

內核代碼被編譯成硬件模型(RTL),該模型在專用模擬器中運行。這種構建和運行循環(huán)需要更長的時間,但可以提供詳細的,周期精確的內核活動視圖。該目標對于測試將在FPGA中使用的邏輯功能以及獲得初始性能估計非常有用。

  • 系統(tǒng)(hw)

內核代碼被編譯成硬件模型(RTL),然后在FPGA上實現,從而產生可以在實際FPGA上運行的二進制文件。

3.6 使用Vitis軟件平臺加速應用程序的方法論

3.6.1 文件受眾和范圍

本指南的目的是使系統(tǒng)設計師和軟件開發(fā)人員熟悉以下內容:

  • 架構設備加速應用程序的方法
  • 開發(fā)C / C ++內核的方法

3.6.2 加速:工業(yè)類比

CPU,GPU和可編程設備之間存在明顯差異。了解這些差異是有效開發(fā)每種設備的應用程序并實現最佳加速的關鍵。

CPU和GPU均具有預定義的體系結構,具有固定數量的內核,固定指令集和剛性內存體系結構。GPU通過內核數量和采用SIMD / SIMT并行性來擴展性能。相反,可編程設備是完全可定制的體系結構。開發(fā)人員創(chuàng)建針對應用程序需求進行了優(yōu)化的計算單元。通過創(chuàng)建深度流水線化的數據路徑來實現性能,而不是乘以計算單元的數量。

可以將CPU視為一組研討會,每個研討會都雇用一名非常熟練的工人。這些工人可以使用通用工具,使他們可以構建幾乎所有東西。每個工人一次制作一件商品,先后使用不同的工具將原材料變成成品。此順序轉換過程可能需要許多步驟,具體取決于任務的性質。講習班是獨立的,工人都可以完成不同的任務,而不會分散注意力或出現協(xié)調問題。

GPU也有車間和工人,但其中有很多,工人也更專業(yè)。他們只能訪問特定的工具,只能做更少的事情,但是他們做得非常有效。當GPU工人重復執(zhí)行相同的幾個任務,并且所有人都同時執(zhí)行相同的事情時,它們的功能最佳。畢竟,在有這么多不同的工人的情況下,給他們所有相同的訂單會更有效率。

可編程設備使這個車間類似于工業(yè)時代。如果CPU和GPU是一組單獨的工人,并采取順序步驟將輸入轉換為輸出,則可編程設備是具有裝配線和傳送帶的工廠。沿組裝線分派的工人將原材料逐步轉變?yōu)橹瞥善贰C總€工人重復執(zhí)行相同的任務,并且部分成品在傳送帶上從一個工人轉移到另一個工人。這導致更高的生產吞吐量。

可編程設備的另一個主要區(qū)別是工廠和裝配線不存在,這與CPU和GPU的車間和工人不同。為了完善我們的類比,可編程設備就像是一批待開發(fā)的空批。這意味著設備開發(fā)人員可以建立工廠,裝配線和工作站,然后針對所需任務自定義它們,而不必使用通用工具。就像批量一樣,設備的房地產也不是無限的,這限制了可以在設備中建立工廠的數量和規(guī)模。因此,正確設計和配置這些工廠是設備編程過程的關鍵部分。

傳統(tǒng)的軟件開發(fā)是關于在預定義的體系結構上進行編程的功能??删幊淘O備開發(fā)是關于對體系結構進行編程以實現所需功能。

3.6.3 設計設備加速應用程序的方法

在開始開發(fā)加速應用程序之前,正確地架構它很重要。在此階段,開發(fā)人員將對應用程序的體系結構做出關鍵決策,并確定諸如應將哪些軟件功能映射到設備內核,需要多少并行性以及如何交付并行化等因素。

  • 步驟1:建立基準應用程序性能并建立目標
  • 步驟2:確定要加速的功能
  • 步驟3:確定設備并行化需求
  • 步驟4:確定軟件應用程序并行化需求
  • 步驟5:細化建筑細節(jié)

3.6.4 開發(fā)C / C ++內核的方法論

Vitis軟件平臺支持建模內核用C / C ++或RTL(的Verilog,VHDL,系統(tǒng)的Verilog)。本方法指南適用于C / C ++內核。有關開發(fā)RTL內核的詳細信息,請參見RTL內核。

關于高級綜合編譯器

在開始內核開發(fā)過程之前,開發(fā)人員應該熟悉高級綜合(HLS)概念。HLS編譯器將C / C ++代碼轉換為RTL設計,然后將其映射到設備結構上。

HLS編譯器比標準軟件編譯器更具限制性。例如,存在不支持的構造,包括:系統(tǒng)函數調用,動態(tài)內存分配和遞歸函數。有關更多信息,請參見《Vivado Design Suite用戶指南:高級綜合(UG902)》中的“不受支持的C構造” 。

更重要的是,請始終牢記C / C ++源代碼的結構會對所生成的硬件實現的性能產生重大影響。該方法指南將幫助您構建代碼,以滿足應用程序吞吐量的目標。有關編程內核的特定信息,請參見C / C ++內核。

  • 步驟1:將代碼劃分為負載計算-存儲模式
  • 步驟2:將計算塊劃分為較小的函數
  • 步驟3:確定需要優(yōu)化的循環(huán)
  • 步驟4:改善循環(huán)延遲
  • 步驟5:提高環(huán)路吞吐量
本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯系該專欄作者,如若文章內容侵犯您的權益,請及時聯系本站刪除。
關閉