概述
AMD Vitis™ HLS 提供直覺設計與生產力
AMD Vitis™ HLS 工具可讓使用者藉由將 C/C++ 函數合成為 RTL,輕鬆建立複雜的 FPGA 演算法。Vitis HLS 工具與 Vivado™ Design Suite(用於合成、佈局與繞線)和 Vitis™ 統一軟體平台(用於異構系統設計和應用)緊密整合。
- 使用者可運用 Vitis HLS 流程,將指示套用到 C 程式碼,以建立符合特定實作需求的 RTL。
- 使用者可從 C 原始碼建立多重設計架構。「初建即正確」的 RTL 不再只是紙上談兵。
- 驗證設計時可採用 C 模擬,迭代速度較傳統 RTL 模擬更快。
- Vitis HLS 工具擁有一應俱全的分析和除錯工具,有助於進行設計最佳化。

設計方法

Vitis HLS 程式設計模型
Vitis HLS 的 C 程式碼是專為 AMD 自適應 SoC 和 FPGA 所編寫,能夠發揮其架構的優勢和特性。
Vitis HLS 工具支援平行程式設計結構,可將您心目中的實作設計模擬出來。這類結構包括:
- HLS 任務,可在程序層級同步執行
- HLS 向量,可在資料層級平行處理
- HLS 串流,可在同步任務之間通訊
- 其結果可運用合成標註加以控制。這類標註包括管道、展開、陣列分區和介面協定。
- 其他詳細資訊,請參閱 Vitis 高階合成使用者指南「HLS 程式設計師指南」一節。
MATLAB 至 HLS C++ 程式碼生成
在 MATLAB® 中開發的函數可透過 MATLAB R2025a 中提供之 MathWorks HDL Coder 程式碼產生功能,來合成到 AMD Vitis™ HLS 易於解讀的 C++ 程式碼中。
這個產生的可合成 C++ 程式碼可當作 Vitis™ HLS 的輸入。此工作流程可加速從高階演算法設計(通常在 MATLAB 中完成)到低階 RTL 實作的轉譯程序。
使用 MATLAB 與 HDL Coder 來設計和建立測試平台,然後使用 HDL Coder 的程式碼產生功能輸入到 Vitis HLS,以進行 AMD 自適應 SoC 和 FPGA 的模擬與合成。
更多資訊,請造訪 MathWorks HDL Coder 頁面。
C 至 RTL 轉換
不同部分的 C 程式碼,Vitis HLS 工具會以不同方式進行合成:
- C/C++ 程式碼的頂層函數引數,會合成為 RTL I/O 連接埠,且會自動配置一個介面合成硬體通訊協定。
- 其他 C 函數則合成為 RTL 區塊,並維持其設計階層架構。
- C 函數迴圈會保持不展開或管道化以提升效能。
- C 程式碼的陣列可對應到任何記憶體資源,例如 BRAM、LUTRAM 和 URAM。
- 可透過合成報告查看效能指標,例如延遲、啟動間隔、迴圈迭代延遲和資源使用率等。
- Vitis HLS 工具標註和最佳化指示,可用於配置 C/C++ 程式碼的合成結果。


模擬和驗證
Vitis HLS 工具內建模擬流程,可加快驗證時間:
- C 模擬能驗證 C 程式碼的功能性。此步驟需時甚短,並使用 C 測試平台。
- 在驗證產生的 RTL 時,C/RTL 聯合模擬會使用相同的 C 測試平台,以核驗 RTL 的功能是否同於 C 原始碼。
- 此流程整合了分析、除錯和波形檢視功能,並支援常見的模擬器。
IP 匯出
Vitis HLS 工具的輸出結果是 RTL 實作,可打包成已編譯目標檔 (.xo),也可以匯出至 RTL IP:
- 已編譯目標檔 (.xo) 是供 Vitis 應用程式開發流程使用的格式,用於建立硬體加速函數。
- RTL IP 有三種使用方式:
- 用 Vivado™ IP Integrator 工具加入
- 以 RTL 區塊之形式匯入到 Vivado IDE 中
- 在 Vitis 模型編輯器中,當作數位訊號處理 (digital signal processing, DSP) 應用的單一區塊集使用

最新功能
- 2025.1
- 2024.2
- 2024.1
- 2023.2
- 2023.1
- 2022.2
- 2022.1
- 2021.2
- 2021.1
2025.1 版本重點
- 使用 HDL Coder 和 MATLAB R2025a,從 MATLAB (.m) 設計產生 Vitis HLS 易於解讀的 C++ 程式碼
- 全新 Vitis HLS 易用性功能
- 模擬會在執行期間變動之線路輸入與 AXI Lite 輸入(直接 I/O)
- 適用於頂層 HLS 設計的效能標註(開放搶先體驗功能)
- 透過專屬內在函數庫支援 Versal 複數成法器
- Vitis HLS GUI 改善
- 透過 Clang 16 對 C++17 提供初期支援
2024.2 版本重點
Vitis HLS 的 2024.2 版納入了許多功能,讓使用者能更簡單地開發 HLS 設計且進行除錯,其中包括:
- 模擬會在執行期間變動的純量/線路輸入(直接 I/O)
- 支援任意精度浮點類型
- 將 HLS 程式碼對映至 DSP 區塊
- 使用者決定程式碼的執行順序
- HLS 除錯器以清晰易懂的方式顯示資料類型(使用 GNU 除錯器的 prettyprint 技術)
2024.1 版本重點
- 全新模板標註,簡化影像和視訊濾波器的 HLS C++ 程式碼
全新程式庫函數精靈,運用 AMD Vitis 程式庫的 GitHub 儲存庫
- 為 AMD Vivado 設計工具建立「求解器」和「視覺」(相容於 OpenCV)IP
- 執行可用的程式庫範例
記憶體介面標註 (ap_memory) 現在可將連接埠群組化,以利在 AMD Vivado IP Integrator的運用
全新 HLS 元件比較功能,可並排顯示 2 個以上元件的指標
支援以使用者供應商提供的 RTL 程式碼取代 C++ 函數(黑箱流程)
代碼分析器現在可解構 C++ 結構的成員,藉此微調效能分析
全新使用者控制項,用於控制 HLS 全域 FSM 編碼,並可選擇安全狀態
支援在 C 模擬期間存取 Clang 檢測工具,以執行位址與初始化檢查
2023.2 版本重點
- 適用於 HLS 元件的全新 Vitis™ 統一 IDE
- 全新 Vitis HLS 授權要求
- 全新代碼分析器功能,可在執行 C 語言合成前,取得效能評估
- 增強 AXI 介面功能:
- 增強對於 HLS AXI 串流側通道的支援
- 支援使用者可設定的 AXI 主快取
- 其他增強功能:
- 全新程式碼複雜性報告,用於在 C 語言合成過程中,識別設計大小問題
- 改善編譯時間:相較於 2023.1 版,2023.2 版的平均編譯時間提升了 20%1
2023.1 版本重點
- 效能提升2:相較於 2022.2 版,2023.1 版的平均延遲時間減少了 5.2%
- 提供在 Vitis HLS工具中輕鬆下載、檢視和實例化 L1 程式庫函數的方式。觀看影片
- 增強 Vitis HLS工具對於 AXI 交易和叢發報告的支援性
2022.2 版本重點
- 為資料處理應用撰寫「任務層級平行」程式碼的全新方法
- 使用者可利用 hls::task 函數,明確定義任務層級的平行處理
- 純串流設計的建模更簡單(例如封包交換等)
- 增強效能與時序功能
- 工具會自動推論展開、管道、陣列分區和內嵌標註,以取得更佳效能
- 增強分析和除錯功能
- 全新功能:將 C 原始碼中的 print 敘述,合成到產生之 RTL 程式碼中
- 有了這項功能,在模擬 RTL 時,就可以追蹤程式碼區塊的執行和變數值
- 易用性
- FFT 和 FIR IP 現在支援 hls::stream 介面
2022.1 版本重點
- 新的 Timeline Trace Viewer
- 顯示設計中所有存續函數在執行期間的特性分析資料,也就是成功轉換為模組的那些函數
- 對於在共同模擬後查看資料流區域的行為而言尤其實用。Vitis™ HLS 原生 - 不再需要啟動 xsim 波形檢視器
- 全新效能標註
- 要在 HLS 中訂定輸送量目標,現在可以使用 #pragma hls performance
- 如果可能,HLS 將嘗試以最少的資源達成目標
- HLS 會交代它執行了哪些轉換,如果無法達成目標,則會指出限制因素
- 針對「區塊流」類型新增「陣列分區」支援
- hls::stream 經過增強,其中每個元素都是陣列
- 可用於將大型陣列處理細分成較小的管道部件
2021.2 版本重點
- 使用者控制的叢發推論
- 使用者可採用全新引入的手動叢發最佳化
- 新增類別「hls::burst_maxi」,支援手動控制叢發行為。提供新的 HLS API 以搭配新類別使用。
- 使用者需要瞭解 HLS 設計的 AXI AMBA 通訊協定,以及硬體交易層級建模
- 增強時序和結果品質功能
- 提高 HLS 時序估計準確度。當 HLS 回報時序收斂時,Vivado™ RTL 合成亦應達成相同時序
- EoU 增強功能
- 在 C 語言合成報告中,新增介面配接器報告
- 使用者需要瞭解介面配接器對其設計的資源影響
- 介面配接器具有可變屬性,可能影響到設計成果品質
- 在合成報告中增加新區塊,以顯示標註和警告清單
- 增強分析和報告功能
- 新增滑鼠拖曳縮放功能
- 全新「概覽」功能可呈現完整圖形,且支援使用者放大整體圖形的特定部分
- 所有函數和迴圈都會連同其模擬資料顯示
- 釋出新的 Timeline Trace Viewer,可在模擬後使用。此檢視器會顯示設計在執行期間的分析資料,並讓使用者無需離開 Vitis HLS GUI。
2021.1 版本重點
- GUI 中新增流程導覽選單,用以快速存取流程階段和報告。 情境關係的「合成、分析、除錯」視景,合併至一般預設介面
- 為 BIND_OP 和 BIND_STORAGE 指示提供新的合成報告區塊
- 全新合成後文字報告,反映出 GUI 合成報告中提供的資訊
- 重新設計 IP 匯出和 Vivado™ 實作執行小工具,現在可選擇將設定及限制檔案傳遞至 Vivado
- 全新函數呼叫圖形檢視器,可視覺化呈現並凸顯函數與迴圈,另有偵測 II、延遲或 DSP/Bram 使用率熱點之熱圖可供選用
- 適用 DSP 區塊原生浮點運算的 Versal™ 時序校準和全新控制項(config_op 的 -precision 選項)
- 改善替代性的可清除管道選項:無載運行管道(free-running pipeline,又稱「frp」)
- 在 Vitis 中的 m_axi 介面重塑工作,應透過 hls::vector 類型完成
- 為 s_axilite 和 m_axi 資料儲存提供全新客製化選項,以利調整設計中的 RAM 資源規劃,您可以選擇「auto」、「uram」、「bram」或「lutram」
- 在 Vitis 引入新式內核連續(又稱「無止盡」)執行模式
- 恢復 axi_lite 次要時脈選項
成功案例
Vitis HLS 客戶成功案例:Intuitive Surgical
Intuitive Surgical 是手術機器人的全球領導廠商,他們使用 FPGA 來實作部分高效能成像要求。
他們需要建立原型的一項功能,是以每秒 60 張畫格 (FPS) 之畫面刷新率,在 4K 解析度下進行的影像變形功能。此設計有嚴格的延遲要求。由於時間有限,他們決定使用 Vitis HLS 實作此功能。他們透過 AMD Vitis HLS 團隊的技術支援從頭開始開發程式碼。整個設計過程大約花了兩週的時間,而且達到效能目標。
「影像變形是 FPGA 中的複雜作業,若使用 RTL 實作可能需要數個月的時間。以 Vitis HLS 為基礎的方法讓我們能夠快速實作設計。雖然設計並未完全最佳化,但我們實現原型建立的速度相當驚人,展現出 HLS 的優勢所在。此方法有助於快速迭代,而且透過 AMD 之 HLS 團隊的支援和已套用標註的調整,我們能夠在史無前例的時間內成功讓設計在 FPGA SoC 中實際運行。我們一直都將 HLS 用於我們的成像功能,而且打算繼續這麼做。」
- Intuitive Surgical 成像韌體部門資深經理 Azhar Sufi
運用 Vitis HLS 加快設計空間探索
「在我看來,AMD Vitis™ HLS 工具的主要優勢,就是其設計空間探索功能。使用最佳化指示(管道化和展開等),即可在合理的時間內,產生不同的架構和實作方式。這要是使用 VHDL/Verilog 手動設計程式碼,就不可能達成。Vitis HLS 有個出色功能,那就是可以共同模擬和驗證 HDL 程式碼,確保 HDL 程式碼運作正常無誤。」德國普福爾茨海姆大學教授 Frank Kesel 博士
客戶案例研究

資源
尾註
- 根據 2023 年 8 月 10 日的測試,本測試使用了 1000 項 Vitis L2/L3 代碼程式庫設計,以比較 Vitis HLS 2023.2 版和 Vitis HLS 2023.1 版之間的差異。測試期間的系統配置:Intel Xeon E5-2690 v4 @ 2.6GHz 處理器、256GB RAM、RedHat Enterprise Linux 8.6。實際效能會有所不同。系統製造商可能改變配置,而產生不同的結果。-VGL-04
- 這批基準測試是在 2023 年 2 月 12 日進行,使用了 Vitis L1 程式庫所有的 C 程式碼設計,共 1208 項。每項設計都是在搭載雙路 Intel Xeon E5-2690 處理器的系統上運行,作業系統為 CentOS Linux,啟用 SMT,停用渦輪加速。硬體配置預期不會影響軟體測試結果。結果可能會因軟體及韌體設定和配置而異 - VGL-03
- 根據 2023 年 8 月 10 日的測試,本測試使用了 1000 項 Vitis L2/L3 代碼程式庫設計,以比較 Vitis HLS 2023.2 版和 Vitis HLS 2023.1 版之間的差異。測試期間的系統配置:Intel Xeon E5-2690 v4 @ 2.6GHz 處理器、256GB RAM、RedHat Enterprise Linux 8.6。實際效能會有所不同。系統製造商可能改變配置,而產生不同的結果。-VGL-04
- 這批基準測試是在 2023 年 2 月 12 日進行,使用了 Vitis L1 程式庫所有的 C 程式碼設計,共 1208 項。每項設計都是在搭載雙路 Intel Xeon E5-2690 處理器的系統上運行,作業系統為 CentOS Linux,啟用 SMT,停用渦輪加速。硬體配置預期不會影響軟體測試結果。結果可能會因軟體及韌體設定和配置而異 - VGL-03