独立于三大FPGA平台采用modelsim仿真

背景

独立于三大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库添加进去,后续我再删除。
这里,我就暂时不给出例子了,其实都是一样的步骤。
总结一下,就是加入器件库,然后编译仿真。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值