Modelsim工具的一般仿真流程.docx
《Modelsim工具的一般仿真流程.docx》由会员分享,可在线阅读,更多相关《Modelsim工具的一般仿真流程.docx(14页珍藏版)》请在冰点文库上搜索。
Modelsim工具的一般仿真流程
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.建立新工程
File—>New-Project
然后就会弹出如下对话框,选择好工程的路径,命名好工程名字。
,如果之前就已经编写好了v或者vhd文件的话,直接选择addexistingfile,否则,选择CreateNewFile。
接下来把所有的v或者vhd的文件都添加进来。
3.编写testbench
……
4.编译整个工程
编写完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核的时候,(暂还不确定是不是因为曾在ISE中调用过modelsim来仿真的时候,自动生成了mif文件,反正在利用Modelsim来仿真的时候,ROM确实需要mif文件)。
在仿真的时候,和Altera一样,需要将mif文件,放到仿真文件夹的根目录下才不会报错。
在编译的过程中出现了以下错误,下面报了一个时间精度的问题,由于测试文件的时间精度和modelsim软件的精度不一样,导致仿真出错。
(所以,以后再编写程序的时候,要注意添加时间精度表达。
)
在用verilog写的测试文件中,可以通过`timescale1ns/1ps,来设定仿真时的时间精度。
但是Vhdl暂时没有发现。
网上查了一下,发现可以通过以下命令修改:
其中vtb是testbench,即所要用来仿真的文件。