赞
踩
testbench的作用:提供输入激励
编写的流程
时钟信号的固定写法
initial begin
clk = 0;
forever
#(CYCLE/2)
clk=~clk;
end
//产生复位信号
initial begin
rst_n = 1;
#2
rst_n = 0;
#(CYCLE*RST_TIME);
rst_n = 1;
end
//输入信号din0赋值方式 initial begin #1; //赋初值 din0 = 0; #(10*CYCLE) //开始赋值 (开始赋值的语句) end //输入信号din1赋值方式 initial begin #1; //赋初值 din0 = 0; #(10*CYCLE) //开始赋值 (开始赋值的语句) end
模板和流程
'timescale 1ns/1ns module testbench_name(); //时钟和复位 reg clk; reg rst_n; //uut的输入信号 reg[3:0] din0; reg din1; ......(等信号) //uut的输出信号 wire dout0; wire[4:0] dout1; ......(等信号) // 时钟周期,单位是ns,可在此修改时钟周期 parameter CYCLE = 20; //复位时间,此时表示复位3个时钟周期的时间 parameter RST_TIME = 3; //待测试的模块例化 module_name uut( .clk (clk ), .rst_n (rst_n ), .din0 (din0 ), .din1 (din1 ), .dout0 (dout0 ), .dout1 (dout1 ) ......(等信号) ); //生成本地时钟50M initial begin clk = 0; forever #(CYCLE/2) clk=~clk; end //产生复位信号 initial begin rst_n = 1; #2 rst_n = 0; #(CYCLE*RST_TIME); rst_n = 1; end //输入信号din0赋值方式 initial begin #1; //赋初值 din0 = 0; #(10*CYCLE) //开始赋值 (开始赋值的语句) end //输入信号din1赋值方式 initial begin #1; //赋初值 din0 = 0; #(10*CYCLE) //开始赋值 (开始赋值的语句) end endmodule
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。