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