Quartus Prime 16.1 和Modelsim 16.1联合(二)仿真测试

上次介绍了软件联合安装和部分基本配置,两个软件可以独立使用,但是不能联合使用,下面我将详细介绍quartus 16.1和modelsim 16.1联合仿真配置以及仿真测试的过程。


1、首先当然是打开quartus软件,创建FPGA工程,编写代码,编译等,具体过程不详述。为了简单起见,编写一个非常简单的时序逻辑电路:模12计数器,语言为Verilog。之前自己一直用的是VHDL,应该是自己学的不全面,感觉没有Verilog好使。代码如下图:实体名为Modelsim_test_1。
 
Quartus Prime 16.1 和Modelsim 16.1联合(二)仿真测试

2、仿真设置。注意此步骤必须先完成,不然后面没办法操作。quartus菜单栏操作:“Assignments”中打开“settings”,打开“EDA Tool Setting”中的“simulation”如下图界面。
“Tool name”选择“Modelsim-Altera”;
“Format for output netlist”我选择“Verilog HDL”,因为我用的是Verilog语言;
“Time scale”仿真时间单位为1ps可以不用管;
“Output directory”是仿真文件输出相对路径,可以不用管。然后进行下一步。

Quartus Prime 16.1 和Modelsim 16.1联合(二)仿真测试 

3、创建testbench模板,如下图操作。Modelsim仿真时,需要编写工程的仿真测试程序,下面操作可以很直接给出仿真测试模板,然后添加相应代码即可。(添加代码过程下面会详细给出)

 Quartus Prime 16.1 和Modelsim 16.1联合(二)仿真测试


4、查看生成的testbench文件路径。上一步骤操作完成后,会在刚才的那个相对路径下的仿真文件中生成testbench文件,如下图。我的路径是D:/FPGA_Project/Modelsim_test_1/simulation/modelsim/Modelsim_test_1.vt 。然后直接在quartus软件菜单栏中操作:“file”然后“open”,根据路径找到这个文件后打开,如下图。注意所打开程序中我圈出来的地方,以后要用到这些。

Quartus Prime 16.1 和Modelsim 16.1联合(二)仿真测试
 
 Quartus Prime 16.1 和Modelsim 16.1联合(二)仿真测试


5、添加文件。很重要的步骤。按照步骤2再次打开“settings”。在“NativeLink settings”中选择“compile test bench”如下图,点击后面圈住的“Test Benches”。
 
Quartus Prime 16.1 和Modelsim 16.1联合(二)仿真测试

6、继续添加文件。经过步骤4后点击“new”,如下图。此处得回到步骤3打开的testbench模板文件。
长的名字“Modelsim_test_1_vlg_tst”就是“Test bench name”要填的,避免手误,可以直接拷贝,当然它也是在modelsim中作为modelsim仿真工程的顶层实体名,和在quartus中的顶层实体名“Modelsim_test_1”具有相同的作用。可以观察到,“Modelsim_test_1”在“Modelsim_test_1_vlg_tst”被实例化为“i1”。
“Use test bench to perform…”前需要打钩。
“Design instance name in test bench”后面就是填写在testbench中被实例化的模块名“i1”。
划线4位置处找到testbench路径即可。
最后点击“Add”“OK”“Apply”等,完成配置。
 
Quartus Prime 16.1 和Modelsim 16.1联合(二)仿真测试

7、修改代码。之前打开的testbench文件只是一个仿真平台模板而已,而所需要的初始化等没有编写。编写如下图所示。
Initial中:初始clk为低电平,复位信号rst_n为低电平,延时20ps后rst_n置1,计数器开始工作,再延时100ps。(时间单位在配置时已经设置,也在此段程序第一行体现)
Always中:表示时钟周期为20ps,占空比0.5。
注意:图中画线语句务必注释,具体原因不知道。不注释将只能仿真一个周期。

Quartus Prime 16.1 和Modelsim 16.1联合(二)仿真测试
 
8、鸡冻人心的时刻,终于可以打开modelsim了。按照如下图操作:“Tool”=>“RTL Simulation”,稍等片刻modelsim便可自动启动。

 Quartus Prime 16.1 和Modelsim 16.1联合(二)仿真测试

9、打开modelsim后如下图。可以观察到正在运行testbench,波形窗口也会自动弹出,也可以观察到,波形自动生并且一直在自动仿真。第一行那个红线波形表示有问题波形,那个就是被注释掉的那个信号,那个信号应该没什么作用,这里忽略。其他信号运行正确,仿真测试成功。
 
Quartus Prime 16.1 和Modelsim 16.1联合(二)仿真测试 
Quartus Prime 16.1 和Modelsim 16.1联合(二)仿真测试

10、终于联合仿真成功了,太令人激动了。这个只是非常简单的模块,那么接下来将继续探索更加复杂的工程的联合仿真了。