新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 如何仿真IP核(建立modelsim仿真庫完整解析)

如何仿真IP核(建立modelsim仿真庫完整解析)

作者: 時間:2008-10-17 來源: 收藏

  生成文件:(Xilinx/Altera 同)

本文引用地址:http://butianyuan.cn/article/88780.htm

  生成器生成 ip 后有兩個文件對我們比較有用,假設(shè)生成了一個 asyn_fifo 的核,則asyn_fifo.veo 給出了例化該核方式(或者在 Edit->Language Template->COREGEN 中找到verilog/VHDL 的例化方式)。asyn_fifo.v 是該核的行為模型,主要調(diào)用了 xilinx 行為模型庫的模塊,仿真時該文件也要加入工程。(在 ISE中點中該核,在對應(yīng)的 processes 窗口中運行“ View Verilog Functional Model ”即可查看該 .v 文件)。如下圖所示。



  1. 在 ISE 集成環(huán)境中仿真

  IP 核應(yīng)該在新建的工程中進行仿真與例化;在原工程中可以例化使用,但好像不能直接對它加 testbench 后進行仿真。如下兩圖所示。


圖 1:直接在工程中對 ip核加 testbench 仿真時出錯


圖 2:新建工程單獨對 ip核仿真

  2.在 modelsim中仿真 ip 核

  a.在 modelsim中編譯庫(Xiliinx)

(1)在$Modeltech_6.0d/Xilinx_lib_tt下新建文件夾 Xilinx_lib($代表安裝盤符)
(2)打開 Modelsim->File->Change Diriectory,將路徑指向剛才新建的文件夾 Xilinx_lib,這樣 Xilinx 編譯的所有庫都將會在該文件夾下。
(3)編譯 Xilinx 庫。在$Xilinx->verilog->src 下有三個庫“simprims”,“unisims”和“xilinxcorelib”。在 modelsim 的 workpace 窗口 Library 屬性中點右鍵->new->library(或在File 菜單下 new->libary),輸入庫名(自定義)如 Xilinx_lib_tt,這樣在 workpace library 屬性下就可看到 Xilinx_lib_tt 了。
(4)modelsim 中選中 compile,在彈出的對話框中,library 選擇剛才新建的 xilinx_lib_tt,查找范圍為 xilinx 庫($Xilinx/verilog/src/),如 XilinxCoreLib,選中文件編譯即可。

  b. 在 modelsim中加載已編譯的庫

  當要在 modelsim 中仿真帶有 ip 核的設(shè)計時,需要加載對應(yīng)公司的庫才能仿真。仿真Xilinx 公司ip 核時需要在原工程文件中加入 ip 核的行為描述文件(<核名>.v)。

  如果工程文件直接包含在 xilinx“ XilinxCoreLib” library中,則可直接進行仿真。
如果工程文件開始默認包含在“work”library 中,則需要在 Simulation->Start Simulation->library 中添加已編譯的庫,如圖示。這樣就可以對 ip 核進行仿真了。
 
  aa.在 modelsim中編譯 Altera 的庫與 Xilinx方法一樣

  bb.在 modelsim中對 ip 核進行仿真,與 xilinx 一致;首先需要在 modelsim工程中加入設(shè)計文件,testbench 文件以及核的行為描述文件(<核名>.v);其次,自 File 菜單中更改庫路徑指向已編譯的 altera庫路徑(否則原先編譯的 altera 庫將變?yōu)椴豢捎?,unavailable),這時原先編譯的庫將變?yōu)榭捎茫缓笤?Simulation->Start Simulation->library中添加庫路徑(同Xilinx,圖4,圖附 3)。

圖 3:編譯xilinx 庫 
 

圖 4:加入庫進行核仿真

  使用 modelsim 進行仿真,相對在 ISE 或 Quartus 中直接調(diào)用 modelsim,至少有三個好處:

  1.速度快。仿真必然會不停的修改設(shè)計,每次修改設(shè)計后在 ISE 中需要重新綜合后才能調(diào)用 modelsim;而在 Quartus 中時間花費更多,它還要等布局布線完成了才能調(diào)用。這樣每次等待是件很痛苦的事。而直接在 modelsim 里面仿真,修改后只要重新編譯即可仿真,速度要快的多。不過這樣有一個壞處,那就是設(shè)計不一定是可綜合的。但只要我們編程時時刻遵循可綜合設(shè)計規(guī)則,培養(yǎng)良好的編程風(fēng)格,這個缺點影響可減到最低。

  2.調(diào)試方便。在 ISE/Quartus 中調(diào)用 modelsim仿真只能看到輸入輸出信 號,而對于設(shè)計的中間信號/變量,特別是IP核的內(nèi)部信號/變量無法觀測。而在modelsim中直接仿真可以觀測設(shè)計中出現(xiàn)的任何信號/變量無和 ip 核內(nèi)的任何信號/變量,這樣我們設(shè)計的數(shù)據(jù)流向就可以很清楚的表示出來,還可以檢測不同編程方式的處理效果,極大的方便了調(diào)試。

  3.修改參數(shù)方便。在 modelsim中仿真 ip 核時需要將該 ip 核的行為描述文件加入到工程中去。修改該行為描述文件中 ip 核的參數(shù)可以方便的更改 ip 核特性。

  附 A:在 ISE/Quartus中直接調(diào)用 modelsim。
 
  a.先安裝 ISE,再安裝 modelsim,則 modelsim會自動嵌入到 ISE 中去,如圖附 1。ISE集成環(huán)境下:Edit->Preferences->Integrated Tools可以設(shè)置常用的第三方仿真,綜合工具。

圖附 A1:ISE 中調(diào)用 modelsim

  b.直接在 ISE 中編譯庫

   除了可以用前面介紹的方法自己編譯ISE的庫外,還可以在ISE環(huán)境下自動編譯庫,編譯完成之后將會自動嵌入到 modelsim的 libarary中去,非常方便。

   編譯之前,首先把modelsim的屬性文件 modelsim.ini$Modeltech_6.0d/modelsim.ini)的“只讀”屬性去掉,否則每次都要重新編譯。然后在 ISE 環(huán)境下新建一個工程,選中芯片型號,在出現(xiàn)的 process 窗口中可以看到“Desin Entry Utilities”,展開它可以看到“Compile HDL Simulation Libraries”,雙擊它即可自動編譯 ISE 的庫(要確保 Process屬性窗口中“Target Simulator”正確設(shè)置為“Modelsim SE”,如圖附 2);編譯好的庫放在$Xilinx/Verilog/mti_se/ 下(在 modelsim中仿真 ip 核需添加庫時指向該路徑即可,如圖附 3)。


圖附 2:ISE中編譯庫
  

圖附 3:ISE中編譯庫后自動在 modelsim里加載

  aa.在 Quartus 中設(shè)置第三方工具

  在 Quartus 環(huán)境下:Assignment->EDA Tool Settings->….如圖附 3 所示,在“EDA Tool Settings”下拉框中選擇“Simulation”窗口,設(shè)置“Tool name”(如 Modelsim(verilog)),并選中下面的“Run this tool automatically after compliation”。這樣每次 Quartus 綜合完之后將會自動調(diào)用 modelsim仿真了。同時要注意,在“More Setting”中“command/macro file”應(yīng)選為“None”,否則當你使用別的 testbench 時,調(diào)用將會出錯。
 
  bb.在 Quartus 中自動編譯庫:  尚未發(fā)現(xiàn)有此方法,暫時只能由用戶自己編譯。
 
  附 B:Xilinx/Altera 庫文件

  a. 與 Xilinx 相關(guān)的庫有三個:

 ?。ň幾g路徑:$Xilinx/Verilog/src/(XilinxCoreLib, unisims,simprims),編譯時可改名)
-L 表示仿真時需要的庫文件。(下面的命名方式可以使 Modelsim對庫進行準確映射)

Xilinxcorelib_ver對應(yīng) Xilinx 提供的軟核的功能仿真庫;
Unisims_ver  對應(yīng)使用 ECS所做的原理圖的功能仿真庫;
Simprims_ver 對應(yīng)項目布局布線以后的時序仿真庫。
 
  b. 與 Altera 相關(guān)的庫暫時只用到一個(Altera 的用的還不熟哦^_^):
(編譯路徑:$Quartus50/eda/sim_lib)命名方式可以任意

 



關(guān)鍵詞: IP核

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉