FPGA基础知识(四)UG902 RTL仿真与输出
本文是我在學(xué)習(xí)FPGA時學(xué)到的相關(guān)知識與總結(jié),希望可以幫助同行理解和掌握相關(guān)的FPGA知識。可以將本文檔當(dāng)作相應(yīng)FPGA教程文檔UG902的輔助文檔學(xué)習(xí)。主要內(nèi)容為文檔中關(guān)于RTL simulation and export。轉(zhuǎn)載請注明出處。
Xilinx原版教程文檔參見Xilinx Documentation navigator 中對應(yīng)UG902:Vivado Design Suite User Guide High-Level Synthesis中的Verifying the RTL部分。
背景:c語言通過高層次綜合(HLS)綜合為相應(yīng)的硬件RTL語言。再此之前進(jìn)行了c的仿真,相應(yīng)的硬件優(yōu)化,然后下面需要進(jìn)行c與RTL的協(xié)同仿真、RTL仿真及RTL輸出。
目錄
驗證RTL(Verifying the RTL)
C/RTL cosimulation
在c/RTL協(xié)同綜合時必須滿足下面要求:
Test Bench的要求
接口綜合的要求
執(zhí)行RTL simulation
Verificaiton of directives
分析 RTL simulation
Export the RTL design
驗證RTL(Verifying the RTL)
C/RTL cosimulation
C/RTL協(xié)同綜合會將之前的c test bench繼續(xù)用在RTL 綜合之中。
- C在仿真時,最高級別函數(shù)的輸入或者DUT(device under test)會被當(dāng)作輸入向量
- 輸入向量會在RTL仿真時由vivado HLS創(chuàng)建,RTL的輸出會被存為輸出向量
- RTL仿真的輸出向量會被用在c test bench上,在函數(shù)進(jìn)行synthesis之后來驗證結(jié)果的正確性。
在c/RTL協(xié)同綜合時必須滿足下面要求:
test bench必須能夠自我檢測并且返回0值,并且在測試失敗時返回非0值
- 接口綜合時要用到正確的接口
- 任何第三方模擬器必須能在路徑中被找到
- 任何不能被優(yōu)化指令優(yōu)化的數(shù)組和結(jié)構(gòu)體設(shè)計接口都必須在Unsupported Optimizations for Cosimulation中指出。
Test Bench的要求
mian函數(shù)返回零值則結(jié)果正確,返回非零值則結(jié)果不正確。
接口綜合的要求
用C/RTL cosimulation來驗證RTL設(shè)計時,下面要求必須要滿足:
- top-level function必須用ap_ctrl_hs或者ap_ctrl_chain的塊級別的接口
- 設(shè)計必須可以被結(jié)合
- Top-level function必須有initiation intervl of 1
- 接口的array必須被streaming或者被implemented with ap_fifo或者ap_hs axis接口
?
第一次勾選的是VHDL,并且沒有勾選optimizing compile選項,運(yùn)行一整晚卡在一個地方。現(xiàn)在我們運(yùn)行verilog,并且勾選Optimizing compile選項。
以下選項含義(UG902 Using C/RTL co-simulation):
- Setup Only: 只創(chuàng)建所需要的文檔(wrappers, adapters, and scripts),只運(yùn)行simulation但不執(zhí)行simulator,要想執(zhí)行在RTL文件夾下<solution_name>/sim/<RTL>.運(yùn)行
- Dump Trace:會生成一個trace 文檔,在<solution>/sim/<RTL>文檔中,可以選擇trace的信號,例如top-level的端口。具體內(nèi)容參見RTL simulator
- Optimizing Compile:會增加compile的時間,但是simulation會執(zhí)行的更快
- Reduce Disk Space:TRL simulation會產(chǎn)生大量數(shù)據(jù),此步可以把分成N個分開的RTL仿真,但是會運(yùn)行變慢。
- Compiled Library Location:確定compiled library的位置,以便于用第三方的RTL simulatior
- Input Arguments:為test bench確定任何輸入的arugments
執(zhí)行RTL simulation
vivado HLS在RTL simulation中的project的子目錄中運(yùn)行<SOLUTION>/sim/<RTL>,SOLUTION是solution的name,RTL是用于仿真的RTL type
所有c test bench寫入的文檔和co-simulation生成的trace files都會被寫入這個目錄下。
Verificaiton of directives
這部分不太懂,主要講DEPENDENCE,DATAFLOW, FIFO,STREAM這些優(yōu)化相關(guān)的東西,在文檔P196,看完優(yōu)化再回來看。
分析 RTL simulation
當(dāng)c/RTL cosimulation結(jié)束時,simulation reports生成,并且顯示測量得到的latenc和II,可能與HLS synthesis之后生成的report不同。
在沒有pipeline的設(shè)計之中,C/RTL cosimulaton將latency定為ap_start與ap_done之間的信號。pipeline中,latency就是data input與data output之間的時鐘周期。
Debug C/RTL cosimulutio略過,有點(diǎn)繁瑣。
Export the RTL design
vivado HLS的最終步驟就是生成一個IP block。RTL設(shè)計可以被package成以下形式:
- IP Catalog formatted IP(用于Vivado Design suite)
- System Generator for DSP IP(用于Vivado System Generator for DSP)
- Synthesized Checkpoint(.dcp)
vivado HLS將相應(yīng)的c語言生成RTL語言,從而生成相應(yīng)的硬件模塊用于以后的系統(tǒng)設(shè)計。(導(dǎo)入相應(yīng)的RTL語言,應(yīng)該就是IP core)
轉(zhuǎn)載于:https://www.cnblogs.com/1057945230atqqdotcom/p/10695329.html
總結(jié)
以上是生活随笔為你收集整理的FPGA基础知识(四)UG902 RTL仿真与输出的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 活动页面html设计,活动查看页面.ht
- 下一篇: ueditor 上传图片或者视频报错 4