ISE如果想调用外部的仿真器,比如常用的modelsim,那么就会用到Xilinx 预先给modelsim编译好的仿真库,比如有secureip,xilinxcorelib_ver,unisims_ver,unimacro_ver,等仿真库,如果没有预先编译,就得跑一次ise的编译向导,花好多个小时呢。于是刚刚装上ise14.5的我为了省事,直接把14.4编译好的库复制了,然后将modelsim.ini里的对应编译库的路径设置好:
secureip = D:\Program_Files\Xilinxmodelsim\ISE\verilog\mti_se\10.1c\nt64/secureip
unisim = D:\Program_Files\Xilinxmodelsim\ISE\vhdl\mti_se\10.1c\nt64/unisim
unimacro = D:\Program_Files\Xilinxmodelsim\ISE\vhdl\mti_se\10.1c\nt64/unimacro
unisims_ver = D:\Program_Files\Xilinxmodelsim\ISE\verilog\mti_se\10.1c\nt64/unisims_ver
unimacro_ver = D:\Program_Files\Xilinxmodelsim\ISE\verilog\mti_se\10.1c\nt64/unimacro_ver
simprim = D:\Program_Files\Xilinxmodelsim\ISE\vhdl\mti_se\10.1c\nt64/simprim
simprims_ver = D:\Program_Files\Xilinxmodelsim\ISE\verilog\mti_se\10.1c\nt64/simprims_ver
xilinxcorelib = D:\Program_Files\Xilinxmodelsim\ISE\vhdl\mti_se\10.1c\nt64/xilinxcorelib
xilinxcorelib_ver = D:\Program_Files\Xilinxmodelsim\ISE\verilog\mti_se\10.1c\nt64/xilinxcorelib_ver
uni9000_ver = D:\Program_Files\Xilinxmodelsim\ISE\verilog\mti_se\10.1c\nt64/uni9000_ver
cpld = D:\Program_Files\Xilinxmodelsim\ISE\vhdl\mti_se\10.1c\nt64/cpld
cpld_ver = D:\Program_Files\Xilinxmodelsim\ISE\verilog\mti_se\10.1c\nt64/cpld_ver
结果在ise调用modelsim时,发生了如下错误(只粘贴了其中一个库的错误,其它库的错误类似):
> Compilation info: secureip
********************************************************
+ Source Library : D:/Program_Files/Xilinx/14.4/ISE_DS/ISE/secureip/mti
+ Compilation Time : Sat Dec 28 17:40:24 2013
+ Platform : nt64
+ Simulator : mti_se
+ Simulator Version : 10.1c
+ Xilinx Version : 14.4
ERROR: Xilinx software version mismatch!
The simulation libraries were compiled for the '14.4' version but the version
in use is '14.5'. Please recompile the libraries for the current version.
+ Number of Errors : 0
+ Number of Warnings: 0
********************************************************
一看就知道是版本不兼容的问题,于是我就想找出这个版本信息放在哪里,然后把它改了,欺骗ise
在编译好的secureip仿真库文件夹里找到一个后缀名为.rpt的文件,我的modelsim是64位的,所以这个文件的名字是.cxl.verilog.secureip.secureip.nt64.rpt
D:\Program_Files\Xilinxmodelsim\ISE\verilog\mti_se\10.1c\nt64\secureip\.cxl.verilog.secureip.secureip.nt64.rpt
打开该文件:
CxlResult:D:\Program_Files\Xilinx\14.4\ISE_DS\ISE\verilog\mti_se\10.1c\nt64/secureip/.cxl.verilog.secureip.secureip.nt64.rpt =
ExecutionPlatform = nt64 ,
SourceLibrary = secureip ,
SourcePath = D:/Program_Files/Xilinx/14.4/ISE_DS/ISE/secureip/mti ,
Simulator = mti_se ,
SimulatorVersion = 10.1c ,
CompiledLibrary = secureip ,
CompiledPath = D:\Program_Files\Xilinx\14.4\ISE_DS\ISE\verilog\mti_se\10.1c\nt64/secureip ,
Timestamp = Sat Dec 28 17:40:24 2013 ,
Time = 1388223624 ,
Language = verilog ,
XilinxBuildNumber = P.49d ,
XilinxVersion = 14.4 ,
LogFile = D:\Program_Files\Xilinx\14.4\ISE_DS\ISE\verilog\mti_se\10.1c\nt64/secureip/.cxl.verilog.secureip.secureip.nt64.log ,
NumOfErrors = 0 ,
NumOfWarnings = 0 ,
将XilinxVersion = 14.4字段改成正确的版本号就行了,其它的CompiledPath,SourcePath字段即使不对也没关系,它们的当前值是最初生成库时的路径。
依此类推,将其它的仿真库的版本都改过来,然后ise就能正确调用modelsim了。
最后强调一下,这种欺骗手法最好是在版本相差不大的时候用,否则很可能modelsim用了太老旧的仿真库导致仿真效果差。