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