打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Quartus 11.0 ModelSim 10.0c联合仿真
同事写的
简介

Quartus编程软件11.0版本就不能在其内部进行仿真,需要调用仿真工具来完成此任务。本文采用的仿真工具是ModelSim 10.0c,下面将介绍两者联合仿真的基本方法。本人能力有限,只介绍了它们的基本功能,还有很多强大的功能有待日后摸索后再与大家分享,如果文档中有什么问题,请及时指正。

基本调用流程
  1. 设定仿真工具

在Quartus界面下:Assignment>Setting>EDA Tool Settings目录下Simulation>Tool name选择ModelSim。

  1. 自动产生测试激励文件模板:

在Quartus界面下:Processing>Start>Start Test Bench Template Writer

我们点击之后系统会自动在目录:当前工程>simulation>modelsim文件夹内生成一个测试激励文件xxx.vt(Verilog test bench)或者xxx.vht(VHDL test bench),文件名跟你工程中的Top module的名字一样,后缀为.vt或者.vht。

  1. 编辑生成的test bench文件

我们加入自己需要的激励以及初始化语句,这里我们还可以修改test bench的模块名字为XXX(名字根据自己的需求定,此处设定为detect_modul_t我们会看到这个名字和后面的设定有联系)。

  1. 连接test bench,我们需要从Quartus中自动调用仿真工具,所以需要设定Native Link选项

    1. 还是在Simulation的设置页面里,对Native Link对话框中的选项进行设定,因为这里需要工具自动调用激励所以选中Complie test bench;

  1. 点击右边的Test Benches, 我们需要在这里设定一个相关联的test bench。

  1. 指定Test Bench

    因为我们是第一次产生Test Bench,点击New。

点击New之后会产生一个New Test Bench Setting的对话框,在这里将Test Bench和你相应的test bench file进行绑定。

我们这里在Test bench name的对话框中输入一个名字'detect_module',我们将看到,在下面的Top level module in test bench对话框中也自动显示'detect_module',注意这个名字应该和你的test bench 中的module name一致,我们之前在第3步的时候将Test Bench的module name已经改成了'detect_module_t',所以我们这里应该把对话框中的名字改成'detect_module_t'。

  1. 加入Test Bench文件

此处我们小结一下,我们对比看New Test Bench Setting和detect_module.vt文件的内容,我们发现它们是一一对应的,如下图不同形状蓝色框图所示。

  1. 进行仿真

当这些设定都完成之后,选择菜单Tool>Run EDA Simulation tool>EDA RTL simulation就可以直接调用ModelSim进行仿真。

小技巧

1、我们这样调用仿真,由于我们使用的是ModelSim SE版本,每次调用都需要重新编译库,非常不便,在此建议自己修改脚本文件,进行仿真。

  1. 当我们按照之前的描述,运行完仿真之后,停留在ModelSim的界面;

  2. 在ModelSim界面的命令行上,我们点向上的方向键,就会出现我们上一条指令,我们看到的是do xxx.do这说明工具执行的上一个命令式xxx.do这个脚本文件,我们此处是do key_detect1_run_msim_rtl_verilog.do。

  1. 在命令行内输入edit key_detect1_run_msim_rtl_verilog.do就可以对此脚本文件进行编辑;

  1. 通常来说库文件只在第一次编译的时候,需要编译,后面我们只需要在仿真的时候指定库文件的位置就好了,不需要每次都编译。因此我们可以注释掉'库文件编译部分'。这样做的好处在于节省时间,在后续工程开发中,库文件远可能不止下面的这几个,有时候可能达到数百个,注释掉他们以后运行节省的时间就很可观了。下面图中红色框中的部分就是被注释掉的库编译部分,这样会节省我们的仿真时间,注意在脚本语言中#是注释符;

  1. 我们将编辑过的脚本文件另存为sim.do(sim这个名字用户可以自行设定)至工程所在文件夹>simulation>modelsim>下, 在以后的仿真中我们可以在Modelsim命令行中,直接在脚本中运行do sim.do(当然是先需要将Modelsim的工作目录改到工程所在文件夹/simulation/modelsim/ )。

  1. 另外脚本生成的波形文件通常是将test bench的顶层加入到图形画面中我们可以看到在脚本的第3部分(运行参数和开始执行部分),默认命令式 add wave *, 这条命令就是将 test bench顶层的所有信好加入到wave窗口中。

在调试阶段,有很多底层信号都是想观测的,所以需要再手动修改一下命令,加入我们需要的底层信号。

  1. 在modelsim的窗口中,选中自己想要关心的模块,右键可以将自己关心的信号加入wave波形中;

  1. 此时我们在wave 窗口中可以将这个波形的格式存下来,不过在此之前需要将上图红框以外的信号删除,避免重复添加,接着在wave窗口中点菜单file>save… 选择文件名为wave.do保存至工程所在文件夹>simulation>modelsim>下(默认即可);

  1. 在我们执行的脚本中将,在add wave *这个命令下一行加入do wave .do, 就可以在每次执行仿真的时候自动添加额外想要观测的波形,避免每次手动添加。 

  1. 针对不同模块,可能我们需要添加的信号不同,我们可以通过调用不同的wave.do文件实现,我们分别对添加不同的信号分别保存为wave1.do和wave2.do,注意框内的信号和文件名是不同的。

  1. 此次保存之前我们没有删除除我们选中以外的其他信号,下面通过修改命令来完成信号波形调用。我们将add wave *命令注释掉,输入do wave1.do。

调用ModelSim,注意红框内信号名称,我们发现调用的wave1那么对应的就是这两个波形,如果调用的wave2就是L2H_F1和L2H_F2。

同时从上图可以知,我们在保存wave1的时候没有删除除我们选中以外的其他信号,对比上面命令行的内容如下图所示,可以发现add wave *命令实际上就是添加模块本来就应该输出的信号波形(仿真模块的输入和输出信号),我们在注释掉add wave *命令以后执行do wave1.do命令,那么这个wave1.do文件就应该将这些波形也保存起来(实际操作中也可以不保存,因人而异),如果不保存,ModelSim就只会显示红框内我们刚才添加的信号H2L_F1和H2L_F2,大家实际操作一下就可以明白其中的意思。

2、我们可以发现在基本调用ModelSim中自动建立的激励文件只是针对顶层模块的,而我们在实际应用中,对除顶层模块以外的其他模块进行仿真也是有必要的,下面介绍对其他模块仿真的方法。

  1. 工程所在文件夹>simulation>modelsim>下新建debounce_module.vt文件,(名字根据实际设定);

  1. 编写detect_module.vt文件,模板如下;

  1. 按基本调用中的方法在New Test Bench Setting中将测试文件设置好并绑定,注意基本调用中第4点的小结部分提到的设置选项对应;

选择debounce_module,点击OK,

在Comple test bench选择debounce_module,

点击OK后,进行仿真即可。

3、我们实际添加底层信号的时候,会发现模块内的部分变量找不到,这是由于ModelSim在仿真的时候对模块进行了优化处理导致这些信号被屏蔽了,我们可以手动将这些信号添加出来。

在ModelSim内的Library界面>rtl work下,选择我们添加信号的模块,右键点击Simulation without Optimization,对比两图,有图中将模块内部所有信号都显示出来。

4、在对顶层模块进行仿真时,对其中底层模块代码进行修改,此时希望观察底层模块的仿真结果,可进行如下操作实现。

    我们在修改好代码后,在ModelSim内的Library界面>rtl work下,选择我们需要仿真的模块,右键选择Simulation即可。

5、接下来怎样才能一次性的编译好库文件,让软件不再每次编译。

  1. 点击Tool>launch EDA simulation Library Compiler

  1. 我们会看到一个让我们选择器件的页面。根据你的实际情况选择下面的设定。点击Start Compile,软件会自动帮你完成编译,然后关掉就好,至此你应该已经完成了库的编译。

  1. 接下来我们需要在Quarttus的仿真设定页面做一些修改。 
    我们需要回到设定界面Assignment>Setting>Simulation>More Native Link Setting

设定好相应的路径。

重新run仿真,就发现不会再编译我们的库文件了。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Quartus II调用modelsim无缝仿真
Quartus II和Modelsim的联合仿真(详细)
modelsim和quartus 联合调试
QuartusII12.0调用Modelsim波形仿真实例
Quartus与Modelsim的联合仿真及脚本
菜鸟学习Modelsim 之 遇到的问题及解决方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服