這裡我們使用一個波形發生器作為例子,來說明如何使用Modelsim對Quartus II生成的IP Core和相應的HDL文件進行功能仿真和時序仿真。這個例子裡面使用到了由Quartus II生成的一個片上ROM存儲單元。這種存儲單元和RAM一樣,都是基本的FPGA片上存儲單元,在以後的設計裡面會經常使用到。
本文引用地址:http://www.eepw.com.cn/article/201612/328598.htm功能仿真
(1)在Quartus II中設置第三方仿真工具,選擇「Assignments-Settings-EDA Tool Settings-Simulation」,選擇「ModelSim-Verilog」。如圖1所示。
圖1 EDA工具設置
(2)編譯工程。編譯帶有IP Core的工程文件。
(3)編譯完成後會在工程目錄下生成「simulation-modelsim」的目錄,如圖2所示。其中包含了3個文件:「.vo」是仿真網表文件,可以用來代替設計文件;「.xrf」是Quartus編譯生成的信息文件;「.sdo」是工程延時信息。
圖2 編譯生成文件(4)加入仿真庫文件。
仿真庫的路徑為「C:\altera\quartus50\eda\sim_lib」,包含了如下3個仿真庫文件。
· 220model.v:帶有用戶原語類型的Quartus自帶的IP核的庫文件。
· altera_mf.v:Quartus自帶的IP核的庫文件。
· cyclone_atoms.v:相應系列的器件庫。
在本例中需要添加altera_mf.v,cyclone_atoms.v兩個庫文件。
(5)將測試文件粘貼到剛才生成的目錄中,如圖3所示。
圖3 添加測試文件
(7)打開modelsim。
(8)創建工程並添加源文件,如圖4所示。
圖4 為工程添加源文件(9)編譯工程。結合庫文件一起進行編譯、如圖5和6所示。
圖5 全部編譯前
圖6 全部編譯後
(10)修改wave.vo文件。將文件中的延時信息注釋掉,即:
//initial $sdf_annotate("WAVE_v.sdo");
(11)重新編譯wave.vo文件。
時序仿真
(1)將功能仿真第(10)步中對wave.vo文件做的注釋改回來,重新進行編譯。
(2)重新打開開始仿真對話框,選擇頂層模塊。
(3)選擇「SDF」選項卡。
(4)加入「.sdo」文件,將兩個SDF Options都選中。
(5)和功能仿真一樣,為波形窗口添加信號,開始進行仿真。
(6)通過波形圖,查看時序仿真的延時。