Vivado調(diào)用Questa Sim或ModelSim仿真中存在的一些自動(dòng)化問題的解決方案。
Vivado調(diào)用Questa Sim仿真中存在的一些問題
首先說明一下Modelsim與Questa Sim都可以與Vivado聯(lián)調(diào),也比較相似,但是Questa Sim比Modelsim功能更加廣泛,對(duì)于System Verilog的語法支持更加完善,本文以Questa Sim為例說明一下Vivado調(diào)用第三方仿真軟件查看波形的過程中存在的一些問題。
1、添加新的觀測(cè)信號(hào)需要重新仿真
Vivado直接調(diào)用Modelsim/QuestaSim進(jìn)行仿真時(shí),波形文件里默認(rèn)只會(huì)出現(xiàn)仿真最頂層中包含的信號(hào),若此時(shí)將仿真運(yùn)行一段時(shí)間后,想要查看其他模塊信號(hào)波形時(shí),需要重新仿真或者運(yùn)行do XXX_simulate.do方可。 以圖1所示工程為例,
圖1 vivado示例工程
在這個(gè)工程中,我們調(diào)用Questa Sim進(jìn)行仿真,可以看到頂層模塊會(huì)自動(dòng)跑100ns,如圖2所示
圖2 QuestaSim仿真波形
此時(shí),我們?nèi)粝氩榭磍_ethernet_0_pkt_gen_mon這個(gè)模塊的波形時(shí),直接進(jìn)入波形界面進(jìn)行添加,結(jié)果如圖3所示。
圖3 QuestaSim仿真波形
從圖3中可以看到,當(dāng)模塊的信號(hào)被添加進(jìn)來后,已經(jīng)運(yùn)行過的仿真時(shí)間內(nèi),新加入的信號(hào)沒有仿真結(jié)果。
2、修改邏輯代碼后,需要重新調(diào)用仿真器
在代碼調(diào)試過程中,修改部分邏輯代碼后(不包括IP核),如果想要查看修改后工程的仿真結(jié)果,需要關(guān)閉當(dāng)前的仿真器,從vivado中重新調(diào)用方可。其原因是vivado在生成XXX_compile.do文件時(shí),會(huì)在其末尾自動(dòng)添加“quit -force”語句,而更改了相應(yīng)的代碼文件后,我們需要執(zhí)行“do XXX_compile.do”命令重新編碼整個(gè)庫,然而在運(yùn)行此文件時(shí),當(dāng)前的仿真器會(huì)被強(qiáng)制退出。
解決方案
為了解決上述問題,同時(shí)更加方便使用,本文使用TCL語言,編寫了一個(gè)較為方便的do文件,其可以實(shí)現(xiàn)如下功能:
1、對(duì)XXX_compile.do自動(dòng)修改
對(duì)XXX_compile.do自動(dòng)修改,去除其末尾的“quit -force”,并生成新的compile.do文件,其對(duì)應(yīng)的源代碼如下:
setfilename[glob*_compile.do] setcontent[open$filenamer+] setrow0 while{![eof$content]}{ incrrow gets$contentline setlist($row)$line } close$content setfilename2"compile.do"; setcontent[open$filename2w+] for{seti1}{$i<=?$row}?{incr?i}?{ ????if?{![string?match?"quit?-force"?$list($i)]}?{ ????????puts?$content?$list($i) ????}???? }; close?$content
2、使用“l(fā)og -r /*”命令
該命令可以讓modelsim/Questa Sim在進(jìn)行仿真中,對(duì)所有信號(hào)同步進(jìn)行仿真,從而解決新加入的觀測(cè)信號(hào)沒有仿真結(jié)果的問題;
3、保證仿真器不退出
當(dāng)修改工程中的邏輯代碼(不含IP核)后,只需要運(yùn)行該do文件,其自動(dòng)進(jìn)行編譯和仿真,且使用修改后的compile.do文件,保證仿真器不退出,其對(duì)應(yīng)的源代碼如下:
setfilenamecompile.do do$filename setfilename[glob*_simulate.do] do$filename log-r/* restart-force run1ms
例程
在使用該do文件之前,需要首先通過vivado調(diào)用modelsim/ questasim,然后將do文件拷貝到工程對(duì)應(yīng)的behave文件夾下。 仍以圖1所示工程為例,當(dāng)修改了代碼內(nèi)部分邏輯后,在QuestaSim的transcrip界面,輸入命令do auto_update_sim.do即可自動(dòng)重新編譯、仿真,結(jié)果如圖4所示(默認(rèn)仿真時(shí)間設(shè)置為1ms)
圖4 QuestaSim仿真波形
添加了l_ethernet_0_pkt_gen_mon這個(gè)模塊,可以發(fā)現(xiàn)仿真過的時(shí)間內(nèi)同樣有仿真結(jié)果,如圖5所示。
圖5 QuestaSim仿真波形
完整源碼
setfilename[glob*_compile.do] setcontent[open$filenamer+] setrow0 while{![eof$content]}{ incrrow gets$contentline setlist($row)$line } close$content setfilename2"compile.do"; setcontent[open$filename2w+] for{seti1}{$i<=?$row}?{incr?i}?{ ????if?{![string?match?"quit?-force"?$list($i)]}?{ ????????puts?$content?$list($i) ????}???? }; close?$content set?filename?compile.do do?$filename set?filename?[glob?*_simulate.do] do?$filename log?-r?/* restart?–force run?1ms
審核編輯:劉清
-
仿真器
+關(guān)注
關(guān)注
14文章
1037瀏覽量
85389 -
TCL
+關(guān)注
關(guān)注
11文章
1783瀏覽量
89947 -
Vivado
+關(guān)注
關(guān)注
19文章
835瀏覽量
68749 -
MODELSIM仿真
+關(guān)注
關(guān)注
0文章
15瀏覽量
7517
原文標(biāo)題:[源碼]Vivado調(diào)用Questa Sim仿真小技巧
文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
在仿真執(zhí)行自定義custom指令時(shí),只能執(zhí)行軟件程序中所調(diào)用第一條是為什么?
基于linux系統(tǒng)實(shí)現(xiàn)的vivado調(diào)用VCS仿真教程

基于saber仿真中一些問題的處理方法
VCS獨(dú)立仿真Vivado IP核的一些方法總結(jié)
使用Vivado仿真器進(jìn)行混合語言仿真的一些要點(diǎn)
Vivado仿真器進(jìn)行混合語言仿真的一些要點(diǎn)
使用VCS仿真Vivado IP核時(shí)遇到的問題及解決方案
關(guān)于Vivado Non-project,我們應(yīng)知道的一些問題
Questa Sim不支持-novopt問題

Vivado調(diào)用第三方仿真軟件查看波形的過程中存在的一些問題
使用Vivado調(diào)用questasim仿真報(bào)錯(cuò)的原因及其解決辦法
Vivado調(diào)用Modelsim仿真

評(píng)論