module Test_bench();//通常无输入无输出
信号或变量声明定义
逻辑设计中输入对应reg型
逻辑设计中输出对应wire型
使用initial或always语句产生激励
例化待测试模块
监控和比较输出响应
endmodule
一、时钟激励产生方法:
一、产生50%占空比的时钟信号
//方法一:
initual
begin
clk_i = 0;
forever #10 clk_i = ~clk_i;
end
//方法二:
initial
begin
clk_i = 0;
always #10 clk_i = ~clk_i;
end
//产生固定数量的时钟脉冲信号:
initial
begin
clk_i=0;
repeat(6) //此处()中的数据为重复次数 :注意:重复一次为半个时钟周期
#10 clk_i=~clk_i;
end
//产生非占空比为50%的时钟(例:占空比30%):
initial
begin
clk_i=0;
forever
begin
#6 clk_i=0;
#14 clk_i=1; //此处的延时14是再延时14 在延时6的基础上+14;
end
end
二、复位信号设计:
// 一、异步复位
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); //固定周期数复位
@(negedge clk_i)
rst_n_i=1;
end
//三、复位任务封装
task reset;
input [31:0] reset_time; //复位时间可调,输入复位时间
RST_ING=0; //复位方式可调,低电平或高电平
begin
rst_n=RST_ING; //复位中
#reset_time; //复位时间
rst_n_i=~RST_ING; //撤销复位,复位结束
end
endtask