當前位置:首頁 » 編程軟體 » modelsim腳本模擬

modelsim腳本模擬

發布時間: 2022-02-10 17:44:51

1. modelsim編譯後模擬不通過

你編寫的程序里應該有個子程序吧?? mux??
你調用了mux這個子程序。。。但是工程里沒有這個文件。。。。

2. modelsim模擬

我用你的程序模擬出來了,正確的,有波形啊.
我想你是不是應該把testbench也就是testsim.v和sim.v一起編譯,然後在Library你的編譯後的兩個文件一起選中然後右鍵選擇simulate,再在Sim標簽裡面把testsim右鍵選擇add to wave,最後run all就OK了,如果還不行QQ上聯系吧..我演示給你看= =|||(因為我不是二級用戶..所以沒有辦法上傳圖片)

3. 如何用Modelsim模擬

step1:在qurtus改變編譯選項:
assignments->EDA tool setting:選擇verilog還是vhdl。

step2:編譯。你會在你的工程所在目錄 看到一個simulation的目錄,這裡面有你生成的網表文件和標准延時文件。

step3:在目錄:\quartus\eda\sim_lib找到你選用器件對應的庫文件,將庫文件和網表文件以及延時文件和testbench文件放在同一目錄,在modelsim里進行編譯庫文件、網表文件以及bench文件。

step4:編譯成功後,然後進行load,在load design的時候,需要制定延時文件的路徑,以及延時文件作用的區域,延時文件的左右區域就是testbench裡面調用頂層文件取的名字。

step5:打開signal窗口(view->signal)和wave窗口(view->signal),將你希望模擬的信號添加進去。

Step:模擬。。。

利用ModelSim SE6.0C實現時序模擬!!!
1) 打開一個工程文件。
2) 打開Settings設置欄,選擇EDA Tools Settings下的Simulation欄。在右邊出現的設置欄中將「Tool name」的下拉菜單選擇「ModelSim(Verilog)」(如果工程用VHDL語言實現,則可以選擇「ModelSim(VHDL)」;如果ModelSim使用的是for Altera的專用版本,則可以選擇「ModelSim-Altera(Verilog)」或「ModelSim-Altera(VHDL)」)。
另外在設置欄中還有其他的核選框。
如果選中「Maintain hierarchy」,則表示在做時序模擬時就能看到像在功能模擬的工程文件層次結構,可以找到定義的內部信號。因為在做後仿時,源文件中的信號名稱已經沒有了,被映射為軟體綜合後自己生成的信號名,觀察起來很不方便。這個設置與ISE里綜合右鍵屬性的Keep Hierarchy選擇YES的功能是一樣的。
如果選中「Generate netlist for functional simulation only」,則表示只能做功能模擬。
3) 點擊 「Start Compilation」按鈕編譯工程,完成之後在當前的工程目錄下可以看到一個名為「Simulation」的新文件夾,下面的「ModelSim」文件夾下包括模擬需要的.vo網表文件和包含延遲信息的.sdo文件。
4) 打開ModelSim軟體(或者在Quartus下「Settings->EDA Tools Setting->Simulation」出現的設置欄中選中「Run this tool automatically after compilation」,直接從Quartus下調用ModelSim軟體),可以在當前工程目錄下新建一個Project。在Project標簽欄內點擊右鍵,出現在快捷菜單中選擇「Add to Project->Existing File…」。加入當前工程目錄的「\Simulation\ModelSim\」路徑下的.vo文件、TestBench文件和對應當前工程所選擇器件的網表文件。
比如:當前工程選擇的器件是Cyclone系列,Quartus安裝目錄在「C:\altera」路徑下。因此需要在「C:\altera\quartus50\eda\sim_lib」路徑下找到「cyclone_atom.v」的網表文件導入到ModelSim下的Project。如果是其他器件亦是如此,只要在此目錄下找到對應有「_atom」後綴的.v文件。當然整個大前提是ModelSim SE版本已經加入了Alterta的模擬庫,不過ModelSim-Altera版本就不會存在這樣的問題。

5) 在出現的Project標簽欄的快捷菜單中選擇「Add to Project->Simulation Configuration」,會出現如上圖所示的名為「Simulation1」的模擬配置。右鍵點擊選擇「Properties」,彈出的「Simulation Properties」對話框中有幾個標簽欄。
在「Design」標簽欄內需要選擇模擬的文件,也就是TestBench文件。

在「SDF」標簽欄內需要選擇包含延遲信息的文件,即Quartus下生成的.sdo文件。這里建議將.sdo文件與ModelSim的工程文件(.mpf文件)放在同一個目錄下,不然ModelSim會報類似無法讀取.sdo文件的錯誤。當加入.sdo文件時,需要在如下圖所示的「Apply to Region」的編輯框內填寫延遲信息文件作用的區域。
舉個例子來說明:
TestBench文件中定義了測試文件的Mole名稱為ConvEncdTestBnch。
TestBench文件中調用待測頂層文件的實例名為top_encode_1。(top_encode top_encode_1(clk, rst, dataIn, serialData, parData);這是TestBench文件中調用頂層的語句)
所以在作用區域內需要填寫「/ConvEncdTestBnch/top_encode_1」。

6) 右鍵點擊名為「Simulation1」的模擬配置,快捷菜單中選擇「Execute」命令,執行模擬。
7) 指定延時文件sdo 路徑時,特別注意「域」的指定,否則用戶會在timing 模擬中報load error 「can』t find instance file」. 指定的域可以從sim標簽頁查看sim 的top 層,或要模擬的對象。另外,時序模擬時,一定要記住要把頂層top.v 用 top.vo 替換。同時要確保預編譯的庫中每個庫的名字必需遵循altera的要求,比如:cylcone 的device 庫必需命名為cycclone, maxii 的device命名為maxii, flex10Ke 和acex1K 都命名為flex10Ke,詳細查看文檔附件。Simulation.pdf
8) 提供一個testbench 的模板。

利用ModelSim SE6.0C實現功能模擬
功能模擬流程比較簡單,一般不會出現什麼問題,這里不再多述。

4. 怎樣用modelsim做後模擬

建一個工程 file -> new -> project... 此時會彈出一個Creat Project對話框,輸入一個工程名,選擇保存路徑 (不要包含中文),其他默認就行了;
2.點OK後會彈出一個Add items to the Project,裡面有幾個可選項,應該很容易明白;
3.添加好文件後,點close把Add items to the Project對話框關閉,這時在左側的workspace的project窗口裡可以看到剛才添加的文件,雙擊可以打開這些文件進行編輯,編輯好後保存;
4.右擊剛才編輯好的文件compile -> compile select(或根據自己需要選其他項),如果沒有錯誤,則在底部的命令窗口可以看到編譯成功的消息(呈綠色),否則會出現出錯的消息(呈紅色),雙擊它會彈出一個更具體的窗口提示你出錯的地方.
5.修改所有錯誤直到編譯成功.這時可以在菜單欄選擇Simulation -> Start simulatio... 這時會彈出一個Start simulatio的對話框,在Design的標簽下你會看到有很多庫,展開work庫會看到剛才編譯成功的文件(如果有多個文件的話選擇一個你想模擬的,比如測試程序,這時底部的OK會由剛才的不可用變成可用的),然後把Opitimization選項下的Enable opitimization前復選取消(這樣可以保證過會兒所有的輸入輸出都可以看到,你可以試試不取消這項有何區別),然後點OK就行了.
6.選擇view -> Objects就可以看到你想模擬的各個量,選中它們並右擊Add to wave -> Selected signals,這時就會彈出一個波形模擬窗口.如果你的測試文件寫得沒問題的話就可以看到模擬波形,你也可以觀察底部的命令窗口察看相關信息.
7.如果沒寫測試文件的話,在波形模擬窗口右擊相關信號,選擇force...設置想模擬的值或clock...把該量設置為時鍾,然後點工具欄上的Run或Simulation菜單下的Run.

5. 如何使用bat文件和do文件生成不依賴路徑的modelsim模擬

一.DO文件的簡介和工作方式

DO文件是一次執行多條命令的腳本。這個腳本可以像帶有相關參數的一系列ModelSim命令一樣簡單,或者是帶有變數,執行條件等等的Tcl程序。可在GUI里或系統命令提示符後執行Do文件。
由於TCL腳本語言內容很多,本人是剛學不久,菜鳥一個。但是針對我們這門課程的話,有些基本常用的語法還是值得提一下的,方便大家一起學習交流,如果以下內容有什麼寫錯了,希望大家提出並批評,互相進步。
首先,我們如何建立DO文件呢?
方法挺多,一種是可以打開Modelsim,執行File/New/Source/Do命令,進入Do文件編輯方式,在編輯窗口輸入模擬批處理文件的代碼,以.do為擴展名保存文件。當然也可以在windows系統中新建一個記事本,在「另存為」的時候寫上.do的後綴名,也是一種方法。 調用方式是在Modelsim的Transcript窗口中使用指令:do filename.do,完成對設計的自動化模擬。

下面簡單講講模擬的步驟。首先我們要對一個設計進行模擬呢,我們一般需要進行以下幾個步驟:
①創建一個工程和工程庫;
②載入設計文件(包括你編寫好的testbench);
③編譯源文件;
④運行模擬,並查看結果;
⑤最後進行工程調試。
而do文件,就是把上述的步驟①---④用tcl腳本語言來編寫出來,讓Modelsim來運行該do文件宏命令,並自動執行模擬的步驟。這種好處也許在小設計中沒怎麼表現,但是如果在一個大的工程中,常常需要對一個設計單元進行反復的調試和模擬,但是模擬時的設置是不變的,這時如果使用了do文件,把模擬中使用到的命令都保存下來了,就可以節省大量的人力,提高了工作效率。

下面將對照一個簡單的例子counter.do,講一下我們常用的一些基本指令。
PS: do文件的注釋是由#開始的,但不可以在代碼行後面添加,只能另起一行。
正確的是:
vlib work
#新建一個work庫
錯誤的是:
vlib work #新建一個work庫

編寫名為counter.do的文件,其內容為下:
vlib work (對應模擬步驟①:新建work庫。該命令的作用是在當前目錄下建立一個work目錄,請注意不要直接在windows中新建一個work的文件夾,因為用操作系統建立的work文件夾並沒有ModelSim SE自動生成的_info文件。)
vmap work work(對應模擬步驟①:該命令的作用是將目前的邏輯工作庫work和實際工作庫work映射對應。也可以直接用指令「vmap work」表示將work庫映射到當前工作目錄下。)
vlog counter.v counter_tb.v (對應模擬步驟②③:編譯counter.v和counter_tb.v文件,默認編譯到work庫下。該命令的作用是編譯這些文件,要注意的是文件可以單獨分開編譯,但是一定要先編譯被調用的文件。假如是VHDL文件,只需要把指令vlog換成vcom即可。)
vsim work.counter_tb -t 1ns (對應模擬步驟④:模擬work庫中名為counter_tb的模塊,最小時間單位為1ns。)
add wave/counter_tb/ * (該命令的作用是將testbench文件camera_tb.v中模塊camera_tb下所有的信號變數加到波形文件中去,注意在「*」前要加空格。這時候你也可以看到wave文件被打開。當然也可以單個信號的添加,例如添加時鍾:add wave clk 等等。)
run 2000 (該命令的作用是運行2000個單位時間的模擬。也可以用run –all命令來一直模擬下去。)
這時候就可以在wave窗口文件中看到你的模擬結果。當然也可以觀察其它窗口的結果,用view *命令顯示 。view *命令可以觀察包括signals、wave、dataflow等窗口文件,也可以分別打開。例如用view signals來觀察信號變數。
以上就是do文件的一些基本TCL腳本語言的使用,寫得比較簡單,但是其實復雜的也就是在添加信號線那裡add wave 有比較多的參數設置而已,主要的指導模擬流程的指令還是這幾條。
編寫好DO文件之後,在Modelsim中,將工作目錄切換到counter.v、counter_tb.v和counter.do三個文件所在目錄下,然後在Transcript窗口中的命令行輸入 do counter.do即可。切換工作目錄的方法如下圖1,點擊Change Directory:

圖1

PS: 如果在模擬的時候要修改.do文件,需要現在modelsim里運行quit -sim,退出模擬,然後修改.do文件,再保存,然後再重新執行do filename.do指令即可。
小技巧Tips:
為了區分模擬波形窗口中的各種信號線,需要信號波形作設置,如不同信號線的顏色、顯示基數、顯示方式等要有區別,這時就需要在模擬波形窗口單獨對每一個信號線手動進行設置,這對於不斷修改源代碼然後再不斷地進行模擬來說,非常麻煩。
這里,我說一下有個簡單的自動生成這類個性化設置DO文件的方法。首先,我們需要先進行一次模擬,在波形窗口的時候先手動對需要的信號線進行一定的設置,如下圖2所示:

圖2

然後,點擊wave窗口左上角的save圖標,會出現一個保存DO文件的窗口,如圖3所示:

圖3
它的路徑Pathname表示Modelsim自動在當前的默認目錄下新建了一個wave.do的DO文件,我們可以自己修改保存的路徑和DO文件名。
接下來我們來看一下上面保存的wave.do文件,打開如下圖4所示:

圖4

由wave.do文件中,可以見到我們定義的那些不同顏色、不同顯示方式所用的TCL腳本語言,如add wave -color Yellow /freq_meter_tb/i1/freq_data表示讓該freq_data信號顯示黃色…如add wave -noupdate -radix decimal /freq_meter_tb/i1/div_coef 表示讓div_coef信號用十進制decimal來顯示…其他的信息可以對照自己的波形設置一一對應上,其他依次類推。
細心的同學會發現這個DO文件根本不完整,基本都是一些add wave,即是對每個信號的各種設置的TCL代碼而已。不錯,因為它缺少了我們之前所講的模擬步驟①②③④,那麼我們可以利用上面已學過的TCL語言來補完整它。
如在前面加上一下語句,使這個DO文件包括了模擬過程的完整指令,包括新建工作庫、編譯源文件、模擬testbench文件等:
vlib work
vmap work work
vlog freq_meter.v
vlog freq_meter_direct.v
vlog freq_meter_tb.v
新的DO文件如下所示:

圖5
至此,該DO文件才能用來實現較完整的自動化模擬。

二.互動式命令
通過在主窗口的命令窗口輸入命令來實現,具有更好的調試和交互功能,提供多種指令,既可以是單步指令,也可以構成批處理文件,用來控制編輯、編譯和模擬流程;
常見互動式命令如下:
1.force-repeat指令
指令格式:force 開始時間 開始電平值,結束電平值 忽略時間(即0電平保持時間) -repeat 周期
force clk 0 0,1 30 -repeat 100 表示強制clk從0時間單元開始,起始電平為0,結束電平為1,0電平保持時間為30個默認時間單元,周期為100個默認時間單元,占空比為70%。
指令功能:每隔一段的周期重復一定的force命令,用來產生時鍾信號,也可用來產生周期的輸入信號,如01010101,00110011等。
2.force指令
指令格式:force item_name value time,value time;item_name為埠信號或內部信號,支持通配符號,但只能匹配一個;value不能默認,time,可選項,支持時間單元;
force din 16#40900000 從當前時刻起給din賦值16進制40900000;
force bus 16#F @100ns 在100ns時刻給bus賦值16進制F;
force clr 1 100 經歷100個默認時間單元延遲後為clr賦值1;
force clr 1,0 100 表示clr賦值1後,經歷100個默認時間單元延遲後為clr賦值為0;
3.run指令
指令格式:run timesteps time_unit,timesteps時間步長,time_unit時間單元,可以是fs、ps、ns、us、ms、sec;
指令功能:運行(模擬)並指定時間及單元;
run 100, 表示運行100個默認時間單元;
run 2500ns, 表示運行2500ns;
run -all, 表示運行全過程;
run -continue, 表示繼續運行
4.force-cancel指令
指令格式:force-cancel period
指令功能:執行period周期時間後取消force命令;
force clk 0 0,1 30 -repeat 60-cancel 1000,表示強制clk從0時間單元開始,直到1000個時間單元結束;
5.view指令
指令格式:view 窗口名
指令功能:打開Modelsim的窗口
view souce,打開源代碼窗口;
view wave,打開波形窗口;
view list,打開列表窗口;
view varibles,打開變數窗口;
view signals,打開信號窗口;
view all,打開所有窗口;

6. 用MODELSIM進行模擬時,如何調用和自己模塊相關的模擬庫

把你可能用到的器件庫用modelsim編譯好了,以後用到的時候就很方便了

7. 如何用Modelsim進行後模擬

step1:在qurtus改變編譯選項:
assignments->EDA tool setting:選擇verilog還是vhdl。

step2:編譯。你會在你的工程所在目錄 看到一個simulation的目錄,這裡面有你生成的網表文件和標准延時文件。

step3:在目錄:\quartus\eda\sim_lib找到你選用器件對應的庫文件,將庫文件和網表文件以及延時文件和testbench文件放在同一目錄,在modelsim里進行編譯庫文件、網表文件以及bench文件。

step4:編譯成功後,然後進行load,在load design的時候,需要制定延時文件的路徑,以及延時文件作用的區域,延時文件的左右區域就是testbench裡面調用頂層文件取的名字。

step5:打開signal窗口(view->signal)和wave窗口(view->signal),將你希望模擬的信號添加進去。

Step:模擬。。。

利用ModelSim SE6.0C實現時序模擬!!!
1) 打開一個工程文件。
2) 打開Settings設置欄,選擇EDA Tools Settings下的Simulation欄。在右邊出現的設置欄中將「Tool name」的下拉菜單選擇「ModelSim(Verilog)」(如果工程用VHDL語言實現,則可以選擇「ModelSim(VHDL)」;如果ModelSim使用的是for Altera的專用版本,則可以選擇「ModelSim-Altera(Verilog)」或「ModelSim-Altera(VHDL)」)。
另外在設置欄中還有其他的核選框。
如果選中「Maintain hierarchy」,則表示在做時序模擬時就能看到像在功能模擬的工程文件層次結構,可以找到定義的內部信號。因為在做後仿時,源文件中的信號名稱已經沒有了,被映射為軟體綜合後自己生成的信號名,觀察起來很不方便。這個設置與ISE里綜合右鍵屬性的Keep Hierarchy選擇YES的功能是一樣的。
如果選中「Generate netlist for functional simulation only」,則表示只能做功能模擬。
3) 點擊 「Start Compilation」按鈕編譯工程,完成之後在當前的工程目錄下可以看到一個名為「Simulation」的新文件夾,下面的「ModelSim」文件夾下包括模擬需要的.vo網表文件和包含延遲信息的.sdo文件。
4) 打開ModelSim軟體(或者在Quartus下「Settings->EDA Tools Setting->Simulation」出現的設置欄中選中「Run this tool automatically after compilation」,直接從Quartus下調用ModelSim軟體),可以在當前工程目錄下新建一個Project。在Project標簽欄內點擊右鍵,出現在快捷菜單中選擇「Add to Project->Existing File…」。加入當前工程目錄的「\Simulation\ModelSim\」路徑下的.vo文件、TestBench文件和對應當前工程所選擇器件的網表文件。
比如:當前工程選擇的器件是Cyclone系列,Quartus安裝目錄在「C:\altera」路徑下。因此需要在「C:\altera\quartus50\eda\sim_lib」路徑下找到「cyclone_atom.v」的網表文件導入到ModelSim下的Project。如果是其他器件亦是如此,只要在此目錄下找到對應有「_atom」後綴的.v文件。當然整個大前提是ModelSim SE版本已經加入了Alterta的模擬庫,不過ModelSim-Altera版本就不會存在這樣的問題。

5) 在出現的Project標簽欄的快捷菜單中選擇「Add to Project->Simulation Configuration」,會出現如上圖所示的名為「Simulation1」的模擬配置。右鍵點擊選擇「Properties」,彈出的「Simulation Properties」對話框中有幾個標簽欄。
在「Design」標簽欄內需要選擇模擬的文件,也就是TestBench文件。

在「SDF」標簽欄內需要選擇包含延遲信息的文件,即Quartus下生成的.sdo文件。這里建議將.sdo文件與ModelSim的工程文件(.mpf文件)放在同一個目錄下,不然ModelSim會報類似無法讀取.sdo文件的錯誤。當加入.sdo文件時,需要在如下圖所示的「Apply to Region」的編輯框內填寫延遲信息文件作用的區域。
舉個例子來說明:
TestBench文件中定義了測試文件的Mole名稱為ConvEncdTestBnch。
TestBench文件中調用待測頂層文件的實例名為top_encode_1。(top_encode top_encode_1(clk, rst, dataIn, serialData, parData);這是TestBench文件中調用頂層的語句)
所以在作用區域內需要填寫「/ConvEncdTestBnch/top_encode_1」。

6) 右鍵點擊名為「Simulation1」的模擬配置,快捷菜單中選擇「Execute」命令,執行模擬。
7) 指定延時文件sdo 路徑時,特別注意「域」的指定,否則用戶會在timing 模擬中報load error 「can』t find instance file」. 指定的域可以從sim標簽頁查看sim 的top 層,或要模擬的對象。另外,時序模擬時,一定要記住要把頂層top.v 用 top.vo 替換。同時要確保預編譯的庫中每個庫的名字必需遵循altera的要求,比如:cylcone 的device 庫必需命名為cycclone, maxii 的device命名為maxii, flex10Ke 和acex1K 都命名為flex10Ke,詳細查看文檔附件。Simulation.pdf
8) 提供一個testbench 的模板。

利用ModelSim SE6.0C實現功能模擬
功能模擬流程比較簡單,一般不會出現什麼問題,這里不再多述。

8. modelsim模擬代碼問題

這段代碼是我的一個教程上的,不會有錯的,可能是載入的時候出錯了,或者是你的版本和我教程中的版本不一致吧。或者你再檢查一下被測模塊。

9. modelsim 模擬時,怎麼修改程序語句,不加入延遲信息(如圖所示)

模擬一般有3個步驟:
1.RTL前模擬,也就是常說的功能模擬,測試對象是你的RTL源代碼;
2.綜合後網表的功能模擬,就是綜合工具把代碼映射為網表之後對網表進行測試,要對網表進行功能測試,你的第一個處理是對了的,就是把$sdf_annotate這個函數注釋掉,第二步處理是在模擬時不要指定延時文件,modelsim的圖形界面是怎麼操作的我還真不大清楚,我都是跑腳本,舉個例子,我可以敲如下命令:vsim -L [對應具體FPGA器件的模擬庫] [testbench的名字];
3.時序模擬,這個好理解了,就是網表加上延時文件進行模擬,這個和第2種模擬在命令上的區別是:vsim -L [對應具體FPGA器件的模擬庫] [testbench的名字] /UUT=[所指定的延時文件],其中「/UUT=[所指定的延時文件]」意思就是將指定的延時文件應用到UUT(也就是你的待測試的模塊)這一層級,等同於於在圖形界面中指定延時文件這一操作。

10. 請教modelsim 腳本模擬 不優化的

$readmemb
可以直接讀取二進制文件

熱點內容
買釣箱要哪些配置就夠了 發布:2025-01-11 20:24:23 瀏覽:509
防腳本取色 發布:2025-01-11 20:15:17 瀏覽:638
為什麼莊周活動安卓沒開始 發布:2025-01-11 20:14:23 瀏覽:460
我的世界花雨庭國際服伺服器地址 發布:2025-01-11 20:13:27 瀏覽:719
c數據導入資料庫 發布:2025-01-11 20:07:55 瀏覽:828
可以上傳片 發布:2025-01-11 20:07:55 瀏覽:792
outlook伺服器郵件怎麼找 發布:2025-01-11 20:06:12 瀏覽:95
javac編譯jar 發布:2025-01-11 20:06:11 瀏覽:484
電腦伺服器小功率 發布:2025-01-11 20:02:02 瀏覽:832
唱吧上傳自己的歌 發布:2025-01-11 19:57:35 瀏覽:661