Verilog
测试平台是一个例化的待测(
MUT
)模块,重要的是给它施加激励并观测其输出。
逻辑模块与其对应的测试平台共同组成仿真模型,应用这个模型可以测试该模块能否符合自己的设计要求。 编写 TESTBENCH 的目的是为了对使用硬件描述语言设计的电路进行仿真验证,测试设计电路的功能、性能与设计的预期是否相符。通常,编写测试文件的过程如下:
• 产生模拟激励(波形);
• 将产生的激励加入到被测试模块中并观察其响应;
• 将输出响应与期望值相比较。
通常,一个完整的测试文件其结构为
module Test_bench();//
通常无输入无输出
信号或变量声明定义
逻辑设计中输入对应
reg
型
逻辑设计中输出对应
wire
型
使用
initial
或
always
语句产生激励
例化待测试模块
监控和比较输出响应
endmodule
1、时钟激励设计
时钟激励产生方法一:
50%
占空比时钟
parameter ClockPeriod=10;
initial
begin
clk_i=0;
forever
#(ClockPeriod/2) clk_i=~clk_i;
end
时钟激励产生方法二:
50%
占空比时钟
initial
begin
clk_i=0;
always #(ClockPeriod/2) clk_i=~clk_i;
end
时钟激励产生方法3:产生固定数量的时钟脉冲
initial
begin
clk_i=0;
repeat(6)
#(ClockPeriod/2) clk_i=~clk_i;
end
时钟激励产生方法4:产生非占空比为
50%
的时钟
initial
begin
clk_i=0;
forever
begin
#((ClockPeriod/2)-2) clk_i=0;
#((ClockPeriod/2)+2) clk_i=1;
end
end
2、复位信号设计
复位信号产生方法一:异步复位
initial
begin
rst_n_i=1;
#100;
rst_n_i=0;
#100;
rst_n_i=1;
end
复位信号产生方法二:同步复位
initial
begin
rst_n_i=1;
@
(
negedge clk_i)
rst_n_i=0;
#100;
//
固定时间复位
repeat(10) @
(
negedge clk_i);
//
固定周期数复位
@
(