| |
为什么要在modelsim中指定xilinx的仿真库呢,说的直白点,就是在xilinx ISE界面下,直接调用modelsim,实现modelsim和xilinx之间的联合仿真,这就省去了你在modelsim中建立库(或者工程)以及testbench等等,因为这些可以在xilinx ISE下进行了。
接下来言归正传,在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 // 为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 // 该仿真库用于功能仿真;
在上面的例子中,我们没有使用该选项,也就是说自动编译所有的仿真库。
接下来为实际操作,首先首先需要将modelsim.ini文件的只读属性去掉,使其变为可写的。这样做的目的是使compxlib命令能够修改modelsim.ini文件以便在库的逻辑名字和库的实际存放路径之间建立一个永久的映射关系。
然后单击“开始”->“运行”,输入cmd,进行doc界面。执行下面命令
compxlib -s mti_se -f all -l all -o D:\EDA\xilinx_libs -p D:\EDATool\Modeltech_6.0d\win32
其中D:\EDA\xilinx_libs,是你的想存放你的ISE程序的路径。
D:\EDATool\Modeltech_6.0d\win32,是你的modelsim的安装路径。
上面的命令输入完毕之后,它会自动完成相应的编译。我们不用打扰它……
由于你安装目录下的modelsim.ini是可读写的,所以这里你就不需要做什么修改了,因为这些,刚刚的那个命令已经帮你执行了。
下面,你要做的是进入ISE界面,单击Edit下拉菜单,选中Prefrences选项,再选中Integrated tools页面,重新制定modelsim的可执行文件即可。退出所有软件,以后再对Xilinx的设计进行仿真都不需要进行库的处理了。
最后,你就可以打开ISE,建立自己的工程,使用Modelsim进行仿真了。有一点一定要记得,就是一定要把你的工程保存在刚刚编译中指定的路径,比如我的路径为D:\EDA\xilinx_libs。否则,你能够ISE能够打开Modelsim,但是无法自动生成波形的。
好啦,希望上面的文章对大家有用。