戴源,白雨鑫,張偉,陳鑫
摘要:本文為了研究面向FPGA芯片的高層次綜合工具Vivado HLS在硬件設(shè)計(jì)中的性能,分別利用C++語(yǔ)言與Verilog語(yǔ)言設(shè)計(jì)移位寄存器,通過(guò)比較兩種設(shè)計(jì)方法在不同輸出位寬下,其時(shí)序、功耗、PDP以及資源使用量上的差別來(lái)評(píng)估HLS工具在硬件電路設(shè)計(jì)上的效率與功能性。實(shí)驗(yàn)結(jié)果表明,雖然HLS工具綜合得到的Verilog代碼表現(xiàn)不如手工直接編寫(xiě)的Verilog代碼,但其以高級(jí)語(yǔ)言作為輸入的特性還是能滿足讓設(shè)計(jì)師在不需要掌握硬件描述語(yǔ)言的情況下利用FPGA實(shí)現(xiàn)算法加速的目的。
關(guān)鍵詞:FPGA;高層次綜合;高級(jí)語(yǔ)言;Vivado HLS;Verilog;PDP
中圖分類號(hào):TP311? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):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
集成電路伴隨摩爾定律發(fā)展至今,其復(fù)雜性已經(jīng)逐漸超過(guò)人類可以手工管理的范疇。如:一顆擁有百萬(wàn)門(mén)級(jí)的SoC,其代碼量約為20萬(wàn)行,完成一次規(guī)范審查和邏輯綜合的時(shí)間分別為6.5和8小時(shí)[1]。因此,完全使用RTL級(jí)的邏輯抽象設(shè)計(jì)當(dāng)代芯片是不現(xiàn)實(shí)的,復(fù)雜的代碼不光開(kāi)發(fā)耗時(shí)長(zhǎng),還大大增加了編碼錯(cuò)誤的概率,且調(diào)試和驗(yàn)證也非常困難[2]。
高層次綜合(High Level Synthesis, HLS)技術(shù)就是一種將高級(jí)語(yǔ)言轉(zhuǎn)換成硬件描述語(yǔ)言的技術(shù),這項(xiàng)技術(shù)能夠幫助工程師克服直接在寄存器傳輸層(RTL)進(jìn)行開(kāi)發(fā)的困難[3]。設(shè)計(jì)師們?cè)诟邔哟尉C合流程下需要注重的是系統(tǒng)的運(yùn)行模式,HLS工具會(huì)負(fù)責(zé)生成RTL級(jí)代碼。但不幸的是,HLS工具作為一種編譯器,其可靠性難以得到保證,例如,Yang等人就在一些成熟、使用廣泛的編譯器中發(fā)現(xiàn)了數(shù)百個(gè)以前未知的錯(cuò)誤[4]。況且即便是高級(jí)語(yǔ)言,其算法中也會(huì)存在諸如數(shù)據(jù)依賴等問(wèn)題,因此想要利用HLS工具實(shí)現(xiàn)高性能的硬件設(shè)計(jì),還需要從高級(jí)語(yǔ)言代碼的編寫(xiě)和HLS工具優(yōu)化等角度進(jìn)行大量的工作[5]。
Vivado HLS是FPGA芯片公司Xilinx在2012年發(fā)布的集成開(kāi)發(fā)環(huán)境中的一款高層次綜合工具[6]。近年來(lái),學(xué)術(shù)和工業(yè)界利用Vivado HLS開(kāi)展了大量工作,其中張俊濤等人設(shè)計(jì)了FFT IP核[7];王春江等人設(shè)計(jì)了一套運(yùn)動(dòng)目標(biāo)檢測(cè)系統(tǒng)[8];齊樂(lè)等人設(shè)計(jì)了一套實(shí)時(shí)圖像去霧系統(tǒng)[9]。然而, HLS工具綜合結(jié)果與手工Verilog輸入之間差異性的對(duì)比卻鮮有人研究。所以本文提出在Vivado HLS工具中使用C++語(yǔ)言設(shè)計(jì)移位寄存器,將HLS工具綜合出來(lái)的Verilog代碼與手工設(shè)計(jì)的Verilog代碼進(jìn)行對(duì)比,通過(guò)兩者之間的差異來(lái)評(píng)估HLS工具在硬件設(shè)計(jì)上的效率與功能性。因?yàn)楣?能量效率是評(píng)估HLS工具的最重要指標(biāo)之一[10]。所以,我們將需要對(duì)比兩種設(shè)計(jì)統(tǒng)一放到測(cè)試系統(tǒng)中進(jìn)行時(shí)序、功耗和資源使用量的對(duì)比,以達(dá)到評(píng)估其效能的目的。測(cè)試的軟件平臺(tái)為Vivado 2019.2,并選用Xilinx Kintex-7系列FPGA。
實(shí)驗(yàn)結(jié)果證明, HLS綜合出來(lái)的設(shè)計(jì)整體表現(xiàn)與手工設(shè)計(jì)的Verilog設(shè)計(jì)基本持平,但因?yàn)镠LS工具綜合的設(shè)計(jì)使用的是狀態(tài)機(jī)邏輯,所以其在時(shí)序和資源使用的表現(xiàn)上略有不足。然而,HLS工具所具備的加速設(shè)計(jì)周期的優(yōu)點(diǎn)以及降低硬件開(kāi)發(fā)門(mén)檻的特點(diǎn),仍能在復(fù)雜的電路設(shè)計(jì)中發(fā)揮其作用。