一、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;