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

與主機開發流程(正常開發流程)結合使用時,我們可以使用 Vitis IDE 對我們的應用程序進行自上而下的加速。
但是,查看 FPGA bit流創建流程,我們還可以使用 HLS 或 RTL 從下到上創建加速內核。
這種自下而上的流程使我們能夠專注于復雜的內核算法,驗證其性能并確保可編程邏輯實現過程的優化 途徑是最佳的。
這種方法還可以更好地與團隊方法一起使用,并且可以創建可跨多個項目使用的加速內核庫(IP)。另一個優點是應用于可編程邏輯實現的優化駐留在 .xo 文件中,無需在每次使用算法時重新進行優化。
Vivado HLS 正是為此流程而構建,Vitis HLS包含在 Vitis 安裝的 bin 目錄中。
同時Xilinx GitHub (https://github.com/Xilinx/HLS-Tiny-Tutorials)上還有許多 Vitis HLS 教程項目。

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

Vitis HLS 加載和歡迎頁面。

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

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

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

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

當我們接下來執行綜合時,我們不僅會看到 Verilog 和 VHDL 實現,還會看到包含內核描述的 XML 文件。

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

Xilinx 對象將導出到設置的位置。

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

FPGA技術江湖廣發江湖帖
無廣告純凈模式,給技術交流一片凈土,從初學小白到行業精英業界大佬等,從軍工領域到民用企業等,從通信、圖像處理到人工智能等各個方向應有盡有,QQ微信雙選,FPGA技術江湖打造最純凈最專業的技術交流學習平臺。
FPGA技術江湖微信交流群

加群主微信,備注姓名+公司/學校+崗位/專業進群
FPGA技術江湖QQ交流群

備注姓名+公司/學校+崗位/專業進群
