// 时间尺度 以1ns为时钟单位 / 1ns为时钟精度 `timescale 1ns/1ns // 包含文件 main_module.v 编译的时候就不需要指定这个文件了 `include "main_module.v" // 定义模块 此模块没有输入输出 module testbench(); reg clk; reg rst; wire dout; wire [31:0] sum; // 指定参数 parameter CYCLE = 2; parameter END_TIME = 200; // 实例化模块 test mod( .clk(clk), .rst(rst), .dout(dout), .sum(sum) ); // 初始化块 此块用于生成波形文件 // initial 语句为仿真语句,通常在testbench中使用 initial begin $dumpfile("wave.vcd"); $dumpvars(0,testbench); end // 寄存器初始化,只有初始化之后才会产生波形 initial begin clk = 0; rst = 0; end initial begin #5 rst = 1; end // 每隔一个时钟周期取反 always begin #(CYCLE / 2) clk = ~clk; end // 在END_TIME个时钟周期之后结束 initial begin #END_TIME; $stop; end endmodule