原创 ModelSim软件的使用

2011-3-22 14:49 5303 7 7 分类: 工程师职场
ModelSim软件是一款强大的仿真软件,具有速度快、精度高和便于操作的特点,此外还具有代码分析能力,可以看出不同代码段消耗资源的情况。其功能侧重于编译和仿真,不能制定编译的器件和下载配置的能力,所以需要和ISE等软件关联。 

1.ModelSim 仿真软件的安装 

下面介绍一下ModelSim的安装步骤。 

1)运行安装程序后,出现图4-94所示的界面,如果拥有有效的License,可以选择完全版(Full Product)安装,反之,则应当选择评估版(Evaluation Edition)安装。

 

图4-94 ModelSim版本选择窗口

 
2)选择完安装类型之后,下一个步骤就是设定安装路径,如图4-95所示。

 

图4-95 ModelSim安装路径选择窗口

 
3)如果选择的是完全版本,安装之后会出现Liscense Wizard对话框,如图4-96所示。

 

图4-96 ModelSim软件License管理向导

4)单击Continue按钮后,会出现License文件选择的对话框,选择有效的License文件。单击OK按键后,系统会自动进行一系列的有效性检查,只有合法的License文件,才能使ModelSim正常工作。

2.关联ISE和ModelSim 

完成了ModelSim安装后,需要将其和ISE软件关联后才能使用ModelSim进行仿真。运行ISE软件,在主界面中选择 “Edit|Preference”菜单项,进行Reference设定如图4-4所示。在弹出的“Preference”对话框中选择 “Integrated Tools”选项卡。该选项卡用于设定与ISE集成的软件的路径,第一项的“Model Tech Simulator”就用于设定ModelSim仿真软件的路径,如图4-5所示。 单击“Model Tech Simulator”文本框后面的按钮,会弹出一个文件选择对话框,选择ModelSim安装路径下win32目录下的“modelsim.exe”文件 即可。 

3. 在ModelSim中指定Xilinx的仿真库 

ModelSim SE版在发行时是不带任何FPGA厂家的仿真库,因此用户必须手动编译这些库,由此面临的一个问题就是怎样建立各FPGA器件的仿真库,目前各FPGA厂家都支持用户编译库,所以实现比较简单。 

在ModelSim中编译Xilinx仿真库有很多方法,下面介绍一种比较常用的方法,分为3步来完成。

  • 点击“开始/运行”按钮,执行下面的命令: 
    “compxlib -s mti_se -f all -l all –o f:\modeltech_6.2b\xilinx_libs -p f:\Modeltech_6.0\win32” 
    其中,f:\modeltech_6.2b为 ModelSim软件的安装目录,用户可根据自己的目录来替换。等待上述命令运行完毕,其运行时间较长,用户不要中途中断。
  •  在 Xilinx本地库编辑成功后,在相应的目录下,会自动生成Modelsim.ini的文件,用任何一个文本编辑器将该文件中[Library]目录下 (除others以外)的内容添加到硬盘上相应的另外的ModelSim安装目录下同名“modelsim.ini”文件中的相应[Library]位 置。
  • 最后进入ISE主界面,点击“Edit”下拉菜单按纽,选中下拉菜单中的“Prefrence”选项,再选中“Intergal Tools”页面,重新指定ModelSim可执行文件即可。退出所有软件,以后再对Xilinx的设计进行仿真都不需要进行库的处理了。

 4. ModelSim使用方法简介 

本节主要简单介绍ModelSim SE 6. 6.2b的使用方法,主要包括建立工程和基本Verilog仿真,更多的操作方法需要在实际应用中熟悉并掌握。

1)建立工程

使用ModelSim建立工程主要包括5个基本步骤: 

<1>启动ModelSim,选择菜单“File New Poject”,会打开“Creat Project”对话框,如图4-97所示。在“Creat Projec”t对话框中填写“Project Name”为“test”,然后在“Project Location”栏中选择Project文件的存储目录,保留“Default Library Name”的设置为work。点击OK按键确认,在ModelSim软件主窗口的工作区中即增加了一个空的Project标签,同时弹出一个“Add items to the Project”对话框,如图4-98所示。



图4-97 ModelSim新建工程窗口                                          图4-98 添加文件到工程向导示意图


<2>. 添加包含设计单元的文件。直接点击Add items to the Project对话框以后,在对话框中利用“Add Existing File”或“Create New File”选项,可以在工程中加入已经存在的文件或建立新文件。本节我们选择“Add Existing File”,弹出“Add file to the Project”对话框,如图4-99所示。点击对话框中的Browse按键,打开ModelSim安装路径中的examples/tutorials /verilog/compare/目录,选取sm.v和sm.v文件(选中多个文件时,只需要一直按住Ctrl按键,用鼠标点击即可),再选中对话框下 面的“Reference from current location”选项,然后点击OK按键确认。



图4-99 ModelSIm添加文件选项示意图


<3>.在工作区中的Project标签页中可以看到新加入的文件,单击右键,选取“Compile Compile All”命令对加入的文件进行编译,如图4-100所示。



图4-100 ModelSim软件中的工程编译窗口


<4>. 两个文件编译完后,用鼠标点击“Library”标签栏。在标签栏中用鼠标点击work库前面的“+”,展开work库,就会看到两个编译了的设计单元。如图4-101。



图4-101 编译后的设计单元示意图


<5>. 导入设计单元。双击Library标签页中的“test_sm”,在工作区中将会出现sim标签,并在右边的对象窗口列出了test_sm单元所用到的信号,如图4-102所示。



图4-102 将test_sm模块加入工作区示意图


到此,一个工程就已经建立好了,接下来的就是开始运行仿真、分析和设计调试了。选择“File Close Poject”可以关闭当前目录。

2)基本Verilog仿真

在准备仿真的时候,需要完成(1)中的所有步骤。然后继续进行下面的步骤: 

        <1>. 通过选择“View <窗口名>”调出signal、list和wave窗口。 也可以通过在主窗口命令行操作区的VSIM提示符下输入下面的命令:view signals list wave(回车) 

        <2>. 向wave窗口添加信号。在signal窗口中,单击右键,在弹出的菜单中选择“Add to Wave”选项中的“Signal in design”,将设计中用到的所有信号都列在Wave窗口中,如图4-103所示。



图4-103 在Wave窗口中添加信号

 
        <3>. 导入设计的时候,会在工作区打开一个新的sim标签,点击“+”展开设计层次结构,可以看到实例test_sm、sm等模块。点击sim标签中的顶层行保证test_sm模块显示在source窗口中。 

        <4>. 点击主窗口工具条的Run启动仿真,默认仿真长度为100ns。或者在命令行输入run。可以在仿真途中点击“Break”中断运行,在source窗口中查看中断时执行的语句。 

        <5>. 仿真完成,观察仿真波形如图4-104。确认无误后退出仿真,如果有错则返回source区域修改代码。

 

图4-104 test_sm模块的仿真结果示意图

4.5.3 Synplify Pro、ModelSim和ISE的联合开发流程 

利用Synplify Pro、ModelSim和ISE进行联合开发的步骤基本如下:当工程设计完成后,首先需要利用ModelSim软件完成功能仿真,然后利用 Synplify Pro进行综合优化,再在ISE中完成映射与布局布线,并借助于ModelSim完成布局布线后的时序仿真,最后在ISE中完成.bit文件的生成和 FPGA芯片的配置。 

通常上述流程有两种实现方法:第一,将前两者作为ISE的第三方插件,在ISE中通过按键自动调用;其次,就是通过相应的接口文件,手动完成各个流程。自动调用比较简单,只需要在ISE中进行简单的设计即可。 

1. 自动调用流程 

完成了Synplify Pro和ModelSim的安装,并在集成工具设定页面完成与ISE的关联后,如图4-91所示,单击ModelSim、Synplify /Synplify Pro文本框后面的按钮,会弹出一个文件选择对话框,选择ModelSim、Synplify /Synplify Pro安装路径中bin目录下的*.exe文件即可。 

需要注意的是,并不是任意的ISE版本和任意的ModelSim、Synplify/Synplify Pro版本都可以实现无缝连接,只有在ISE发布后出现的第三方软件才能和ISE无缝连接,否则Synplify/Synplify Pro软件只能够用于综合逻辑,而不能识别Xilinx提供的IP core,ModelSim则不能用于嵌入式开发环境(EDK)设计的仿真。根据个人操作的结果,和ISE 9.1匹配的Synplify /Synplify Pro应当是8.8及其更高版本,相应的ModelSim应该为6.1f以后的版本。 

完成了上述设定后,就可以直接在设计中调用ModelSim和Synplify。在工程管理区的设计芯片上,点击右键,选择“Property”命令,即 可打开用户设计的综合和仿真工具选择界面,如图4-105所示。在“Synthesis Tool”的下拉框中选择Synplify(Verilog)、在“Simulator”中选择ModelSin-SE Mixed。



图4-105 设计工具选择界面

2. 手动调用 

由于ModelSim只是完成功能验证,也ISE没有直接的数据交互,手动操作就是分开单独操作。 

手动调用Synplify Pro的方法比较灵活,但操作起来比较麻烦,用户可根据需要自行选择。首先单独启动Synplify Pro完成综合过程,再输出符合ISE格式的EDIF网表,在设置工程属性时选择EDIF设计流程,ISE仅完成网表的转换、映射和布局布线等操作。同时 可在Synplify Pro中添加时序约束。 

综合完成后,生成的后缀为.edif的文件就是综合输出的重要文件,是实现过程的输入,直接将其导入ISE即可。 

4.5.4 ISE与MATLAB的联合使用

本节主要介绍MATLAB设计、ISE实现以及二者联合测试的FPGA开发流程,这是全书的核心思想之一,也是目前最流行的设计方法。 
        
MATLAB软件是MathWorks公司的核心产品,具有用法简单、扩展性好、资源库丰富以及与其他软件接口方便的特点,已成为从事电子信息和信号处理 领域人员必备的工具软件之一。MATLAB和ISE的联合使用主要通过以下两个途径来实现:即MATLAB辅助ISE的方法,以及利用接口软件 System Generator的方法。本书主要围绕着第一种方法展开讨论,但System Generator作为一种新兴的设计模式,具有强大的发展势头,这里对其也作了简单介绍,关于System Generator的详细讨论将在第8章展开。 

1. MATLAB辅助ISE完成FPGA 
所谓辅助,就是利用MATLAB来加速浮点算法的实现和功能测试。即在进行FPGA设计之前,先用MATLAB实现浮点算法,分析出算法的瓶颈所在,将程 序的串行结构改造成并行结构,接着利用MATLAB完成定点仿真,得到满足性能需求的最小定点位宽以及中间步骤计算结果的截取范围,然后在ISE中完成设 计。最后再利用MATLAB的定点仿真结果对设计进行功能验证,整个流程如图4-106所示。



图4-106 MATLAB辅助ISE完成设计的流程图 

关于怎样完成定点仿真以及模块输出结果截取的原理和方法将在第5章中展开详细关系讨论。此外,利用MATLAB对FPGA设计进行功能仿真是比较关键的,下面介绍如何将MATLAB和ModelSim结合起来使用。 

首先,在MATLAB中产生仿真所需的输入信号,以十六进制的形式存放在数据文件中,通常放在后缀为.txt的文本文件中;其次在ModelSim中用 Verilog编写仿真测试文件,并通过系统函数$readmemh将上述仿真数据文件中的测试向量读入,在ModelSim中做功能仿真和时序仿真,并 调用$fopen函数打开另外一个数据文件,用$fdisplay函数将仿真结果写入;再次,在MATLAB中将ModelSim仿真输出数据文件中的数 据读入一个数组中,可以作图分析或者利用统计手段来分析。此外,还可以将ModelSim的仿真输出与MATLAB的浮点性能作对比,来验证设计的性能。 这样比利用其他方式要方便、直观,并且具有更高的正确性。 

下面举例介绍Verilog语言中文件输入/输出函数的使用方法。 

1)系统函数$fopen用于打开一个文件,并返回一个整数的文件指针。然后,$fdisplay就可以使用这个文件指针在文件中写入信息。写完后,用$fclose关闭文件。 

其语法格式为: 

integer <file_desc>; 
<file_desc> = $fopen("<file_name>", "<file_mode>"); 
$fwrite(<file_desc>, "<string>", variables); 
$fclose(<file_desc>);

例如:integer W_file; //定义文件指针 
                    W_file = $fopen("W_file.txt"); 
                    $fdisplay (W_file, "@%h\n%h", a, b); 
                    $fclose (W_file);

以上语句将“a”和“b”分别显示在“@%h\n%h”中的两个%h位置,并写入Write_out_file指针所指的文件W_file.txt中。

2)读文件操作通过$readmemh和$readmemb来完成,分别对应的数据文件为16进制和二进制。其语法格式为:

        reg [<memory_width>] <reg_name> [<memory_depth>]; 
        $readmemh ("<file_name>", <reg_name>); 

例如:reg [15:0] c [0:15]; 
            $readmemh (“R_file.txt”, c); 

上例就是将R_file中的数据读入数组c中,然后就可以直接使用这些数据了。其中数据文件的格式为:

        @2c 
        45 

其中,@2c表示地址,为16进制数,45表示该地址的数据。 

2. System Generator工具简介 

System Generator工具由MathWorks 与 Xilinx 合作开发而成,DSP 设计人员可使用 MATLAB 和 Simulink 工具在 FPGA 内进行开发和仿真来完善 DSP 设计。新型8.2版本System Generator使DSP系统和算法开发商不用写VHDL或Verilog编程,只需要利用MATLAB 及 Simulink 来开发他们的设计。一旦浮点建模完成,设计工程师采用Xilinx的比特及周期精确工具箱对其进行量化并自动生成HDL/RTL、用于Xilinx FPGA的网表或完整的比特流,包括新的Virtex-5 LX 和 LXT器件。最后,设计工程师在Simulink环境内采用高带宽硬件环境来验证并调试实际FPGA上的设计。 

System Generator的关键特性主要包括:

  • DSP建模。利用包含信号处理(如FIR滤波器、FFT)、纠错(如Viterbi解码器、Reed-Solomon编码器 /解码器)、算法、存储器(如FIFO、RAM、ROM)及数字逻辑功能的Xilinx模块集,在Simulink内构建和调试高性能DSP系统。 Xilinx模块集提供的模块可以使您导入MATLAB功能模块(如创建控制电路)及HDL模块(System Generator为Mentor Graphics的ModelSim和Xilinx ISE仿真器提供了HDL协仿真接口)。
  • Simulink 的 VHDL 或 Verilog 的自动代码生成。从 Xilinx 模块集实现行为(RTL)生成与对象明确的 Xilinx IP 核。
  • 硬 件协同仿真。创建“FPGA 在环路(FPGA-in-the-loop)”仿真对象是代码生成选项,允许您验证工作硬件并加速 Simulink 与 MATLAB 中的仿真。System Generator 支持以太网(10/100/千兆位)、PCI、Cardbus 及硬件平台与 Simulink 之间的 JTAG 通信。
  • 嵌入式系统的硬件/软件协设计。为 Xilinx MicroBlaze? 32 位 RISC 处理器构建和调试 DSP 协处理器。System Generator 提供了 HW/SW 接口的共享存储器提取功能,自动生成 DSP 协处理器、总线接口逻辑、软件驱动器及协处理器使用方面的软件技术文档。

一个典型的System Generator开发实例如图4-107所示,图中形如Xilinx公司标志的图标就是System Generator,只需要双击图标,就可以将浮点算法自动转化成FPGA实现。Xilinx公司网站上提供了System Generator完整的使用手册和丰富的实例,读者如有兴趣,可自行阅读。



图4-107 一个典型的System Generator开发实例 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
7
关闭 站长推荐上一条 /3 下一条