原创 ModelSim 编译 Xilinx库

2011-3-22 16:05 1631 6 6 分类: 工程师职场

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仿真库都出现了!

 

ModelSim库截图

 

在对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命令获得特定版本的使用帮助

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
6
关闭 站长推荐上一条 /3 下一条