ISE调用Modelsim SE 6.5仿真的若干问题及其解决方法
2020-06-02
来源:欧得旅游网
XilinxISE10.x调用ModelsimSE6.5仿真的若干问题及其解决方法因为手上有一块Xilinx的Spartan--3E开发板,前些日子陆陆续续学习了ISE的一般工程开发,熟悉了XilinxISE10.x的软件操作和开发板的使用。近来没有事情,于是乎,又把那开发板拿出来把弄把弄,开始学习Xilinx的FPGA的DSP开发设计。在这里先介绍一下XlinxFPGA的DSP设计工具和设计流程。近年来,随着多媒体技术和无线通信技术的迅猛发展,信息技术领域对DSP应用的需求不断增长,传统的DSP处理器(现在用得最多的当属IT的DSP,种类多,功能强大,软件技术也很成熟)虽然时钟速率很高,当DSP处理器在运行时按指令顺序执行,因而资源利用率不高,数据的吞吐量较低,难以实现高速率,高复杂度的设计。而FPGA拥有大量可编程逻辑资源,比如专用的DSP块,乘法器、双端口RAM、LUT、寄存器和DCM等,同时配合嵌入式处理器,像Altera的NiosII核、Xilinx的MicroBlaze和PowerPC405等处理器软核或硬核,可以轻松实现高数据率的数字信号处理设计,而且性能原声与传统的DSP处理器,具有可裁剪,灵活性大等特点,正越来越被人们所重视。使用FPGA进行DSP算法设计时,传统方式下,设计者首先要进行浮点数的算法验证和仿真,然后再将其转换为定点数程序;其次将定点数算法编写成HDL代码,通过反复的功能仿真,后仿真验证程序的正确性,最终生成比特流。Xilinx公司推出的系统建模工具SystemGenerator简化了整个DSP设计流程。设计者只需要根据设计要求咱Simulink下进行系统建模,使用SystemGenerator工具即可自动生成可执行比特流、测试文件等,去掉繁琐的仿真、对比和验证过程。由于提供了适合硬件设计的数字信号处理(DSP)建模环境,加速、简化了FPGA的DSP系统级硬件设计。关于SystemGenerator的下载和安装过程,我在此就不详细说明了,在google上搜索一下就能找到的。关于SystemGnenrator的使用说明我在此向大家推荐一本很好的教材--《XilinxISEDesignsuite10.xFPGA开发指南》(人民邮电出版社、田耕胡彬徐文波等著)我是在学校图书馆借到的这本书,写得很详细,相当不错。我写这篇文章的之前做的实验也是参考上面做的。下面我进入正题,具体介绍我在用SystemGenerator工具完成DSP设计后使用XilinxISE10.x调用ModelsimSE6.5进行仿真验证时遇到的的若干问题及其解决方法。下图为我设计的用MatlabSimulink工具设计DSP工程。在用SystemGenerator进行FPGA的DSP模块设计是以下几点值得特别注意:①设计的的FPGADSP模块的全局输入和输出数据(也就是在非Xilinx库提供的数据源或者数据显示、测量终端,比如下面设计中的Step信号源和Scope示波器等)必须经过Xilinx提供的GatewayIn和GatewayOUT进行采样,进而得到FPGA内部能够处理的定点数。②每个设计中至少要包含一个SystemGenerator图标,因为它是联系MATLAB设计与XilinxFPGA硬件实现的主要桥梁,通过它可以实现FPGA实现属性的设置和修改,双击该图标会出现如图-2所示的对话框。③由于在SystemGenerator中进行设计是需要对外部数据进行采样,所以设计中各个GatewayIn和GatewayOut模块都有一个采样周期和采样后所得定点数精度的设置,另外在整个系统也必须有一个系统采样设置,多数情况下就对应着FPGA实现设计是的全局时钟,其设置在图-2中的SimulinkSystemClock(sec)。这里需要特别注意,系统设置必须是整个FPGA的最高时钟,而GatewayIn和GatewayOut模块的采样周期都必须是它的整数倍,否则系统会报错,设计失败。图-1下图为SystemGenerator的系统设置,请注意其中勾选了Createtestbench选项,这样在点击Generator以后,系统才会自动生成勇于Modelsim仿真的测试文件,十分方便。图-2当一切设计好之后,点击图-2中的Generator按钮,系统就会自动调用ISE工具进行综合并产生所以需要的设计文件和仿真文件。接下来,运行ISE,打开OpenProject,将路径切换至MATLAB的work工作目录文件下找到netlist文件,进入就会看到一个已经生产的<工程名>_dcm_mcw.ise的ISE工程文件如图-3示,点击打开.图-3接着,设置ISE调用Modelsin进行仿真的路径:点击ISE窗口的Edit---->Prefrence,出现图-4窗口,点击展开ISEGeneral--->IntergratedTools,如下所示,在ModelTechsimulator项选择你的Modelsim安装路径完成设置。另外ISE也提供利用其他综合工具进行设计综合的软件接口,如Synplify或者SynplifyPro。图-4然后,回到ISE工程界面,在source窗口选择Sourcefor切换至BehaviorSimulation,此时在Sources窗口就能看见刚才SystemGenerator自动生成的testbench测试文件了以<工程名>-dcm_mcw_tb-structure形式命名。如图-5示:图-5接下来的一步是决定ISE能否成功调用ModelsimSE6.5进行仿真工作的关键。我遇到的问题也大都在于此。如果此时,你和我一样迫不及待的想看到仿真的结果而草草的点击图-6中Process窗口的SimulateBehavioralModel的话,一连串的问题也就随之出现了。如图-6所示,Modelsim的命令窗口输出了以下错误信息#**Error:lab_dcm.vhd(41):Libraryxilinxcorelibnotfound.#**Error:lab_dcm.vhd(43):VHDLCompilerexiting#**Error:D:/modeltech_6.5/win32/vcomfailed.#Errorinmacro./pn_behavioral.doline9#D:/modeltech_6.5/win32/vcomfailed.#whileexecuting图-6上面的信息提示://没找到Libraryxilinxcorelib所以编译器不能对当前工程进行编译和仿真,所编译器退出。看到如此的信息,当时很茫然,这到底是怎么回事呢?从xilinxcorelib来看似乎是Modelsim里面没有Xilinx的仿真库呀!到google上面一查才知道,原来用Modelsim进行仿真时,先要对设计中调用的元件库进行编译,也就是compile,通过之后才能进行波形仿真(simulate)。而Modelsim的SE版本属于通用版,仅集成(也就是自带的)一般的库,比如ieee库,Verilog库和标准库std等。不像其专业版,如跟Altera设计的ModelSim-Altera版就自带了AlteraFPGA的全部设计库。另外,Modelsim在启动时,会调用一个非常关键的初始化文件--Modelsim.ini,这个文件决定了本次Modelsim软件启动后所具备的库的多少和映射关系。在知道了这一点后,我就在电脑上搜索Modelsim.ini,结果惊讶的发现了在我的电脑上面居然有好几个Modelsim.ini文件。如图-7所示:图-7看到上面的搜索结果,我才想起以前曾经使用过Modelsim,但都是FPGA软件安装包配套的版本,有ACTEL的FPGA设计软件Libero8.3自带的专业许可的Modelsim版本和Altera的FPGA设计软件Quartus9.0自带的ModelSim-Altera6.4a(QuartusII9.0)StarterEdition版本,在使用的时候由于是专业版,都安装好了各自FPGA厂商的设计库,在用FPGA软件调用Modelsim是从未遇到过此类数据库lib方面的问题。由此,我也发现EDA工具在生成Modelsim测试文件时会根据FPGA的设计环境生产一个Modelsim.ini文件,用于调用Modelsim软件仿真时初始化Modelsim的启动环境。该初始化文件一般都包含在各自的工程设计文件目录下。如图-8所示。我打开我当前的设计工程目录:D:\\ProgramFiles\\MATLAB\\R2007a\\work\\my_lab\\netlist下的Modelsim.ini文件,发现其中的库设置内容如下:[Library]others=$MODEL_TECH/../modelsim.ini;vhdl_psl_checkers=$MODEL_TECH/../vhdl_psl_checkers//Sourcefilesonlyforthisrelease;verilog_psl_checkers=$MODEL_TECH/../verilog_psl_checkers//Sourcefilesonlyforthisrelease;mvc_lib=$MODEL_TECH/../mvc_lib上面语句的意思是每个库的名称及其映射路径,从上面并没有发现错误中所提到的xilinxcorelib这个库及其映射路径。所以出错也就理所当然啦!另外从上面的语句还可以看出,Modelsim在启动时首先调用的是当前工程设计目录下的modelsim.ini文件,其他它通过others=$MODEL_TECH/../modelsim.ini还会调用modelsim安装目录下的初始化文件,进行库的映射。好了,在打开modelsim安装目录下的初始化文件modelsim.ini文件发现其库映射设置如下:[Library]std=$MODEL_TECH/../stdieee=$MODEL_TECH/../ieeeverilog=$MODEL_TECH/../verilogvital2000=$MODEL_TECH/../vital2000std_developerskit=$MODEL_TECH/../std_developerskitsynopsys=$MODEL_TECH/../synopsysmodelsim_lib=$MODEL_TECH/../modelsim_libsv_std=$MODEL_TECH/../sv_stdmtiAvm=$MODEL_TECH/../avmmtiOvm=$MODEL_TECH/../ovm-2.0.1mtiUPF=$MODEL_TECH/../upf_libmtiPA=$MODEL_TECH/../pa_libfloatfixlib=$MODEL_TECH/../floatfixlib;vhdl_psl_checkers=$MODEL_TECH/../vhdl_psl_checkers//Sourcefilesonlyforthisrelease;verilog_psl_checkers=$MODEL_TECH/../verilog_psl_checkers//Sourcefilesonlyforthisrelease;mvc_lib=$MODEL_TECH/../mvc_lib中也就是我们在图-6的modelsim软件界面的library栏所见到的所有库了。继而,我又在google上进一步搜索ISE调用modelsim进行仿真方面的问题。看到一些论坛的回帖中谈到,用Modelsim进行XilinxFPGA设计的仿真时安装Xilinx库的各种方法。我将它们都一一试了一遍,问题依旧啊!特别是其中用ISE的compxlibgui.exe工具(安装路径\\Xilinx\\10.1\\ISE\\bin\\nt\\compxlibgui.exe)进行自动的Xilinx库编译时,由于选择了全部的库进行编译,用了近3个小时才完成。于是,我很不甘心就这样失败了。回想整个工程,我又在电脑上搜索modelsim.ini文件,发现此时在ISE的安装目录下多了一个该文件(见图-7所示),于是迫不及待的打开,发现如下:[Library]others=$MODEL_TECH/../modelsim.ini;vhdl_psl_checkers=$MODEL_TECH/../vhdl_psl_checkers//Sourcefilesonlyforthisrelease;verilog_psl_checkers=$MODEL_TECH/../verilog_psl_checkers//Sourcefilesonlyforthisrelease;mvc_lib=$MODEL_TECH/../mvc_libUNISIMS_VER=C:\\Xilinx\\10.1\\ISE\\verilog\\mti_se\ms_verUNIMACRO_VER=C:\\Xilinx\\10.1\\ISE\\verilog\\mti_se\cro_verUNI9000_VER=C:\\Xilinx\\10.1\\ISE\\verilog\\mti_se\00_verSIMPRIMS_VER=C:\\Xilinx\\10.1\\ISE\\verilog\\mti_se\\simprims_verXILINXCORELIB_VER=C:\\Xilinx\\10.1\\ISE\\verilog\\mti_se\\XilinxCoreLib_verSECUREIP=C:\\Xilinx\\10.1\\ISE\\verilog\\mti_se\\secureipAIM_VER=C:\\Xilinx\\10.1\\ISE\\verilog\\mti_se\\abel_ver\\aim_verCPLD_VER=C:\\Xilinx\\10.1\\ISE\\verilog\\mti_se\\cpld_verUNISIM=C:\\Xilinx\\10.1\\ISE\\vhdl\\mti_se\mUNIMACRO=C:\\Xilinx\\10.1\\ISE\\vhdl\\mti_se\croSIMPRIM=C:\\Xilinx\\10.1\\ISE\\vhdl\\mti_se\\simprimXILINXCORELIB=C:\\Xilinx\\10.1\\ISE\\vhdl\\mti_se\\XilinxCoreLibAIM=C:\\Xilinx\\10.1\\ISE\\vhdl\\mti_se\\abel\\aimPLS=C:\\Xilinx\\10.1\\ISE\\vhdl\\mti_se\\abel\\plsCPLD=C:\\Xilinx\\10.1\\ISE\\vhdl\\mti_se\\cpld奇迹般的发现了XILINXCORELIB=C:\\Xilinx\\10.1\\ISE\\vhdl\\mti_se\\XilinxCoreLib于是,欣喜万分。将上面的全部粗体语句全部copy到当前工程目录下的modelsim.ini文件中,再在ISE下面重复上面的过程,奇迹终于出现啦!MyGod!所有的Xilinx库都出现了,仿真波形也出来了!图-8这里再附上我上传在本网站上的ModelsimSE6.5的完整版下载链接和利用ISE的compxlibgui.exe工具进行Xilinx库编译的流程截图。希望对大家有帮助。ModelsimSE6.5的完整版下载链接:http://share.eepw.com.cn/share/list如果未能找到,请在搜索栏中搜ModelsimSE6.5就可以看见了,全部11个压缩包,共202M。胡恩伟写于2010年3月15日于重大A区一舍