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_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
[-l
[-w] [-log
[-smartmodel_setup] [-verbose]
compxlib -cfg
compxlib -info
compxlib -f
compxlib -help
compxlib -help
l-s
-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 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
-l
-l
-l verilog// 为Verilog语言编译仿真库;
-l vhdl// 为 VHDL语言编译仿真库;
-l all// 为Verilog和VHDL两种语言编译仿真库;
l-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
该选项指明编译后的仿真库存储的目录路径。缺省情况下,compxlib命令将仿真库编译到$XILINX/language/target_simulator目录下。在上面的例子中,我们将仿真库编译到了D:\EDASoft\Modeltech_6.1a\xilinx_lib目录下,用户需要根据实际情况修改。当然也可以不使用该选项,而是编译到缺省目录下。
l-w
可以使用这个选项覆盖预编译的仿真库,缺省情况下不会覆盖预编译的仿真库。
l-log
可以使用这个选项来产生自己的编译日志文件。如果不使用该选项,则compxlib命令会自动产生一个日志文件,这个文件存放于运行compxlib命令的目录,文件名为compxlib.log。
l-p
该选项用来指定仿真器可执行文件存在的路径。缺省情况下,compxlib命令自动从$PATH或%PATH%环境变量中搜索仿真器可执行文件存在的路径。如果$PATH或%PATH%环境变量中没有指定仿真器可执行文件存在的路径,则需要使用此选项指定。
l-smartmodel_setup
该选项为SWIFT接口更新设置文件。
l-verbose
该选项使compxlib命令执行的时候能够打印更多的消息。
l-cfg
使用该选项可以产生具有缺省设置的配置文件。缺省情况下,如果在当前的目录中没有compxlib.cfg文件,则compxlib命令会产生一个。
l-info
该选项用于打印预编译库的信息,
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
使用该选项可以使compxlib命令从文件中读取compxlib命令的选项和参数。
l-help
使用该选项可以将compxlib命令的帮助打印到标准输出设备上。
l-help
该选项可以打印扩展帮助信息。我们可以使用compxlib -help list命令来获得
至此,compxlib命令的用法便介绍完了,读者在使用该命令的时候,应充分利用compxlib -help命令和compxlib -help