Testbench编写步骤
1、定义仿真时间单位,例如:
`timescale 10ps/1ps
2、定义测试顶层模块,例如:
module mod_vlg_tst(); endmodule
3、例化待验证的模块,例如:
MuxTwo mux_two(.a(a),.b(b),.sel(se),.out(out));
4、设置时钟,有以下三种方式:
initial clk = 0 always #50 clk = ~clk; initial begin clk = 0; forever #50 clk = ~clk; end always begin #50 clk = 0; #50 clk = 1; end
5、为输入信号设置激励,例如:
always @(posedge clk) begin #1 a = {$random}%2; #2 b = {$random}%2; end
6、在initial中设置信号初始值和仿真时间,例如:
initial begin a = 0; b = 0; sl = 0; clk = 0; #10000 $stop; //设置仿真结束时间 $display("Running testbench"); end
7,添加显示语句,监测寄存器的变化,例如:
initial begin $display("a = %d ",a); $write("b"); $strobe(""); $monitor($time,,"",); end