verilator/test_regress/t/t_cover_per_instance.out

109 lines
3.8 KiB
Plaintext

// // verilator_coverage annotation
// DESCRIPTION: Verilator: Coverage per-instance hierarchy for duplicate module instances
//
// This file ONLY is placed under the Creative Commons Public Domain.
// SPDX-FileCopyrightText: 2026 Wilson Snyder
// SPDX-License-Identifier: CC0-1.0
module child #(
parameter int WIDTH = 1
) (
input clk,
input en
);
`ifdef INLINE_CHILD //verilator inline_module
`else //verilator no_inline_module
`endif
%000001 reg [WIDTH-1:0] count = '0;
-000001 point: type=line comment=block hier=tb.dut.u_a
-000001 point: type=line comment=block hier=tb.dut.u_b
-000001 point: type=line comment=block hier=tb.dut.u_wide
%000009 always @(posedge clk) begin
-000009 point: type=line comment=block hier=tb.dut.u_a
-000009 point: type=line comment=block hier=tb.dut.u_b
-000009 point: type=line comment=block hier=tb.dut.u_wide
%000008 if (en) begin
-000004 point: type=branch comment=if hier=tb.dut.u_a
-000001 point: type=branch comment=if hier=tb.dut.u_b
-000002 point: type=branch comment=if hier=tb.dut.u_wide
-000005 point: type=branch comment=else hier=tb.dut.u_a
-000008 point: type=branch comment=else hier=tb.dut.u_b
-000007 point: type=branch comment=else hier=tb.dut.u_wide
%000004 count <= count + 1'b1;
-000004 point: type=branch comment=if hier=tb.dut.u_a
-000001 point: type=branch comment=if hier=tb.dut.u_b
-000002 point: type=branch comment=if hier=tb.dut.u_wide
%000008 end else begin
-000005 point: type=branch comment=else hier=tb.dut.u_a
-000008 point: type=branch comment=else hier=tb.dut.u_b
-000007 point: type=branch comment=else hier=tb.dut.u_wide
%000008 count <= count;
-000005 point: type=branch comment=else hier=tb.dut.u_a
-000008 point: type=branch comment=else hier=tb.dut.u_b
-000007 point: type=branch comment=else hier=tb.dut.u_wide
end
end
endmodule
module t (
input clk
);
%000001 reg [3:0] cyc = 0;
-000001 point: type=line comment=block hier=tb.dut
// Over 9 clock edges, u_a.en is true for cyc 0..3, so u_a should report
// if coverage of 4, else coverage of 5, and line coverage of 9.
child u_a (
.clk(clk),
.en(cyc < 4)
);
// u_b.en is true only for cyc 0, so u_b should report if coverage of 1,
// else coverage of 8, and line coverage of 9.
child u_b (
.clk(clk),
.en(cyc == 0)
);
// Parameterized u_wide should preserve a useful per-instance hierarchy and
// parameter-specialized coverage bucket for downstream coverage tools.
child #(
.WIDTH(3)
) u_wide (
.clk(clk),
.en(cyc < 2)
);
%000009 always @(posedge clk) begin
-000009 point: type=line comment=block hier=tb.dut
%000009 cyc <= cyc + 1'b1;
-000009 point: type=line comment=block hier=tb.dut
end
endmodule
module tb;
%000001 reg clk = 0;
-000001 point: type=line comment=block hier=tb
t dut (
.clk(clk)
);
000017 always #1 clk = !clk;
+000017 point: type=line comment=block hier=tb
%000009 always @(posedge clk) begin
-000009 point: type=line comment=block hier=tb
%000008 if (dut.cyc == 8) begin
-000001 point: type=branch comment=if hier=tb
-000008 point: type=branch comment=else hier=tb
%000001 $write("*-* All Finished *-*\n");
-000001 point: type=branch comment=if hier=tb
%000001 $finish;
-000001 point: type=branch comment=if hier=tb
end
end
endmodule