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