想很多人跟我一样,被ModelSim的后仿真搞的头晕脑胀
ModelSim使用的一点心得- -

ModelSim使用的一点心得- -1、至今还没有弄明白为什么要用ModelSim,因为看波形Quartus II自带的工具就可以了啊。
2、我刚刚接触modelsim,我想大多数菜鸟跟我一样,看过如何使用ModelSim的介绍,说句实话,那些介绍写的都太过简单,仿佛大家都不屑写上一些比较“弱智”的步骤,恰恰就是这些看似累赘的步走,难为我好久。
教程上都写道,modelsim的简单使用方法如下:建立库- 影射库到物理目录- 编译代码- 启动仿真。
首先建立库就叫我头晕。
库的概念用在这儿实在不合适,把我吓坏了,也就没心思看下一步了。
在我看来,教程应该这么写:<1> 建立一个目录modelsimStudy。
用任何文本编辑器编辑一个简单的例子程序,比如计数器counter.vhd。
有clk、ena、reset输入,cnt作为输出。
<2> 打开Modelsim,首先create project,工程名随意取了,比如命名为test,目录设在modelsimStudy下,默认的库work不变(这样就不用管什么建立库之类的东西了)。
然后add existing file,把counter.vhd加入当前工程。
<3> 编译这个文件,通过之后,work下面会出现counter这个实体。
然后选中它,右键,simulate(左键双击也可)。
<4> ModelSim有很多窗口(新手就怕这个),一开始只要选择view下面的objects 和wave窗口就行了。
旧版的signal窗口在6.0的版本改名为Objects(这个我是摸索了好久才发现的,是不是太笨了?)。
wave窗口刚打开时是空的,需要在objects窗口的add -> wave -> signals in region。
这时,wave上就有clk\ ena \ reset等信号了。
<5> 我们给clk来个输入激励,在object窗口中选中clk,右键选clock,给它定义个时钟。
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安装。
当出现InstallHardware Security Key Driver时选择否。
当出现Add Modelsim To Path选择是。
出现Modelsim License Wizard时选择Close。
⑵.在C盘根目录新建一个文件夹flexlm,用Keygen产生一个License.dat,然后复制到该文件夹下。
⑶.修改系统的环境变量。
右键点击桌面我的电脑图标,属性->高级->环境变量->(系统变量)新建。
按下图所示内容填写,变量值内如果已经有别的路径了,请用“;”将其与要填的路径分开。
LM_LICENSE_FILE = c:\flexlm\license.dat⑷.安装完毕,可以运行。
【博友原创】modelsim三种仿真实验结果对比

【博友原创】modelsim三种仿真实验结果对比既然决定认认真真搞FPGA,学好modelsim,那么就一路坚持下去!首先,继续摸熟modelsim仿真。
今天摸清了用Modelsim做功能仿真,综合后仿真,时序仿真。
纪录下过程和对比下结果。
首先在前面的博客中,各种环境已经在前面搭建完毕,包括编译仿真库等,一会会有一个简单的各个仿真比较例子。
FPGA各种仿真概念(摘自CB书中)1.功能仿真(前仿真),验证逻辑功能,不用全编译,即ctrl+k 就可以了。
验证电路功能是否符合设计要求。
这个仿真一般是必须做的。
2.综合后的仿真,这个是FPGA综合产生的网表(会有门延时),一般是不用做的,这里要对比几个仿真结果的不同,也做一遍。
3.时序仿真,布局布线后的仿真,这个时候就包括了布线的延时,一般这个也需要做的。
偶然找到一张笔试卷子的题目的module,就以他为例来做了:首先写好v文件:如下:写好testbench文件:那么开始了一:功能仿真1.quartus建立工程后,编写v文件,ctrl+k,无错误(当然注意风格)2.编写testbench文件3.建立sim1仿真工程,在sim有单独的sim1的文件目录,将v和testbench拷贝到sim1这里我们没有用到altera的IP核,所以在library那里可以不用设置路径,如果有用到的话,就要指定路径了。
1.仿真,这个前面没什么区别,注意去掉 Enable optimization1.添加信号,run 500ns可以看到,在wr_en拉高的时候,cnt立马就有输出,这是没有任何延时的,是纯粹的功能仿真。
功能仿真需要文件:v源文件+testbench+指定仿真模型(altera仿真库等,等下就有用到)二:综合后的仿真1.关闭modelsim的sim1工程了,建立sim2文件目录,回到quartus2.然后,点击编译,会在dev目录下产生一个simulation文件夹,找到vo文件3.建立sim2的modelsim的工程,和上面的类似,但是注意:将vo文件和testbench文件拷贝到sim2文件夹,这一点和上面不同哦。
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->VectorWaveform File。
如下图所示,左边空白栏处是节点名的列表区,右边空白栏处是仿真波形的显示区。
波形编辑窗口默认时间为1us,如果想改变仿真时间,可以选择Edit菜单下End Time,在弹出的对话框中选择需要的时间。
将新建的波形仿真文件保存下来。
5)将需要仿真的信号加入波形编辑窗口。
在列表区任一位置双击或者点击右键选择“InsertNode or Bus…”,弹出的对话框点击“Node Finder”按钮。
在“Node Finder”界面中点击“List”按钮,有关信号的列表会出现在界面的左边,双击需要观察的信号加入至界面右边。
如果工程中用到了很多信号,在左边列表中也会显示很多(Named编辑框默认的是*通配符),可以在Named编辑框中添加需要的信号名称实现模糊查找。
modelsim后仿真详解

modelsim后仿真想很多人跟我一样,被ModelSim的后仿真搞的头晕脑胀。
为了这个问题,我在网上找了很多的资料,但发现这些资料往往说的不明白。
一些步骤被作者有意无意地省略掉,这常常给读者造成不必要的麻烦,所以我决定写下这一篇文章,把这3天我努力的结果拿出来,与大家分享。
首先,我把我用到的软件说明一下。
如果你发现根据我的操作,你还是解决不了ModelSim后仿真的问题,那就可能是软件版本的问题。
1, ModelSim Se 6.1b2, Synplify Pro 7.5.13, ISE 5.2i (这个是老了点)4, WindowsXP(这个应该没有多大的关系)还有就是我使用的是verilog,我想VHDL的方法与verilog是差不多的,最多也就是在建库方面有点差别而已。
下面的这些方法,是我这3天搞出来的。
当然也参考了一些文章。
如果谁有更方便的方法,欢迎指出来。
我的邮箱是vf1983cs@。
有空大家多交流。
一、为modelsim生成3个库。
首先,介绍一下这三个库。
Simprim_ver:用于布局布线后的仿真。
Unisim_ver :如果要做综合后的仿真,还要编译这个库。
Xilinxcorelib_ver:如果设计中调用了CoreGen产生的核,则还需要编译这个库。
我们要为modelsim生成的是标准库。
所谓的标准库就是modelsim运行后,会自动加载的库。
不过这方面我还不是很肯定。
因为我在后仿真时,还是要为仿真指定库的路径,不然modelsim找不到。
第一步:在modelsim环境下,新建工程,工程的路径与你想把库存储的路径一致。
第二步:新建库,库名起作simprim_ver。
我们首先就是要建的就是这个库。
第三步:在modelsim的命令栏上,打下如下命令:vlog -work simprim_ver d:/Xilinx/verilog/src/simprims/*.v其中的d:/Xilinx是我的Xilinx的安装路径,你把这个改成你的就行了。
使用Modelsim完成相关仿真过程问题汇总

使用Modelsim仿真Altera FPGA工程(包括IP核)步骤以及问题汇总前提:计算机上已经安装QuartusII和Modelsim通用版,并且均已破解。
环境说明:所用的软件版本,QuartusII为9.0,Modelsim为6.5c。
本测试仅在WIN XP SP3上测试,对于VISTA/WIN7/LIN或者其他平台没做过测试。
但其他平台或者其他版本的过程应该都差不多。
其他:感谢teamo版主的破解和编译教程,以及后期对我的热心指导。
如果各位对整个步骤还有什么问题的华可以直接和我联系,我的论坛ID是lanphon,邮箱是lanphon@。
一、Altera库的编译(本部分基本上全部抄袭teamo版主的教程,懒得写了)1) 先到C:\modeltech_6.5目录下找到文件"modelsim.ini",将其属性改为可写(右键‐>属性)。
2) 启动modelsim se,选择【file】‐>【new】‐>【library】命令,在弹出的【create a newlibrary】窗口中将选项【create】设置为【a new library and a logical mapping to it】,在【libryr name】和【library library】窗口中将选项【create】设置为【a new library and a logical mapping to it】,在【libryr name】和【library physical name】中键入所要创建库名字,如Altera ,此时在主窗口中已多了一个Altera 项。
注:这个过程实质上想当于在modelsim 主窗口中的脚本区域中输入了vlib和vmap命令。
3) 在workspace中的library中选中你健入的库名Altera,在主菜单中选【compile】→【compile…】命令。
ModelSim使用的一点心得体会

ModelSim使用的一点心得- -1、至今还没有弄明白为什么要用ModelSim,因为看波形Quartus II自带的工具就可以了啊。
2、我刚刚接触modelsim,我想大多数菜鸟跟我一样,看过如何使用ModelSim的介绍,说句实话,那些介绍写的都太过简单,仿佛大家都不屑写上一些比较“弱智”的步骤,恰恰就是这些看似累赘的步走,难为我好久。
教程上都写道,modelsim的简单使用方法如下:建立库- 影射库到物理目录- 编译代码- 启动仿真。
首先建立库就叫我头晕。
库的概念用在这儿实在不合适,把我吓坏了,也就没心思看下一步了。
在我看来,教程应该这么写:<1> 建立一个目录modelsimStudy。
用任何文本编辑器编辑一个简单的例子程序,比如计数器counter.vhd。
有clk、ena、reset输入,cnt作为输出。
<2> 打开Modelsim,首先create project,工程名随意取了,比如命名为test,目录设在modelsimStudy下,默认的库work不变(这样就不用管什么建立库之类的东西了)。
然后add existing file,把counter.vhd加入当前工程。
<3> 编译这个文件,通过之后,work下面会出现counter这个实体。
然后选中它,右键,simulate(左键双击也可)。
<4> ModelSim有很多窗口(新手就怕这个),一开始只要选择view下面的objects 和wave窗口就行了。
旧版的signal窗口在6.0的版本改名为Objects(这个我是摸索了好久才发现的,是不是太笨了?)。
wave窗口刚打开时是空的,需要在objects窗口的add -> wave -> signals in region。
这时,wave上就有clk\ ena \ reset等信号了。
<5> 我们给clk来个输入激励,在object窗口中选中clk,右键选clock,给它定义个时钟。
modelsim仿真工具的一些使用心得

3. 之前的使用方法
在ISE中安装modelsim, 嵌套使用仿真工具
优点---使用方便,易于入手
缺点---不能做系统级别的仿真,仿真效率 很低, 处理modelsim与ISE不兼容的问题
4. 新使用方法
最大特点:不需要和ISE结合使用 方法步骤: 导入仿真库文件 建立工程,利用命令行编写do文件 执行仿真程序
关于Modelsim仿真工具的 一些心得
1.Moelsim版本
ModelSim分几种不同的版本:SE、PE、LE和 OEM,其中SE是最高级的版本。而集成在 Actel、Atmel、Altera、Xilinx以及Lattice等 FPGA厂商设计工具中的均是其OEM版本。 MODELSIM SE是主要版本号,也是功能最强 大的版本,支持对Verilog和VHDL语言的混合 SE版和OEM版在功能和性能方面 有较大差别 仿真。对于代码少于40000行的设计, ModelSim SE 比ModelSim XE要快10倍;对于 代码超过40000行的设计,ModelSim SE要比 ModelSim XE快近40倍。
第二步:在modelsim.ini中添加如下 标准库
simprim_ver = G:/EDA/Xilinx/simprim_ver(库的路 径,以下同) unisim_ver = G:/EDA/Xilinx/unisim_ver xilinxcorelib_ver = G:/EDA/Xilinx/xilinxcorelib_ver
第三步. 综合
之前都是使用ISE自带综合工具 缺点:综合速度慢,单线程综合 推荐使用Synplify pro(我这里用9.6版本) 仿真工具 优点:四线程综合,仿真速度提高四倍
用ISE与Modelsim进行FPGA后仿真(时序仿真)的两种方法

用ISE与Modelsim进行FPGA后仿真(时序仿真)的两种方法作者:毕成炜2012年1月30日星期一我使用的是ISE_12.2,集成MODELSIM_6.5e。
后仿真的方法分为直接和间接两种。
直接是指从ISE上起动MODELSIM。
间接是单独起动MODELSIM,然后使用ISE生成的用于后仿的文件夹netgen。
下面分别叙述。
(一) 直接方法:1.建立一个文件夹给ISE工程用,比如D:\timing_sim,然后将源文件和测试文件放到它的下面:2.在ISE中如有旧的Project正在使用,则关闭它:这样画面清静。
然后新建一个New Project,点Next,选好器件和仿真器:点Next,点Finish.为了能够在ISE中直接唤起MODELSIM,还需要一些设置,主要是两处:双击器件:保证下图红圈处选中你要的仿真器:点OK后,在主菜单中点:保证在红圈处指定好MODELSIM执行文件所在的位置编译仿真库可以在这里双击Compile HDL Simulation Libraries,也可以在C:\Xilinx\12.2\ISE_DS\ISE\bin\nt下面找到,双击它,注意红圈处所标的是你的ISE版本所支持的MODELSIM版本,不能低于它。
否则仿真过程可能出问题。
点Next,点Next,选定你针对什么器件编译仿真库,点Next,点Next,注意,ISE可能最初不带modelsim.ini,它在此步会自动生成这个文件,并且是可写的,即它的“只读”属性是已经自动去掉的。
生成仿真库的映射关系自动写入了ISE的这个modelsim.ini,位于C:\Xilinx\12.2\ISE_DS\ISE\bin\nt,但是,它并不会自动去更新MODELSIM软件的modelsim.ini,而且MODELSIM使用的是它自己的modelsim.ini,位于C:\modeltech_6.5e。
所以需要把ISE的modelsim.ini中的映射关系再COPY到MODELSIM自己的modelsim.ini中。
第十二讲 ModelSim 仿真工具介绍

ModelSim仿真工具介绍刘毅2007.6.11主要内容z ModelSim概述z ModelSim的用户界面z ModelSim仿真流程•1. 新建一个工程•2. 载入工程的HDL文件•3. 编译•4. 仿真ModelSim概述z ModelSim仿真工具是由Model技术公司开发,是工业上最通用的仿真器之一,可用于Verilog 和VHDL仿真z ModelSim产品系列有:•ModelSim/VHDL或ModelSim/Verilog(OEM版本)•ModelSim/LNL(Verilog或VHDL,但不同时许可)•ModelSim/PLUS(设计者能进行Verilog和VHDL的共同仿真)•ModelSim/SE(PLUS的所有功能连同附加功能)ModelSim的用户界面ModelSim模式特点如何操作图形界面交互式的,采用图形窗口,通过点击菜单的方式或者在命令行输入命令进行操作,默认模式。
在桌面上双击ModelSim图标或者在命令提示符下输入vsim就可以启动图形界面。
命令行采用交互式的命令行方式,没有图形界面。
在命令提示符下输入vsim-c批处理使用非交互式的批处理脚本,没有图形界面和交互式命令行编写批处理脚本自动运行ModelSim 的用户界面(续)main主窗口:structure结构窗口process处理窗口:Signal&variable信号和变量窗口dataflow数据流窗口source源窗口Wave&list波形和列表窗口ModelSim仿真流程:新建一个工程z从【开始】|【程序】中点击ModelSim或是双击桌面的ModelSim图标,启动ModelSim。
z在ModelSim图形界面上点击File|New|Project,创建一个新的工程,弹出创建工程窗口如图所示输完后按OK键,就会在指定的路径下产生一个work的子文件目录,还有test.mpf此时在主操作界面左边的workspace内,原来的Library标签外会出现一个Project标签(但此时里面的内容是空的),接着载入工程的HDL文件会弹出Add items to the Project窗口z在workspace的Project窗口中点右键Add toproject|Existing File弹出如图所示的窗口编译z Compile|Compile Selected或是直接按icon就可以了,编译后会在命令行窗口出现提示信息,如图所示,绿色表示编译成功,红色表示有错。
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->VectorWaveform File。
如下图所示,左边空白栏处是节点名的列表区,右边空白栏处是仿真波形的显示区。
波形编辑窗口默认时间为1us,如果想改变仿真时间,可以选择Edit菜单下End Time,在弹出的对话框中选择需要的时间。
将新建的波形仿真文件保存下来。
5)将需要仿真的信号加入波形编辑窗口。
在列表区任一位置双击或者点击右键选择“InsertNode or Bus…”,弹出的对话框点击“Node Finder”按钮。
在“Node Finder”界面中点击“List”按钮,有关信号的列表会出现在界面的左边,双击需要观察的信号加入至界面右边。
如果工程中用到了很多信号,在左边列表中也会显示很多(Named编辑框默认的是*通配符),可以在Named编辑框中添加需要的信号名称实现模糊查找。
modelsim仿真详解 -回复

modelsim仿真详解-回复什么是ModelSim仿真?ModelSim是一种著名的仿真工具,用于数字和模拟电路的功能仿真和时序仿真。
它是由美国Mentor Graphics公司开发的,提供了一整套的仿真、调试和验证功能,广泛应用于电子设计自动化领域。
ModelSim仿真工具可以模拟数字电路的行为和时序,在仿真过程中可以观察和分析电路的运行状态,以验证设计的正确性。
它支持Verilog和VHDL两种高级硬件描述语言,并且提供了强大的波形编辑和调试功能,便于用户分析和调试设计中的问题。
ModelSim仿真的基本原理和流程是什么?ModelSim仿真的基本原理是利用编译过程将Verilog或VHDL代码转化为可执行的仿真模型,然后通过激励文件对模型进行驱动和刺激,最后观察波形输出并进行分析。
下面是ModelSim仿真的基本流程:1. 编写设计代码:使用Verilog或VHDL语言编写设计代码,包括设计模块、信号连接、时钟和复位逻辑等。
2. 创建测试平台:编写测试平台代码,包括生成激励信号和检查输出结果的内容。
3. 编译设计代码:使用ModelSim提供的编译器将设计代码编译成仿真模型,产生可执行的仿真对象文件。
4. 创建仿真模型:使用ModelSim提供的工具和命令,创建仿真模型并加载仿真对象文件。
5. 配置仿真环境:设置仿真时钟、仿真时间、仿真启动方式等仿真环境参数,准备仿真的相关设置。
6. 运行仿真:启动仿真过程,模拟电路的行为和时序,并根据测试平台的激励信号来驱动设计,产生波形输出。
7. 观察波形:利用ModelSim提供的波形窗口,观察和分析仿真波形结果,验证设计的正确性。
8. 调试和分析:根据波形结果来调试和分析电路中的问题,定位和解决设计中的错误,优化电路的性能。
ModelSim仿真工具的优势是什么?ModelSim仿真工具在电子设计自动化领域具有很高的知名度和广泛的应用,其主要优势如下:1. 支持多种设计语言:ModelSim支持Verilog和VHDL两种常用的硬件描述语言,用户可以根据自己的需求选择合适的语言进行设计和仿真。
modelsim使用常见问题及解决办法集锦③

modelsim使⽤常见问题及解决办法集锦③四、You selected Modelsim-Altera as Simulation Software in EDA ToolSettings,however……You selected ModelSim-Altera as Simulation Software in EDA Tool Settings,however NativeLink found ModelSim in the pata – correct path or change EDA Tool Settings and try again.问题原因该⼯程设置的仿真⼯具名称与在Quartus II软件中指定的该软件路径不匹配。
例如,本来设置的仿真⼯具是modelsim–altera,结果在Quartus II软件的modelsim-altera路径下设定的是Tools下设置的是modelsim-se的路径,导致软件版本不匹配⽽报错。
设置的仿真⼯具为modelsim-alteraModelsim-altera路径却指向了modelsim-se版本。
解决⽅法1、如果你电脑装的是modelsim-se版本,请按照如下图所⽰的设置进⾏⼯程和⼯具路径设置:2、如果你的电脑装的是modelsim-altera版本,请按照如下图所⽰的设置进⾏⼯程和⼯具路径设置:五、Unable to checkout a license问题原因使⽤了⾮免费版本的Modelsim软件,却没有获得软件使⽤许可证解决⽅法⽅法1:使⽤免费版本的modelsim软件,如modelsim altera stater edition。
⽅法2:购买软件许可证。
⽅法3:破解modelsim软件,破解⽅法见如下链接(altera收费版和se版本破解思路相同,破解⼯具通⽤):modelsim-win64-10.1c 下载、安装、破解全攻略(出处: 中国电⼦技术论坛)获得许可后最好重启Quartus II软件六、Error loading design问题原因提⽰信息中提⽰没有Verilog的仿真许可证,表明是没有获得软件使⽤许可。
利用ModelSim进行的功能,综合后,时序仿真

利用ModelSim 进行的功能仿真,综合后仿真,时序仿真功能仿真,就是在理想状态下(不考虑延迟),验证电路的功能是否符合设计的要求。
功能仿真需要:I. TestBe nch或者其他形式的输入激励2•设计代码(HDL源程序)3•调用器件的模块定义(供应商提供,如FIFO, RAM等等)值得一提的是,可以在ModelSim直接编写TestBench,使用View->Source->Show language templates.综合后仿真(门级仿真),实际上就是将对综合后的门级网表进行仿真, 只考虑门延迟,而没有加入时延文件。
在功能仿真之后检验综合的结果是否满足功能要求。
综合后仿真需要:1. 综合后的门级网表,注意这里变成了*.vo 文件,而不是原来功能仿真中所需要的HDL源代码.2. 测试激励3. 元件库Altera 的仿真库位置为*:\altera\quartus\eda\sim_lib所谓时序仿真,就是在综合后仿真的基础上加上时延文件(sdf 文件),综合考虑了路径延迟和门延迟的情况,验证电路是否存在时序违规。
时序仿真需要:1. 综合后的门级网表,注意这里变成了*.vo 文件,而不是原来功能仿真中所需要的HDL源代码.2. 测试激励3. 元件库Altera 的仿真库位置为*:\altera\quartus\eda\sim_lib4 .较门级仿真还需要具有包含时延信息的反标记文件*.sdf可以有两种方法实现门级仿真,或时序仿真。
1. 工程编译成功后,自动启用ModelSim 来运行门级仿真,前提是要在Quartus II的Options中设置好ModelSim的路径(和有些参考PDF上说的环境变量好像无关,至少我用的Quartus II9.0 Web Edtion 是这样的)具体方法是,进入Quartus9.0->Tools->Options,在Categroy里选中General 下的EDA Tool Options 在ModelSim 右边的Location ofExecutable中双击来改变路径,就并且在工程中设置了自动启动ModelSim,就可以自动启用了。
Modelsim的功能仿真和时序仿真

FPGA 设计流程包括设计输入,仿真,综合,生成,板级验证等很多阶段。
在整个设计流程中,完成设计输入并成功进行编译仅能说明设计符合一定的语法规范,并不能说明设计功能的正确性,这时就需要通过仿真对设计进行验证。
在FPGA 设计中,仿真一般分为功能仿真(前仿真)和时序仿真(后仿真)。
功能仿真又叫逻辑仿真,是指在不考虑器件延时和布线延时的理想情况下对源代码进行逻辑功能的验证;而时序仿真是在布局布线后进行,它与特定的器件有关,又包含了器件和布线的延时信息,主要验证程序在目标器件中的时序关系。
在有些开发环境中,如Xilinx ISE 中,除了上述的两种基本仿真外,还包括综合后仿真,转换(post-translate)仿真,映射后(post-map)仿真等,这样做完每一步都可进行仿真验证,从而保证设计的正确性。
ModelSim 是Mentor Graphics 子公司MentorTechnology 的产品,是当今最通用的FPGA 仿真器之一。
ModelSim 功能强大,它支持FPGA 设计的各个阶段的仿真,不仅支持VHDL 仿真,Verilog仿真,而且支持VHDL 和Verilog 混合仿真。
它不仅能做仿真,还能够对程序进行调试,测试代码覆盖率,对波形进行比较等。
ModelSim 有很多版本,像ModelSim/SE 是首要版本,除此之外还有ModelSim/XE 和Model Sim/AE,分别是为Xilinx公司和Altera 公司提供的OEM 版,其中已包含各公司的库文件,故用特定公司OEM 版进行仿真时就不需编译该公司的库了。
用ModelSim 进行功能仿真进行功能仿真首先要检查设计的语法是否正确;其次检查代码是否达到设计的功能要求。
下文主要介绍仿真步骤和测试激励的加载。
仿真步骤(1)建立库并映射库到物理目录因为用ModelSim 进行仿真是建立在仿真库的基础上的(此处进行的是功能仿真,因而不用编译特定厂商的库),所以首先要建立库并把库映射到实际的物理路径。
利用ModelSim进行的功能仿真,综合后仿真,时序仿真

利用ModelSim进行的功能仿真,综合后仿真,时序仿真功能仿真,就是在理想状态下(不考虑延迟),验证电路的功能是否符合设计的要求。
功能仿真需要:1.TestBench或者其他形式的输入激励2.设计代码(HDL源程序)3.调用器件的模块定义(供应商提供,如FIFO,RAM等等)值得一提的是,可以在ModelSim直接编写TestBench,使用View->Source->Show language templates.综合后仿真(门级仿真),实际上就是将对综合后的门级网表进行仿真,只考虑门延迟,而没有加入时延文件。
在功能仿真之后检验综合的结果是否满足功能要求。
综合后仿真需要:1.综合后的门级网表,注意这里变成了*.vo文件,而不是原来功能仿真中所需要的HD L源代码.2.测试激励3.元件库Altera的仿真库位置为*:\altera\quartus\eda\sim_lib所谓时序仿真,就是在综合后仿真的基础上加上时延文件(sdf文件),综合考虑了路径延迟和门延迟的情况,验证电路是否存在时序违规。
时序仿真需要:1.综合后的门级网表,注意这里变成了*.vo文件,而不是原来功能仿真中所需要的HD L源代码.2.测试激励3.元件库Altera的仿真库位置为*:\altera\quartus\eda\sim_lib4.较门级仿真还需要具有包含时延信息的反标记文件*.sdf可以有两种方法实现门级仿真,或时序仿真。
1.工程编译成功后,自动启用ModelSim来运行门级仿真,前提是要在Quartus II的Options中设置好ModelSim的路径(和有些参考PDF上说的环境变量好像无关,至少我用的Quartus II 9.0 Web Edti on是这样的)具体方法是,进入Quartus9.0->Tools->Options,在Categroy里选中General下的EDA Tool Options,在ModelSim右边的Location of Executable中双击来改变路径,就并且在工程中设置了自动启动ModelSim,就可以自动启用了。
Modelsim 仿真方法总结

Modelsim 仿真方法总结Modeling 仿真工具是Model公司开发的。
它支持Verilog、VHDL以及他们的混合仿真。
Modelsim各版本的使用方法大体一致,Modelsim仿真主要分为前仿真和后仿真。
下面来具体介绍modelsim的仿真方法,涉及quartus-modelsim联合(使用)仿真的差异会特别提示。
前仿真与后仿真说明1.1 前仿真前仿真也称为功能仿真、行为仿真。
旨在验证电路的功能是否符合设计要求,其特点是不考虑延迟(包括门延迟与线延迟),主要验证电路与理想情况是否一致。
前仿真需要用到RTL级代码(由源代码经过综合后产生)与Testbench。
1.2)后仿真后仿真也称为时序仿真或者布局布线仿真。
是指在电路已经映射到特定的工艺环境以后,综合考虑门延迟与线延迟的影响,验证电路在一定的时序条件下是否存在时序违规以及能否满足设计构想的过程。
需要用到的文件是——从布局布线结果中抽象出来的门级网表、testbench和后缀名为sdo或者sdf的标准时延文件。
注:扩展名为sdo和sdf的标准时延文件包含门延迟与实际布线延迟,能较好的反应芯片的实际工作情况。
二)modelsim仿真主要有以下几个步骤:(1)建立库并映射库到物理目录;(2)编译源代码(包括Testbench);(3)执行仿真;解释:①库:modelsim中有两类仿真库。
一种是工作库,默认名为work;另一种是资源库。
Work库中存放当前工程下所有已经编译过的文件,所以编译前一定要建立一个work 库。
资源库存放work库中已经编译文件所要调用的资源,这样的资源可能有很多,它们被存放在不同的资源库内。
(例如要想对综合在cyclone芯片中的设计做后仿真,就需要有一个名为cyclone_ver的资源库。
)映射库用于将已经预编译好的文件所在目录映射为一个modelsim可识别的库。
(此即是为仿真库建立一个逻辑映像的行为过程,后面会提到,在modelsim中新建库时,create a new library and a logical mapping to it或a map to an existing libraryd的提示)上述三个步骤是大的框架,前仿真和后仿真均是按照这个框架进行的,建立modelsim工程对前后仿真来说都不是必须的。
让FPGA初学者头疼的各种仿真

学习FPGA,被它的各种仿真弄的晕头转向。
前仿真、后仿真、功能仿真、时序仿真、行为级仿真、RTL级仿真、综合后仿真、门级仿真、布局布线后仿真……好吧,反正我是晕了。
先说一下Quartus和Modelsim软件的仿真形式:Quartus ii的两种仿真:1、功能仿真2、时序仿真;Quartus ii调用Modelsim的两种仿真:1、RTL级仿真2、Gate-level仿真。
查阅了各种资料如下:资料一:1.当用quartus进行仿真时,分为功能仿真(al)和时序仿真(Timing)。
2.当用Modelsim-Altera时,分为功能仿真(RTL)、综合后仿真(post-synthesis)和布局布线仿真(Gate-level)。
其中,功能仿真又称为前仿真,布局布线仿真又称为后仿真。
注:此处的功能仿真(RTL)与1中的功能仿真(al)是不一样的,前者是HDL级仿真,后者是门级网表的功能仿真。
(1)当在quartus中调用Modelsim-Altera进行RTL仿真时(前提是在第三方仿真工具中选择Modelsim-Altera),步骤如下:a) 编写源文件和测试文件;b) Assignment->setting->simulation->不选中run gate leve simulation.....,选中nativelink->添加测试文件,填写文件名;c) start analysis&elabration;d) Tools->start RTL simulation;(2)综合后仿真一般不做。
(3)当在quartus中调用Modelsim-Altera进行Gate-level仿真时(前提是在第三方仿真工具中选择Modelsim-Altera),步骤如下:a) 编写源文件和测试文件;b)Assignment->setting->simulation->选中run gate leve simulation.....,选中nativelink->添加测试文件,填写文件名;c)全编译;评价:对于Assignment->setting->simulation->"run gate leve simulation automatically after comlilation"选不选中根本没必要说明,完全可以不用选中,需要在设置处把测试文件testbench添加就可以了(不添加的话到时候quartus调用出modelsim软件后需要手动添加编译,下面补充了)。
使用modelsin对quartus II仿真时遇到问题的解决方法

1、FFT core可以设置成两种不同的引擎结构,四输出(Quad——output)和单输出(signal output),对于要求转换时间尽量小的应用,四输出的是最佳的结构,对于要求资源尽量小的应用,单输出的引擎结构比较合适,为了增加吞吐量,可以采用并行引擎结构。
FFT core支持的数据流:FFT core支持三种I/O数据流结构,连续(streaming)、缓冲突发(buffered burst)、突发(burst)。
连续I/o数据流允许处理连续输入数据,输出连续复数数据流,而不中断输入和输出数据;缓冲突发结构于连续相比,需要更少的存储资源,但是这是以减少平均吞吐量为代价的;突发数据流的操作于缓冲突发的方法基本上一致,但是突发方式需要更少的存储资源,这也是以降低吞吐量为代价的、。
2、用modelsim对fft模块进行仿真的时候出现此类问题的解决方法:** Error: (vsim-3033) E:/Quartus II projects/fft_1024_t/fft_1024_ip.v(92): Instantiation of 'asj_fft_sglstream_fft_130' failed. The design unit was not found.出现这种情况,第一可能是quartus破解不完整,导致有些库已经器件不能够使用,重新破解,在破解的时候有时候可能有好几个网卡,则选择前两个网卡号对license.dat进行破解。
在完整破解的时候,在仿真的时候需要加进去.vo文件以及测试文件,顶层文件,同时将生成fft核的时候产生.hex,.txt文件,在进行仿真的时候需要将其放到所建的modelsim工程文件夹下面。
第二种情况就是在不同版本的quartus上建立了ip核,比如说在9.0上建立的文件,在8.0上进行综合编译,就会出现这样的问题。
解决方法就是在现有的版本上重新建一个fft核之后进行仿真,应该就可以解决问题了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
想很多人跟我一样,被ModelSim的后仿真搞的头晕脑胀。
为了这个问题,我在网上找了很多的资料,但发现这些资料往往说的不明白。
一些步骤被作者有意无意地省略掉,这常常给读者造成不必要的麻烦,所以我决定写下这一篇文章,把这3天我努力的结果拿出来,与大家分享。
首先,我把我用到的软件说明一下。
如果你发现根据我的操作,你还是解决不了ModelSim后仿真的问题,那就可能是软件版本的问题。
1, ModelSim Se 6.1b2, Synplify Pro 7.5.13, ISE 5.2i (这个是老了点)4, WindowsXP(这个应该没有多大的关系)还有就是我使用的是verilog,我想VHDL的方法与verilog是差不多的,最多也就是在建库方面有点差别而已。
下面的这些方法,是我这3天搞出来的。
当然也参考了一些文章。
如果谁有更方便的方法,欢迎指出来。
我的邮箱是****************。
有空大家多交流。
一、为modelsim生成3个库。
首先,介绍一下这三个库。
Simprim_ver:用于布局布线后的仿真。
Unisim_ver :如果要做综合后的仿真,还要编译这个库。
Xilinxcorelib_ver:如果设计中调用了CoreGen产生的核,则还需要编译这个库。
我们要为modelsim生成的是标准库。
所谓的标准库就是modelsim运行后,会自动加载的库。
不过这方面我还不是很肯定。
因为我在后仿真时,还是要为仿真指定库的路径,不然modelsim找不到。
第一步:在modelsim环境下,新建工程,工程的路径与你想把库存储的路径一致。
第二步:新建库,库名起作simprim_ver。
我们首先就是要建的就是这个库。
第三步:在modelsim的命令栏上,打下如下命令:vlog -work simprim_ver d:/Xilinx/verilog/src/simprims/*.v其中的d:/Xilinx是我的Xilinx的安装路径,你把这个改成你的就行了。
以下凡是要根据自己系统环境改变的内容,我都会用绿色标出,并加一个下划线。
编译完之后,你会发现你的工程文件夹下出现了一个simprim文件夹,里面又有很多个文件夹。
这些就是我们要的库了。
第四步:按照上面的方法,编译另外两个库。
所需要键入的命令分别如下:vlog -work unisim_ver d:/Xilinx/verilog/src/unisims/*.vvlog -work xilinxcorelib_ver d:/Xilinx/verilog/src/XilinxCoreLib/*.v如果你想要编译的是VHDL的库,你需要建立的库分别是simprim,unisim和xilinxcorelib。
这三个库所需要的modelsim指令分别如下:vcom –work simprim d:Xilinx/VHDL/src/simprims/simprim_Vcomponents.vhdvcom –work simprim d:Xilinx/VHDL/src/simprims/simprim_Vpackage.vhdvcom –work simprim d:Xilinx/VHDL/src/simprims/simprim_VITAL.vhdvcom –work unisim d:Xilinx/VHDL/src/unisims/unisim_VCOMP.vhdvcom –work unisim d:Xilinx/VHDL/src/unisims/unisim_VPKG.vhdvcom –work unisim d:Xilinx/VHDL/src/unisims/unisim_VITAL.vhdvcom –work unisim d:Xilinx/VHDL/src/unisims/unisim_VCFG4K.vhdvcom –work xilinxcorelib d:Xilinx/VHDL/src/ XilinxCoreLib/*.vhd关于VHDL方面,我没有实践过,如果有误的话,改一下应该问题也不大。
第五步:把库建好后,接下来的事情就是使它成为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_libsimprim_ver = G:/EDA/Xilinx/simprim_ver(库的路径,以下同)unisim_ver = G:/EDA/Xilinx/unisim_verxilinxcorelib_ver = G:/EDA/Xilinx/xilinxcorelib_ver注意的是,这个文件是只读属性。
修改之前要把这个属性去掉。
第六步:关掉工程,重启modelsim。
查看这3个库是否在library框里面。
如果你看到了,那么恭喜!你已经完成了第一个大步骤!!接下来,就是在ISE环境下如何用synplify对设计进行综合的方法了。
还要说明的是,这一步是一劳永逸的!有了第一次,第二次就不用了。
二、在ISE环境下,调用synplify,生成后仿真所需要的文件。
之所以要在ISE环境下调用synplify,主要是因为方便!我也尝试过在synplify环境下综合设计文件,然后在ISE里编译synplify生成的edif文件。
但是不成功。
ISE在第三方工具支持方面做的是比较好的,感觉跟用ISE直接综合一样。
不过有一个缺点是看不了RTL原理图。
你可以在synplify中打开ISE生成的synplify工程文件,解决在ISE中不方便查看synplify 综合结果的问题。
现在,就要开始第二个大步骤了!第一步:创建ISE工程文件。
选择好器件。
注意Design Flow中一定要选择Synplify Pro Verilog。
第二步:综合设计文件,也就是verilog文件。
双击下图中的按钮,ISE就会自动调用synplify。
(如果没有的话,那可能是你的系统环境变量没有设置好)。
此时会弹出一个对话框,要你选择synplify的liscense。
(这步本来不用说的。
如果没有对话框弹出来的话,也不要紧)随便选择一个,就等结果了。
第三步:生成后仿真需要的文件。
如下图,我们可以看到在Implement Design中有三个大分支,这对应着三种仿真。
按你的需要按下相应的图标,生成modelsim后仿真所需要的文件,下面对生成的文件和生成这些文件的图标进行说明。
图标生成文件Generate Post-Translate Simulation Model xxx_translate.vGenerate Post-Map Simulation Model xxx_map.v,xxx_map.sdfGenerate Post-Place&Route Simulation Model xxx_timsim.v,xxx_timsim.sdf在这3种仿真中,只有第一种没有生成sdf文件。
也就是说在modelsim中,只有第一种可以不用把sdf添加到仿真器中(废话!!)。
到这时,所有为后仿真所做的准备工作就都完成了。
下面就后仿真举例。
我们要进行的是Place&Route Simulation!所以按下图标,生成为下一步的工作所需要的文件吧。
三、用modelsim进行后仿真。
在开始这一步之前,建议为你的设计新建一个文件夹。
当然你也可以不这样做,不过对于所造成的麻烦,本人不负责!后仿真总共需要3个*.v文件。
一个是你的模块的测试文件,一个是ISE生成的xxx_timsim.v(注意,我们要更改这个文件的文件名,改为xxx.v,也就是你的顶层模块名了。
这也是我要求新建文件夹的原因了,重名这件事比尔.盖茨是不答应的)。
另一个是glbl.v文件。
这个文件在Xilinx安装盘:\Xilinx\verilog\src下。
VHDL不需要第3个文件。
复制这3个文件到新建的文件夹下,开始我们的第一步工作。
第O步:为xxx_timsim.v改名第一步:新建工程,把3个文件添加到这个工程里。
(大家都这么熟了,不用教了吧)第二步:在project框里按右键—》add to project –》adding simulation configuration,如下图:第三步:在弹出的对话框里,选择SDF项。
把ISE生成的SDF文件添加进出。
如下图:记住Apply to Region这一项要写好。
它对应的是你的tb文件(就是测试文件)调用的顶层模块名。
(不是顶层模块名!!)比如你的测试文件是text,例化顶层模块top为i_top,那你应该这样填:text/i_top或者/text/i_top。
如果是第一种仿真,此步可以省略。
第四步:添加library。
我们创建的那三个库终于派上用场了!我们要添加的就是这3个。
选择library项,添加这3个库。
你的库建在哪里,就去哪里找!这个也不用说了吧!如下图:第五步:选择要仿真的模块。
你先不要急,看清楚再选。
(有些朋友性子急,驾轻就熟就选了)我们要选的仿真模块可不止一个,如下图,用CTRL键实现!!选了之后点0k!!第六步:进行后仿真!完成上一步后,project框如下图所示,双击Simulation 1,modelsim就进入仿真了,是不是很方便!第七步:做你该做的!我想接下来的事情很容易了吧,就写到这!。