ModelSim-Altera版本仿真流程


ModelSim-Altera版本仿真流程

1、建立ModelSim-Altera工作環境

1.1版本說明

ModelSim-Altera(OEM)version 6.4a

QuartusII version 9.0

該ModelSim版本支持所有QuartusII支持的Altera器件。

1.2要自動從Quartus II運行EDA設計輸入、綜合、仿真或者時序分析工具,您必須指定第三方EDA工具的可執行文件位置,通過單擊Tools菜單上的Options供然后點擊EDA Tool Options選項。

2、用ModelSim-Altera建立工程

2.1 如果要執行時序仿真,需要產生Verilog(.vo)或者VHDL(.vho)輸出文件。

a. 選擇EDA Tool Settings

b. 用QuartusII編譯設計文件

注:如果已經編譯過設計,要重新產生.vo、.vho和.sdo(標准延遲輸出文件)的話,只需要運行Start EDA Netlist Writter即可。同時也可以用於產生.vcd文件。

如果要執行功耗估算,確保在Simulator Settings下的Settings對話框選擇合適的參數。

2.2 啟動Modelsim軟件,選擇工程目錄:File—>Change Directory.

    注:如果要執行功能仿真,工程目錄就是包含設計文件的目錄;

    如果要進行時序仿真,工程目錄務必設在包含.vo、.vho和.sdo的目錄下。

2.3 創建新的工作庫:

    a. File—>New—>Library,出現創建新庫的對話框

    b. 在Create選項下,選擇a new library and a logical mapping to it.

    c.在Library Name中輸入庫的名稱

    注:如果你想要脫離QuartusII獨立運行Modelsim,庫文件名必須是work如果是由QuartusII自動運行Modelsim,則庫的名稱被自動名為ModelSim_work,並且位於QuartusII的過程目錄下。

3、用ModelSim-Altera執行功能仿真

3.1 編譯Verilog或者VHDL文件和Test Bench文件(如果你使用testbench的話)

    a. Compile menu, 點擊Compile.

    b. 在Library列表下選擇work庫

    c. 選擇需要的Verilog或者VHDL文件

    注:如果選擇.vo、.vho文件作為功能仿真的話,必須在下面操作前進行編譯。

    d. 執行編譯

    e. 重復上面操作,編譯testbench文件

    f. 點擊done完成。

3.2 加載設計:

    a. 在Simulate菜單中,點擊Simulate.出現Simulate對話框

    b. 如果要仿真Verilog HDL設計文件,指定ModelSim預編譯庫

        i. 點擊Libraries標簽

        ii.在Search Libraries (-L)中,點擊Add選擇適當的庫

        iii. 點擊OK完成

    c. 在Name 列表中,點擊+展開work庫,選擇要仿真的頂層文件(一般是testbench)

    d. 點擊OK完成

3.3 在ModelSim中執行功能仿真

4、用ModelSim-Altera執行時序仿真

重要提示:強烈建議在進行RAM仿真時,將Time scale設置為飛秒ps級別!

4.1 編譯Verilog或者VHDL輸出文件和testbench文件,方法同功能仿真。

4.2 如果你的設計包含全局復位或者全局上電信號,並且還沒這么做,可以在Verilog或者VDHL輸出文件中建立這些信號。方法如下:

對於Verilog,在仿真前,將下列代碼加到testbench文件中:

reg <device-wide reset>;
reg <device power up>;
initial
begin
<device power up> = 0;
#<time> <device power up> = 1;

對於VHDL,在仿真前運行下列命令:

force /<design>/<entity>/<device power up> 0 0 ns 
force <design>/<entity>/<device power up> 1 <time> ns 
force /<design>/<entity>/<device-wide reset> 1 0 ns 

注: <device-wide reset> 是全局復位信號名稱,<device power up> 是全局上電信號,<time> 是一個時間值,它介於0和實際開始仿真的時間之間。

4.3 在Simulate菜單中,點擊Simulate.出現Simulate對話框

4.4 如果是仿真verilog語言,點擊verilog標簽,在Pulse Options中的Error Limit 和Rejection Limit中填入0.

4.5 如果仿真的是VHDL設計,指定.sdo標准延遲文件:

    a. 點擊SDF標簽,點擊ADD

    b. 在Add SDF Entry對話框中,點擊Browse,出現Select SDF File對話框

    c. 選擇標准延遲輸出.sdo文件

    注:如果使用的是test bench文件作為設計的激勵,那么在Apply to region 框中,從頂層設計文件開始,將路徑指向test bench中的instance

4.6 如果仿真的是verilog設計,要指定預編譯庫(ModelSim precompiled libraries

    a. 點擊Library標簽,在Search Libraries (-L)中,點擊Add.

    b. 指定目錄\<ModelSim-Altera install directory>\altera\verilog\<device family>\,點擊OK;

4.7 點擊Design標簽,在Name列表中,點擊+展開work庫,並選擇標准延時輸出文件對應的設計實體(entity),點擊OK完成。

4.8 如果要仿真高速電路(包括HSSI, LVDS, PLLs等),點擊Others標簽,在Other vsim options中輸入+transport_int_delays +transport_path_delays,點擊OK完成;

4.9 要直接從ModelSim中生成.vcd(Value Change Dump File)文件用於QuartusII中PowerPlay Power Analyzer分析,可以在ModelSim中輸入命令:

source <test bench or design instance name>_dump_all_vcd_nodes.tcl

4.10 Tcl腳本文件指示ModelSim-Altera監視Tcl腳本文件中的輸出信號並在仿真過程中寫入到.vcd文件中去。

4.11 在ModelSim-Altera進行時序仿真。

重要提示:強烈建議在進行RAM仿真時,將Time scale設置為飛秒ps級別!

個人使用心得

★RTL仿真

    這個仿真過程最簡單,不需要綜合,也不需要經過布局布線,只需要編寫好設計文件,和testbench文件直接導入ModelSim里邊編譯仿真即可。同時對於Verilog語言,需要選擇相應的RTL仿真庫。主要的RTL仿真庫如下表:

★綜合后仿真(功能仿真)

注:此過程需要在綜合后才能進行。需要的是Verilog輸出文件,而不是設計文件!同時對於仿真庫而言,用到的是門級仿真庫,而不是RTL仿真庫(也就是器件對應系列的仿真庫)。常用的門級與編譯仿真庫如下:

1、步驟:選目錄—>建庫—>編譯—>仿真

1.1    目錄選在QuartusII產生的EDA網表目錄下,路徑:<工程目錄>\simulation\modelsim,這樣做是為了方便文件的調用;

1.2    在此目錄下建庫。為了獨立於QuartusII工作,庫名必須是work;

1.3    編譯文件。一般來說都使用testbench,因此可以使用(.vo+.vt)結合的方法進行仿真,.vo是verilog輸出文件,.vt是verilog測試文件;若是VHDL則分別是.vho和.vht。編譯順序最好是先輸出文件(.vo、.vho文件)再是測試文件(.vt、vht文件)

1.4    開始仿真。如果用到相關的LPM、MF或者IP等,要添加相應的預編譯仿真庫。在Library—>Search Libraries(-L)中點擊Add添加。然后在Design—>Name—>work下選中仿真頂層文件,有testbench的話一般就選testbench。

2、關於QuartusII自動生成的testbench文件

    QuartusII自動生成的testbench文件中包含一個全局寄存器eachvec,其包含一個語句@eachvec,記得把它注釋掉,否則可能會因為它沒有觸發而導致仿真失敗。

☆在QuartusII中自動生成仿真網表:Assignments->EDA Tool Settings

☆在QuartusII中自動生成TsetBench:Processing->Start->Start Test Bench Template Write

★門級仿真(時序仿真)

    ModelSim的時序仿真跟功能仿真基本一致,但要注意下面幾點區別:

    1、如果包含全局復位或者全局上電信號,需做相應處理,具體看前文;

2、對Verilog程序進行仿真時,則無需添加.sdo文件,Verilog是通過添加預編譯庫自動調用.sdo文件的。同時,在Pulse Options中的Error LimitRejection Limit中輸入0;

3、對VHDL文件進行時序仿真時,必須要添加.sdo文件,同時在Apply to region中將其指定到testbench中對應的模塊;

關於testbench

在testbench中,每個連續的信號最好是用獨立的always語句來描述,否則可能發生沖突導致仿真出錯。

使用QuartusII自動運行ModelSim仿真

首先注意幾點:

1、切記用Modelsim仿真時路徑不能包含漢字!!!

2、要再次仿真時,確保前一次仿真的ModelSim程序已經退出,否則會報類似下面的錯誤!

3、產生上面錯誤的原因也可能是使用了不支持RTL級仿真的IP核,但是不影響時序仿真。

4、用波形文件產生testbench文件時,最好只有輸入信息,不要包含任何輸出信息;

下面是操作方法:

1、配置NativeLink

1.1 進入EDA Tool Settings,在EDA Tool Settings中選擇Simulation,如圖:

1.2 在simulation右側對話框配置如下(Verilog):

☆如果要編譯后自動運行門級仿真,可以勾選Run gate-level simulation after complilation.

1.3 編譯testbench文件

在NativeLink settings中點擊Test Benches,出現對話框中點擊New,出現如下對話框:

Testbench name中可以隨便填一個名字,是指定當前Testbench文件的別名;

Top level module in test bench中填的是Testbench中要仿真的頂層模塊;

Design instance name in test bench:填上Testbench中頂層模塊對源程序的實例化名。

在Test bench files攔中添加對應的Testbench文件,點擊Add添加,再點擊OK完成配置。

2、運行仿真

如果要手動進行仿真,也可以在QuartusII中調用Modelsim,方法如下:

其中,RTL Simulation是寄存器傳輸級仿真,它是理想化的仿真,不包含任何延時信息,通常用作功能檢驗,也稱作前仿真或功能仿真;

Gate-Level Simulation是門級仿真,通常也稱為后仿真或時序仿真,它包含邏輯電路、布局布線等延時信息,是對真實電路情況的仿真。要仿真門級仿真,需要在Fitter之后進行。

3、產生Testbench

從QuartusII中產生Testbench,有兩種方法:

(1)從波形文件導出,方法如下:

打開波形仿真文件,編輯輸入信息,

點擊Flie—>Export,直接導出即可。

(2)也可以利用QuartusII產生Testbench模板,再自行輸入測試信息。


摘自文檔:

 About Usingthe ModelSim Software with the Quartus II Software

                                                                                                          Author: Kerwin. Xie


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM