verilator/test_regress/t/t_covergroup_trans_simple.v

50 lines
1.1 KiB
Systemverilog

// DESCRIPTION: Verilator: Test transition bins - simple two-value transitions
// This file ONLY is placed into the Public Domain, for any use, without warranty.
// SPDX-FileCopyrightText: 2025 Wilson Snyder
// SPDX-License-Identifier: CC0-1.0
module t (/*AUTOARG*/
// Inputs
clk
);
input clk;
logic [2:0] state;
covergroup cg;
cp_state: coverpoint state {
bins trans1 = (0 => 1);
bins trans2 = (1 => 2);
bins trans3 = (2 => 3);
}
endgroup
cg cg_inst = new;
int cyc = 0;
always @(posedge clk) begin
cyc <= cyc + 1;
case (cyc)
0: state <= 0;
1: state <= 1; // 0 => 1 (trans1 should hit)
2: state <= 2; // 1 => 2 (trans2 should hit)
3: state <= 3; // 2 => 3 (trans3 should hit)
4: begin
$write("*-* All Finished *-*\n");
$finish;
end
endcase
// Sample the covergroup manually each clock
cg_inst.sample();
// Auto-stop after 10 cycles to prevent infinite loop
if (cyc > 10) begin
$display("ERROR: Test timed out");
$stop;
end
end
endmodule