Quartus II和Modelsim的聯合模擬
原文:http://www.cnblogs.com/Jezze/archive/2012/09/14/2684333.html
這篇文章不需要在modelsim中建庫、對映、建工程等一些繁瑣的步驟,直接使用modelsim中的預設work庫。使用quartus+modelsim聯合模擬。
首先,根據上一篇文章,建立一個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可以自己定,下面兩個的內容根據test bench檔案中的內容而定。
比如說我用verilog寫的test bench如下:
那麼我下面兩個的名字就為分別為 Counter_tb和counter 如下圖:
如果是用VHDL寫的test bench,如下圖
那麼我們下面兩個的內容就是ADC_vhd_tst和i1,如同下圖
做到上一部可以編寫程式,然後編譯,接著執行RTL simulation,這個時候modelsim會自己啟動,然後自己編譯,接著在work library中會有兩個單元,其中一個是testbench生成的,我們模擬的話是用這個。然後新增波形什麼的就可以模擬了。
執行時序模擬的話單擊quartus上的gate-level simulation按鈕就可以了。
接著最關鍵的問題來了,如果我們修改了VHDL程式或者testbench,怎麼在modelsim中更新,我在網上找了很多教程,發現只做到上一步就結束了,在modelsim中更新的話只有關掉modelsim,在quartus中重新進行RTL simulation,顯然這樣很麻煩,直到我看到這篇文章http://www.cnblogs.com/emouse/archive/2012/07/08/2581223.html,這邊文章最後第7步完全可以不用做,我講一下我的做法。
當執行RTL simulation的時候,modelsim會自己啟動,且開始編譯,這個是時候實際上它有個命令被輸入了,你可以在transcripe中按向上的箭頭,會發現有個do ****.do 的命令,你可以在simlation資料夾中找到這個do檔案,如果你進行RTL模擬的話,會有****rtl****.do檔案,亦然,如果進行gate-level
模擬的話,就有*******gate****.do 檔案
這個時候執行do指令的話,幾秒鐘就執行完畢了,modelsim中也更新了。
當然modelsim中也可以不用test bench模擬,可以敲force指令生成波形,具體找資料吧。
在test bench中,輸入訊號都要初始化,否則會顯示‘X’任意狀態,且不能全都放在一個process中初始化,不然在別的process中對其操作也會呈現‘X’,最好要使用之前初始化一下就可以了.
好像RTL模擬修改了VHLD檔案後不需要編譯,直接使用do命令就可以更新模擬結果,門級模擬則需要編譯一下,再使用do命令才會更新