ug模擬氣體流動_adams chassis_Quartus II和Modelsim的聯(lián)合仿真(詳細)
本文關鍵詞:聯(lián)合仿真,由筆耕文化傳播整理發(fā)布。
Quartus II和Modelsim的聯(lián)合仿真(詳細)
這篇文章不需要在modelsim中建庫、映射、建工程等一些繁瑣的步驟,直接使用modelsim中的默認work庫。使用quartus+modelsim聯(lián)合仿真。
首先推薦一篇文章
首先,根據(jù)上一篇文章,建立一個testbench模板;
第一次用modelsim+quartus的時候需要在quartus中設置modelsim的路徑,quartus->tools->general->EDA tool options ,在右邊選擇modelsim的安裝路徑,如下圖:
然后在Quartus->setting->simulation中設置仿真工具(選擇modelsim),輸出netlist語言(選擇 VHDL or Verilog),然后在下面添加testbench;如下圖:
到edit test settings這個步驟的時候需要說明一下,其中test bench name可以自己定,下面兩個的內(nèi)容根據(jù)test bench文件中的內(nèi)容而定。
比如說我用verilog寫的test bench如下:
那么我下面兩個的名字就為分別為 Counter_tb和counter 如下圖:
如果是用VHDL寫的test bench,如下圖
那么我們下面兩個的內(nèi)容就是ADC_vhd_tst和i1,如同下圖
這樣設置了之后,就可以從quartus中直接進行RTL仿真和門極(時序)仿真了,,(上圖打勾就代表使用時序仿真);具體為什么要這么設置請看 如果不這么設置的話,可以進行RTL仿真,但是不能進行門級(時序)仿真,門級(時序)仿真的時候會報 Failed to find INSTANCE 錯誤。
做到上一部可以編寫程序,然后編譯,接著運行RTL simulation,這個時候modelsim會自己啟動,然后自己編譯,接著在work library中會有兩個單元,其中一個是testbench生成的,我們仿真的話是用這個。然后添加波形什么的就可以仿真了。
運行時序仿真的話單擊quartus上的gate-level simulation按鈕就可以了。
接著最關鍵的問題來了,如果我們修改了VHDL程序或者testbench,怎么在modelsim中更新,我在網(wǎng)上找了很多教程,發(fā)現(xiàn)只做到上一步就結束了,在modelsim中更新的話只有關掉modelsim,在quartus中重新進行RTL simulation,顯然這樣很麻煩,直到我看到這篇文章,這邊文章最后第7步完全可以不用做,我講一下我的做法。
當運行RTL simulation的時候,modelsim會自己啟動,且開始編譯,這個是時候實際上它有個命令被輸入了,你可以在transcripe中按向上的箭頭,會發(fā)現(xiàn)有個do ****.do 的命令,你可以在simlation文件夾中找到這個do文件,如果你進行RTL仿真的話,會有****rtl****.do文件,亦然,如果進行gate-level 仿真的話,就有*******gate****.do 文件,請注意區(qū)分。當你修改了程序之后要想在modelsim中更新,直接敲這個do *****.do命令就OK了,但是每次敲這個命令會把庫文件重新編譯,大大浪費了時間,所以你可以找到這個文件,打開,把上面一部分編譯庫文件的指令注釋掉,如下圖:
這個時候執(zhí)行do指令的話,幾秒鐘就執(zhí)行完畢了,modelsim中也更新了。
當然modelsim中也可以不用test bench仿真,可以敲force指令生成波形,具體找資料吧。
在test bench中,輸入信號都要初始化,否則會顯示‘X’任意狀態(tài),且不能全都放在一個process中初始化,不然在別的process中對其操作也會呈現(xiàn)‘X’,最好要使用之前初始化一下就可以了.
好像RTL仿真修改了VHLD文件后不需要編譯,直接使用do命令就可以更新仿真結果,門級仿真則需要編譯一下,再使用do命令才會更新
posted @
本文關鍵詞:聯(lián)合仿真,由筆耕文化傳播整理發(fā)布。
本文編號:64764
本文鏈接:http://sikaile.net/jianzhugongchenglunwen/64764.html