ModelSim是Mentor Graphics出品的一款VHDL、Verilog、SystemC、SystemVerilog以及混合语言设计的仿真和验证工具。在ModelSim中,所有的设计(包括用户设计以及EDA工具预先提供的设计)必须编译成一个或多个仿真库。[url=]ModelSim[/url]的仿真库实际是一个目录,它可以看作是存储经过编译的设计单元的“仓库”。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 <simulator> -arch <arch>
[-l <language>] [-lib <library>] [-dir <output_dir>]
[-w] [-log <log_file>] [-p <dir_path>]
[-smartmodel_setup] [[url=]-verbose[/url]]
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编译仿真库; |