(转)Quartus II和Modelsim的联合仿真(详细)
这篇文章不需要在modelsim中建库、映射、建工程等一些繁琐的步骤,直接使用modelsim中的默认work库。使用quartus+modelsim联合仿真。
首先推荐一篇文章 http://www.cnblogs.com/emouse/archive/2012/07/08/2581223.html
首先,根据上一篇文章,建立一个testbench模板;
第一次用modelsim+quartus的时候需要在quartus中设置modelsim的路径,quartus->tools->general->EDA tool options ,在右边选择modelsim的安装路径,如下图:

然后在Quartus->setting->simulation中设置仿真工具(选择modelsim),输出netlist语言(选择 VHDL or Verilog),然后在下面添加testbench;如下图:

到edit test settings这个步骤的时候需要说明一下,其中test bench name可以自己定,下面两个的内容根据test bench文件中的内容而定。
比如说我用verilog写的test bench如下:

那么我下面两个的名字就为分别为 Counter_tb和counter 如下图:

如果是用VHDL写的test bench,如下图

那么我们下面两个的内容就是ADC_vhd_tst和i1,如同下图

这样设置了之后,就可以从quartus中直接进行RTL仿真和门极(时序)仿真了,(上图打勾就代表使用时序仿真);具体为什么要这么设置请看http://www.uio.no/studier/emner/matnat/fys/FYS4220/h12/documentation/quartus_modelsim_setup.pdf 如果不这么设置的话,可以进行RTL仿真,但是不能进行门级(时序)仿真,门级(时序)仿真的时候会报 Failed to find INSTANCE 错误。
做到上一部可以编写程序,然后编译,接着运行RTL simulation,这个时候modelsim会自己启动,然后自己编译,接着在work library中会有两个单元,其中一个是testbench生成的,我们仿真的话是用这个。然后添加波形什么的就可以仿真了。
运行时序仿真的话单击quartus上的gate-level simulation按钮就可以了。
接着最关键的问题来了,如果我们修改了VHDL程序或者testbench,怎么在modelsim中更新,我在网上找了很多教程,发现只做到上一步就结束了,在modelsim中更新的话只有关掉modelsim,在quartus中重新进行RTL simulation,显然这样很麻烦,直到我看到这篇文章http://www.cnblogs.com/emouse/archive/2012/07/08/2581223.html,这边文章最后第7步完全可以不用做,我讲一下我的做法。
当运行RTL simulation的时候,modelsim会自己启动,且开始编译,这个是时候实际上它有个命令被输入了,你可以在transcripe中按向上的箭头,会发现有个do ****.do 的命令,你可以在simlation文件夹中找到这个do文件,如果你进行RTL仿真的话,会有****rtl****.do文件,亦然,如果进行gate-level 仿真的话,就有*******gate****.do 文件,请注意区分。当你修改了程序之后要想在modelsim中更新,直接敲这个do *****.do命令就OK了,但是每次敲这个命令会把库文件重新编译,大大浪费了时间,所以你可以找到这个文件,打开,把上面一部分编译库文件的指令注释掉,如下图:

这个时候执行do指令的话,几秒钟就执行完毕了,modelsim中也更新了。
当然modelsim中也可以不用test bench仿真,可以敲force指令生成波形,具体找资料吧。
在test bench中,输入信号都要初始化,否则会显示‘X’任意状态,且不能全都放在一个process中初始化,不然在别的process中对其操作也会呈现‘X’,最好要使用之前初始化一下就可以了.
好像RTL仿真修改了VHLD文件后不需要编译,直接使用do命令就可以更新仿真结果,门级仿真则需要编译一下,再使用do命令才会更新
(转)Quartus II和Modelsim的联合仿真(详细)的更多相关文章
- 【转】Quartus II调用modelsim无缝仿真
Quartus II调用modelsim无缝仿真 ★emouse 思·睿博客文章★ 原创文章转载请注明:http://emouse.cnblogs.com 本篇文章为转载,写的不错,最近在学mode ...
- 通过文件读写方式实现Matlab和Modelsim的联合仿真
虽然Modelsim的功能非常强大,仿真的波形可以以多种形式进行显示,但是当涉及到数字信号处理的算法的仿真验证的时候,则显得有点不足.而进行数字信号处理是Matlab的强项,不但有大量的关于数字信号处 ...
- vivado与modelsim的联合仿真(二)
最近在做Zynq的项目,曾经尝试使用ISE+PlanAhead+XPS+SDK组合和Vivado+SDK来搭建工程,使用中发现前者及其不方便后者有诸多不稳定.近期得闻Xilinx退出Vivado20 ...
- Xilinx ISE如何调用Modelsim进行联合仿真
图: 在对设计的芯片进行测试时,经常要用到FPGA,可是里面的仿真工具却不如Modelsim那么好用,且在规模比较大时,ISE在仿真时,软件经常会报告内存限制的问题,此时一般会切换到Modelsim软 ...
- Quartus II 与modelsim连接不上的问题
在Quartus II 中tools>options>General>EDA Tool Options 设置modelsim 路径 说明:不管是Quartus II 与modelsi ...
- Quartus II调用modelsim无缝仿真
本篇文章为转载,写的不错,最近在学modelsim仿真,网上的教程很乱,把自己认为不错的整理贴出来,后面有机会会写个详细点的. Quartus 中调用modelsim的流程 1. 设定仿真工具 ass ...
- Quartus II 使用 modelsim 仿真
转自:http://www.cnblogs.com/emouse/archive/2012/07/08/2581223.html Quartus 中调用modelsim的流程 1. 设定仿真工具 as ...
- Viavdo&ISE&Quartus II级联Modelsim级联仿真
博主一直致力寻找高效的工作方式,所以一直喜欢折腾软件,从刚开始只用软件IDE自带的编辑器,到Notepad++,再到后来的Vim,从用ISE14.7自带的Isim仿真,到发现更好的Modelsim,再 ...
- Vivado&ISE&Quartus II调用Modelsim级联仿真
博主一直致力寻找高效的工作方式,所以一直喜欢折腾软件,从刚开始只用软件IDE自带的编辑器,到Notepad++,再到后来的Vim,从用ISE14.7自带的Isim仿真,到发现更好的Modelsim,再 ...
随机推荐
- 使用新浪云(SAE)实现基于mySql和微信公众平台的关键字请求响应服务
本例是作者初次尝试微信公众平台开发之作,实现传统的关键字请求响应功能.即:用户发关键字,公众号通过关键字进行检索, 在mysql数据库中读取与关键字相关的信息,并返回给用户.本例在微信订阅号(开发者模 ...
- WebApi:使用方法名或者控制器名作为接口地址
今天遇到一个问题:新建的WebApi的项目生成的接口的地址都是以控制器的名字命名的,这样的话,在方法前添加ActionName就不起作用了,但之前一个项目是可以的. 接口代码: public clas ...
- MapReduce Shuffle原理 与 Spark Shuffle原理
MapReduce的Shuffle过程介绍 Shuffle的本义是洗牌.混洗,把一组有一定规则的数据尽量转换成一组无规则的数据,越随机越好.MapReduce中的Shuffle更像是洗牌的逆过程,把一 ...
- IT之人生感悟
从实习到现在,一直在做程序开发,工作了也有1年了吧,日子也就这么浑浑噩噩的过去了,想想将要毕业那会,原本有想考研的打算,最后还是出于各方面考虑不了了之,相比考研族提早步入了社会,既然路是自己选的,那必 ...
- java连接mysql :No Suitable Driver Found For Jdbc 解决方法
今天出现编码出现了No suitable driver found for jdbc,又是找遍了网上的资料,基本上都说是以下个问题: 一是:连接URL格式出现了问题(Connection con ...
- Spring Boot CLI安装
Spring Boot是一个命令行工具,用于使用Spring进行快速原型搭建.它允许你运行Groovy脚本,这意味着你可以使用类Java的语法,并且没有那么多的模板代码. 你没有必要为了使用Sprin ...
- 使用php添加定时任务
1. php执行外部命令的函数: system(),exec(),passthru() 注意点: 1.调用的路径,相对路径有时候不是很靠谱. sys ...
- 2016-08-16: copy-and-swap
#include <algorithm> // std::copy #include <cstddef> // std::size_t #include <stdio.h ...
- 【EF学习笔记08】----------加载关联表的数据 显式加载
显式加载 讲解之前,先来看一下我们的数据库结构:班级表 学生表 加载从表集合类型 //显示加载 Console.WriteLine("=========查询集合===========&quo ...
- 通过Percona XtraBackup添加一个slave
假设我的master是172.16.15.8,要添加的slave是172.16.15.9 1:在主服务器执行备份操作(172.16.15.8) /usr/bin/innobackupex --comp ...