新聞中心

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

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

作者: 時(shí)間:2008-10-17 來(lái)源: 收藏

  生成文件:(Xilinx/Altera 同)

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

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



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

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


圖 1:直接在工程中對(duì) ip核加 testbench 仿真時(shí)出錯(cuò)


圖 2:新建工程單獨(dú)對(duì) ip核仿真

  2.在 modelsim中仿真 ip 核

  a.在 modelsim中編譯庫(kù)(Xiliinx)

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

  b. 在 modelsim中加載已編譯的庫(kù)

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

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

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

圖 3:編譯xilinx 庫(kù) 
 

圖 4:加入庫(kù)進(jìn)行核仿真

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

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

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

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

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

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

  b.直接在 ISE 中編譯庫(kù)

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

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


圖附 2:ISE中編譯庫(kù)
  

圖附 3:ISE中編譯庫(kù)后自動(dòng)在 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 綜合完之后將會(huì)自動(dòng)調(diào)用 modelsim仿真了。同時(shí)要注意,在“More Setting”中“command/macro file”應(yīng)選為“None”,否則當(dāng)你使用別的 testbench 時(shí),調(diào)用將會(huì)出錯(cuò)。
 
  bb.在 Quartus 中自動(dòng)編譯庫(kù):  尚未發(fā)現(xiàn)有此方法,暫時(shí)只能由用戶(hù)自己編譯。
 
  附 B:Xilinx/Altera 庫(kù)文件

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

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

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

 



關(guān)鍵詞: IP核

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉