#!/usr/bin/env python3 # DESCRIPTION: Verilator: FSM coverage no-reset lowering test # # This program is free software; you can redistribute it and/or modify it # under the terms of either the GNU Lesser General Public License Version 3 # or the Perl Artistic License Version 2.0. # SPDX-FileCopyrightText: 2026 Wilson Snyder # SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0 import os import vltest_bootstrap test.scenarios('simulator') # This test deliberately uses a clocked FSM with no outer reset branch. It # keeps coverage extraction in the supported subset, but forces lowering down # the "hasResetCond() == false" path so we validate the no-reset machinery # rather than only reset-wrapped FSMs. test.compile(verilator_flags2=['--cc --coverage-fsm']) test.execute() # Use annotated-source output so the expected file captures the no-reset shape # directly, including the absence of reset pseudo-arcs. test.run(cmd=[ os.environ["VERILATOR_ROOT"] + "/bin/verilator_coverage", "--annotate", test.obj_dir + "/annotated", test.obj_dir + "/coverage.dat", ], verilator_run=True) test.files_identical(test.obj_dir + "/annotated/" + test.name + ".v", test.golden_filename) test.passes()