// 时间尺度 以1ns为时钟单位 / 1ns为时钟精度 `timescale 1ns/1ns // 包含文件 main_module.v 编译的时候就不需要指定这个文件了 `include "counter.v" `include "mem.v" // 定义模块 此模块没有输入输出 module testbench(); // 输入给模块的变量用reg reg clk; reg rst; reg [7:0] data; // 接收模块的输出用wire wire [31:0] sum; wire [7:0] read_data; // 指定参数 parameter CYCLE = 2; parameter END_TIME = 200; // 实例化模块 counter counter_mod( .clk(clk), .rst(rst), .count(sum) ); mem mem_mod( .clk(clk), .rst(rst), .write_en(1'b0), .read_en(1'b1), .data_in(data), .addr(sum[7:0]), .data_out(read_data) ); always @(posedge clk) begin data <= sum[7:0]; end // 寄存器初始化,只有初始化之后才会产生波形 initial begin clk = 0; rst = 0; end initial begin #1 rst = 1; end // 每隔一个时钟周期取反 always begin #(CYCLE / 2) clk = ~clk; end // 仿真语句 打印变量值 always @(posedge clk) begin $display("yyyyy %d: %h", sum, read_data); end // 在END_TIME个时钟周期之后结束 initial begin #END_TIME; $stop; end endmodule