使用compxlib命令編譯Xilinx的ModelSim模擬庫

admin @ 2014-03-26 , reply:0

ModelSimMentor Graphics出品的一款VHDLVerilogSystemCSystemVerilog以及混合語言設計的模擬和驗證工具。在ModelSim中,所有的設計(包括用戶設計以及EDA工具預先提供的設計)必須編譯成一個或多個模擬庫。ModelSim的模擬庫實際是一個目錄,它可以看作是存儲經過編譯的設計單元的“倉庫”。ModelSim的模擬庫可以分成兩類:(1) 本地工作庫;(2) 資源庫。本地工作庫隨著我們設計的更新和編譯發生變化,可以說,它是動態的。而資源庫通常是靜態的並且通常作為我們設計的標準部件來使用,這些資源庫可以由我們自己產生,也可由其他的設計團隊或第三方廠商提供。

Xilinx是業界領先的FPGA廠商,它的集成開發環境ISE也是業界最受歡迎的開發環境之一。在我們使用XilinixFPGA進行設計的時候經常會使用Xilinx預先提供的元件或IP。在設計的功能模擬時,ModelSim需要知道這些元件或IP的模擬模型。而且即使我們的設計沒有直接使用Xilinx預先提供的元件或IP,在進行時序模擬的時候,ModelSim仍然需要知道Xilinx FPGA內部元件的模擬模型。因此,根據ModelSim模擬庫的策略,我們可以將Xilinx提供的HDL模擬模型編譯成一個資源庫,這樣我們在作不同的設計的時候,就可以直接使用相同的資源庫。

Xilinx提供的HDL模擬模型位於ISE安裝路徑下的verilog\src目錄(對應Verilog模擬模型)和vhdl\src目錄(對應VHDL模擬模型)下。在編譯Xilinx模擬模型的時候,我們可以使用多種方法,例如直接使用ModelSimvlibvmapvlog等命令進行編譯、使用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的所有器件族產生VerilogVHDL模擬庫。在WindowsDOS命令行中,輸入如下的命令(其中的“D:\EDASoft\Modeltech_6.1a\xilinx_lib”使用您自己的實際路徑代替)。

 

compxlib -s mti_se -arch all -l all -dir D:\EDASoft\Modeltech_6.1a\xilinx_lib -w

 

當這一命令執行完成後,Xilinx器件的ModelSim SE模擬庫便生成了,編譯后的模擬庫位於“D:\EDASoft\Modeltech_6.1a\xilinx_lib”目錄下。而且這個命令自動修改了modelsim.ini文件,將模擬庫的邏輯名字與它的實際存放路徑作了永久的映射。現在運行ModelSim,如果已經自動打開了以前的工程則將這個工程關閉,我們可以看到,所有的Xilinx模擬庫都出現了!

 

在對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           // XilinxCPLD編譯模擬庫;

-arch cr2s           // XilinxCoolRunner-II CPLD編譯模擬庫;

-arch xpla3          // XilinxCoolRunner XPLA3 CPLD編譯模擬庫;

-arch xc9500        // XilinxXC9500 CPLD編譯模擬庫;

-arch xc9500xl       // XilinxXC9500XL CPLD編譯模擬庫;

-arch xc9500xv      // XilinxXC9500XV 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       // VerilogVHDL兩種語言編譯模擬庫;

 

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 7.1.02i - COMPXLIB H.40

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_6.1a\xilinx_lib

     Compiled By     =: mti_se

     Simulator Used  =: Model Technology ModelSim SE vlog 6.1a Compiler 2005.07 Jul 19 2005

     Compiled On     =: Wed Aug 03 19:22:51 2005

     Errors          =: 0

     Warnings        =: 0

     Library Log     =: D:\EDASoft\Modeltech_6.1a\xilinx_lib\unisim\cxl_XilinxCoreLib.log

   ---------------------------------------------------------------

      

 

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模擬庫已經有1458次圍觀

http://cocdig.com/docs/show-post-43443.html