Quartus18 Modelsim-Altera 仿真

Quartus Prime 中集成了Modelsim,可以调用Modelsim对顶层文件进行仿真。

1、初次使用的话,设置Modelsim-Altera的安装路径:

Tools--Options


image.png

General--EDA Tool Options,设置仿真工具的目录。右侧窗口选择你电脑Quartus安装目录中Modelsim-altera的位置,示例如图


a11 Modelsim-Altera.png

2、打开或者新建工程,将当前工程的仿真工具设为ModelSim-Altera

这里以一个译码器的工程为例:

module decode7(keys,segment);
input [3:0] keys;
output [7:0]segment;
reg [7:0] segment;

always @(*)
begin
    case(keys)
    4'd0:segment = 8'hC0;
    4'd1:segment = 8'hF9;
    4'd2:segment = 8'hA4;
    4'd3:segment = 8'hB0;
    4'd4:segment = 8'h99;
    4'd5:segment = 8'h92;
    4'd6:segment = 8'h82;
    4'd7:segment = 8'hF8;
    4'd8:segment = 8'h80;
    4'd9:segment = 8'h90;
    default:segment = 8'hFF;
    endcase 
end
endmodule

工程设计完成后,设置Assignments -- Settings,弹出的对话框中,左侧选择EDA Tool Setting -- Simulation,右侧的第一个下拉列表选择ModelSim-Altera,示例如图。


a12 simulation setting.png

3、生成测试文件.vt

先对工程执行分析综合: Analysis & Synthesis
然后生成测试文件模板,操作如下。


image.png

生成的.vt文件位于当前工程目录中..\simulation\modelsim\ 文件夹内。
生成的 .vt只是一个模板,并不完整,需要补充。用Quartus打开这个.vt 测试文件:


打开 .vt 测试文件

编辑需要的测试激励后,保存。

`timescale 1 ns/ 1 ps
module decode7_vlg_tst();
reg [3:0] keys;
wire [7:0]  segment;
                        
decode7 i1 (  
    .keys(keys),
    .segment(segment)
);
initial                                                
begin                                                  
   keys = 4'd0;#50;
   keys = 4'd1;#50;
   keys = 4'd2;#50; 
end                                      
endmodule

拷贝下vt文件中的顶层模块名,decode7_vlg_tst

4、将激励文件添加到仿真接口

Assignments -- Settings,弹出的对话框中,左侧选择EDA Tool Setting -- Simulation,右侧的第一个下拉列表选择ModelSim-Altera,下面添加Test Benches,流程示例如图。


设置Test Benches

image.png

第一个Test Bench name给当前的仿真起个名字,可以粘贴刚才的 .vt 里 decode7_vlg_tst
第二个Top level module ....粘贴测试文件.vt 里顶层module的名字 decode7_vlg_tst
点击Add后,点击OK--OK---OK........

5、功能仿真

Tools -- Run ---RTL Simulation(寄存器传输级仿真,与功能仿真相同),等一会儿,大约几十秒,弹出modelsim仿真窗口和结果


RTL Simulation

数码管显示译码器--功能仿真结果

6、时序仿真

运行完功能仿真后,如果想观察芯片实际延时信息,可以做时序仿真。
将仿真设置里的 More EDA Netlist Writer Setting ---- Generate funtional simulation netlist, 改成 Off
需要确保设置过芯片型号、引脚分配,然后完整编译。
然后运行时序仿真:Tools -- Run ---Gate level Simulation。弹出一个仿真模型,选一个即可。


选择时序仿真模型

image.png

常见错误:
1、功能仿真时,输出无信号,波形显示红色直线。
原因:可能是由于设计文件中的寄存器没有初始值,而电路基于该寄存器进行了取值、判断等操作,导致获取不到寄存器的值。
解决办法:为电路添加复位信号,在复位信号有效时给寄存器赋初值。
说明:这是仿真器的问题。在实际电路中,芯片上电后,寄存器内必然有值。
2、error deleting "msim_transcript": permission denied.


error deleting "msim_transcript"

原因:Modelsim已经打开了,不能进行新的仿真。
解决办法:关闭已经打开的Modelsim,重新启动仿真。
3、其他错误解决办法
测试文件如果有语法错误的话,会在modelsim的输出窗口以红色字体给予提示。


Modelsim error.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容