1. 程式人生 > >quartusii 使用ModelSim do檔案實現模擬(Verilog)

quartusii 使用ModelSim do檔案實現模擬(Verilog)

QuartusII從9.1之後的版本都已經取消了內部自帶的模擬器,都需要藉助第三方模擬軟體比如Modelsim才能實現模擬。一般在進行程式碼編寫的時候,如果結合功能模擬,可以很快的驗證程式碼實現的邏輯是否滿足要求。所以熟練使用Modelsim也是邏輯工程師必須掌握的一個技能。由於Modelsim可以支援命令列的方式,通過建立do檔案,可以整合多個可執行的命令。那麼對於前期一邊編寫程式碼,一邊進行功能模擬,使用do檔案是可以明顯提高工作的效率。下面以Modelsim SE版本為例,通過以下幾個步驟與大家一起分享:

1.在當前QII工程下新建一個modelsim資料夾,可以將相關的模擬檔案放在這個目錄下


2.建立一個simlib.do的檔案,用於編譯QuartusII軟體提供的相關模擬庫檔案。do檔案的建立可以在開啟modelsim之後進行建立。simlib.do內容如下:


set LIBPATH c:/altera/11.0/quartus/eda/sim_lib/ (設定QII軟體相關模擬庫檔案的位置)


vlib sim_lib  
vmap sim_lib sim_lib (將QII提供的模擬庫檔案對映到名為sim_lib的庫中)


vlog -work sim_lib $LIBPATH/altera_mf.v
vlog -work sim_lib $LIBPATH/altera_primitives.v
vlog -work sim_lib $LIBPATH/sgate.v
vlog -work sim_lib $LIBPATH/arriaii_atoms.v
vlog -work sim_lib $LIBPATH/arriaii_hssi_atoms.v
vlog -work sim_lib $LIBPATH/220model.v (編譯需要使用的QII模擬庫檔案,一般來說如果不呼叫任何的IPCore,是不需要編譯以上的檔案。如果使用到IPCore,那麼可以在IPCore設定的EDA標籤欄下看到相關需要使用的模擬庫檔名稱)


3.建立一個sim.do的檔案,用於編譯當前工程下邏輯設計原始檔,IPCore呼叫檔案,以及tesetbench。sim.do檔案如下:


vlib work
vmap work work (將工程相關原始檔案對映到一個名為work的庫)

vlog +acc -work work -incr -f run.f (工程相關原始檔案列表都已經存入名為run.f的檔案中,對run.f檔案中提到的原始檔案進行編譯)

vsim -novopt  -L sim_lib -l run_modelsim.log  +transport_int_delays +transport_path_delays work.tb_gxb_top (開始進行模擬,建議加入novopt引數,保證可以看到所有模擬結果。將開始模擬之後Modelsim的列印資訊存入名為modelsim.log的日誌檔案。兩個“+”之後引數主要實現用於LVDS、SERDES高速介面的模擬,建議保留這兩個引數。tb_gxb_top為tesstbench module的名稱)



4.建立一個run.f檔案,這個檔案無論是名稱還是副檔名都是隨意建立的,沒有任何的要求。只要保證步驟3中實現vlog的時候可以找到對應的檔案。run.f內容如下:


../gxb_rst_logic.v (子模組原始檔,"../"表示相對路徑。由於run.f檔案放在步驟1建立的modelsim目錄下,而此原始檔是放置於當前工程目錄下)
../gxb_top.v (top頂層原始檔)
tb_gxb_top.v (testbench檔案,放置在modelsim目錄下,即為當前目錄)
../gxb_3g125.v (IPCore生成的.v檔案)
../gxb_3g125_reconf.v (IPCore生成的.v檔案)



5.建立一個wave.do檔案,用於執行模擬結束之後在wave視窗觀察相關感興趣的波形。wave.do內容如下:


quit -sim  (退出當前模擬)
do sim.do (執行sim.do檔案)
add wave sim:/tb_gxb_top/u1_gxb_top/* (需要觀察的波形新增到wave視窗)
radix -hex (所有訊號顯示為16進位制)
run 10us (執行10us)



6.以上模擬所需的檔案就全部建立完成。在Modelsim中改變當前目錄到步驟1中的modelsim目錄下,由於建立模擬庫檔案只需要執行一次,那麼可以在Modelsim下直接執行do simlib.do命令


7.執行do sim.do檔案,進行編譯和模擬。也可以直接執行do wave.do檔案,直接進入wave視窗進行波形觀察


8.如果對當前模擬結果不滿意,需要再次更改程式碼。那麼再一次進行模擬是,就可以直接執行do wave.do檔案


當然,modelsim進行模擬有多種方法,包括直接通過Nativelink功能後臺執行modelsim,或者在modelsim下通過圖形化介面進行模擬。個人覺得這種方式一勞永逸,過程可控,而且可以讓大家瞭解哪些情況下需要使用QII自帶的模擬庫檔案,加深對QII軟體的瞭解。多謝!