《Modelsim工具的一般仿真流程.pdf》由会员分享,可在线阅读,更多相关《Modelsim工具的一般仿真流程.pdf(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-ModelsimModelsim 工具的使用工具的使用一、一、仿真流程仿真流程1.1.建立建立 workwork 库库通常 modelsim 在使用的时候,和大多数开发软件一样,第一步先建立一个工程。而modelsim 在建立工程之前,一般都要建立一个工作库library,命名为 work,仿真的时候工程就运行在这个库里面。通常modelsim 在第一次运行的时候,并没有work 这个库文件,所以没有 work 库的话,先建立一个 work 的 library,再建立新的工程。一般的工程路径设置如下:project放置 FPGA 的工程文件,source放置源代码 ipcore,建议放在工程
2、的根目录下,有同事发现 ipcore 改变其路径,仿真的时候会出错,并且工程里面要手动添加 IP 核的文件,simulation放置 modelsim 的仿真工程。新建一个 work 库。FileNew-Library刚建立的 work 库是空的,因为里面什么东西都没有,但是当添加了相应的文件后,编译一次,work 就会有容了。新建的 Work,右键设置 Edit 一下他的属性,如图上所示,pathname这里指定到存放仿真工程的work 的库文件夹即可。2.2.建立新工程建立新工程File New-Project然后就会弹出如下对话框,选择好工程的路径,命名好工程名字。,如果之前就已经编写好
3、了 v 或者 vhd 文件的话,直接选择add e*isting file,否则,选择Create New File。接下来把所有的 v 或者 vhd 的文件都添加进来。.z.-3.3.编写编写 testbenchtestbench4.4.编译整个工程编译整个工程编写完 testbench 之后,编译整个工程,以后每当工程中其中一个文件修改后,只需单独编译修改的那个文件即可。参见文档最后局部的例子编译完后,会发现在Project 中,里面的文件都会打钩,并且在simulation 文件夹里面的子文件夹 work 会多了一些东西出来。返回到 Library 这里,会发现之前是空的wrok 文件库
4、里面,现在也多了一些东西。需要注意的是,在设置该 library 路径的时候,一定要指定到仿真目录的 work 文件夹,否则很可能映射不过来。5.5.仿真仿真回到 Library 中,展开 Library_work 中的文件,我们只需对 testbench 进展仿真即可。点击 simulate,稍等片刻之后,就会弹出另外一个sim 仿真窗口。在 Objects 选项中,选择自己想要观察的信号,添加到波形中。设定好仿真时间,就可以仿真了。综上,整个脱离软件开发平台的仿真流程根本上如此。文中只是简单介绍了最根本的,后面还会涉及到后仿真,针对单独*个文件仿真,testbench 的编写,为了以高效率
5、的 Tcl 命令等等。在仿真之处,需要修改modelsim 的 ini 文件,添加器件库信息,这里暂不做介绍。6.6.附修改设计文件后的仿真附修改设计文件后的仿真有时候经过仿真,发现设计文件的问题,需要修改,然后再仿真,碰到这种情况应该怎样做呢?下面举一个修改了PLL 的例子,简要说明。在修改之前,PLL 出来了一个 20MHz 和 5MHz 的时钟,如图上所示。返回 Quartus 修改设计文件,修改 PLL 的参数,让其输出 20MHz 和 10MHz 的时钟,修改后发现 Modelsim 已经检测到 pll 的变化,原来的勾,变成了问号。重新编译该pll 文件这里的强大之处是,不需要等待
6、在 Quartus 将工程重新编译,重新仿真即可。如上图所示,证明仿真结果和修改后所需的设计一致。2014 年 8 月 25 日星期一上周进展了脱离 Altera 平台的 Modelsim 仿真,现在当在做脱离 ISE 平台的仿真时,报了以下错误,仔细观察了一下,这些错误都是调用了 IP 核的文件,很有可能是因为没有把*ilin*的相关的库添加到 modelsim.ini 这个文件当中。截图如下:但是发现当利用*ilin*平台调用仿真的时候,在仿真的目录里面,会自己产生一个 modelsim.Ini文件,差异可能就在这里。果然,当利用 ISE 平台自己调用的时候,发现在 modelsim 文件
7、库里面多了很多东西。其局部都是*ilin*的器件库。本着这种想法,比照了以下两次仿真时,所用到得配置文件modelsim.ini 文件的区别。截图.z.-如下:从上图中可以看到,利用 ISE 平台调用的 Modelsim 仿真,果然自己往配置文件里面添加了不少*ilin*的库,由于单独使用 modelsim 的时候,没有把相应的库文件添加进去,所以仿真不成功。编译库的路径如下:将 ISE 仿真生产的库,存放到一个自己清楚,方便调用的文件夹中,方便修改Modelsim 启动的 ini 配置文件。然后在配置文件中,将红色圈圈圈起来文件夹里的库,添加到modelsim.ini 的配置文件中。具体截图
8、如下:综上所述,脱离*ilin*平台的仿真和 Altera 平台仿真,所走的流程是一样的,比拟有可能不一样的地方就是出现在IP 核这块了,从实验中出现的现象来看也证实了这个问题。实验的程序中用到了 ROM,只不过 Altera 的 ROM 用的是 mif 文件,而*ilin*的 ROM 用的是coe文件,但是在生产IP核的时候,暂还不确定是不是因为曾在中调用过modelsim来仿真的时候,自动生成了 mif 文件,反正在利用 Modelsim 来仿真的时候,ROM 确实需要mif 文件。在仿真的时候,和Altera 一样,需要将 mif 文件,放到仿真文件夹的根目录下才不会报错。在编译的过程中出现了以下错误,下面报了一个时间精度的问题,由于测试文件的时间精度和 modelsim 软件的精度不一样,导致仿真出错。所以,以后再编写程序的时候,要注意添加时间精度表达。在用 verilog 写的测试文件中,可以通过timescale 1ns/1ps,来设定仿真时的时间精度。但是Vhdl 暂时没有发现。网上查了一下,发现可以通过以下命令修改:其中 vtb 是 testbench,即所要用来仿真的文件。.z.