ModelSim入門FPGA仿真基礎教程之三:時序仿真

正如前面第二講所述,時序仿真在實際應用中使用的並不多,但是爲了保持仿真系列文檔的完整性,我們還是把仿真的方法寫出來。

時序仿真就要比第二講的功能仿真步驟上要多一些,本講以目前的QuartusII的12.0SP2版本和Cyclone IV的EP4CE6F17C8爲例,講解下時序仿真的方法和步驟。

時序仿真需要的文件總共有以下幾種:

①綜合後生成的網表文件" * .vo “(假如在Setting裏面設置裏輸出語言爲VHDL的話,則生成的網表文件爲” * .vho")

②綜合後生成的具有工程延時信息的文件" * .sdo "(VHDL語言亦爲此)

③ Test Bench程序文件

④ Altera的元器件庫

大致的過程就是先在Quartus II中生成網表文件和時延文件,然後調用ModelSim進行仿真,具體的時序仿真步驟如下:

  1. 打開Quartus II軟件,新建工程,再新建文件counter8.v,把上一講中的counter8.v這個源文件複製到Quartus II的工程目錄中,並添加該文件到工程中。接着,選擇"Settings"→"EDA Tool Settings",選擇左欄的"Simulation",設置情況如圖1所示。

第一欄的"Tool name"選擇ModelSim-Altera

第二欄的"Format for output netlist"選擇自己熟悉的語言,VHDL或Verilog都可以,後面的"output directory"是選擇輸出的網表文件和延時信息文件的存放路徑,一般選擇默認即可,這樣的話,將來編譯成功後,會在Quartus II的工程文件夾(本例爲counter8這個文件夾)下面生成一個simulation/modelsim的文件夾,裏面存有將來要用到的.vo和.sdo這兩個文件。

再往下,看到有"More EDA Netlist WritterSettings…"按鈕,點擊後進入設置畫面,設置情況如圖2所示。注意的地方就是Generatenetlist for functional simulation這一項後面是處於OFF的關閉狀態,這樣才能生成我們所要的時序仿真文件。

在這裏插入圖片描述
圖1 simulation的設置

在這裏插入圖片描述
圖2 More EDA Netlist WritterSettings的設置

都設置好了以後,全部點擊"OK"後退出設置,在QII的編譯環境下執行全編譯。編譯中的情況如圖3所示:

在這裏插入圖片描述
圖3 編譯中的情況

注意:下面比我們平時進行的全編譯時多了一項"EDANetlist Writer",圖3的紅色箭頭指向的位置。

  1. 找到新建工程目錄所在的文件夾,在裏面找到simulation/modelsim這個文件夾,會發現文件夾內有10個文件,如圖4所示:
    在這裏插入圖片描述
    圖4 生成的10個文件

注意:counter8.vo和counter8_v.sdo就是時序仿真需要的兩個重要的網表文件,它們與counter8_8_1200mv_85c_slow.vo和counter8_8_1200mv_85c_v_slow.sdo只是命名不同而已,文件的內容其實是一樣的。後兩個是QuartusII目前新的網表文件的命名方法,文件名標示出了速度等級(-8)、內核電壓(1200mv)、溫度條件(85℃)以及時序模型(slow)。

之所以Altera還沒有取消舊的命名文件方法並讓QuartusII繼續生成這兩個網表文件,是因爲有TclScript文件是按照舊的命名方法寫的,需要兼容它們。

以下時序仿真以counter8.vo和counter8_v.sdo爲例,如果需要用fast時序模型做仿真,也是按照下面的方法進行,只是把vo和sdo文件換爲fast。

另外".xrf"和".sft"這兩個文件,是QuartusII編譯生成的一些相關的信息文件,時序仿真用不到。

  1. 打開ModelSim軟件,新建一個工程,如圖5所示:
    在這裏插入圖片描述
    圖5 新建工程並指定路徑

①接着把剛纔生成的counter8.vo和counter8_v.sdo兩個文件拷貝到現在個仿真工程的目錄下面。

②之後還要拷貝一個很重要的文件,到QuartusII的安裝目錄下: \quartus\eda\sim_lib,找到cycloneive_atoms.v這個文件,這個是Altera器件庫的庫文件,進行時序仿真就是基於這個庫文件的,把它也拷貝到仿真工程目錄。

注意:我們是以Cyclone IV的EP4CE6F17C8爲例的,所以這裏需要複製的就是cycloneive這個庫文件,如果是其它器件的話,需要再對應選擇。

③把test_counter8.v文件拷貝到這個仿真工程目錄下面。

④在QII安裝目錄的…altera\12.0\quartus\eda\fv_lib\verilog,把這裏面的dffeas.v和dffep.v文件拷貝到這個仿真工程目錄下面。

  1. 進行完上面的步驟後,返回到ModelSim這個軟件界面,會發現軟件還停留在剛纔新建工程,需要我們爲其工程添加文件的對話框,那我們就添加文件,把"counter8.vo"、“cycloneive_atoms.v”、“test_counter8.v”、"dffeas.v"和"dffep.v"這5個文件添加進去,如圖6所示:
    在這裏插入圖片描述
    圖6 添加的5個文件
    注意:此時不需要添加counter8.v這個文件了,.vo文件可以替代它。

  2. 之後關閉添加文件對話框,可以看見Project區域有了我們添加的5個文件了,在該區域點右鍵,"Compile"→"Compile All"執行全部編譯。

  3. 在Project區域點右鍵,"Add to Project"→"Simulation Configuration"添加一個仿真配置的設置,這時會直接彈出添加仿真配置對話框,這裏,我們要進行如下的設置:

①在"Design"選項卡下展開work前面的"+"號後點選test_counter8,這個就是Test Bench文件。如圖7所示:

在這裏插入圖片描述
圖7 Design選項卡的設置

②再切換到"SDF"選項卡,點擊"Add"添加".sdo"文件,點擊瀏覽後會直接出現這個".sdo"文件的,選擇即可,在下面的"Apply to Region"內輸入"U",這個就是我們的Test Bench程序中例化頂層文件的例化名字。如圖8所示:
在這裏插入圖片描述
圖8 SDF選項卡的設置

接着把下面的兩個SDF選項的複選框都選中。如圖9所示:

在這裏插入圖片描述
圖9 選中SDF選項的兩個複選框

點擊"OK"退出配置設置界面。配置好了以後的Project區域的內容如圖10所示:

在這裏插入圖片描述
圖10 Project區域的內容

  1. 雙擊Simulation執行仿真,後面的步驟和功能仿真一樣的了,不再贅述。仿真的波形圖如圖11所示:
    在這裏插入圖片描述
    圖11 時序仿真的波形圖
    從圖11中可以看到dout相對於主時鐘clk有明顯的延時,這個延時大小與當前使用的器件的時序模型有關。

在具體實踐過程中,可能還會遇到各種各樣的問題,ModelSim正常運行也依賴於仿真庫文件的齊備,所以碰到某些工程在仿真中遇到報錯的情況時,不妨檢查下ModelSim的提示信息,看看是否有仿真所必需的庫文件沒有添加進來。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章