以下文章來源于OpenFPGA,作者碎碎思
在 FPGA 設計的世界里,有兩條常見的“修煉之路”:
一條是“硬核派”,直接用 Verilog/VHDL 寫 RTL,控制信號級細節(jié),精打細算每個資源。
另一條是“快刀派”,使用 HLS(High Level Synthesis,高層次綜合),用 C/C++/SystemC 甚至 Python 這樣的高級語言,快速描述算法,再交給工具自動生成 RTL。
這兩條路各有千秋。今天我們就來聊聊:HLS 到底能帶來什么價值?又有哪些局限?
一、HLS 的價值:讓算法更快上 FPGA
在很多場景下,HLS 是救命稻草。比如:
圖像處理
假設你想實現(xiàn)一個 3×3 卷積濾波。如果用 RTL 寫,你要手工管理 line buffer、滑動窗口、流水線延遲,寫起來又長又繁瑣。
但用 HLS,只需要一段 C 代碼:
for(i = 1; i < ROWS-1; i++) {
? ??for?(j = 1; j < COLS-1; j++) {
? ? ? ? sum = 0;
? ? ? ??for?(m = -1; m <= 1; m++) {
? ? ? ? ? ??for?(n = -1; n <= 1; n++) {
? ? ? ? ? ? ? ? sum += img[i+m][j+n] * kernel[m+1][n+1];
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? out[i][j] = sum;
? ? }
}
再加幾句 pragma(比如#pragmaHLS PIPELINE、#pragmaHLS ARRAY_PARTITION),工具就能幫你生成流水線化的 RTL。
算法驗證速度快
用 C 級別的仿真,速度可能比 RTL 仿真快 100~1000 倍。比如 FFT、矩陣乘法這種大規(guī)模計算,用 RTL 仿真等一下午,用 HLS 可能幾分鐘就能跑完。
縮短產品迭代周期
很多團隊用 HLS 來快速驗證算法可行性,甚至直接拿 HLS 輸出的 RTL 投產。對于初創(chuàng)公司或者科研項目,能快點出 Demo,就是最大的價值。
二、HLS 的局限:不是萬能的鑰匙
不過,HLS 并不是“寫幾行 C 代碼,點點按鈕就能跑滿資源”的神器,它有幾個明顯的局限:
資源和性能不可控
RTL 設計師可以明確指定每個寄存器、DSP、BRAM 的用途;
HLS 則依賴工具的推斷。結果可能多用了 20% 的 LUT,或者時鐘頻率達不到要求。
舉個例子:
用 HLS 寫 AES 加密核,綜合后時鐘頻率只有 120MHz;換成手寫 RTL,同樣邏輯能跑到 250MHz,且資源下降一半。
算法友好,接口復雜就麻煩
HLS 擅長描述算法,比如矩陣運算、濾波、信號處理;
但當你要和 AXI 總線交互,或者寫 PCIe 協(xié)議棧時,HLS 就顯得力不從心。工具雖然支持 AXI4 接口自動生成,但復雜協(xié)議邏輯(比如 TLP 解碼)還是 RTL 更適合。
調優(yōu)需要經驗
新手寫 HLS,可能以為“C 代碼跑得快 = FPGA 上也快”。
結果綜合出來的電路一片 stall,性能還不如 CPU。
想寫出高效 HLS,需要了解流水線、并行度、內存帶寬等硬件特性,這一點和寫 RTL 沒本質區(qū)別。
三、實際項目中的選擇
我們可以總結成一句話:
HLS 用來加速“算法類模塊”,RTL 用來保證“接口和系統(tǒng)級可靠性”。
比如一個視頻處理系統(tǒng):
圖像濾波、邊緣檢測 → HLS 最快上手,改 kernel 換算法也方便;
AXI-Stream 視頻數(shù)據(jù)搬運、時序控制 → RTL 最靠譜,避免 HLS 生成一堆“黑盒”邏輯導致調試困難。
再比如機器學習推理:
矩陣乘法、卷積核 → HLS 表達簡潔,容易改數(shù)據(jù)寬度或并行度;
DDR 控制器接口、PCIe DMA 引擎 → RTL 手寫更穩(wěn)。
四、未來趨勢:HLS 與 RTL 融合
目前業(yè)界主流的做法是:
算法級 → HLS 實現(xiàn),減少開發(fā)時間;
接口/控制級 → RTL 手寫,保證系統(tǒng)穩(wěn)定;
最終在同一個 Vivado/Quartus 工程里,把 HLS 輸出的 IP 和手寫 RTL 混合使用。
像 Xilinx 的 Vitis HLS 就是這種思路:讓軟件工程師快速寫出硬件加速核,再交給硬件工程師接入系統(tǒng)。
總結
HLS 幫助我們 快:快速建模、快速驗證、快速迭代。
RTL 幫助我們 準:精確控制、極致性能、穩(wěn)定接口。
在實際項目里,兩者不是對立的,而是 互補的搭檔。
如果你是軟件背景,HLS 是進入 FPGA 世界的捷徑; 如果你是硬件老兵,HLS 也能成為你提高效率的工具,但不能替代 RTL 的價值。
問題留給大家: 你們項目里有嘗試過用 HLS 嗎?最后是堅持用,還是又回到 RTL?
-
FPGA
+關注
關注
1660文章
22406瀏覽量
636073 -
python
+關注
關注
57文章
4876瀏覽量
90012 -
HLS
+關注
關注
1文章
135瀏覽量
25823
原文標題:從 HLS 到 RTL:高層次綜合在 FPGA 設計中的價值與局限
文章出處:【微信號:HXSLH1010101010,微信公眾號:FPGA技術江湖】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
HLS設計中的BRAM使用優(yōu)勢
使用三菱Q系列和FX2N系列進行CC-Link通訊
智能光伏時代:"四可"技術如何提升電站綜合價值
開源RISC-V處理器(蜂鳥E203)學習(二)修改FPGA綜合環(huán)境(移植到自己的Xilinx FPGA板卡)
一些神經網絡加速器的設計優(yōu)化方案
FPGA開發(fā)板vivado綜合、下載程序問題匯總
龍芯中科攜手中西部高校構筑人才培養(yǎng)高地
實現(xiàn)電纜綜合在線監(jiān)測的方法
適用于SystemC/C++驗證的形式化解決方案
高層次綜合在FPGA設計中的價值與局限
評論