【原创】Quartus与Modelsim的联合仿真及脚本

**参考

http://www.cnblogs.com/crazybingo/archive/2012/03/02/2376640.html

---By SOCquan

1 联合功能仿真l quartus 11.1中编写好代码,举例如下:
【原创】Quartus与Modelsim的联合仿真及脚本

进行编译以检查错误;

自动生成testbeach文件

注意要先设置simulation方式为modelsim;
设置:Assignments---->settings:

【原创】Quartus与Modelsim的联合仿真及脚本

查看quartus II 仿真时是否已关联modelsim的安装目录:

Tools –>Options –>在General里选EDA Tool Options:

【原创】Quartus与Modelsim的联合仿真及脚本

生成testbeach文件

【原创】Quartus与Modelsim的联合仿真及脚本

生成成功

【原创】Quartus与Modelsim的联合仿真及脚本

打开testbeach文件

一般在…\simulation\modelsim文件夹中,后缀是.vt

【原创】Quartus与Modelsim的联合仿真及脚本

【原创】Quartus与Modelsim的联合仿真及脚本

完善teshbeach文件:

【原创】Quartus与Modelsim的联合仿真及脚本

进行仿真设置: 完成NativeLink settings:

【原创】Quartus与Modelsim的联合仿真及脚本

选择compile Test bench:

【原创】Quartus与Modelsim的联合仿真及脚本

选择Test Benches…

【原创】Quartus与Modelsim的联合仿真及脚本

点击new…填写完test bench name 和top level module in test bench后,点击file name后的…

【原创】Quartus与Modelsim的联合仿真及脚本

【原创】Quartus与Modelsim的联合仿真及脚本

之后点击Add:

最终设置

【原创】Quartus与Modelsim的联合仿真及脚本

【原创】Quartus与Modelsim的联合仿真及脚本

运行仿真:Tools—>run simulation tool—>RTL simulation

【原创】Quartus与Modelsim的联合仿真及脚本

得到波形图

【原创】Quartus与Modelsim的联合仿真及脚本

 

2 仿真“深度”调试

当源文件或者testbeach出现修改时,需要按以下步骤重新得到仿真结果

重新编译修改文件

选择Complile->complile,选择被修改的文件重新编译【原创】Quartus与Modelsim的联合仿真及脚本

 

复位仿真

在modelsim命令栏键入restart,回车运行

【原创】Quartus与Modelsim的联合仿真及脚本

出现restart菜单,点击ok

【原创】Quartus与Modelsim的联合仿真及脚本

设置仿真时间:在命令栏键入run 3000ns,设置仿真运行时间

【原创】Quartus与Modelsim的联合仿真及脚本

【原创】Quartus与Modelsim的联合仿真及脚本

此时,已得到源文件或testbeach修改后的仿真结果

注:我们可以继续通过键入run xxns 增加仿真时间

 

3 自动运行—脚本文件编写

这里主要讲如何将功能仿真结果的波形图进行保存,以便下次快速运行。

完善保存波形图

得到波形图后,可以先对波形图进行完善:添加感兴趣信号,设置字体波形颜色,缩小放大……

然后保存波形图 file->save format… 一般默认保存名字为wave.do,保持默认路径

【原创】Quartus与Modelsim的联合仿真及脚本

设置wave.do

在工程目录下打开…\simulation\modelsim文件夹

【原创】Quartus与Modelsim的联合仿真及脚本

分别打开两个do文件,一个是quartus自动生成的divider_run_msim_rtl_verilog.do,

一个是保存的wave.do

divider_run_msim_rtl_verilog.do

此文件是modelsim自动运行命令,复制图中部分

【原创】Quartus与Modelsim的联合仿真及脚本

vmap …(该命令的作用是将目前的逻辑工作库work和实际工作库work映射对应)

vlog …(该命令的作用是编译这些文件,默认编译到work库下)

vsim …(仿真work库中名为激励文件)

wave.do

此文件是modelsim波形窗口设置

添加入wave.do中的前面,并在最后添加运行命令,如run 3000ns

复制后

【原创】Quartus与Modelsim的联合仿真及脚本

保存文件

自动运行

重新打开modelsim

【原创】Quartus与Modelsim的联合仿真及脚本

输入命令 cd E:/EDA/modelsim/Quartus_modelsim/simulation/modelsim

指向目标文件夹,即wave.do与divider_run_msim_rtl_verilog.do的位置,注意不是“\”是“/”

【原创】Quartus与Modelsim的联合仿真及脚本

最后输入命令 do wave.do即可

【原创】Quartus与Modelsim的联合仿真及脚本

 
另一种仿真深度调试方式

我们将工程文件修改为自加2,保存

【原创】Quartus与Modelsim的联合仿真及脚本

继续仿真只需要在2中结果中

Ø 关掉wave窗口

Ø 输入命令quit –sim退出仿真

Ø 重新输入命令 do wave.do

【原创】Quartus与Modelsim的联合仿真及脚本

4 仿真工程可移植性修改

上面的脚本文件限定了工程的指定目录,为了使工程复制到不同的目录下后仿真依然可以自动运行,需要进行地址修改

【原创】Quartus与Modelsim的联合仿真及脚本

将上图选中部分进行以下修改,并保存

【原创】Quartus与Modelsim的联合仿真及脚本

当工程位置被修改后,即可重新

输入命令 cd 指向目标文件夹,然后输入do wave.do自动运行

5 联合时序仿真

(1)如在一开始设置中,选中在编译后自动进行门级仿真(时序仿真),软件会在编译后自动进行仿真,知道仿真结束,设置如下图:

【原创】Quartus与Modelsim的联合仿真及脚本

(2)当然,也可以在功能仿真的基础上,直接Run gate level仿真即时序仿真

【原创】Quartus与Modelsim的联合仿真及脚本

(3)Quartus II + Modelsim自动加载就可以得到时序结果。