刚学习FPGA的时候,我最喜欢用Quartus自动生成testbench代码,只用自己往里面添加一些测试代码就可以开始仿真了。
随着学习的升入,意识到了代码可读性的重要性,自动生成的testbench代码格式和可读性确实有点差强人意,于是便学习了testbench的编写。
testbench代码编写我认为可以分为一下几个步骤:
1.仿真时间单位/时间精度
2.仿真模块建立
3.与被测试模块连接
4.初始化时钟信号
5.写入测试信号
下面依次来说明
1.仿真时间单位/时间精度
在testbench文件开头有:
`timescale 1ns/1ns //定义时间单位/时间精度,单位要大于精度
`define clock_perrod 20 //用户自定义时间片段,可有可无
这是仿真不可或缺的
2.仿真模块建立
常见方法:
module BCD_counter_tb; //不需要写出信号,注意还有endmodule
reg Clk;
reg Cin;
reg Rst_n; //输入信号为reg型
wire Cout;
wire [3:0] q; //输出信号为wire型
输入激励设置为reg型,输出相应设置为wire类型
3.与被测试模块连接
BCD_counter u0 //由被测系统模块名定义一个u0系统
(
.Clk(Clk), //前面的是被测系统信号,后面是激励信号
.Rst_n(Rst_n), //'.&