目前,在高層次綜合(HLS, High Level Synthesis)領(lǐng)域,Vivado HLS可謂獨樹一幟。它有效地拉近了軟件工程師與FPGA之間的距離,加速了算法開發(fā)的進程,縮短了產(chǎn)品上市時間。對于工程師,尤其是軟件工程師而言是一個福音。在實際工程中,如何利用好這一工具仍值得考究。本文將介紹使用Vivado HLS時的幾個誤區(qū)。 ?誤讀1:只要是 C/C++ 描述的算法都是可綜合(可轉(zhuǎn)換成 RTL)的。 HLS的可綜合功能是有限的,并不是所有的C或者C++語句都可轉(zhuǎn)換成相應(yīng)的RTL代碼。下面這些情形是不可綜合的。 ○ 動態(tài)內(nèi)存分配 ○?涉及操作系統(tǒng)層面的操作 ○?遞歸函數(shù) ○?數(shù)組規(guī)模可變 ?誤讀2:既然Vivado HLS支持C、C++和System C,那么用三者任意一種都行。 盡管 Vivado HLS支持C、C++和System C,但支持力度是不一樣的。在v2017.4版本ug871 第56頁有如下描述??梢?,當(dāng)設(shè)計中如果使用到任意精度的數(shù)據(jù)類型時,采用C++ 和System C 是可以使用Vivado HLS的調(diào)試環(huán)境的,但是C 描述的算法卻是不可以的。而實際上很多真實的硬件模型都要使用任意進度的數(shù)據(jù)類型,所以要想使用Vivado HLS 的調(diào)試功能, 建議最好采用 C++和System C。 
?誤讀3:只要有源代碼即可,沒有Test bench也行。 在HLS設(shè)計開發(fā)中,C Test bench起著舉足輕重的作用。C層面算法功能的驗證需要用到它;當(dāng)生成RTL代碼時,C和RTL的協(xié)同仿真也要用到它。如下圖所示。實際上,協(xié)同仿真時,RTL代碼的輸入激勵就是由C Test bench生成的。由此可見,C Test bench是整個設(shè)計不可或缺的一部分。 
Lauren Gao(高亞軍),賽靈思高級戰(zhàn)略應(yīng)用工程師。Lauren 專注于 C/C++ 高層次綜合,擁有多年利用 Xilinx FPGA 實現(xiàn)數(shù)字信號處理算法的經(jīng)驗,對 Xilinx FPGA 的架構(gòu)、開發(fā)工具和設(shè)計理念有深入的理解。發(fā)布網(wǎng)絡(luò)視頻課程“Vivado入門與提高“ 及 “跟 Xilinx SAE 學(xué) HLS”,點擊率均15萬以上;撰寫并出版《基于FPGA的數(shù)字信號處理》及《Vivado從此開始》兩本專業(yè)圖書, 廣受好評。
|