戴源,白雨鑫,張偉,陳鑫



摘要:本文為了研究面向FPGA芯片的高層次綜合工具Vivado HLS在硬件設計中的性能,分別利用C++語言與Verilog語言設計移位寄存器,通過比較兩種設計方法在不同輸出位寬下,其時序、功耗、PDP以及資源使用量上的差別來評估HLS工具在硬件電路設計上的效率與功能性。實驗結果表明,雖然HLS工具綜合得到的Verilog代碼表現不如手工直接編寫的Verilog代碼,但其以高級語言作為輸入的特性還是能滿足讓設計師在不需要掌握硬件描述語言的情況下利用FPGA實現算法加速的目的。
關鍵詞:FPGA;高層次綜合;高級語言;Vivado HLS;Verilog;PDP
中圖分類號:TP311? ? 文獻標識碼:A
文章編號:1009-3044(2021)19-0001-04
Effectiveness Evaluation of Hardware Design Based on Vivado HLS
DAI Yuan,BAI Yu-xin,ZHANG Wei,CHEN Xin*
(College of Electronic and Information Engineering, Nanjing University of Aeronautics and Astronautics, Nanjing 210016, China)
Abstract: In order to study the performance of vivado HLS, a high-level synthesis tool for FPGA chips, the shift registers are designed by using C ++ language and Verilog language respectively. The efficiency and functionality of HLS tool in hardware circuit design are evaluated by comparing the differences of timing, power consumption, PDP and resource usage between the two design methods under different output bit widths. The experimental results show that although the performance of Verilog code synthesized by HLS tools is not as good as that of the Verilog code written directly by hand, its high-level language as input can still meet the purpose of using FPGA to speed up the algorithm without mastering the hardware description language.
Key words: FPGA; High Level Synthesis; High Level language; Vivado HLS; Verilog; PDP
集成電路伴隨摩爾定律發展至今,其復雜性已經逐漸超過人類可以手工管理的范疇。如:一顆擁有百萬門級的SoC,其代碼量約為20萬行,完成一次規范審查和邏輯綜合的時間分別為6.5和8小時[1]。因此,完全使用RTL級的邏輯抽象設計當代芯片是不現實的,復雜的代碼不光開發耗時長,還大大增加了編碼錯誤的概率,且調試和驗證也非常困難[2]。
高層次綜合(High Level Synthesis, HLS)技術就是一種將高級語言轉換成硬件描述語言的技術,這項技術能夠幫助工程師克服直接在寄存器傳輸層(RTL)進行開發的困難[3]。設計師們在高層次綜合流程下需要注重的是系統的運行模式,HLS工具會負責生成RTL級代碼。但不幸的是,HLS工具作為一種編譯器,其可靠性難以得到保證,例如,Yang等人就在一些成熟、使用廣泛的編譯器中發現了數百個以前未知的錯誤[4]。況且即便是高級語言,其算法中也會存在諸如數據依賴等問題,因此想要利用HLS工具實現高性能的硬件設計,還需要從高級語言代碼的編寫和HLS工具優化等角度進行大量的工作[5]。
Vivado HLS是FPGA芯片公司Xilinx在2012年發布的集成開發環境中的一款高層次綜合工具[6]。近年來,學術和工業界利用Vivado HLS開展了大量工作,其中張俊濤等人設計了FFT IP核[7];王春江等人設計了一套運動目標檢測系統[8];齊樂等人設計了一套實時圖像去霧系統[9]。然而, HLS工具綜合結果與手工Verilog輸入之間差異性的對比卻鮮有人研究。所以本文提出在Vivado HLS工具中使用C++語言設計移位寄存器,將HLS工具綜合出來的Verilog代碼與手工設計的Verilog代碼進行對比,通過兩者之間的差異來評估HLS工具在硬件設計上的效率與功能性。因為功耗/能量效率是評估HLS工具的最重要指標之一[10]。所以,我們將需要對比兩種設計統一放到測試系統中進行時序、功耗和資源使用量的對比,以達到評估其效能的目的。測試的軟件平臺為Vivado 2019.2,并選用Xilinx Kintex-7系列FPGA。
實驗結果證明, HLS綜合出來的設計整體表現與手工設計的Verilog設計基本持平,但因為HLS工具綜合的設計使用的是狀態機邏輯,所以其在時序和資源使用的表現上略有不足。然而,HLS工具所具備的加速設計周期的優點以及降低硬件開發門檻的特點,仍能在復雜的電路設計中發揮其作用。