一、Testbench三步走:
1、对被测试设计的顶层接口进行例化;
2、给被测试设计的输入接口添加激励;
3、判断被测试设计的输出响应是否满足设计要求;
二、简单的Testbench设计:
1、 Testbench中的例化应该把input转换为reg;相应的output就应该转换成wire;
2、 时钟的产生:
方式一、
// Define clk period 50MHz 20ns;
// Define "`timescale 1ns/ps"
parameter PERIOD = 20ns;
initial
begin
clk=0;
forever
#(PERIOD/2) clk = ~clk;
end
方式二、
// Define clk period 50MHz 20ns;
// Define "`timescale 1ns/ps"
parameter PERIOD = 20ns;
always
begin
#(PERIOD/2) clk = 0;
#(PERIOD/2) clk = 1;
end
3、复位的产生
方式一、
initial
begin
rst_n = 0;
#100; //100ns延时
rst_n = 1; //撤销复位
...
end
方式二、封装成一个Task,直接在需要的复位的时候调用即可;
initial
begin
reset_task(100); //复位100ns;
...
end
task reset_task;
input[15:0] reset_time; //复位时间
begin
reset = 0;
#reset_time;
reset = 1;
end
endtask;