關於modelsim仿真時出現 No objects found matching 『/*』 問題在Modelsim6.2系列版本中仿真時,點擊start simulateion後,出現Objects空白的問題,導致執行 add wave al l時出現「# (vish-4014) No objects found matching 『/top_tb/*』。「的報錯選項。儘管輸入run後,可以運行仿真,但卻無法察看wave窗口的波形。
這是優化的問題。
解決方法:1. 點擊工具欄中的「simulate」按鈕,調出start smulation窗口,把窗口中最下邊optimization欄中的Enable optimization項目前的鉤鉤去掉,然後選擇仿真的文件,點擊OK,就一切正常了,能看到objects了。
Quatus ii聯合modelsim仿真無法產生波形或波形一直為Hiz狀態原因分析
最近用用modelsim仿真Quatus寫的testbench,遇到了波形無法產生的問題,一直卡在這裡很久都沒找到原因,經過一番分析和各種亂試,終於找到原因了。
在設置編譯的test bench的時候,一定要把頂層模塊設置為xx_vlg_tst(),就是啟動test bench template writer的時候,軟體給你自動產生的那個test bench的模塊名。因為在仿真的時候,這個模塊才是真正的頂層模塊,是它實例化測試模塊,並給與測試模塊激勵信號的。設置方法如下:
點擊主界面菜單欄的Assignment——》Settings,出現Settings對話框,然後在Category欄選擇EDA Tool Settings——》Simulation,出現以下界面,
點擊3右邊的Test Benches按鍵,出現Test Benches對話框,然後點擊該對話框右邊的New按鍵,出現了Edit Test Bench Settings對話框,如下,
在Test Bench name一欄中,輸入test bench文件的名字,就是在simulation/modelsim文件夾中那個後綴為.vt的文件的名稱,而Top level module in test bench一欄則要輸入test bench文件中那個模塊的名稱,這個是自動產生的,名字都是xx_vlg_tst,xx為test bench文件的名稱,記住,這裡一定要設置好頂層模塊是xx_vlg_tst,因為默認情況下它是和test bench name是一樣的,如果這樣設置,是無法產生波形的。
之前一直用ise聯合modelsim仿真,ise裡面就沒有這些繁瑣的步驟,在寫test bench的時候,軟體自動把test bench設置為了頂層模塊,如圖:
仿真的時候只需要點擊vtf_xx.v文件,然後雙擊Simulate Behavioral Model就會調用modelsim,仿真test bench文件了。
在編寫verilog模塊後,很重要的一部分就是對所編寫的模塊進行仿真。而在仿真過程中,很重要的一部分就是觀察波形。這裡所談的技巧其實是對於我個人而言,可能大部分人都已經知道。但還是記錄下來,算是對我自己的提醒吧。
現在想想還是覺得好笑,以前每次打開波形窗口的時候,都是點擊下圖的Simulate Behavioral Model.每次修改了代碼,都是關掉原來的波形窗口,然後再重新點擊打開,麻煩程度不言而喻(好吧,當初因為程序簡單,其實還不覺得很麻煩。)
現在明白了,對於這種情況,肯定是會有簡單的操作的,否則這用戶體驗也太差了。
當然,第一次仿真打開波形窗口時,還是老方法,點擊上圖的Simulate Behavioral Model。添加內部信號以及修改數值進位後結果如下圖(這裡採用的是一個FIFO讀寫程序,程序不是這裡需要在意的問題,我們只關心軟體的操作)。
下面我們通過修改din[3:0]的初始值來反映這個過程,由上圖可知,din[3:0]的初始值為6.接下來我把代碼中din[3:0]的初始值改為0後重新觀察波形,那該如何操作呢?千萬不要像我以前那麼傻的關掉現有窗口然後重新仿真打開了。這樣我們又要重新添加內部信號以及修改數值顯示了。
方便的步驟應該是,首先,將該波形保存,這部很簡單就不貼圖了,保存的其實就是你對該窗口的各種配置,哪怕以後你重新打開軟體,也可以通過打開之前保存的波形配置來查看仿真波形,而不用重新配置了。
保存後,修改完代碼(這裡我把din[3:0]的初始值改為0,另外,代碼要記得保存,保存後代碼才能生效),然後點擊波形窗口的re-launch(如果之前沒進行保存操作的話,點擊re-launch後軟體也會提示你保存的)。就可以看到仿真波形發生了變化,din[3:0]的初始值由之前的6變成了0.
另外,關於re-launch邊上的那幾個按鈕,也都是很有用處的,尤其仿真時間設置的,甚至有的時候還會因為這些設置的問題導致老是不能出現預期結果,這些操作很簡單,就不一一解釋了,大家稍微用用就知道了。
上面提到的是採用ISE自帶的ISim進行仿真,但大多數時候我們還是採用modelsim來進行仿真,因為它功能更強大,速度也更快。但兩者操作其實是有很多類似的地方的,不過通過ise啟動modelsim再修改程序再仿真的操作還是挺麻煩的(可能還有更簡便的方法我不知道吧,知道可以通過腳本的方法,把命令編成程序,然後自動執行操作,但此方法還不太會。)。還是以上面的程序為例。用ise啟動modelsim,設置好參數後如圖
可以看到din初始值為6。當我們修改代碼並保存後,在modelsim中要重新編譯,點擊compile,出現下面的對話框:
由於修改的是FIFO.v文件,因此重新編譯該文件就好。
之後來到波形窗口,點擊restart,
再點擊OK,此時波形窗口無信號
此時只需要再點擊一下run就好了
此時可以看到din的初始值已經變成0了。
其實這個過程還是有點麻煩,這就需要通過腳本操作了。或者我們不要通過ISE調用modelsim,而是直接使用modelsim,這樣會方便並且快速許多。
打開APP閱讀更多精彩內容聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴