Files
skills-win/vivado-sim-workspace/iteration-1/eval-counter/with_skill/outputs/tb_counter8.v
T
2026-05-09 01:12:34 -05:00

72 lines
1.3 KiB
Verilog

`timescale 1ns/1ps
module tb_counter8;
// ---- 参数 ----
parameter CLK_PERIOD = 10; // 100MHz 时钟,周期 10ns
// ---- 信号声明 ----
reg clk;
reg rst_n;
reg en;
wire [7:0] count;
wire overflow;
// ---- 被测模块例化 ----
counter8 uut (
.clk (clk),
.rst_n (rst_n),
.en (en),
.count (count),
.overflow (overflow)
);
// ---- 时钟生成 ----
initial clk = 0;
always #(CLK_PERIOD/2) clk = ~clk;
// ---- VCD 波形记录 ----
initial begin
$dumpfile("tb_counter8.vcd");
$dumpvars(0, tb_counter8);
end
// ---- 复位与激励 ----
initial begin
// 初始化
rst_n = 0;
en = 0;
// 复位保持 5 个时钟周期
repeat(5) @(posedge clk);
rst_n = 1;
// 使能计数,连续计数 200 个周期
@(posedge clk);
en = 1;
repeat(200) @(posedge clk);
// 暂停使能,观察保持行为
en = 0;
repeat(10) @(posedge clk);
// 重新使能,再计数 60 个周期(观察溢出行为)
en = 1;
repeat(60) @(posedge clk);
// 再次复位
rst_n = 0;
repeat(3) @(posedge clk);
rst_n = 1;
repeat(5) @(posedge clk);
$finish;
end
// ---- 监控关键事件 ----
always @(posedge clk) begin
if (overflow)
$display("[%0t ns] 溢出! count = %0d", $time, count);
end
endmodule