高層次綜合(High-level Synthesis)簡稱HLS,指的是將高層次語言描述的邏輯結(jié)構(gòu),自動轉(zhuǎn)換成低抽象級語言描述的電路模型的過程。
對于AMD Xilinx而言,Vivado 2019.1之前(包括),HLS工具叫Vivado HLS,之后為了統(tǒng)一將HLS集成到Vitis里了,集成之后增加了一些功能,同時將這部分開源出來了。Vitis HLS是Vitis AI重要組成部分,所以我們將重點(diǎn)介紹Vitis HLS。
為了創(chuàng)建可編程邏輯內(nèi)核,Vitis V++ 編譯器能夠?qū)?OpenCL、C/C++ 和 RTL 編譯到AMD Xilinx對象 (.xo) 文件中,然后將它們鏈接到AMD Xilinx二進(jìn)制 (.xclbin) 中用于可編程邏輯。

與主機(jī)開發(fā)流程(正常開發(fā)流程)結(jié)合使用時,我們可以使用 Vitis IDE 對我們的應(yīng)用程序進(jìn)行自上而下的加速。
但是,查看 FPGA bit流創(chuàng)建流程,我們還可以使用 HLS 或 RTL 從下到上創(chuàng)建加速內(nèi)核。
這種自下而上的流程使我們能夠?qū)W⒂趶?fù)雜的內(nèi)核算法,驗(yàn)證其性能并確保可編程邏輯實(shí)現(xiàn)過程的優(yōu)化 途徑是最佳的。
這種方法還可以更好地與團(tuán)隊(duì)方法一起使用,并且可以創(chuàng)建可跨多個項(xiàng)目使用的加速內(nèi)核庫(IP)。另一個優(yōu)點(diǎn)是應(yīng)用于可編程邏輯實(shí)現(xiàn)的優(yōu)化駐留在 .xo 文件中,無需在每次使用算法時重新進(jìn)行優(yōu)化。
Vivado HLS 正是為此流程而構(gòu)建,Vitis HLS包含在 Vitis 安裝的 bin 目錄中。
同時Xilinx GitHub (https://github.com/Xilinx/HLS-Tiny-Tutorials)上還有許多 Vitis HLS 教程項(xiàng)目。

這些教程涵蓋了開始開發(fā)有效內(nèi)核所需的一切,包括算法開發(fā)、編碼風(fēng)格、接口和內(nèi)存架構(gòu)等方面。
如果我們使用的是 Windows,我們可以通過輸入以下命令從 Xilinx 軟件命令行工具調(diào)用 Vitis HLS:
vitis_hls
在 Linux 系統(tǒng)中,在運(yùn)行安裝目錄中的設(shè)置腳本settings64.sh后,我們可以在終端窗口中使用相同的命令。

Vitis HLS 加載和歡迎頁面。

我們可以通過從 GitHub 克隆或下載 ZIP 文件來使用這些示例。如果我們探索一個示例庫,我們將找到支持該示例的源代碼和 TCL 文件。

我們可以通過切換到該目錄并從 Linux 終端或 XSCT (windows)運(yùn)行這些示例:
vitis_hls?-f?run_hls.tcl
這將以命令行模式運(yùn)行該項(xiàng)目并綜合。

命令運(yùn)行完成后,將看到一個包含解決方案和項(xiàng)目文件的新目錄(Vitis HLS工程)。
要探索設(shè)計(jì),我們可以使用已打開的 Vitis GUI 導(dǎo)航到示例項(xiàng)目目錄。
打開 GUI 后,將看到一個基于 Eclipse 的工作區(qū),它看起來類似于 Vivado HLS,但存在細(xì)微差別。

在 GUI 中,我們可以瀏覽綜合報(bào)告、調(diào)試應(yīng)用程序并分析RTL的實(shí)現(xiàn)。
默認(rèn)情況下,實(shí)現(xiàn)過程將設(shè)置為生成基于 RTL 的解決方案,但如果我們希望使用自下而上的流程,并在 Vitis 中實(shí)現(xiàn)加速功能并生成 Xilinx 對象,我們應(yīng)該怎么做?
我們可以檢查解決方案設(shè)置下的選項(xiàng)- Vitis 自下而上設(shè)計(jì)。

當(dāng)我們接下來執(zhí)行綜合時,我們不僅會看到 Verilog 和 VHDL 實(shí)現(xiàn),還會看到包含內(nèi)核描述的 XML 文件。

一旦我們對算法的性能感到滿意,我們就可以導(dǎo)出 Xilinx需要的對象。在這種情況下,我們使用了教程項(xiàng)目中的一個簡單示例,它非常簡單且很小。
從導(dǎo)出 RTL 對話框中,選擇 Vitis 內(nèi)核選項(xiàng)來代替正常的 Vivado IP。

Xilinx 對象將導(dǎo)出到設(shè)置的位置。

現(xiàn)在我們可以將獲取的 XO 文件包含在我們的一個或多個 Vitis 設(shè)計(jì)中。當(dāng)然,如果我們需要硬件實(shí)現(xiàn),我們也可以將 IP 導(dǎo)出到 Vivado。
從上面的一個示例我們看到了,Vitis大大方便了整個FPGA開發(fā)流程,減少了設(shè)計(jì)周期,雖然目前與Verilog/SV/VHDL實(shí)現(xiàn)的硬件在資源方面還是有很大差距,但是很多公司一直在致力于這方面的實(shí)現(xiàn),畢竟這是一個趨勢。那么目前HLS真的一無用處嗎?
答案是否定的,合理運(yùn)用HLS的強(qiáng)大數(shù)據(jù)處理能力,能達(dá)到事倍功倍的效果,畢竟目前FPGA資源都是過剩的。
RTL與HLS強(qiáng)強(qiáng)聯(lián)合打造FPGA新開發(fā)之路:只需要把兩者結(jié)合好;RTL做控制,HLS做數(shù)據(jù)流計(jì)算這樣的組合才跑得歡快~
PS:不知道大家注意沒,Vivado中很多官方/第三方IP都是使用HLS搭建的,尤其在視覺圖像、數(shù)字信號處理等方面。
這是《FPGA高層次綜合HLS》系列教程開篇,后面會按照專題繼續(xù)更新,文章有什么問題,歡迎大家批評指正~感謝大家支持。
- End -
往期精選?
?
?

FPGA技術(shù)江湖廣發(fā)江湖帖
無廣告純凈模式,給技術(shù)交流一片凈土,從初學(xué)小白到行業(yè)精英業(yè)界大佬等,從軍工領(lǐng)域到民用企業(yè)等,從通信、圖像處理到人工智能等各個方向應(yīng)有盡有,QQ微信雙選,F(xiàn)PGA技術(shù)江湖打造最純凈最專業(yè)的技術(shù)交流學(xué)習(xí)平臺。
FPGA技術(shù)江湖微信交流群

加群主微信,備注職業(yè)+方向+名字進(jìn)群
FPGA技術(shù)江湖QQ交流群

備注地區(qū)+職業(yè)+方向+名字進(jìn)群
