ModelSim是Mentor Graphics出品的一款VHDL、Verilog、SystemC、SystemVerilog以及混合語言設計的模擬和驗證工具。在ModelSim中,所有的設計(包括用戶設計以及EDA工具預先提供的設計)必須編譯成一個或多個模擬庫。ModelSim的模擬庫實際是一個目錄,它可以看作是存儲經過編譯的設計單元的“倉庫”。ModelSim的模擬庫可以分成兩類:(1) 本地工作庫;(2) 資源庫。本地工作庫隨著我們設計的更新和編譯發生變化,可以說,它是動態的。而資源庫通常是靜態的並且通常作為我們設計的標準部件來使用,這些資源庫可以由我們自己產生,也可由其他的設計團隊或第三方廠商提供。
Xilinx是業界領先的FPGA廠商,它的集成開發環境ISE也是業界最受歡迎的開發環境之一。在我們使用Xilinix的FPGA進行設計的時候經常會使用Xilinx預先提供的元件或IP。在設計的功能模擬時,ModelSim需要知道這些元件或IP的模擬模型。而且即使我們的設計沒有直接使用Xilinx預先提供的元件或IP,在進行時序模擬的時候,ModelSim仍然需要知道Xilinx FPGA內部元件的模擬模型。因此,根據ModelSim模擬庫的策略,我們可以將Xilinx提供的HDL模擬模型編譯成一個資源庫,這樣我們在作不同的設計的時候,就可以直接使用相同的資源庫。
Xilinx提供的HDL模擬模型位於ISE安裝路徑下的verilog\src目錄(對應Verilog模擬模型)和vhdl\src目錄(對應VHDL模擬模型)下。在編譯Xilinx模擬模型的時候,我們可以使用多種方法,例如直接使用ModelSim的vlib、vmap、vlog等命令進行編譯、使用ISE集成開發環境進行編譯等。本文描述的方法是採用ISE 7.1i自帶的compxlib命令在命令行下進行編譯,這種方法不需要我們手動干預而且最為簡單。
在使用compxlib命令之前,我們首先需要將modelsim.ini文件的只讀屬性去掉,使其變為可寫的。這樣做的目的是使compxlib命令能夠修改modelsim.ini文件以便在庫的邏輯名字和庫的實際存放路徑之間建立一個永久的映射關係。modelsim.ini文件位於ModelSim安裝路徑下,預設情況下它是只讀的。modelsim.ini文件存放了ModelSim的基本配置,關於它的具體用法本文不再詳述,我們會在後續的文章中講述modelsim.ini文件的使用,讀者也可以直接參考ModelSim的使用指南。
在介紹compxlib命令的詳細語法之前,我們先通過一個實際使用的例子對compxlib命令的用法做一個簡要的說明。在這個例子中,我們的使用的模擬器是ModelSim SE,並且為Xilinx的所有器件族產生Verilog和VHDL模擬庫。在Windows的DOS命令行中,輸入如下的命令(其中的“D:\EDASoft\Modeltech_
compxlib -s mti_se -arch all -l all -dir D:\EDASoft\Modeltech_
當這一命令執行完成後,Xilinx器件的ModelSim SE模擬庫便生成了,編譯后的模擬庫位於“D:\EDASoft\Modeltech_
在對compxlib命令有了初步的認識后,我們來詳細介紹compxlib命令的語法。
compxlib命令的語法如下:
compxlib -s <simulator> -arch <arch>
[-l <language>] [-lib <library>] [-dir <output_dir>]
[-w] [-log <log_file>] [-p <dir_path>]
[-smartmodel_setup] [-verbose]
compxlib -cfg
compxlib -info <dir_path>
compxlib -f <cmd_file>
compxlib -help
compxlib -help <value>
l -s <simulator>
-s <simulator> 選項用於指明為哪一種模擬器編譯模擬庫,用戶必須為compxlib命令指定該選項。-s選項的有效值如下:
-s mti_se // 為ModelSim™ SE編譯模擬庫;
-s mti_pe // 為ModelSim™ PE編譯模擬庫;
-s ncsim // 為NCSIM™ 編譯模擬庫;
-s vcs_mx // 為VCS-MX™ 編譯模擬庫;
-s vcs_mxi // 為VCS-MXi™ 編譯模擬庫;
對ModelSim模擬器來說,我們可以使用-s mti_se或-s mti_pe,例如在上面的例子中我們使用了-s mti_se選項。
l -arch <arch>
-arch <arch>選項用於指明為哪一個器件族編譯模擬庫,用戶必須為compxlib命令指定該選項。-arch選項的有效值如下:
-arch all // 為所有支持的器件族編譯模擬庫;
-arch virtex // 為Virtex器件族編譯模擬庫;
-arch virtexe // 為VirtexE器件族編譯模擬庫;
-arch virtex2 // 為Virtex-II器件族編譯模擬庫;
-arch virtex2p // 為Virtex-II Pro器件族編譯模擬庫;
-arch virtex4 // 為Virtex-4器件族編譯模擬庫;
-arch spartan2 // 為Spartan-II器件族編譯模擬庫;
-arch spartan3 // 為Spartan-3器件族編譯模擬庫;
-arch spartan2e // 為Spartan-II E器件族編譯模擬庫;
-arch spartan3e // 為Spartan-3 E器件族編譯模擬庫;
-arch fpgacore // 為Xilinx提供的IP Core編譯模擬庫;
-arch cpld // 為Xilinx的CPLD編譯模擬庫;
-arch cr2s // 為Xilinx的CoolRunner-II CPLD編譯模擬庫;
-arch xpla3 // 為Xilinx的CoolRunner XPLA3 CPLD編譯模擬庫;
-arch xc9500 // 為Xilinx的XC9500 CPLD編譯模擬庫;
-arch xc9500xl // 為Xilinx的XC9500XL CPLD編譯模擬庫;
-arch xc9500xv // 為Xilinx的XC9500XV CPLD編譯模擬庫;
l -l <language>
-l <language>選項用於指明為哪一種HDL語言編譯模擬庫。
-l <language>選項是可選的,在預設情況下,compxlib命令根據-s <simulator> 選項檢測語言類型。如果目標模擬器既支持Verilog也支持VHDL,則compxlib命令將-l選項設置成all,也就是說為兩種語言產生模擬庫。否則,compxlib命令根據目標模擬器支持的語言類型選擇相應的-l選項。如果使用了-l <language>選項,則compxlib命令根據-l選項來選擇為哪種語言編譯模擬庫。-l選項的有效值如下:
-l verilog // 為Verilog語言編譯模擬庫;
-l vhdl // 為 VHDL語言編譯模擬庫;
-l all // 為Verilog和VHDL兩種語言編譯模擬庫;
l -lib <library>
-lib <library>選項用於選擇編譯哪一個HDL模擬庫。-lib <library>選項是可選的,如果未指定該選項,則compxlib命令自動編譯所有的模擬庫。另外,如果指定多個模擬庫,則“-lib”的各個有效值之間以空格分割。-lib選項的有效值如下:
-lib unisim // 該模擬庫用於Xilinx器件的功能模擬;
-lib simprim // 該模擬庫用於Xilinx器件的時序模擬;
-lib uni9000 // 該模擬庫用於Xilinx CPLD器件的功能模擬;
-lib xilinxcorelib // 該模擬庫用於Xilinx IP Core的功能模擬;
-lib smartmodel // 該模擬庫用於SmartModel Library™的功能模擬和時序模擬;
-lib coolrunner // 該模擬庫用於Xilinx CoolRunner™器件的功能模擬;
-lib abel // 該模擬庫用於功能模擬;
在上面的例子中,我們沒有使用該選項,也就是說自動編譯所有的模擬庫。
l -dir <output_dir>
該選項指明編譯后的模擬庫存儲的目錄路徑。預設情況下,compxlib命令將模擬庫編譯到$XILINX/language/target_simulator目錄下。在上面的例子中,我們將模擬庫編譯到了D:\EDASoft\Modeltech_6.1a\xilinx_lib目錄下,用戶需要根據實際情況修改。當然也可以不使用該選項,而是編譯到預設目錄下。
l -w
可以使用這個選項覆蓋預編譯的模擬庫,預設情況下不會覆蓋預編譯的模擬庫。
l -log <log_file>
可以使用這個選項來產生自己的編譯日誌文件。如果不使用該選項,則compxlib命令會自動產生一個日誌文件,這個文件存放於運行compxlib命令的目錄,文件名為compxlib.log。
l -p <dir_path>
該選項用來指定模擬器可執行文件存在的路徑。預設情況下,compxlib命令自動從$PATH或%PATH%環境變數中搜索模擬器可執行文件存在的路徑。如果$PATH或%PATH%環境變數中沒有指定模擬器可執行文件存在的路徑,則需要使用此選項指定。
l -smartmodel_setup
該選項為SWIFT介面更新設置文件。
l -verbose
該選項使compxlib命令執行的時候能夠列印更多的消息。
l -cfg
使用該選項可以產生具有預設設置的配置文件。預設情況下,如果在當前的目錄中沒有compxlib.cfg文件,則compxlib命令會產生一個。
l -info <dir_path>
該選項用於列印預編譯庫的信息,<dir_path>用於指定預編譯庫存在的路徑。例如:如果執行compxlib –info D:\EDASoft\Modeltech_6.1a\xilinx_lib命令,則在屏幕上顯示如下的信息:
Release
Copyright (c) 1995-2005 Xilinx, Inc. All rights reserved.
Pre-Compiled Library Info :-
---------------------------------------------------------------
Library =: unisim
Mapped Name =: unisim
Language Name =: vhdl
Version =: 7.1i
Library Path =: D:\EDASoft\Modeltech_
Compiled By =: mti_se
Simulator Used =: Model Technology ModelSim SE vlog
Compiled On =: Wed Aug 03 19:22:51 2005
Errors =: 0
Warnings =: 0
Library Log =: D:\EDASoft\Modeltech_
---------------------------------------------------------------
…
l -f <cmd_file>
使用該選項可以使compxlib命令從文件中讀取compxlib命令的選項和參數。
l -help
使用該選項可以將compxlib命令的幫助列印到標準輸出設備上。
l -help <value>
該選項可以列印擴展幫助信息。我們可以使用compxlib -help list命令來獲得<value>的可用值。
至此,compxlib命令的用法便介紹完了,讀者在使用該命令的時候,應充分利用compxlib -help命令和compxlib -help <value>命令來獲得幫助信息。另外需要注意的是,本文的介紹是基於Xilinx ISE 7.1i所作的介紹,如果您正在使用其它版本,該命令的具體參數可能會有所不同,此時您可以使用compxlib -help命令獲得特定版本的使用幫助。
[admin via 研發互助社區 ] 使用compxlib命令編譯Xilinx的ModelSim模擬庫已經有5731次圍觀
http://cocdig.com/docs/show-post-43443.html