想很多人跟我一样,被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版本) 仿真工具 优点:四线程综合,仿真速度提高四倍
- 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就进入仿真了,是不是很方便!第七步:做你该做的!我想接下来的事情很容易了吧,就写到这!。