FPGA开发--ModelSim仿真与Test Banch
文章摘要:
本文以PLL例程为例,简单描述了ModelSim的仿真测试及Test Banch的编写;
知识重点:ModelSim仿真流程;
硬件平台: EP4CE6F17C8
开发环境: Quartus 13.1
仿真软件: Modelsim SE 10.1c
1. 打开pll_test工程,通过建立Test Banch文件
Porcessing --> Start --> Start Test Banch Template Writer...
此操作将在simulation\modelsim目录下创建一个pll_test.vt的文件,模块名称为工程名称加vlg_tst后缀(verilog test),例如:pll_test_vlg_tst;
2.添加生成的Test Banch文件添加至工程
Assignments --> Setting...
EDA Tool Settings --> Simulation
Compile test bench: --> Test Benches...
Test bench name: 指定模块名称,必须与第一步中生成的模块名称一致,pll_test_vlg_tst
File name: 指定第一步中生成的Test Banch文件;
3.修改Test Banch
Test Banch模板生成器已经完成端口声明及模块例化,只需要添加相关内容即可;
// 定义测试时钟,修改为1ns
`timescale 1 ns/1 ps
// 模块名称,以vlg_tst为后缀(verilog test)
module pll_test_vlg_tst();
// 被测模块的input端口,连接测试模块中reg
reg clk;
reg rst_n;
// 被测模块的ouput端口,连接测试模块中的wires
wire clk1;
wire clk2;
// 顶层模块例化(自动生成,如果修改了模块接口,则需要修改此处)
// assign statements (if any)
pll_test i1 (
.clk(clk),
.clk1(clk1),
.clk2(clk2),
.rst_n(rst_n)
);
initial
begin
// code that executes only once(只运行一次的代码)
// insert code here(在此添加代码) --> begin
clk = 0;
rst_n = 0; // 复位100ns
#100;
rst_n = 1;
#2000
// --> end
$display("Running testbench");
end
// 正常运行时,一直执行的代码
always
begin
// code executes for every event on sensitivity list
// insert code here(在此添加代码) --> begin
#10 clk =~clk; // 每10ns反转一次(产生50MHz频率)
// --> end
end
// 可以根据需要添加多个always语句
endmodule
4. 运行仿真
执行RTL Simulation,自动打开ModelSim并进行编译,编译完成后,自动运行,可点击Stop来停止执行,以查看波型;