第8章 使用ModelSim进行设计仿真
ModelSim为HDL仿真工具,我们可以利用该软件来实现对所设计的VHDL或Verilog程序进行仿真,支持IEEE常见的各种硬件描述语言标准。可以进行两种语言的混合仿真,但推荐大家只对一种语言仿真。ModelSim常见的版本分为ModelSim XE和ModelSim SE两种,ModelSim版本更新很快,目前最新版本为5.8版本,该版本支持VHDL的2002标准以及Verilog的2001标准,此外,在该版本的Linux、HP和SUN工作站等平台支持VHDL、Verilog 和SystemC的混合仿真,但在Windows平台上不支持SystemC的仿真。本章将对ModelSim5.7版本进行介绍,目的是希望看完本章,读者可以简单地使用ModelSim进行仿真,有关更深入地教程,还是参考ModelSim附带的文档。在网址del/support/上也可以到深入的教程,在该页面上注册以后,会在中收到发过来的密码,根据邮件地址和密码登陆后,会有一些高级教程和使用要点(Application Notes)下载。
ModelSim5.7SE版本内部划分为更细的版本编号,从ModelSim5.7aSE到ModelSim5.7gSE等等。读者可以选择任一版本。另外,如果ModelSim是和ISE一起使用的话,你需要编译Xilinx的一些库文件,这些库文件包括unisim、simprim、xilinxcorelib、aim、pls、cpld等,有了这些库文件,可以在ISE中生成设计的行为仿真(将设计转换为RTL描述后进行的仿真)、转换后仿真(将设计转换为Xilinx器件的基本模块来实现后进行的仿真)、映射后仿真(将设计用Xilinx的具体器件的具体模块实现后进行的仿真,仿真中包含了器件的延时,但由于没有布局布线无法提取出互连线的信息,因此仿真中不包含互连线的延时
、电容、电阻等信息)、布局布线后仿真(将设计对Xilinx具体器件进行布局布线后,提取出互连线的信息,进行的仿真包含了器件的延时以及互连线的延时等信息)的各种模型,然后在ModelSim中对这些模型进行仿真,由于ISE和ModelSim已经实现了无缝的连接,在ISE中只需设置一个可视的波形文件,然后点几下鼠标就可以实现各种仿真,具体的方法在ISE的使用一章中有较为详细的介绍,可以参阅具体的章节。同时,也可以使用ModelSim的XE(Xilinx Edition)版本,由于该版本是Xilinx版,其中自然就集成了Xilinx的各种库文件,使用时就不需要考虑库文件方面的问题了。对于ISE不同版本集成了不同版本的ModelSim,虽然是集成,还是需要单独进行安装的。对于ISE6.1版本配套的ModelSimXE版本为ModelSim5.7cXE。
本章为ModelSim的初级教程,读者读完本章可以较为熟练的使用ModelSim进行设计仿真,本章没有也不可能涉及ModelSim的各个方面,要想全面的掌握ModelSim可以参阅软件文档。
8.1 设计准备怎么对文件夹加密
在本节中将介绍ModelSim5.7的安装,Xilinx仿真库的设置等方面的内容,不同的版本的安装过程大致相同,在此不再多讲,只是若你安装XE版本时,会出现选择是否是免费的Starter版本,如果不想购买可以选择该选项,其实,Starter版本足够完成我们遇见的设计仿真。若你连在互联网上,可以在线申请License文件,选取开始->程序->ModelSimXEII5.7c->Submit License Request,会打开一个网页,如果
你在Xilinx网站上未注册,可以先在线注册,已经注册的话先登录,会出现另一界面,显示你的注册信息,点击Submit就可以申请License了。过几分钟可以到你的里收取License文件。若安装ModelSim的机器没有联到互联网,可以点击开始->程序->ModelSimXEII5.7c->License Request Instructions,会打开一个文本文件,安装要求填写并发到指定的邮箱即可,但这种方法又是很难得到回应。得到License文件后,再点击开始->程序->ModelSimXEII5.7c->Licensing Wizard,指定License文件即可。对于非XE版本的ModelSim 安装同一般软件的安装。
ModelSim的各个版本可以从互联网上免费得到,购买的只是License文件,ModelSim 的下载地址为del/,进入这个界面可以点击Download,用户填写完一张表格后可以得到一个小时的下载时间,读者在首页上点击Evaluations来得到评估版本的license文件。
ModelSim软件的加密采用的是Flexlm方法,Flexlm(Flexible License Manager)是由Globetrotter 公司发明的软件加密方法,Globetrotter 公司向软件厂商出售相关开发软件,软件厂商把此加密程序集成到自己的软件中,该方法是目前最为流行的EDA软件加密方法,已被80%以上的EDA软件公司所采用,该方法可以锁定机器的硬盘号,网卡号,使用日期,支持加密狗等,以保护软件的知识产权。打开我们得到的ModelSim Starter版本得到的 License.dat文件可以看到如下内容:
FEATURE xe-starter modeltech 2004.12 1-jan-00 uncounted \
9C0FA6415C9327086559 HOSTID=DISK_SERIAL_NUM=c61e85a ck=244 其中,FEATURE是关键字;xe-starter是FEATURE名,即允许开通的功能;modeltech 是厂商标识;2004.12是版本标记,可以是时间,也可以是版本号;1-jan-00为过期时间,如果是permanent或0,表示永不过期,这里的00就表示不过期;uncounted表示使用人数限制;9C0FA6415C9327086559是根据以上条件和Flexlm加密算法计算出的密码;HOSTID=DISK_SERIAL_NUM=c61e85a表示运行机器的特征,可以指定运行机器的硬盘号、网卡物理地址以及加密狗等,这里指定的是机器的硬盘号,只有硬盘号为c61e85a时才可以使用。ModelSim不像有些EDA软件需要专门的管理工具来管理License,大多数EDA软件是需要管理工具来管理的,如PADS、ActiveHDL等等,这些软件安装时会有安装License Server的选项,管理工具可以在控制面板里的FLEXlm License Manager进行设置。对于ModelSim只需要在环境变量里指明license文件的位置即可,运行ModelSim LicenseWizard可以自动设置环境变量,若需要手动设置,在Win95/98下在autoexec.bat中
加入如下一行:SET LM_LICENSE_FILE=c:\flexlm\license.dat,如果在一台机器上安装了多个这种加密方式的EDA软件,可以用分号隔开多个license文件,如:
SET LM_LICENSE_FILE=c:\flexlm\license1.dat ; d:\altera\license2.dat
在Win2000和NT操作系统下,直接在系统环境变量中设定这些参数。具体方法是在我的电脑上点击右键,
选择属性,点击高级,点击环境变量,再新建一个变量,变量名为LM_LICENSE_FILE ,变量值为license文件的存放地址。
在使用由Flexlm加密的EDA文件时,不要随意更改系统时间,因为Flexlm加密系统会监测系统文件的时间。
另外ModelSim的版本很多,基本的有PE、LE、SE版本,PE为个人版本,功能最少,支持的操作系统为32位WINDOWS 98/NT/ME/2000/XP;LE版本支持的操作系统为32位LINUX;SE版本为全功能版本,支持32位操作系统AIX, HP-UX, LINUX + SOLARIS,WINDOWS 98/NT/ME/2000/XP,64位操作系统AIX, LINUX (ITANIUM-2), HP-UX, SOLARIS,以及HP-UX, LINUX等平台。
8.2 菜单和工具栏介绍
这里以ModelSimXEII5.7c为例来说明,本节说明ModelSim的菜单和工具栏,读者有一个初步的了解就可以了。可以通过点击开始->程序->ModelSim XEII5.7c->ModelSim或点击桌面上的快捷方式来运行该软件,出现的界面如图8-2-1所示。在图的最上端为标题栏;下面一行为菜单栏;再下面为工具栏;左半部分为工作区(Workspace),在其中可以通过双击查看当前的工程及对库进行管理;右半部分为命令窗口区,在其中出现的命令行及提示信息称为脚本(Transcript);最下面一行为状态栏。这里要注意的是,有些操作是无法通过菜单和工具栏来完成的,学习ModelSim一定要学会使用命令行方式来操作,常
用的命令并不多,不是很难掌握,在后续章节将介绍仿真中的一些常见命令。因此,本节内容读者略读一下就可以了,实际试一下会更好。
图8-2-1 ModelSim界面
8.2.1标题栏
与一般的Windows窗口相同,界面的最上一行为标题栏,显示当前的应用程序的名称,通过点击标题栏的图标(或Alt键+SpaceBar空格键)可以对窗口进行诸如改变窗口大小、移动窗口位置、关闭窗口之类的操作,这些与Windows完全相同。
8.2.2 菜单栏
标题栏下方为菜单栏。菜单栏有八个菜单项,分别是:File(文件)、Edit(编辑)、View (视图)、Compile(编译)、Simulate(仿真)、Tools(工具)、Window(窗口)、Help(帮助)。下面分别罗列其具体选项。
1. File(文件)菜单
文件菜单通常包含了对工程及文件等的操作。ModelSim的文件菜单包含的命令有:
New(新建),Open(打开),Close(关闭),Import(导入),Save(保存),Delete(删除),Change Directory(更改路径),Transcript(对脚本进行管理),Add to Project(为工程添加文件),
Recent Directories(最近几次的工作路径),Recen Projects(最近几次工程),Quit (退出)。
(1) 新建文件命令(File/ New)
单击File/ New命令,将会出现一个子菜单,共包含四个选项:单击Floder(新建文件夹)后,会出现对话框,提示输入新建的文件夹的名字,即可在当前目录下新建一个文件夹;单击Source(新建源文件)后,会出现源文件类型的选项(VHDL,Verilog,Other),点击可分别新建对应格式的源文件;单击Project(新建工程)后,会出现对话框,提示在Project Name处输入新建工程的名称,在Project Location处指定新建工程的存放路径,在Default Library Name处指明默认的设计库的名称,用户设计的文件将编译到该库中;单击Library(新建一个库)后,会出现对话框,提示选择Creat a New library and a logical mapping to it(新建一个库并建立一个逻辑映象)或A map to an existing library(新建一个到已存在库的映象),在Lirary name处输入新建库的名称,在Library phycial name处输入存放库的文件名称。
(2) Open(打开文件)
单击会出现子菜单选择打开File(文件)、Project(工程)及Dataset(WLF文件)。
(3) Close(关闭)
单击会出现子菜单选择关闭Project(工程)或Dataset(仿真数据文件)。
(4) Import(导入)
导入新的库,在进行某些仿真时需要的一些库可以通过该方法导入,根据提示指定源库路径及目标库路径,一步步操作完成。注意ModelSim安装目录下的modelsim.ini文件不能为只读。在该文件中保存了ModelSim的一些设置信息,后续章节将详细讨论该文件的内容及其含义。
(5) Save(保存)
保存当前仿真数据。
(6) Delete(删除)
删除指定的工程,即删除.mpf文件,mpf是ModelSim工程的后缀名。
(7) Change Directory(改变路径)
改变当前工作路径,ModelSim使用的是绝对路径,而不是相对路径,这与ISE不同,在ISE中,你可以将你的设计整个目录拷贝到其他任何地方,只要目录完整,你可以直接打开工程文件。而在ModelSim中,
若将整个目录拷贝到其他地方,打开工程时其指向仍为原来工程的地址,可以通过更改路径来设置新的路径。
(8) Transcript(脚本)
单击会出现子菜单选择操作Save Transcript(保存主窗口中脚本)、Save Transcript As (把主窗口中脚本另存为一个新文件)或Clear Transcript(清除主窗口中的脚本)。
(9) Add to Project(添加到工程)
单击会出现子菜单选择操作File(添加文件到当前工程)、Simulation Configuration(添
加设定的仿真配置)或Folder(添加文件夹)。
(10) Recent Directories(最近几次工作路径)
可以从中选取最近几次的工作路径。
(11) Recen Projects(最近几次工程)
可以打开最近几次的工程。
(12) Quit(退出)
退出 Model Sim.
2. Edit(编辑)菜单
类似于Windows应用程序,在编辑菜单中包含了对文本的一些常用的操作。
(1) Copy(复制)
复制选中的文档
(2) Paste(粘贴)
把剪切或复制的文档粘贴到当前插入点之前。
(3) Select All(全选)
选中主窗口中所有的抄本文档。
(4) Unselect All(取消全选)
取消已选文本的选中状态。
(5) Find(查)
在命令窗口中查字符或字符串。
3. View(视图)菜单
类似于其他Windows应用程序,视图菜单可以控制在屏幕上显示哪些窗口。
(1) All Windows(所有窗口)
打开所有的Model Sim窗口,你试一下该命令会发现ModelSim打开了许多窗口,包括波形窗口、信号列表窗口、源文件窗口等等。
(2) Dataflow(数据流)
打开Dataflow窗口,在该窗口中显示数据的流向。
(3) List(列表)
打开列表窗口。
(4) Process(进程)
打开过程窗口,该窗口显示了设计中的进程所在的位置。
(5) Signals(信号)
打开信号窗口。该窗口显示了设计中所有信号的列表
(6) Source(源文件)
打开源文件窗口,可以在源文件窗口中显示设计中使用的源文件。
(7) Structure(结构)
打开结构窗口,该窗口以列表方式显示了设计中所有到的结构,双击某一结构,可以