文档库 最新最全的文档下载
当前位置:文档库 › 使用ModelSim进行设计仿真

使用ModelSim进行设计仿真

使用ModelSim进行设计仿真
使用ModelSim进行设计仿真

第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附带的文档。在网址https://www.wendangku.net/doc/bd16361703.html,/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 的下载地址为https://www.wendangku.net/doc/bd16361703.html,/,进入这个界面可以点击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(结构)

打开结构窗口,该窗口以列表方式显示了设计中所有到的结构,双击某一结构,可以

查找定义该结构的语句。

(8) Variables(变量)

打开变量窗口,该窗口以列表方式显示了设计中定义的所有变量。

(9) Wave(波形)

打开波形窗口,这是我们仿真时经常需要查看的窗口,在其中显示了输入和输出的波形。

(10) Datasets

打开Dataset浏览器来打开、关闭、重命名或激活一个Dataset。你在使用的时候会发现没有什么变化,这时候你可以看看Workspace窗口下是不是多了一个选项卡。该选项卡显示的内容与Structure窗口显示的完全相同。

(11) Coverage(覆盖率)

查看仿真的代码覆盖率。

(12) Active Processes(活动的进程)

当前正在执行的进程。

(13) workspace(工作区)

打开当前的工作区。

(14) Encoding(编码)

以不同的编码查看。

(15) Properties

显示工作区中选中对象的属性。

4. Compile(编译)菜单

(1) Compile(编译)

把HDL源文件编译到当前工程的工作库中。

(2) Compile Options(编译选项)

设置VHDL和Verilog编译选项,例如可以选择编译时采用的语法标准等。

(3) Compile All(全编译)

编译当前工程中的所有文件。

(4) Compile Select(编译选中的文件)

编译当前工程中的选中文件。

(5) Compile Order(编译顺序)

设置编译顺序,一般系统会根据设计对VHDL自动生成编译顺序,但对于Verilog需要指定编译顺序。

(6) Compile Report(编译报告)

有关工程中已选文件的编译报告。

(7) Compile Summary(编译摘要)

有关工程中所有文件的编译报告。

5. Simulate(仿真)菜单

这里的编译及运行命令类似于VC等高级语言的调试时候的命令。

(1) Simulate(仿真)

装载设计单元。

(2) Simulation Options(仿真选项)

设置仿真选项。

(3) Run(运行)

Run ***ns:在该仿真时间长度内进行仿真。若要改变长度,可在Simulation Options中设置或在工具栏中修改;

Run-All(运行所有仿真):进行仿真,直到用户停止它;

Continue(继续):继续仿真;

Run-Next(运行到下一事件):运行到下一个事件发生为止;

Step(单步):单步仿真;

Step-Over:仿真至子程序结束;

Restrat:重新开始仿真,重新加载设计模块,并初始化仿真时间为零。

(4) Break(停止)

停止当前的仿真。

(5) End Simulation(结束仿真)

结束当前仿真。

6. Tool(工具)菜单

(1) Waveform Compare(波形比较)

在子菜单中有具体进行波形比较的命令。

(2) Coverage(覆盖率)

测试仿真的代码覆盖率,所谓代码覆盖率是指仿真运行到当前已运行的代码占所有代码的比例,当然是越接近100%越好。

(3) Breakpoints(断点设置)

单击此选项出现断点设置对话框,设置断点。

(4) Execute Macro(执行宏文件)

所谓的宏文件就是保存后的脚本,脚本保存起来,以后可以利用该命令来重新执行。

(5) Options(选项)

Transcript File:设置脚本文件的保存。

Command History:命令历史。

Save File:保存脚本文件。

Saved Lines:限制脚本文件的行数。

Line Prefix:设置每一行的初始前缀。

Update Rate:设置状态条的刷新频率。

ModelSim Prompt:改变ModelSim的命令提示符。VSIM Prompt: 改变VSIM的命令提示符。Paused Prompt: 改变Paused的命令提示符。HTML Viewer:设置打开在线帮助的文件。

(6) Edit Preferences(编辑参数选取):

设置编辑参数。

(7) Save Preferences(保存参数选取):

设置保存用的参数。

7. Window (窗口)菜单:

(1) Initial Layout(初始化版面)

恢复所有窗口到初始时的大小和位置。

(2) Cascade(层叠)

使所有打开的窗口层叠。

(3) Tile Horizontally(水平平铺)

水平分隔屏幕,显示所用打开的窗口。

(4) Tile Vertically(垂直平铺)

垂直分隔屏幕,显示所用打开的窗口。

(5) Layout Style(版面格式)

Default(默认格式):与Initial Layout格式相同;Classic(经典格式):采样低于5.5版本的格式;Cascade:与Cascade格式相同;Horizontally:与Tile Horizontally格式相同;Vertically:与Tile Vertically格式相同。

(6) Icon Children

除了主窗口之外的其他窗口缩为图标。

(7) Icon All

将所有窗口缩为图标。

(8) Deicon All

将所用缩为图标的窗口还原。

8. Help(帮助)菜单

(1) About ModelSim

显示ModelSim的版本、版权等信息。

(2) Release Notes

显示ModelSim的版本发布信息。

(3) Welocme Menu

显示欢迎画面。

(4) PDF Documentation

在子菜单中可以选择ModelSim的PDF文档。

SE HTML Documentation:ModelSim的超文本文档。

(5) Tcl Help:Tcl帮助文档。

Tcl是Tools Command Language的缩写, 它是一种可扩充的命令解释语言,具有与C 语言的接口和命令的能力,应用非常广泛,这方面也有专门的书籍。.

(6) Tcl Man Pages:Tcl主页面。

(7) Technotes:技术文档。

8.2.3工具栏

ModelSim的工具栏如图8-2-2所示。从左到右依次为:打开、复制、粘贴、如何更新ModelSim、编译选定、编译全部、仿真、停止仿真、重新开始仿真、仿真步长、运行一步、继续运行、运行所有、单步执行、主程序的单步执行。

图8-2-2 ModelSim的工具栏

8.2.4 状态栏

ModelSim的状态条如图8-2-3所示,其中Project后面为当前工程的名称,Now后面为当前仿真时间。最右边的为选定的仿真结构中变量。

图8-2-3 ModelSim的状态栏

8.3 从一个例子开始学习ModelSim

前面两节简要介绍了有关ModelSim的安装以及用户界面的功能,初学者可能会觉得又很多名词看不懂,这一节我们来从一个简单的例子学习ModelSim的简单的使用。学完本节你会发现ModelSim不仅好用,而且易用。

这一节我们使用的例子是一个分频电路的设计。所谓分频电路是将较高频率的时钟分频,得到较低频率的时钟,分频电路的使用较为广泛,例如,我们要编写一个显示时间的电路就需要一个分频器,将晶振的频率分频得到1Hz的时钟信号。分频有几种方法,对于较为规则的分频,如2分频、4分频、8分频等可以调用ISE本身的库函数来实现,对于较不规则的分频,我们也有两种方法,一种是利用计数器的某一位来作为分频输出,一种是

计数器计数到某一数值时,分频时钟信号翻转来实现分频。两种方法的可以从其仿真结果得到。之所以选择这个例子,是因为这里例子有实用价值并且设计本身简单,仿真也较为简单。好了,下面我们开始我们的设计。

8.3.1 图形界面对设计进行仿真

考虑到初学者,这里的讲述较为详细,初学者可以按照如下步骤开始:

1、运行ModelSim,方法是点击开始->程序->ModelSim XE II 5.7c->ModelSim或

双击桌面上的快捷方式,会出现如图8-3-1所示的界面,如果上一次使用

ModelSim建立过工程,这时候会自动打开上一次所建立的工程;

图8-3-1 ModelSim开始界面

2、点击File->New->Project,会出现如图8-3-2所示的界面,在Project Name中

我们输入建立的工程名字为DivClkSimu,在Project Location中输入工程保存

的路径为D:/yuProj/modelsim/DivClk,注意ModelSim不能为一个工程自动建

立一个目录,这里我们最好是自己在Project Location中输入路径来为工程建

立目录,在Default Library Name中为我们的设计编译到哪一个库中,这里我

们使用默认值,这样,在我们编译设计文件后,在Workspace窗口的Library

中就会出现work库。这里我们输入完以后,点击OK;

图8.3.2 新建工程窗口

3、这时有对话框如同8-3-3所示,提示我们给定的工程路径不存在,是否建立该

路径,我们的目的就是为工程建立一个新目录,因此,点击确定;

图8-3-3 确认建立新的工程目录

4、这时候出现如同8-3-4所示的界面,可以点击不同的图标来为工程添加不同的

项目,点击Create New File可以为工程添加新建的文件,点击Add Existing File

为工程添加已经存在的文件,点击Create Simulation为工程添加仿真,点击

Create New Folder可以为工程添加新的目录。这里我们点击Create New File;

图8-3-4 为工程添加项目

5、出现界面如图8-3-5所示,我们在File Name中输入DivClkHDL作为文件的

名称,Add file as type为输入文件的类型为VHDL、Verilog、TCL或text,这

里我们使用默认设置VHDL,Folder为新建的文件所在的路径,Top Level为

在我们刚才所设定的工程路径下。点击OK;并在Add items to the Project窗

口点击Close关闭该窗口;

图8-3-5 为工程添加新文件

6、这时候在Workspace窗口中出现了Project选项卡,在其中有DivClkHDL.vhd,

其状态栏有一个问号,表示未编译,我们双击该文件,这时候出现窗口

edit-DivClkHDL.vhd的编辑窗口,在其中我们输入我们的设计文件如下:library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity divclk1 is

Port ( clk : in std_logic;

divclk : out std_logic);

end divclk1;

architecture Behavioral of divclk1 is

signal counter : std_logic_vector(4 downto 0):="00000";

signal tempdivclk: std_logic:='0';

begin

process(clk)

begin

if clk'event and clk='1' then

then

if(counter>="11000")

counter<="00000";

tempdivclk;

tempdivclk<=not

else

counter<=counter+'1';

if;

end

end if;

end process;

divclk<=tempdivclk;

end Behavioral;

7、点击File->Save,并退出该窗口(File->Close);

8、在WorkSpace窗口的DivClkHDL.vhd上点击右键,选择Compile->Compile

All,如同8-3-6所示;

图8-3-6 编译设计中的文件

9、在脚本窗口中将出现一行绿色字体Compile of DivClkHDL.vhd was

successful.,说明文件编译成功,在该文件的状态栏后有一绿色的对号,表示

编译成功;

10、下面我们开始仿真,点击菜单Simulate->Simulate,会出现如同8-3-7所示的

界面,我们展开Design选项卡下的work库,并选中其中的behavioral,这是

在Simulate中出现了work.divclk1(behavioral)表示我们所要仿真的对象,

Resolution为仿真的时间精度,这里我们使用默认值,点击OK;

图8-3-7 选择仿真对象

11、为了观察波形窗口,我们点击菜单View->Wave;

12、这时候出现的Wave窗口为空,里面什么都没有,我们要为该窗口添加我们

需要观察的对象,首先在主窗口而不是波形窗口中点击View->Signals打开信

号列表窗口如图8-3-8所示,在改窗口中点击Add->Wave->Signals in Design,

这时候在波形窗口中就可以看到这些信号了;

图8-3-8 信号列表窗口

13、下面我们就开始仿真了,在主窗口中输入命令对信号进行驱动,首先我们为

时钟信号输入驱动:force clk 0 0 ,1 10000 -r 20000其中force为命令,clk表

示为clk信号驱动,0 0表示在零时刻该值为0,1 10000表示在10ns处值为1,

-r 20000表示从20ns处开始重复(repeat),可以看出我们这里的输入时钟为

50MHz,即周期为20ns;

14、以十进制查看counter信号波形,在波形窗口中,右键点击counter信号,点

击Radix->Decimal,该信号的值就以十进制显示了;

15、开始仿真,在主窗口中输入run 3us,表示运行仿真3微秒,这时候如果你的

机器配置较低那就要等几分钟时间了,这时候你可以看看CPU的利用率一直

为100%,仿真是比较占资源,并且以后对波形的操作机器反应也很慢,如

果仿真很慢你可以看看状态栏的当前仿真时间是多少;

16、这时候点击按钮(在当前波形窗口中显示所有波形),点击可以在波形

窗口添加竖线,点击可以调整选定竖线在选定信号的变化处,调整完毕,

我们可以在波形窗口看到如图8-3-9所示的窗口,可以看到分频得到的时钟占

空比为1(即一个周期内容为1时间等于波形为0的时间),分频后周期为1us;

图8-3-9 仿真波形窗口

17、退出仿真,在主窗口中点击Simulate->End Simulation,会出现对话框,提示

我们是否确认退出仿真,我们点击是退出仿真;

18、仿真结果分析,这里我们的输入时钟为50MHz,周期为20ns,通过分频语句

得到频率为1MHz,周期为1us的时钟,使用时可以调整分频语句

if(counter>="11000") then中的值及位宽来调整分频后的时钟频率。设我们需

要从周期为T(ns)的时钟得到周期为X(ns)的脉冲,可以用如下的方法计

算出此处应有的值: ((X/T)/2)-1,例如此处我们要从周期为20ns的时钟得到

周期为1000ns(1us)的脉冲,((X/T)/2)-1=((1000/20)/2-1)=24=(11000)Bin因

此可以得到该式中的值。

8.3.2 使用命令行方式对设计进行仿真

在这一小节里我们主要通过在主窗口中输入命令行来进行仿真,并不是所有的操作都是用命令行方式来实现的。我们所设计的例子是另外一种分频方式,即使用计数器的某一位作为分频得到的时钟。我们可以按照如下步骤来实现。

1、新建工程DivClk2Proj,打开ModelSim,点击File->New->Project,在工程名

中输入DivClk2Proj,在工程保存路径中输入D:/yuProj/modelsim/DivClk2,点

击OK,并在随后出现的对话框中点击确定来确认建立该目录;

2、在随后出现的Add items to the Project窗口中,点击Creat New File,出现Create

Project File窗口,我们点击Browse找到我们刚刚建立的文件夹,并输入文件

名,之后,在File Name框中应为D:/yuProj/modelsim/DivClk2/DivClk2HDL,

选择Add file as type为VHDL,Folder为Top Level,点击OK,并点击Add items

to the Project窗口中的Close来将其关闭;

3、在主窗口中双击Workspace窗口中DivClk2HDL.vhd,出现编辑窗口,在窗口

中输入如下代码:

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity divclk1 is

Port ( clk : in std_logic:='0';

divclk : out std_logic);

end divclk1;

architecture Behavioral of divclk1 is

signal counter : std_logic_vector(5 downto 0):="000000";

begin

process(clk)

begin

if clk'event and clk='1' then

then

if(counter>="110001")

counter<="000000";

else

counter<=counter+'1';

if;

end

if;

end

end

process;

divclk<=counter(5);

end Behavioral;

4、保存该文件并编译,方法同8.3.1,在该文件上点击右键选择Compile

->Compile All;

5、运行仿真,在主窗口输入命令:vsim work.divclk1,注意此处的divclk1表示

设计中的实体名;

6、以下的仿真同8.3.1节,为时钟信号添加驱动,输入命令:force clk 0 0,1 10000

-r 20000,将仿真时钟设为50MHz;

7、打开波形窗口,输入命令:view wave,这时会看到空的波形窗口已经打开;

8、为波形窗口添加信号,输入命令:add wave -hex *,这里的*表示添加设计中

所有的信号,-hex表示以十六进制来表示波形窗口中的信号值;

9、开始仿真,输入命令,run 3us,这时候在波形窗口中出现仿真波形,调整窗

口大小,并添加鼠标线,得到如图8-3-10所示的波形窗口;

图8-3-10 仿真波形

10、退出仿真,输入命令:quit –sim。

11、仿真结果分析,这里我们的输入时钟为50MHz,周期为20ns,分频得到的时

钟周期为1us,占空比不为1。使用时可以调整分频语句if(counter>="110001")

then中的值及位宽来调整分频后的时钟频率。设我们需要从周期为T(ns)

的时钟得到周期为X(ns)的脉冲,可以用如下的方法计算出此处应有的值:

(X/T)-1,例如此处我们要从周期为20ns的时钟得到周期为1000ns(1us)的

脉冲,(X/T)-1=(1000/20)-1)=49=(110001)Bin因此可以得到该式中的值。8.4 使用Testbench和TEXTIO对设计进行仿真

在上一节中,我们对使用ModelSim进行设计仿真有了一定的认识,这一节我们使用较为高级的仿真方式:TestBench和TEXTIO来进行设计仿真。TestBench可以理解为一个

平台,该平台包含待仿真的模块,具体一点是TestBench为一个电路板,在该电路板中包含了我们设计的用HDL语言描述的电路,这块电路板与外界没有任何的接口,其功能仅仅是仿真测试我们设计电路,我们可将设计的电路中的端口的信号描绘出来,进行仿真分析。也许看到这里你还是不很明白,这不要紧,看完后面一个例子就很清楚了。TEXTIO是VHDL 标准库STD中的一个程序包(Package),它提供了VHDL与磁盘文件直接访问的桥梁,我们可以利用它来读取或写入仿真数据到磁盘中的文件,TEXTIO的使用是通过TestBench 来进行的,即我们在TestBench中可以调用TEXTIO进行仿真,下面我们就介绍两者的使用。

8.4.1 使用TestBench对设计进行仿真

这里我们先看一个例子,我们的设计同上一节,即设计一个分频模块,其源代码如8.3.2节所述。这里我们为其编写一个TestBench,代码如下:

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

USE ieee.numeric_std.ALL;

ENTITY divclk1_tb IS

END divclk1_tb;

ARCHITECTURE behavior OF divclk1_tb IS

COMPONENT divclk1

PORT(

clk : IN std_logic;

divclk : OUT std_logic

);

END COMPONENT;

SIGNAL clk : std_logic:='0';

SIGNAL divclk : std_logic;

BEGIN

uut: divclk1 PORT MAP(

clk => clk,

divclk => divclk

);

clk<= not clk after 10 ns;

END;

下面我开始在ModelSim中使用TestBench对设计进行仿真;

1、打开ModelSim,新建工程TestBenchTest;

2、将8.3.2节的分频模块设计文件添加到当前工程中,如果你不知道怎么添加,方法

modelsim使用 + 前仿真 + 后仿真 + verilog

Modelsim 6.0 使用教程 1. Modelsim简介 Modelsim仿真工具是Model公司开发的。它支持Verilog、VHDL以及他们的混合仿真,它可以将整个程序分步执行,使设计者直接看到他的程序下一步要执行的语句,而且在程序执行的任何步骤任何时刻都可以查看任意变量的当前值,可以在Dataflow窗口查看某一单元或模块的输入输出的连续变化等,比quartus自带的仿真器功能强大的多,是目前业界最通用的仿真器之一。 对于初学者,modelsim自带的教程是一个很好的选择,在Help->SE PDF Documentation->Tutorial里面.它从简单到复杂、从低级到高级详细地讲述了modelsim的各项功能的使用,简单易懂。但是它也有缺点,就是它里面所有事例的初期准备工作都已经放在example文件夹里,直接将它们添加到modelsim就可以用,它假设使用者对当前操作的前期准备工作都已经很熟悉,所以初学者往往不知道如何做当前操作的前期准备。 2.安装 同许多其他软件一样,Modelsim SE同样需要合法的License,通常我们用Kengen产生license.dat。 ⑴.解压安装工具包开始安装,安装时选择Full product安装。当出现Install Hardware Security Key Driver时选择否。当出现Add Modelsim To Path选 择是。出现Modelsim License Wizard时选择Close。 ⑵.在C盘根目录新建一个文件夹flexlm,用Keygen产生一个License.dat,然后 复制到该文件夹下。 ⑶.修改系统的环境变量。右键点击桌面我的电脑图标,属性->高级->环境变量-> (系统变量)新建。按下图所示内容填写,变量值内如果已经有别的路径了, 请用“;”将其与要填的路径分开。LM_LICENSE_FILE = c:\flexlm\license.dat

Quartus ii 10.0教程(包含modelsim仿真)

Quartus ii 10.0教程 说明 本文的部分章节,来源于本人翻译的Terasic DE2-115的英文入门文档。 平台 硬件:艾米电子EP2C8-2010增强版套件 软件:Quartus II 10.0 + ModelSim-Altera 6.5e (Quartus II 10.0) Starter Edition 内容 ?典型的CAD流程 ?开始 ?新建工程 ?录入Verilog设计 ?编译设计 ?引脚分配 ?仿真设计电路 ?编程及配置到FPGA器件 ?测试设计电路 典型的CAD流程 计算机辅助设计(CAD)软件,使得运用可编程逻辑器件实现所需逻辑电路,变得容易。比如现场可编程门阵列(FPGA)。典型的FPGA CAD设计流程如图1所示。

图1 典型的FPGA CAD设计流程 CAD流程包含以下步骤: ?设计输入——所需电路可通过原理图方式或硬件描述语言方式(如Verilog或VHDL)进行设计。 ?综合——输入的设计被综合进入由逻辑元素(LEs,FPGA芯片提供)组成的电路中。 ?功能仿真——综合电路被测试以验证其功能是否正确,次仿真不考虑时序因素。 ?布局布线——CAD Fitter工具决定网表中定义的LEs如何布置成FPGA芯片中的实际LEs。 ?时序分析——分析已布局布线电路中的不同路径的传播延迟,用以指示所需电路的性能。 ?时序仿真——测试已布局布线电路,验证其是否在功能和时序上都正确。 ?编程及配置——设计的电路,通过编程配置开关,被实现到一个物理的FPGA芯片。 配置开关用于配置LEs和建立所需线路连接。 本指南介绍Quartus II软件的基本特征。展示如何使用Verilog硬件描述语言来设计和实现电路。使用GUI来实现Quartus II指令。通过本份指南,读者将学习到: ?新建工程 ?使用Verilog代码录入设计 ?将综合的电路布局到Altera FPGA ?分配电路的输入输出到FPGA上的指定引脚 ?仿真设计电路 ?编程配置艾米电子EP2C8核心板上的FPGA芯片 1. 开始 在Quartus II中设计的每个逻辑电路或子电路,叫做一个工程。软件每次运行一个工程,并将所有信息保存在单一文件夹中。欲开始一个新的逻辑电路设计,第一步就是新建一个文件夹来保存文件。为了保存本指南的设计文件,在D盘新建introtutorial文件夹。指南者运行的范例为一个简单的双路灯控电路。 打开Quartus II软件,将看到类似于图2的画面。该显示画面包括若干窗口,用户可使用鼠标选择,以访问Quartus II软件的相关功能。Quartus II提供的大多数命令都可用菜单形式来访问。例如,在图2中,在File标签下点击左键,可打开如图3所示的菜单。用左键单击Exit可退出Quartus II软件。

modelsim仿真小结

Modelsim仿真小结 Modelsim的基本仿真流程大致分以下几个步骤:建库、编译工程、前后仿真、调试等。Modelsim仿真既可以在modelsim界面操作,也可以用do文件实现,这里结合学习的教程、网上看到的资料,和实际遇到的一些问题,分别做一整理小结。 1.建库 建库包括Altera库和Xilinx库,同时都包括Verilog和VHDL。这里只建了Verilog库,VHDL和Verilog步骤相同。 对于Altera库主要包括lpm元件库、Mega_Function库atera_mf、altera原语库altera_primitive和各器件系列模型库。前三种是调用altera模块的必备库,第四种是进行综合后功能仿真和布线后时序仿真需要的库,和器件系列有关,只选对应系列即可。 Altera库创建和编译步骤如下: a)在Modelsim安装目录下新建文件夹,命名altera_lib,以存放编译后的库文件,可 以在altera_lib下新建Verilog和VHDL两个子文件夹,分别存放Verilog和VHDL库。 b)打开Modelsim,新建Library,file ->new->library .. c)如下图,创建lpm库,路径E:\modeltech_10.1a\altera_lib\Verilog\lpm

d)添加库文件,并编译,compile -> compile …,出现compile source files窗口, library 指定到lpm下,查找范围,选quartus安装目录下… eda\sim_lib目录里的仿真原型文件:220model.v ,点c ompile ,点done。 到此,lpm库建立完毕。 e)同理,建立altera_mf库添加altera_mf.v ,建立primitive库添加altera_primitive.v 建立各系列的模型库,命名可用系列名加_ver“xxx_ver”,也可随意吧,添加各系列的xxx_atoms.v。 这里,也可以把以上库放在一个文件夹,这样做简单,一次就搞定,分开也就是条理清楚,没人去看,所以没必要。 f)修改modelsim.ini文件,为的是让modelsim能自动map到已经编译的这些库上。 先去掉只读属性,在[Library]和[vcom]之间加上:库名=库路径[绝对路径或者相对路径],相对路径是相对于modelsim安装路径,modelsim安装路径用$MODEL_TECH 表示。 这里所有库都放在E:\modeltech_10.1a\altera_lib下,库名是altera_lib,这里只添加一句:altera_lib = E:\modeltech_10.1a\altera_lib g)保存退出,改回modelsim.ini只读属性,防止乱改。至此altera库建立完毕。 Xlinx库创建和编译步骤如下: 相比altera,xilinx建库很方便。xilinx有批处理命令,直接在console命令窗口,输入compxlib命令,调出编译库的窗口,先改掉modelsim安装目录下modelsim.ini只读属性。设置如下图:

ModelSim的前后仿真(Quartus)

利用Quartus5.0实现功能仿真 1)打开一个工程文件。 2)打开Settings设置栏,选择Fitting Settings下的Simulator栏。在右边出现的设置栏中将 “Simulation Mode”的下拉菜单选择“Functional”,即可以实现软件下的功能仿真。(下拉菜单中有“Functional”、“Timing”和“Timing using Fast Timing Model”,分别代表可以在Quartus软件下实现功能仿真,时序仿真和快速时序仿真。最后一项一般不选,如果在Settings->Timing Requirement->More Settings下“Report Combined Fast/Slow Timing” 选项设为“On”,就可以选择最后一项。编译的报告里也会分别列出最快和最慢的时序报告。) 3)选择“Processing”菜单下的“Generate Functional Simulation Netlist”命令,否则将无法 启动仿真。 4)新建一个波形仿真文件,文件后缀名为.vwf。选择File菜单下的New->Other Files->Vector Waveform File。如下图所示,左边空白栏处是节点名的列表区,右边空白栏处是仿真波形的显示区。波形编辑窗口默认时间为1us,如果想改变仿真时间,可以选择Edit菜单下End Time,在弹出的对话框中选择需要的时间。将新建的波形仿真文件保存下来。

5)将需要仿真的信号加入波形编辑窗口。在列表区任一位置双击或者点击右键选择“Insert Node or Bus…”,弹出的对话框点击“Node Finder”按钮。在“Node Finder”界面中点击“List”按钮,有关信号的列表会出现在界面的左边,双击需要观察的信号加入至界面右边。如果工程中用到了很多信号,在左边列表中也会显示很多(Named编辑框默认的是*通配符),可以在Named编辑框中添加需要的信号名称实现模糊查找。界面中“Filter”下拉框中默认的是“Pins: all”,也就是说将要列出的信号都是IO管脚。如果需要观察一些内部信号,可以改变下拉框的参数,比如“Registers: Pre-Synthesis”。下图显示了仿真信号加入波形编辑窗口的情况。对于有些总线信号可以改变其显示的进制格式,比如二进制、八进制、十进制和十六进制。在列表中对应信号点击右键选择 “Properties”,弹出的对话框中选择“Radix”下拉框实现进制的转换。

ModelSim作布局布线后仿真的库问题

ModelSim作布局布线后仿真的库问题 Modelsim是目前最流行的应用最广泛的FPGA仿真器,是Mentor Graphics的子公司Model T echnology开发的。因为Modelsim好学易用,调试方便,仿真速度快,功能强大,所以很多芯片厂商的开发系统都OEM Mentor Graphics公司的Modelsim仿真器,包括Xilinx,Alter a,Lattice和Actel等。Modelsim是一个单内核仿真器,同一个内核可以进行VHDL仿真、V erilog仿真和VHDL/Verilog混合仿真;支持所有的VHDL和Verilog标准;采用直接编译技术 (Direct-Compiled),大大提高了HDL编译和仿真速度。 Modelsim支持三个层次的仿真:RTL仿真、综合后仿真和布局布线后仿真。为了加快仿真速 度,一般情况下设计中调用的库都是已经进行编译过的,然后对设计进行仿真,此时仿真器直接调用库中已经编译过的单元,而不是再次对设计中的单元模块进行编译。所以如果要对设计进行综合后仿真和布局布线后仿真,必须先对设计中调用的库进行编译处理。这也是本文的重点内容。因为每个厂商的库不一样,而且同一个厂商,不同的器件库就有可能不同,所以下面就目前国内比较常用的几个公司的芯片的库问题分别进行探讨。1.Xilinx公司的器件: 其库的处理方式有两种,一种是在Xilinx的网站上,我们可以下载到压缩文件xilinx_lib _4.zip,解压缩后有一个xilinx_lib_4.tcl(将来的版本可能会升级)。单独运行Models im,然后在工具菜单中有一项是执行宏(这里Modelsim5.5 和5.6、5.7有一些差异,不过在5.5中仍可以找到执行宏Execute Macro),运行xilinx_lib_4.tcl后可以看到。 你可以根据你的厂商软件版本选择,指定Xilinx 的安装路径,在Install Path中指定你编 译后的数据将要放的目录位置(可以是任何一个目录,最好是设计者数据盘中的某个目录,因为库编译一次就可以了,重新安装软件不需要重新编译库)。对于Xilinx作布局布线后仿真只需要simprim库即可;如果要作综合后仿真,就需要编译Unisim库;如果设计中调用了 CoreGen产生的核就需要编译CoreGen库。这应该根据设计者的具体情况进行选择。 如果编译完了后,在Modelsim中库会自动变为标准库(注意:Xilinx提供的早期脚本文件作不到这一点)。所谓标准库,也就是说这个库会和IEEE这些库一样,当Modelsim启动时,这 些库会自动加载,里面的单元在VHDL代码中可以随意调用。比如:在布局布线后的VHDL 文 件中大家可以看到Library simprim这样的语句。当然也可以自己手动改变这些库的性质,只用修改在Modelsim安装路径下的Modelsim.ini文件即可。比如:修改后的Modelsim.ini 可以看到为 [Library] std = $MODEL_TECH/../std ieee = $MODEL_TECH/../ieee verilog = $MODEL_TECH/../verilog std_developerskit = $MODEL_TECH/../std_developerskit synopsys = $MODEL_TECH/../synopsys modelsim_lib = $MODEL_TECH/../modelsim_lib

modelsim完美教程

准备事项 1.ModelSim试用版下载 2.范例程序下载(史丹佛大学一门课的期末专题Implememtation of Viterbi Decoder:constrain length K=3, code rate R=1/2, register-exchange) 整个project共含7个Verilog程序:system.v (top-level) |-- clkgen.v |-- chip_core.v |-- controller.v |-- spu.v |-- acs4.v |-- acs1.v (或是另外一个Verilog的简单例子,可以从C:\ SynaptiCAD\ Examples\ TutorialFiles\ VeriLoggerBasicVerilo gSimulation\ add4.v and add4test.v) (或是另外一个VHDL的简单例子,可以从C:\ Modeltech_5.7e\ examples\ adder.vhd and testadder.vhd) ModelSim PE /LE /SE 差别在哪? 本篇文章内容主要在教导软件使用,以Verilog程序为范例。假设各位读者已经熟悉Verilog,废话不多说,让我们马上来见识一下ModelSim ... 快速上手四部曲:建立Project、引进HDL Files、Compile、模拟(Simulate/Loading and Run) 1.建立一个新的Project 1-1 第一次执行程序时,可以从[开始] \ [程序集] \ ModelSim SE \ ModelSim;或是执行ModelSim在桌面的快捷方式

Modelsim常见问题

Modelsim 常见问题 Q1:设计中用到厂商提供的IP时,编译时出现“(vopt-3473) Component instance "XXXX" is not bound.” A1:编译时,需要把所需的Libray添加到编译命令中,如“vsim -L C:/Modeltech_6.2b/xilinx_lib/XilinxCoreLib ......”。 Q2:vhdl和verilog混合仿真时,vhdl和verilog代码中会调用同一个组件,但是他们分别来自不同的library,如unisim和unisim_ver,它们相互并不通用,及verilog不能调用unisim_ver的组件,会造成组件找到却没办法绑定的错误,如:“Port 'Q' not found in the connected module”? A2:当仿真时,由于vhdl代码中会指定从那个库文件里面提取,而verilog代码中没有,所以使用vsim命令时,把verilog所需的库放在第一个,而后放vhdl 所需的库,这样,verilog会从unisim_ver代码开始查询组件。 Q3:"ERROR: ..//: Unresolved reference to 'glbl' in 'glbl.GSR'" A3:在仿真工程中添加glbl.v文件(一般在~/ise/verilog/src/glbl.v,同理Quartus),把testbench.v和glbl.v同时选中后进行仿真,即vsim -t 1ps -L unisims_ver work.glbl work.tb。

ModelSim入门指导答辩

QUESTA-SIM(QuestaSim)10.2入门指南平台 软件:Questa-Sim 10.2 版本Starter Edition,也适用于高版本的ModelSim软件。内容 一. 设计流程 典型设计流程包括如下所示: (1)设计输入 设计的行为或结构描述 (2)RTL仿真(ModelSim) 功能仿真 验证逻辑模型(没有使用时间延迟) 可能要求编辑设计 (3)综合 把设计翻译成原始的目标工艺 最优化——合适的面积要求和性能要求 (4)布局和布线 映射设计到目标工艺里指定位置 指定的布线资源应被使用 (5)门级仿真(ModelSim) 时序仿真 验证设计一旦编程或配置将能在目标工艺里工作 可能要求编辑设计 (6)时序分析 (7)验证合乎性能规范 可能要求编辑设计 (8)版图设计 (9)仿真版图设计 (10)在板编程和测试器件 使用QuestaSi/ModelSim仿真的基本流程为: 图1.1 使用QuestaSim仿真的基本流程 2 开始 1.1 新建工程 打开QuestaSim后,其画面如图2.1所示。

图2.1 QuestaSim画面 1. 创建工作目录E:/QuestaSim/, 在其路径下创建子文件夹/ip、/prj、/rtl、/tb, prj是QuestaSim工程主文件夹,ip是仿真模型目录,rtl 是代码目录,tb是testbench目录。 2. 选择File>New>Preject创建一个新工程。打开的Create Project对话框窗口,可以指定工程的名称、路径和缺省库名称。一般情况下,设定Default Library Name为work。指定的名称用于创建一个位于工程文件夹内的工作库子文件夹。该对话框如图2.2所示,此外还 允许通过修改初始化文件QuestaSim.ini文件来映射库设置。 图2.2 创建工程的对话框 2. 设置Project Name为BG0806,Project Location为E:/QuestaSim/prj, 勾选Copy Library Mappings ,点击OK。 3. 出现Add Items to the Project的对话框,如图2.3所示,

modelsim仿真详细过程

由于我们只需要了解仿真的完整过程,所以不需要自己写源文件和测试文件(也称为testbench)。一下就是简单的源文件和测试文件(亲自测试过)。 //源文件 module compare(equal,a,b); input a,b; output equal; assign equal=(a==b)?1:0; endmodule //测试文件 `timescale 1ns/1ns `include"./compare.v" module comparetest; reg a,b; wire equal; initial begin a=0; b=0; #100 a=0;b=1; #100 a=1;b=1;

#100 a=1;b=0; #100 $stop; end compare compare1(.equal(equal),.a(a),.b(b)); endmodule 有了源文件和测试文件下面就开始用modelsim进行仿真了。 步骤一:新建工程和.v文件(也就是源文件和测试文件) 打开modelsim软件,点击file,选择new—>project 然后就会弹出下面窗口: 然后在project name那一栏写上工程名(随便去,一般是字母),在project location选择工程路径(路径最好没有中文,听说的),然后点OK。进入下个界面:

然后点击小框里面的“create new file”.弹出界面: 在file name中写下源文件名,由于这是比较两数的大小,我取为:compare。在“add file as type”中选择verilog,点OK,然后有:

ModelSim-Altera_6.5仿真入门教程

平台 软件:ModelSim-Altera 6.5e (Quartus II 10.0) Starter Edition 内容 1 设计流程 使用ModelSim仿真的基本流程为: 图1.1 使用ModelSim仿真的基本流程 2 开始 2.1 新建工程 打开ModelSim后,其画面如图2.1所示。

图2.1 ModelSim画面 1. 选择File>New>Preject创建一个新工程。打开的Create Project对话框窗口,可以指定工程的名称、路径和缺省库名称。一般情况下,设定Default Library Name为work。指定的名称用于创建一个位于工程文件夹内的工作库子文件夹。该对话框如图 2.2所示,此外还允许通过选择.ini文件来映射库设置,或者将其直接拷贝至工程中。

图2.2 创建工程的对话框 2. 按照图2.3所示,设置Project Name为LED_FLOW,Project Location为D:/led_flow。 图2.3 输入工程信息 当单击OK按钮后,在主体窗口的下方将出现Project标签,如图2.4所示。 图2.4 Project标签

3. 之后,将出现Add Items to the Project的对话框,如图2.5所示。 图2.5 在工程中,添加新项目 2.2 在工程中,添加新项目 在Add Items to the Project对话框中,包括以下选项: ?Create New File——使用源文件编辑器创建一个新的Verilog、VHDL、TCL或文本文件?Add Existing File——添加一个已存在的文件 ?Create Simulation——创建指定源文件和仿真选项的仿真配置 ?Create New Folder——创建一个新的组织文件夹 1. 单击Create New File。打开图 2.6所示窗口。 图2.6 创建工程文件夹 2. 输入文件名称:LED_FLOW,然后选择文件类型为Verilog。

modelsim问题综述

MODELSIM问题综述 ——阿泽成长路 鉴于最近一直困于modelsim se 10.0c(win32/win64)的安装及破解,在借鉴了度娘提供的好多零散的信息后,今天好好归纳总结下权当做个备忘,也顺便给电子信息、通信专业及做数字系统设计的同学分享我的经验。 安装过程很常规,一直狂击next就ok,只是在安装过程中会产生一个选项(是否使用硬件级别证书),选择yes,即要求重新启动(注意安装路径不允许有中文与下划线)完成安装,度娘也说可以点no,总之对于软件的破解不会产生影响,至于后期的使用还未见太多端倪。在我鼓捣的好多次中有过重启,也有点no,应该不会影响,但我建议还是照软件原意选择安装,值得一提的是安装过程还比较漫长需耐心等待。 在安装后就是软件的破解了。 1.解压modelsim-gcc-4. 2.1-mingw32vc9.zip/modelsim_se_10.0c.rar,然后将解压后的文件()覆盖(粘贴)到安装目录下的win64/win32目录下,如果win64/win32目录下已存在就选择替换,没有就直接保存。 2.打开patch_dll.bat同是在弹出的选项中选择运行MentorKG.exe,此时请耐心等待,正常情况下会弹出LICENSE.TXT文件,将其保存到modelsim10.0c安装目录下(与win64/win32同级存在!!!);然而也可能遇到运行patch_dll.bat但得不到LICENSE.TXT的情况这时就只有从外部直接复制一个LICENSE到安装目录下,至于这个LICENSE的得到就只有从别人那儿copy了。 3.以上步骤之后需要修改环境变量。右键计算机-->属性-->高级系统设置-->环境变量,之后在系统变量中寻找E:\modeltech64_10.0c\license.txt(安装目录因人而异),选择编辑在原来值后加分号,再将变量值改为modelsim10.0c的安装目录+license.txt ,之后一路ok;但如果系统变量中无E:\modeltech64_10.0c\license.txt 则需要新建变量名:LM_LICENSE_FILE,变量值同上,之后ok。 4.运行modelsim破解安装完毕。 另外:在做模拟过程中也许会出现object栏无信号&wave无波形的情况,解决方案如下:现象:仿真时没有“object”,没有波形。 原因:软件本身的优化问题 解决方法:在安装目录下如C:\Modeltech_6.2b目录下找到modelsim.ini文件,将其属性改为可写即将原来选中的“可读”去掉(这一步可能没有,视情况而定)。打开该文件将里面的VoptFlow = 1改为VoptFlow = 0。值得一提的是,如果在修改modelsim.ini之前建立的project,在修改之后仍然会出现没有波形的情况,这时你只需要建立一个新的project 把你的代码移过去就行了。因为在修改modelsim.ini之前建立的project还是默认VoptFlow = 1。 尽情享用吧!!!

ModelSim软件仿真步骤教程

使用ModelSim模擬驗證HDL code 1.在模擬前先準備好我們要模擬的電路檔案(Verilog HDL,TestBench,…) 2. 打開ModelSim,新建一個Project,鍵入Project name 按OK。此處我們的library name 為default library name “work”不必更改。 3.然後再加入我們所要模擬的電路檔案(若尚未準備,可開啟新檔案再將code 鍵入)選Add Existing File,將我們已編輯好的檔案加入。 將我們所需要的檔案加入,按Browse選擇我們所需檔案count.v,

count_test.vt),按下OK。 再將先前所開啟的增加檔案的視窗關閉,按close。 4.按下compile all。

Compile成功沒有顯示出錯誤訊息, 則開始模擬波形 5.按下Simulation, 選擇檔案所在的Library (work), 點選TestBench的Module Name t_Gap_finder 按OK 6.承接上步驟將會跳出以下視窗,若要將所有訊號加入波型中觀察則選擇在 testbench的module name: count_tst按滑鼠右鍵選擇→ Add → Add to Wave。

7.在波型畫面按下Run All開始模擬 跑完後會跳出下面視窗選擇否則可觀察模擬波形,若按下是則會將ModelSim關閉。

8.觀察波形圖是否與功能符合,若與設計不符則修改設計並重複執行Step 4到 Step 8 Testbench語法 `timescale 1 ps/ 1 ps 前面的1ps代表程式中最小的時間單位 後面的1ps代表運算的精準度

Modelsim 仿真步骤总结

Modelsim 仿真步骤总结 Modelsim 仿真主要有以下三个方面:各版本的方法大体一致。(1)建立库并映射库到物理目录; (2)编译源代码(包括testbench); (3)执行仿真; 下面具体演示每一步的操作方法及流程,为力求简洁,其中有多种操方法的只介绍一种。 一)建立库的演示: 步骤为——启动modelsim>点击file菜单>(Change Directory)>new>(project)>library.注括号内的步骤非必须。 1.1)启动modelsim; (1.2)点击file菜单,此时若需更改路径,可以点击其中的Change Directory.(注modelsim会自动默认路径。我们也可以在1.1步骤之前建立一个文件夹用于modelsim的工程,再将路径更改到我们新建的文件夹路径。)

(1.3)点击file子菜单中的new,选择project用于新建立一个modelsim工程。(虽然此步非必须,但是建立一个新工程有益 于接下来整个仿真文件的管理。)

1.4)点击file子菜单new,再点击new下的library,用于建立 一个库。(仔细观察1.3步,新建工程的同时亦可建立库)。 至此,modelsim仿真第一大步建立库的工作完毕。

二)编译源代码(包括testbench): 大家都已知道在quartus中编译源代码的方法,这里说明一下在modelsim中编译源代码及testbench的方法。 步骤为——建立一个新工程(同时建立库)后,会自动提示你四个选项。如图: 选create new file后提示对话框,(也可以在有源文件的情况下选择add existing file到工程中。例如我们用quartus写好文件后,可以用此方法将quartus中的文件添加到modelsim工程中来)让你命名你即将创建的新文件,完毕后,会自动出现一个空白的编辑窗口,在那里输入源代码和testbench。(提示:这样编写完后点保存,便可以直接保存到上面设臵好的work库中。比起另一种方法,不建工程直接建库,再通过菜单栏source添加源

QUARTUSⅡ10波形仿真(ModelSim)入门教程

QUARTUSⅡ10仿真(ModelSim)入门教程平台 软件:ModelSim-Altera 6.5e (Quartus II 10.0) Starter Edition 内容 1 设计流程 使用ModelSim仿真的基本流程为: 图1.1 使用ModelSim仿真的基本流程 2 开始 2.1 新建工程 打开ModelSim后,其画面如图2.1所示。 图2.1 ModelSim画面

1. 选择File>New>Preject创建一个新工程。打开的Create Project对话框窗口,可以指定工程的名称、路径和缺省库名称。一般情况下,设定Default Library Name为work。指定的名称用于创建一个位于工程文件夹内的工作库子文件夹。该对话框如图 2. 2所示,此外还允许通过选择.ini文件来映射库设置,或者将其直接拷贝至工程中。 图2.2 创建工程的对话框 2. 按照图2.3所示,设置Project Name为LED_FLOW,Project Location为D:/led_flow。 图2.3 输入工程信息 当单击OK按钮后,在主体窗口的下方将出现Create Project标签,如图2.4所示。 图2.4 Project标签 3. 之后,将出现Add Items to the Project的对话框,如图2.5所示。 图2.5 在工程中,添加新项目 2.2 在工程中,添加新项目 在Add Items to the Project对话框中,包括以下选项:

?Create New File——使用源文件编辑器创建一个新的Verilog、VHDL、TCL或文本文件 ?Add Existing File——添加一个已存在的文件 ?Create Simulation——创建指定源文件和仿真选项的仿真配置 ?Create New Folder——创建一个新的组织文件夹 1. 单击Create New File。打开图 2.6所示窗口。 图2.6 创建工程文件夹 2. 输入文件名称:LED_FLOW,然后选择文件类型为Verilog。 图2.7 输入工程文件信息 3. 单击OK,关闭本对话框。新的工程文件将会在工程窗口显示。单击Close,以关闭Add Items to the Project。 图2.8 新的设计文件LED_FLOW.v 4. 双击打开LED_FLOW.v文件(注意:若是Verilog文件已经关联了其他的文本编辑器,则双击后在关联的文本编辑器中打开)。 图2.9 LED_FLOW代码输入窗口 在LED_FLOW.v输入下面的测试平台代码:

Modelsim使用常见问题及解决办法

Modelsim使用常见问题及解决办法 在ISE启动modelsim时遇到问题 1。我在ISE中启动modelsim时出现了下面的错误 Loading work.tb_ic1_func # ** Error: (vsim-19) Failed to access library 'xilinxcorelib_ver' at "xilinxcorelib_ver". # No such file or directory. (errno = ENOENT) # ** Error: (vsim-19) Failed to access library 'unisims_ver' at "unisims_ver". # No such file or directory. (errno = ENOENT) # Loading work.fifoctlr_ic_v2 # ** Error: (vsim-19) Failed to access library 'xilinxcorelib_ver' at "xilinxcorelib_ver". # No such file or directory. (errno = ENOENT) # ** Error: (vsim-19) Failed to access library 'unisims_ver' at "unisims_ver". # No such file or directory. (errno = ENOENT) # ** Error: (vsim-3033) fifoctlr_ic_v2.v(126): Instantiation of 'BUFGP' failed. The design unit was not found. 是什么原因? “点到仿真模式,在source里面选中你建立工程选择的芯片,然后看Processes,点开,有个compile HDL simulation library,运行一下就OK了” 2.ISE用modelsim仿真提示:# ** Error: (vish-4014) No objects found matching '*'.结果仿真时老是报错: # ** Error: (vish-4014) No objects found matching '*'. # Error in macro ./test_top_tb.fdo line 10 # (vish-4014) No objects found matching '*'. # while executing # "add wave *" 解决办法,改modelsim.ini文件中的一个参数:VoptFlow = 0 # ** Error: (vish-4014) No objects found matching 'XXXX'. 在之前的设计里有一个信号XX, 并且保持在wave.do文件里 现在这个信号在你的设计你被去掉了,modelsim仍然调用旧的wave.do,找不到对应的信号XX, 就报错误这个错误可以忽略 3.当对IP核修改后,用Modelsim仿真显示:No entity is bound for inst 或CE is not in the entity。(CE是改动后添加的一个管脚),从而仿真无结果。 解决办法:首先选中该IP核的.xco文件点击右键->属性将属性改为"Synthesis/Imp + Simulation." 然后将其对应的.v或.vhd文件的属性也改为"Synthesis/Imp + Simulation." 4.启动modelsim后,没有出错,但是有warning:(vsim-3009) [TSCALE] - Module 'ODDR' does not have a `timescale directive in effect, but previous modules do.输入信号均正确,调用的IP core或原语的输出为高阻态。

modelsim仿真必会教程

Modelsim功能仿真新手教程 By wangjun850725@https://www.wendangku.net/doc/bd16361703.html, 操作系统:win7 软件版本:modelsim6.5se 本文只针对初学者,让他们少走点弯路,modelsim软件本身感觉还是比较难以使用的。本人才疏学浅,但有颗助人的心。大神请跳过,不要鄙视我。 如有错误,请不吝指点。 QQ群:41143927 建立工程 省略N字,这没有什么好说的。几乎所有的软件都是以工程为基础的。 添加设计文件 因为我已经编辑好了文件,所以直接添加已经存在的。没有人会用modelsim自带的编辑器来写程序(要是没有选择,我宁愿用记事本,如果你用了,我佩服你)。 编译文件 没有什么好说的,添加进去的文件全部编译就好了。 如果你看编译后的文件后面还有一个问号,你不爽,鼠标右键更新下就好了 开始仿真 Modelsim se版本是可以手动描绘激励波形的,但这种方法太笨,太烦,修改起来很不方便,所以直接放弃。

Simulate里有个start simulate,点开 这里有几点要说明下 1.要点开work库,找到你testbench对应的那个模块 2.Resolution选不选关系不大,如果你设计文件指定了仿真时间的话 3.Optimization,要把这个勾去掉,不然会优化掉很多信号,这里也坑了我很久。 功能仿真只要这么多,如果做后仿,library里要添加已经编译好的器件库,SDF里要添加.vo,.sdo文件 观察波形 添加信号到波形窗口的方法有很多,刚学手动添加,后来肯定是要在脚本里指定的,下面会有 首先要把设计中的信号添加到wave窗口里。

鼠标左键按住不放,将对应的模块拖到wave窗口里,这是最简单的办法。 如果设计的模块多了,每个模块的信号不能很好的被区分,就可以在每个模块的中间插入一个Divider,信号旁边右键就可以看到,最好给起个名字 如果你的模块层次非常的多,信号的路径名字就会占据本来就不大的屏幕时很不爽的。 菜单Wave‐>Wave preference‐>Display signal path里面改成1就可以了 运行仿真 在Transcript窗口里输入 Run 1ms 搞定,波形神马的就出现了。你要做的工作就是看波形是否是你想要的。

有关modelsim的问题汇总

问题一:编译xilinx仿真库 在网上搜了无数帖子,结合自己数小时的实践,终于搞定了Xilinx仿真库。 测试环境:Windows XP3,Xilinx ISE Suite 10.1,ModelSim SE 6.5c 使用ISE自带的库生成工具是最方便的方法。 首先打开ISE,在Edit->Preferences...->ISE General 的Intergrated Tools 的Model Tech Simulator中指定Modelsim.exe的实际安装路径。(在这里我的路径是D:\Work\modeltech_6.5c\win32\modelsim.exe,请根据自己的实际情况更改)。OK以后退出ISE。 然后到ModelSim安装目录下找到ModelSim.ini文件,右键将其只读属性去掉,确定。 按下WIN+R,输入compxlibgui后回车,这其实就是自带的工具Simulation Library Compilation Wizard。点击Select simulator,选中ModelSim。检查路径正确了以后选Next。再Next,建议再Next,或者根据自己的实际需要选择FPGA/CPLD的具体型号。继续Next,在Map only to existing pre-compiled libraries前打上勾,在Output Directory for modelsim.ini file using mapped libraries中选择modelsim安装根目录modelsim.ini所在的路径,这一步很重要。再点击Next就开始编译了。 最后把ModelSim.ini文件的只读属性改回去,万事OK…… 问题二: Hello all, Whenever I need to look at a filter output (or any DSP core), I used to define a real signal and assign it to what I want to examine, roughly something like this: dac_real_out <= hex2real(dac_holder, 12.0); where dac_holder is a std_logic_vector. It is much easier to look at an analogue signal waveform instead of tracing hex values word by word. This used to work quite alright using ModelSim XE edition. Now for some reason, it seems I can't get it to compile my design---I get the following error: # ** Error: (vcom-42) Unsupported ModelSim library format for "work". (Format: 3) My first question is: can I go around it as I've never encountered this before.

相关文档