`timescale 1ns/1ps module testbench; // 1. 声明所有变量 reg clk; reg reset_n; wire [31:0] pc_out; integer fd; string dump_path = "/tmp/wave.vcd"; // SystemVerilog 支持直接赋值 // 实例化被测设计 top uut ( .clk(clk), .reset_n(reset_n), .pc_out(pc_out) ); // 2. 生成时钟 initial begin clk = 0; forever #5 clk = ~clk; end // 3. 波形生成和错误处理 initial begin // 尝试创建文件 fd = $fopen(dump_path, "w"); if (fd == 0) begin string err_msg = $sformatf("ERROR: Cannot open %s for writing!", dump_path); // SystemVerilog 格式化 $display("%s", err_msg); $finish; end $fclose(fd); // 初始化波形记录 $dumpfile(dump_path); $dumpvars(0, testbench); $display("Waveform will be saved to %s", dump_path); // 部分工具支持 %s // 复位和仿真控制 reset_n = 0; #100 reset_n = 1; #1000 $finish; end endmodule