文章目录

  • 背景
  • 1、Modelsim对Alteral器件的独立仿真
    • 1.1 对Quartus 的仿真
    • 1.2 对quartus 独立仿真实际案例
    • 1.3 保存波形文件
  • 2、Modelsim对ISE Xilinx器件的独立仿真
  • 3、Modelsim对vivado Xilinx器件的独立仿真

背景

独立于三大FPGA平台进行仿真,可以加快仿真速度,所以,完全有必要掌握以下,而且,我很纳闷儿的事情是每次修改了verilog后,修改了TB后,都要重新启动modelsim,这一点也让验证仿真的过程变得十分慢,而且每次都要在modelsim中,我们才知道tb的语法是否正确,这一点也让我觉得挺烦的。所以本篇文章开始致力于解决这件头疼的事情。另外modelsim SE版本是最高级的版本,而集成在这三大器件厂商的版本都是OEM版本,SE版和OEM版在功能和性能上有较大的差别,比如,对于大家都关心的仿真速度问题,以Xilinx公司提供的OEM版本modelsim XE为例,对于代码少于40 000行的设计,SE要快10倍,而超过40 000行的设计,modelsim SE要快40倍。此外,SE还支持linux平台。

1、Modelsim对Alteral器件的独立仿真

后仿真又称之为时序仿真,是利用SDF文件对原有设计进行时序标注。后仿真从一定程度上可以反映设计的时序性能,modelsim本身并不能生成后仿真需要的SDF文件,但是由于Modelsim对多数FPGA厂商的支持,使其可以利用其它FPGA工具生成的SDF文件进行时序仿真。

1.1 对Quartus 的仿真

工具:modelsim SE-64 10.4 Quartus 13.1
当我们成功编译完verilog程序后,不用再simulation 设置里面匹配 tb 文件,此时,就可以把Quartus软件关闭了,接下来转为使用modelsim。
启动modelsim ,编译对应器件的库文件。也就是说,modelsim中需要有Alteral的器件库文件,这样才能调用这些器件库文件。为此,为了一劳永逸,我们需要在我们的modelsim中添加Alteral的器件库,然后编译进modelsim中。以下文本经过我多次检测,走了不少弯路,倒腾了很久。

  • 建立库



新建一个名字为ALT的库,当然上图不是空的,这是我成功后的图片。

  • 新建空文件

在modelsim中,在默认路径下面建立库,此时库里面是空的。然后在modelsim的安装路径中新建一个空文件。

  • 编译入库
    只有通过编译,我们才能添加到库中,我们把目录切换到上述图片的路径下面,然后点击编译


    注意选择编译到的库,另外选择alteral的安装路径下eda-》simlib,这里注意了,选择所有的verilog文件,不要全部.v和.vhd全部选,至于为什么,我之前试过好多次,全选后用verilog写的程序开启仿真会导致错误。由于,我本身也不会VHDL,这里我们就只选择所有的.v文件,通过编译入库吧。实际上,我们只需要我们需要的alteral_primerite.v以及cycloneiv_atoms.v入库即可,但是这里,我们就把所有都编译入库吧。

-修改ini
由于我们切换modelsim的工作路径过后,我们添加的编译的器件库就会消失,为了解决这个问题,我们可以在ini文件中,找到我们定义的库名,此处为ALT,ini中写的是ALT=ALT ,我们更改为:

重启软件,这样我们切换目录,完全不影响了

  • 开始仿真
    在开始仿真前,我们要新建一个工程,把用到的.v文都包含进一个新建的文件夹中,包括我们用到的IP的.v文件。
    然后在文件中新建一个工程。然后开始点击start simulation


如上图所示,选中要仿真的顶层实体,并且库,选择我们之前设置的ALT库,里面包含了我们的各种器件。当然,也包含了我们需要的cyclone iv的RAM IP核。

  • 注意事项
    首先,有时候点击编译是灰色的,这个时候,是因为我们的工程中已经编译完成了添加进来的实体。我们只需要继续添加即可,或者我们要添加器件库的话,就切换路径到默认路径(安装路径)

有时候切换路径按钮也是灰色的,这个时候需要在仿真里面,终止仿真。

此外,有些情况下,我们还需要关闭当前工程,恢复到无工程状态。

最后一点心得体会就是:不管modelsim的操作如何,思路很简单,要仿真,就得添加库进来,要添加库,只能通过编译入库,这样就可以调用这些库里面的函数和定义了。最后开启仿真即可。

1.2 对quartus 独立仿真实际案例

对于一个modelsim工程来说,需要有这几个文件组成:程序硬件设计verilog文件(包括IP的.v文件)、匹配的器件库文件、测试激励输入文件。
这里,我们要说的是需要先在quartus里面写好激励文件vt,编译,这样才能生成匹配的器件库。前面所说的方法,我们的用户往往电脑并不是这样设置的,所以,在项目交接过程中,我们最好提供给用户一个完整的modelsim工程,这样才能称得上独立的modelsim工程。下面,我就以一个实际的例子来说明。



如上图所示verilog_libs里面包含了匹配的器件库。

如上图所示,拷贝匹配的器件库到RAM工程文件夹中。另外,我们还需要拷贝.v文件

另外,把vt文件改成v文件,并把vt文件里面的名字改写成tb



然后·在modelsim中建立工程

进行编译

在开始编译的库选择中,选择我们modelsim工程文件中的这两个文件

在如下图的i 1中右键点击add wave就可以将所有的寄存器变量加入wave中观察

如下图所示,我们可以看到没有延迟。所采用的是功能仿真。

至此功能仿真完毕,我们又该如何增加时序仿真呢?下面我接着来讲解一番
我们向modelsim工程中添加vo文件,并拷贝到modelsim文件夹中来


然后编译仿真即可


从上图,我们可以看到出现了延时,以及跳变

1.3 保存波形文件

当我们一次运行了modelsim后,想要保存下来,以便下次直接打开,而不需要重新运行,我们点击保存。如下图所示,会提示我们保存为.do文件。这个文件包含了我们在modelism的波形操作设置,包括添加波形等等。如何看懂do文件的内容,后续我会补充。如下图,点击保存即可。

接下来,我们下次要打开波形的时候,首先打开.wlf文件,然后再进行运行
do wave.do

后续,我会继续完善怎么运行modelsim,由于独立运行modelsim不是必要条件,所以,我们也不急于求成,以后再慢慢来商讨,本次,先有了库的概念,然后进行后仿真的操作。虽然,我个人觉得,还有很多问题要解决,比如,如何进行前仿真,如何保存波形数据,如何与matlab互联等等,都是要解决的问题。这些问题,暂且留到以后吧。

参考:Modelsim电子系统分析及仿真 第七章

2、Modelsim对ISE Xilinx器件的独立仿真

对于modelsim,对ISE器件的仿真也是同样的道理,我们最重要的是添加ISE的xilinx器件库,这里我已经把库添加进去了,如果你还没有把xilinx的库添加进去,你可以按照联合仿真,然后拷贝用到库,再手动仿真。当然也可以先添加入库,详见:modelsim加入xilinx ISE库的方法


如上图所示

另外注意了,我们需要拷贝 RAM_IP.v 文件

如上图所示,注意添加xilinxcorelib文件。
这里要特别注意的一点是,请务必关掉优化,不然不能添加波形。



之后我们如果我们需要再次打开此modelsim工程,仍然可以保存do文件。然后打开wlf文件后在 run do文件即可

3、Modelsim对vivado Xilinx器件的独立仿真

这里由于我vivado的器件库并没有添加到Modelsim中,这里我将其添加到modelsim中,因为只要我添加进去,ISE就不能自动调用Modelsim了。这里,我先更改一下ini文件,将vivado的Xilinx库添加进去,后续我再删除。
这里,我就暂时不给出例子了,其实都是一样的步骤。
总结一下,就是加入器件库,然后编译仿真。

独立于三大FPGA平台采用modelsim仿真相关推荐

  1. 国产智多晶FPGA使用Modelsim仿真RTL设计方法

    大家好,我是小梅哥,这里给大家介绍国产FPGA厂家"西安智多晶"微电子的FPGA使用Modelsim软件仿真智多晶FPGA的RTL设计的方法.本博客将陆续发表更多国产FPGA的开发 ...

  2. 【黑金原创教程】【Modelsim】【第一章】Modelsim仿真的扫盲文

    声明:本文为黑金动力社区(http://www.heijin.org)原创教程,如需转载请注明出处,谢谢! 黑金动力社区2013年原创教程连载计划: http://www.cnblogs.com/al ...

  3. FPGA学习笔记(五)Testbench(测试平台)文件编写进行Modelsim仿真

    系列文章目录 一.FPGA学习笔记(一)入门背景.软件及时钟约束 二.FPGA学习笔记(二)Verilog语法初步学习(语法篇1) 三.FPGA学习笔记(三) 流水灯入门FPGA设计流程 四.FPGA ...

  4. modelsim仿真正确FPGA运行不正确的可能原因 - cm4写寄存器错

    困住整整一周了,工作进行不下去,中午偶遇导师,指导意见是有两种可能: 1.  FPGA编译器优化代码,可以考虑把综合过程中所有的warning排查一下 2.  verilog里有不可综合的语句. 又及 ...

  5. FPGA配合debussy、modelsim仿真环境搭建

    FPGA配合debussy.modelsim仿真环境搭建 一.软件环境搭建 1,modelsim. 2,debussy 二.工程环境搭建 1,生成testbench 2.生成.fsdb波形文件 第一步 ...

  6. FPGA开发技巧:Modelsim仿真.do文件详细解析 原创 特权同学

    FPGA开发技巧:Modelsim仿真.do文件详细解析 原创 特权同学 FPGA快乐学习 以<FPGA边码边学 视频教程>"Lesson06 分频计数器设计"中的si ...

  7. FPGA VHDL语言实现FIR低通滤波器,包含完整代码,可在modelsim仿真 可仿真

    FPGA VHDL语言实现FIR低通滤波器,包含完整代码,可在modelsim仿真 可仿真,可在FPGA开发板硬件实现 ID:94150683735518602yqgo

  8. FPGA Verilog 串口无限多字节收发+流水灯程序+ModelSim仿真

    工作环境(蓝色粗体字为特别注意内容) 1,软件环境:Windows 7.Quartus II.ModelSim SE.串口调试助手 2,硬件环境:开发板:EP2C5T144C8N核心板.USB Bla ...

  9. ModelSim仿真Intel FPGA的DDR3问题

    Quartus Prime Pro Edition 18.0.0 Modelsim 10.6c(官方推荐版本,但我实际使用的是QuestaSim2020.1) 使用modelsim仿真Intel FP ...

最新文章

  1. Android开发RSS阅读器
  2. jQuery复制节点
  3. linux通过字符串查看,linux命令strings有什么用?查找二进制文件可打印字符串。...
  4. 前端学习(3247):react的生命周期getSnapBeforeUpdate举例
  5. 前端学习(2964):element-ui的制作
  6. addeventlistener事件参数_Vue的钩子事件和程序化侦听
  7. 诺基亚五摄手机国行版终于来了:下午见!
  8. dbvisualizer连接达梦_Dbvisualizer怎么使用,Dbvisualizer使用教程解析
  9. memcached命令
  10. [Java][Android] 多线程同步-主线程等待所有子线程完成案例
  11. 五位数电话号码以及中国各市区号
  12. Netty实战《RPC调用》
  13. 计算机专业暑假实践心得7篇,计算机专业实习周记总结10篇
  14. 大年三十问候导师的后果...
  15. 【BZOJ 3097】 Hash Killer I
  16. 自己动手写 Docker 系列文章总览
  17. 删除服务器tomcat上项目,删除tomcat服务器
  18. 期末前端web大作业:餐饮美食网站设计与实现——美食菜品网页(16页)
  19. 教你用 CSS 实现超真实的 3D 相册,让你的照片立体感 UPUP
  20. AJAX框架衣柜内部结构,衣柜内部结构这样布局,解决你家 90% 的收纳难题

热门文章

  1. 在studio中使用libsdl2.so,编译SDL Demo
  2. 用JQ去实现一个轮播效果
  3. cherry-pick,revert和rebase使用的3-way合并策略
  4. 06:甲流疫情死亡率
  5. 共享内存生产者消费者模型
  6. linux修改selinux
  7. UA OPTI501 电磁波4 电介质及其极化
  8. 模p加法和模p乘法学习
  9. 数据库内核杂谈 - 一小时实现一个基本功能的数据库
  10. 一些stl格式的点云的显示结果