编写TESTBENCH的目的是为了对使用硬件描述语言设计的电路进行仿真验证,测试设计电路的功能、性能与设计的预期是否相符。编写测试文件的过程如下: (1)产生模拟激励(波形); (2) 将产生的激励加入到被测试模块中并观察其响应; (3) 将输出响应与期望值相比较。
一,各部分写法
1,testbench文件结构
module Test_bench();//通常无输入无输出
信号或变量声明定义
逻辑设计中输入对应 reg 型
逻辑设计中输出对应 wire 型
使用 initial 或 always 语句产生激励
例化待测试模块
监控和比较输出响应
endmodule
2,时钟激励设计
/*时钟激励产生方法一:50%占空比时钟*/
parameter ClockPeriod=10;
initial
begin
clk_i=0;
forever#(ClockPeriod/2) clk_i=~clk_i; end
/* 时钟激励产生方法二:50%占空比时钟*/
initial
begin
clk_i=0;
end
always #(ClockPeriod/2) clk_i=~clk_i;
/* 时钟激励产生方法四:产生固定数量的时钟脉冲*/
initial
begin
clk_i=0; repeat(6)
#(ClockPeriod/2) clk_i=~clk_i; end
/*时钟激励产生方法五:产生非占空比为50%的时钟*/
initial
begin
clk_i=0;
forever
begin
#((ClockPeriod/2)-2) clk_i=0;
#((ClockPeriod/2)+2) clk_i=1;
end
end