Vivado 高層次綜合演示
Vivado 高層次綜合演示
以下是詳細的中文說明:
感謝你對Vivado HLS也就是XILINX’s 高層次綜合解決方案有興趣,這個解決方案綜合c,c++和系統(tǒng)c代碼成Verilog和VHDL RTL結(jié)構(gòu)。
我們要說明基于c設(shè)計方法在圖像處理算法實現(xiàn)的好處。
這個算法是工作在一張彩色圖像,完成色彩變化后再進行邊緣檢測。
這個算法是測試不同的色彩變化,然后再進行邊緣檢測。
這個產(chǎn)生了迭代輸出結(jié)果。這是個典型的原始應(yīng)用場景。在這里設(shè)計者想去細調(diào)這個算法。
Vivado 高層次綜合提供內(nèi)嵌的C仿真能力,幫助設(shè)計者做細調(diào)。
在這里,我們開始用Vivado 高層次綜合來調(diào)試圖像處理算法。
這個功能調(diào)用表示了這個設(shè)計被實現(xiàn)成為RTL(寄存器級)。
在這個設(shè)計規(guī)格里面,兩個函數(shù)調(diào)用體現(xiàn)了濾波器的功能。
在第一個濾波器里,一個循環(huán)體現(xiàn)了幀內(nèi)像素顏色轉(zhuǎn)化,現(xiàn)在的配置設(shè)置執(zhí)行了彩色到棕褐色的轉(zhuǎn)換。
使用來自Vivado 高層次綜合的調(diào)試能力,很容易理解設(shè)計描述的執(zhí)行。
這個定時器顯示了完成c仿真的速度。
這個測試向量成功地顯示了輸出結(jié)果和參考圖像是相一致的。
這個說明了基于c設(shè)計好處中的一個,就是算法能全面快速地被驗證。
現(xiàn)在我們滿足了設(shè)計規(guī)格,我們能繼續(xù)往前綜合成RTL(寄存器級)。
對于我們的演示,我們想去跑75Mhz的時鐘頻率,這個目標(biāo)就是處理每秒60幀的數(shù)據(jù)。目標(biāo)器件是kintex-7器件。
首次綜合通常建立一個基準(zhǔn),這個基準(zhǔn)創(chuàng)立了一個全面的報告,設(shè)計者參考這個報告,提供約束,得到所需的架構(gòu)。Vivado 高層次綜合顯示了極其快速的綜合時間,可以在短短幾分鐘內(nèi)處理上千上萬行c代碼。這,反過來,指向了設(shè)計探究的機會,真正地通過性能,資源和功耗指標(biāo)的驅(qū)動去細調(diào)架構(gòu)。
作為綜合的結(jié)果,現(xiàn)在可以得到Verilog和VHDL RTL。也就是我們首次基于c語言架構(gòu)解決方案。
這個相應(yīng)的報告給了我們功耗的評估,還有資源利用率。注意到對于這個算法,存儲器的要求高達139%,超過了Kintex-7器件的容量。當(dāng)然,也有一個性能指標(biāo)的總結(jié)。9ns的時鐘周期給個我們110Mhz的時鐘頻率,所以我們原本75Mhz的目標(biāo)是沒有問題的。但是5億多個時鐘周期的latency(延時)限制了幀速率少于2幀每秒。對于這個c語言,我們要以新的解決方案來應(yīng)對這個性能的挑戰(zhàn)。
我們簡單的拷貝來自我們第一個方案的所有的約束。對于第二個方案,我們愿意去引入一些并行進程,讓這兩個濾波器并行運行。Vivado 高層次綜合對于我們來說很簡單。因為它從c代碼中提取優(yōu)化的對象,這些都是基本的函數(shù),循環(huán)和數(shù)組。頂層函數(shù)調(diào)用兩個濾波函數(shù),默認情況下,Vivado 高層次綜合尊重描述在c代碼中循序進程性質(zhì)的。我們能采用一個簡單的約束來強制這個架構(gòu)并行執(zhí)行。Vivado 高層次綜合在函數(shù)級提供的其中一個約束是DATAFLOW(數(shù)據(jù)流水)。這個就是我們想要做的事情。它創(chuàng)造了一種結(jié)構(gòu),讓進程獨立的工作,通過渠道互相交換數(shù)據(jù)。我們也可以控制這些進程之間的溝通渠道。因為濾波器同一順序執(zhí)行了所有的像素,所以我們能簡化進程間的渠道,把他們轉(zhuǎn)化成小數(shù)據(jù)流的FIFO。最后,我們通過循環(huán)操作加快流水的各個功能。
我們僅僅通過GUI加入了一些約束,然而,這個也是可以通過TCL 命令來做的,它使得更加簡單進行設(shè)計探究?,F(xiàn)在,我們準(zhǔn)備做綜合,注意這個c代碼設(shè)計是不變的。這個約束不改變功能,但創(chuàng)造了截然不同的架構(gòu)。
這份報告顯示了一個比較好的解決方案以及Kintex-7器件可提供的資源范圍。這個性能表明了DATAFLOW這個約束能處理一幀數(shù)據(jù)大約需要90萬個周期。一個75Mhz的時鐘頻率能得到81幀每秒的速度。
我們進行下一步操作,用原始的測試向量來驗證RTL,也封裝這個RTL到 bitstream的實現(xiàn)。
對于這個驗證,我們挑選SystemC來共同仿真。因為這個仿真是面對RTL級,測試將需要很長時間。這說明了為什么采用c級設(shè)計和細調(diào)更加強大提高了生產(chǎn)力。很多沒有什么經(jīng)驗的客戶也有30-50%的提高。因為在算法的細調(diào)過程中加快驗證周期。
Vivado 高層次綜合可以自動生成RTL仿真所需的Test bench,復(fù)用原有C-level的TB,對RTL進行混合(有時序信息)仿真驗證。
在這點上,讓我們快進到RTL的驗證運行結(jié)束。
我們能看到產(chǎn)生正確結(jié)果的RTL結(jié)構(gòu),圖像也被產(chǎn)生在我們的仿真目錄里。
Vivado 高層次綜合 也測量了實際的latency(延時),報告了RTL仿真的成功。
注意基于c級仿真和基于RTL仿真有巨大的差距。對于比較大的設(shè)計或者測試向量,基于RTL微調(diào)花時間太長時間了。
我們有了一個滿足物理約束,功能正確的結(jié)構(gòu)。
所有剩下的就是把它傳遞到系統(tǒng)集成環(huán)境去了。
XILINX 已經(jīng)應(yīng)用了IP-XACT標(biāo)準(zhǔn)去封裝IP,并從一個工具傳遞到兩外一個工具。
Vivado 高層次綜合封裝RTL架構(gòu),集成到Vivado IP 集成器里。
總結(jié):
Vivado 高層次綜合帶來了生產(chǎn)力,加快了驗證流程。
設(shè)計探究和高級的高層次綜合技術(shù)創(chuàng)造了高質(zhì)量的RTL結(jié)構(gòu)
RTL驗證和封裝集成使高層次綜合方法容易地應(yīng)用到你存在的設(shè)計流程里。
評論