Testbench设计
Testbench搭建步骤:
(1)对被测试设计的顶层接口进行例化;
(2)给被测试设计的输入接口添加激励;
(3)判断被测试设计的输出响应是否满足设计要求。
Testbench中的例化应该把input转化为reg,因为待测试设计的输入值是由Testbench决定的。相应的output就应该转换为wire,因为待测试设计的输出值不是由Testbench决定的。inout端口在例化中也是一个wire类型,在Testbench中和RTL代码设计中使用是一样的。
流水灯Testbench:
'timescale 1ns/1ns
module flow_led_tb();
//parameter 定义
parameter T=20;
//reg define
reg sys_clk; //时钟信号
reg sys_rst_n; //复位信号
//wire define
wire [3:0] led;
//***************main code***********************
//激励信号
initial begin
sys_clk =1'b0;
sys_rst_n =1'b0;
#(T+1)
sys_rst_n =1'b1;
//在第21s时复位
end
//50MHz的时钟,周期为1/50MHz=20ns,所以每10ns电平取反一次
always #(T/2) sys_clk = ~sys_clk;
//例化flow_led模块
flow_led uo_flow_led(
.sys_clk (sys_clk ),
.sys_rst_n (sys_rst_n ),
.led (led )
);
endmodule