前言
相关介绍
由于Quartus软件在9.0版本之后取消了自带的仿真器,因此使用Quartus软件需要使用第三方软件进行仿真验证。文中选用的是Modelism软件。这篇文章里使用的软件版本为:
Quartus Prime 18.1 Lite Edition
Modelsim SE-64 10.4
其他版本未测试,相近的版本应该可以,太久远的版本可能会有较多不一致的地方,请审慎参考。
本篇文章是自己学习使用Quartus软件仿真的归纳总结。网络上相关的文章很多,但是存在软件版本不同,关键细节缺少等问题。同时,还存在诸多无用信息,需要仔细筛选。找到的两篇软件版本与我使用的软件版本相差不大(有一篇完全一样)、细节详实的博文,给我提供了很大的帮助,链接如下:
[1]https://blog.csdn.net/qq_41612661/article/details/105092519 Quartus和Modelsim联合仿真详细过程
[2]https://blog.csdn.net/qq_44897194/article/details/105444743 【Quartus II 17.0 VWF仿真设置】
仿真方式
文章介绍的有两种仿真方式:
1、在Quartus软件仿真,仿真操作在Modelsim执行(即打开Modelsim软件);
2、在Quartus软件中打开“University Program VWF”并进行设置已完成仿真。
实际上两种方式都是基于对Modelsim的调用,只是调用和呈现的方式不同。
需要特别说明的是:
1、这里的仿真均指功能仿真(即Functional Simulation,又称前仿真),不包括时序仿真(即Timing Simulation,又称后仿真);2、使用的是Verilog HDL语言。
仿真过程
1、在Quartus中关联Modelsim,即在Quartus中添加Modelsim路径
具体操作是:菜单栏Tools->Options->EDA Tool Options。如下图所示,Modelsim栏选择的是即是Modelsim路径(是Modelsim软件安装目录下的win64文件夹,也可通过右击Modelsim,点击属性,属性窗口的目标一栏所列的地址就是所需要找寻的路径)
至此,完成Modelsim与quartus的关联步骤。
2、新建工程
由于仅考虑前仿真,因此在新建工程时,芯片按照默认设置即可,需要注意的是这一步,需要选择Modelsim,不可以按照默认来!!
Files->New,选择Verillog HDL File
在.v 文件里输入代码,进行编译。项目顶层模块名需要和工程名字一致。
此处以跑马灯/流水灯作为示例文件,工程名为
该工程仅有一个模块,则模块名也需要为waterfall_light,此处进行错误示范,令模块名为led_run,
编译时即出现如下错误
Error (12007): Top-level design entity "waterfall_light" is undefined
将模块名更改之后,重新编译,结果如下:
3、完成.v文件的编译之后,需要进行仿真,首先介绍
“在Quartus软件仿真,仿真操作在Modelsim执行(即打开Modelsim软件)”
步骤:菜单栏选择Processing->Start->Start Test Bench Template Writer,生成测试文件Test Bench模板,打开测试模板文件,编写测试程序
生成测试文件模板(生产的测试文件名称为waterfall_light.vt)
打开测试文件模板
进一步点击“simulation”,不做改动,则将如下图所示,显示无文件
实际上,应该对文件类型进行规定,如下所示,选择“All Files”即可
依据模板编写测试文件,编写完成进行保存,复制此处的模块名“waterfall_light_vlg_tst”
如下操作:
点选框图所示
完成设置,接着即可进行前仿真,菜单栏Tools->Run Simulation Tool->RTL Simulation
放大如下所示(程序是跑马灯程序)
接下来介绍,“在Quartus软件中打开“University Program VWF”并进行设置已完成仿真”
在进行仿真前,需要编译器件库
点击Output directory,选择相应的simulation文件夹中的qsim文件夹,最后点击Start Compilation。
!这里存在一个问题,有时候在simulation文件夹中没有qsim文件夹,只有modelsim文件夹,如下所示
选择这个文件夹,点击Start Compilation,也会有编译界面(而且一般编译不出错),但是在后续的VWF前仿真时,会报错。
如果没有qsim文件夹,则暂时跳过这一步。
接下来的操作为:
- 新建仿真波形文件Files->New->University Program VWF;
- 右击/双击左侧空白界面,点击Insert Node or Bus;
- 选择Node Finder->List,选择需要仿真的端口,保存设置;
- 添加各类输入激励,选择Run Functional Simulation完成前仿真。
上方菜单栏是各类激励输入,按照需求进行选择。
在保存文件时,需要注意的是,有时将默认文件名改动后也可能会导致出错,因此我一般按照默认文件名进行保存。(具体出错的原因没有细究,也可能是因为其他原因导致的,实际上与默认文件名无关(比如当时没有选择qsim文件夹编译器件库)仅供参考!!)
由于缺少编译器件库,此处报错,返回进行补充,此时可见qsim文件夹
选中qsim文件夹,进行编译。完成编译后,再返回至VWF文件,重新进行前仿真。
仿真结果如下图所示:
这里补充一个错误提示:
Error (10170): Verilog HDL syntax error at XXX.v(1) near text: â. Check for and fix any syntax errors that appear immediately before or at the specified keyword.
诸如此类,一般都是半角符号和全角符号的问题,或者是缺少“;”,或者是begin和end的问题,或者是其他一些奇怪的原因。
解决这类问题,大多数时候,把报错部分的代码重新敲一遍就可以了。