【原创】Quartus与Modelsim的联合仿真及脚本
**参考
http://www.cnblogs.com/crazybingo/archive/2012/03/02/2376640.html
---By SOCquan
1 联合功能仿真l quartus 11.1中编写好代码,举例如下:
进行编译以检查错误;
自动生成testbeach文件
注意要先设置simulation方式为modelsim;
设置:Assignments---->settings:
查看quartus II 仿真时是否已关联modelsim的安装目录:
Tools –>Options –>在General里选EDA Tool Options:
生成testbeach文件
生成成功
打开testbeach文件
一般在…\simulation\modelsim文件夹中,后缀是.vt
完善teshbeach文件:
进行仿真设置: 完成NativeLink settings:
选择compile Test bench:
选择Test Benches…
点击new…填写完test bench name 和top level module in test bench后,点击file name后的…
之后点击Add:
最终设置
运行仿真:Tools—>run simulation tool—>RTL simulation
得到波形图
2 仿真“深度”调试
当源文件或者testbeach出现修改时,需要按以下步骤重新得到仿真结果
重新编译修改文件
选择Complile->complile,选择被修改的文件重新编译
复位仿真
在modelsim命令栏键入restart,回车运行
出现restart菜单,点击ok
设置仿真时间:在命令栏键入run 3000ns,设置仿真运行时间
此时,已得到源文件或testbeach修改后的仿真结果
注:我们可以继续通过键入run xxns 增加仿真时间
3 自动运行—脚本文件编写
这里主要讲如何将功能仿真结果的波形图进行保存,以便下次快速运行。
完善保存波形图
得到波形图后,可以先对波形图进行完善:添加感兴趣信号,设置字体波形颜色,缩小放大……
然后保存波形图 file->save format… 一般默认保存名字为wave.do,保持默认路径,
设置wave.do
在工程目录下打开…\simulation\modelsim文件夹
分别打开两个do文件,一个是quartus自动生成的divider_run_msim_rtl_verilog.do,
一个是保存的wave.do
divider_run_msim_rtl_verilog.do
此文件是modelsim自动运行命令,复制图中部分
即
vmap …(该命令的作用是将目前的逻辑工作库work和实际工作库work映射对应)
vlog …(该命令的作用是编译这些文件,默认编译到work库下)
vsim …(仿真work库中名为激励文件)
wave.do
此文件是modelsim波形窗口设置
添加入wave.do中的前面,并在最后添加运行命令,如run 3000ns
复制后
保存文件
自动运行
重新打开modelsim
输入命令 cd E:/EDA/modelsim/Quartus_modelsim/simulation/modelsim
指向目标文件夹,即wave.do与divider_run_msim_rtl_verilog.do的位置,注意不是“\”是“/”
最后输入命令 do wave.do即可
另一种仿真深度调试方式
我们将工程文件修改为自加2,保存
继续仿真只需要在2中结果中
Ø 关掉wave窗口
Ø 输入命令quit –sim退出仿真
Ø 重新输入命令 do wave.do
4 仿真工程可移植性修改
上面的脚本文件限定了工程的指定目录,为了使工程复制到不同的目录下后仿真依然可以自动运行,需要进行地址修改
将上图选中部分进行以下修改,并保存
当工程位置被修改后,即可重新
输入命令 cd 指向目标文件夹,然后输入do wave.do自动运行
5 联合时序仿真
(1)如在一开始设置中,选中在编译后自动进行门级仿真(时序仿真),软件会在编译后自动进行仿真,知道仿真结束,设置如下图:
(2)当然,也可以在功能仿真的基础上,直接Run gate level仿真即时序仿真
(3)Quartus II + Modelsim自动加载就可以得到时序结果。