待测试工程—流水灯
建立新工程的方法不再赘述,这里只针对TEST BENCH文件的建立进行描述。测试工程如下,功能是控制流水灯闪烁
`timescale 1ns / 1ps //时延单位为1ns,时延精度为1ps
module test_top(
input clk,//时钟
input rst_n,//复位
output reg[1:0] cnt1, //这里输出cnt1只是为了仿真更加直观
output reg led //led输出
);
always @(posedge clk)
begin
if(!rst_n) begin
led <= 1'b0;
cnt1<= 2'b00;
end
else begin
if(cnt1 == 2'd3) begin
led<=!led;
cnt1<=2'd0;
end
else begin
led<=led;
cnt1<=cnt1+1'b1;
end
end
end
endmodule
创建TEST BENCH文件
1.点击PROJECT MANAGER目录下的Add Sources;
2.在Add Sources弹窗界面选择第三条—Add or create simulation sources后,点击Next
3.该界面常用选项有Add Files和Create File。其中Add Files是添加本地已存在的Test Bench文件,Create File是创建新的Test Bench.这里我们点击Create File.
4.在新弹出的Create Source File窗口需要手动输入文件名在File name这一栏,命名习惯一般为tb_前缀+待测试Module名,如tb_test_top,tb表示这是test bench文件,要测试的模块是 test_top.该窗口还有两个下拉菜单,File type是选择文件对应的语言,这里选择Verilog。File location是选择文件生成的位置,一般默认为E:\VIVADO_PRO\test_soft\test_soft\test_soft.srcs\sim_1\new。选择好后点击OK。
5.回到Add Sources界面点击Finsh后弹出下图窗口。
在Define Module界面点击OK再点击Yes完成文件创建
编写仿真代码
回到Vivado主界面,在Sources窗口下的Simulation Source→sim_1菜单下找到创建好的Test Bench文件,开始编写仿真程序。
代码如下
`timescale 1ns / 1ps//时延单位为1ns,时延精度为1ps
module tb_test_top( );
reg sys_clk;//时钟
reg rst_n;//复位
wire led1;//Led
wire [1:0]cnt1;//Led闪烁计数
//产生激励:仿真文件中一般使用initial或者always产生激励
initial begin
sys_clk = 1'b0;
rst_n = 1'b0;
#200
rst_n = 1'b1;
end
// #10意思是延迟10ns,这里产生一个周期20ns的时钟(50MHz)
always #10 sys_clk = !sys_clk;//生成时钟,
//例化待测模块
test_top test_top_1(
.clk(sys_clk),
.rst_n(rst_n),
.cnt1(cnt1),
.led(led1)
);
endmodule
仿真设置
仿真时间
常用的仿真设置为设置仿真运行时间,如下图右键点击SIMULATION,在弹出的菜单选择Simulation Settings
在弹出的窗口选择Simulation,然后输入想要仿真的时间即可
检查TOP文件
在开始仿真前,需要检查TOP文件是否设置正确,如下图所示,如果三角符号在没有在Test Bench文件前,说明需要修改TOP文件
方法是右键点击Test Bench文件,选择Set as Top
正确设置后的效果如下
运行仿真
设置都完成后,选择Flow→Run Simulation→Run Behavioral Simulation即可开始仿真
仿真运行完成后,通过上面的功能按钮调整波形显示后,即可清楚的看到时序图了,效果如下