Menu Close

Quartus II仿真文件使用的理解及问题解决

Quartus II仿真文件使用的理解及问题解决

(文:赵云集, 庄乾起)

一、什么是仿真文件

仿真文件(testbench)是模拟实际环境的输入激励输出校验的一种“虚拟平台”;是一种验证手段,就是用testbench可以对实际信号的输入输出进行一些模拟,再通过观察波形图的方式来检验信号是否符合我们的设计要求。仿真文件可以由Verilog HDL 书写,也可以由VHDL或 System Verilog HDL编写。目前多数的编译及仿真工具都支持混合语言编程方式,即用Verilog HDL编写的testbench文件可以用来仿真Verilog设计,也可以用来仿真VHDL语言及System Verilog的设计文件,反之依然。下面就以Verilog HDL为例编写的testbench文件tb.v为例进行介绍。

二、如何使用仿真文件

1、仿真文件的特殊性

仿真文件与正常的设计文件有很大区别,具体表现在如下几个方面:

  • Testbench 文件中没有输入、输出等接口,该部分内容是空的,因为只是用来测试底层实体模块,对输入、输出没有需求。如:

module tb

( );

而实体(entity)文件中module接口部分是不能空的,其实实体module中可以没有输入,但不能没有输出或双向接口,如:

module max

(

input [7:0] a,

input [7:0] b,

output [7:0] c

 

);

assign c=(a>b)?a: b;

endmodule

  • Testbench文件由于没有输入、输出接口,因此在仿真系统中是最顶层文件,因此该module 不能再例化被其它module调用。但testbench文件可以使用其它的module的例化。
  • 仿真文件不能参与综合。主要原因也是因为没有输入、输出接口,不能形成实体电路模块。
  • 仿真文件由于不需要参与综合,因此所有Verilog中支持的语法都可以在该文件中使用。如:延迟语句,forever循环等,这些一般在实体 module不被综合的语句都可以使用。
  • Verilog 仿真语法提供了许多专用函数和任务,如:#display,$monitor,文件操作等专门用来对FPGA和IC设计代码进行验证的工具集。

 

2.QuartusII下仿真文件编译

    • testbench文件的编译。在Quartus II 下Verilog 文件的编译原则如下:
      • 所有使用到的文件应汇集到工程管理下,可以在菜单Assignment–>settings… 查看,如图1:

图1

如果图1中没有包含所有工程文件,可以在这里添加。

    • Quartus II 编译是按照顶层文件开始并按照层次展开,把所有各层次例化的module,function,task等文件进行编译,编译时遵循依赖关系,非常类似于c。
    • testbench 文件的编译,如果想利用Quartus II检查Testbench文件的语法错误,应将testbench文件设为顶层文件,点击工具栏start Analysis & Elaboration进行分析和评估(因为testbench文件是不可综合的)。如果有语法错误可以根据提示修改和纠正。
    • Testbench文件在Analysis$Elaboration 最后会报出如图2错误,这说明评估到了最后阶段,testbench 及其它实体文件没有语法错误。
    • 将工程的真实顶层文件设为top level file,重新编译

图2

3.仿真工具链接口

  • 在project navigator中右键点击芯片选择settings,如图3

图3

  • 在simulation界面中选择compile test bench->点击test benches按钮,如图4,

图4

  • 在跳出的对话框中点击new按钮,选择为本工程编写的Testbench文件(tb.v),如图5

图5

  1. 在file name上选中写好的tb文件,点击Open按钮,如图6

图6

  • 点击ADD添加,并将testbench name, Top level module test bench的名称都和仿真文件的名称一致(如tb),如图7,

图7

  • 全部点击OK按钮
  • 点击分析和评估(start Analysis & Elaboration),如图8,

图8

4.启动Modelsim仿真

  • 在tools下的Run Simulation Tool下选择RTL Simulation,如图9

图9

  1. 分析信号
  • 刚打开的波形还在运行,点击STOP停止运行,即出现波形,如图10

图10

  • 在sim-default中选择文件,在objects中选择想观察的信号拖拽到wave-default中,如图11

图11

  • 选择运行时间后点击全运行后点击STOP停止运行观察波形,如图12

图12

三、常见错误

1、综合时报错Error (12007): Top-level design entity “tb” is undefined(文件未定义)

主要是把仿真文件设为顶层的原因。由于仿真文件本身没有输入输出信号,所以仿真文件不能被综合,因此仿真文件在Quartus下不能作为顶层文件参与编译,可以使用临时设为顶层文件进行Analysis & Elaboration,便于语法检查,直到报出该错误,在将顶层文件切换回原来的顶层文件。顶层文件的切换步骤如下:

  • 在Project navigator中选择files,如图13

图13

  • 找到设计的顶层文件->选中右键->设为顶层,重新综合,如图14

图14

  • modelsim中的波形界面中信号和波形显示

图15

  • 可能是没有在modelsim中没有正确设置仿真的顶层文件,检查Quartus II Simulation各项,可以根据第二大条第一项添加。
  • 可能是testbench文件存在语法错误,如图16

图16

根据报错去文件相应位置修改就可以了。

  • 弹出Nativelink error对话框

图17

原因是之前已经开了一个modelsim没有关闭。此时再从Quatus中启动 Run RTL Simulation就会报如图17的错误。

本文仅仅是最近学习和调试的总结,欢迎各位同学补充、和指正。

 

Posted in FPGA, FPGA 教材教案, FPGA开发板, Quartus II, Verilog, 文章

发表评论

您的电子邮箱地址不会被公开。

Leave the field below empty!

相关链接