// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0

// Common coverage commands that apply to all DUTs.
//
// This coverge config file is provided by Xcelium and is located at:
// ${XCELIUM_HOME}/tools/icc/include/all_coverage.ccf
// Xcelium recommends including it, since it bundles together the common set of commands that enable
// coverage collection on various design elements, that are otherwise turned off by default. We
// maintain it locally with minor amends.

// Enables expression coverage of various Verilog operators.
set_expr_coverable_operators -all -event_or

// Enables expression coverage of operators in various conditions and assignments.
set_expr_coverable_statements -all

// Enables scoring of Verilog modules compiled with -v/-y or -libcell option but continues to
// disable the scoring of Verilog modules defined with the 'celldefine compiler directive.
set_libcell_scoring

// Enables scoring of block and expression coverage for functions and tasks defined directly inside
// SystemVerilog packages.
set_subprogram_scoring -svpackage

// Enables scoring of SystemVerilog continuous assignments, which is by disabled by default.
set_assign_scoring

// Scores branches together with block coverage.
set_branch_scoring

// Scores statements within a block.
set_statement_scoring

// Enables expression coverage for expression containing structs (packed and unpacked).
set_expr_scoring -struct

// Enables Toggle scoring and reporting of SystemVerilog enumerations and multidimensional static
// arrays , vectors, packed union, modport and generate blocks.
set_toggle_scoring -sv_enum enable_mda -sv_struct_with_enum -sv_modport -sv_mda 16 -sv_mda_of_struct -sv_generate -sv_packed_union

// Enables scoring of reset states and transitions for identified FSMs.
set_fsm_reset_scoring

// Enables scoring of immediate assertions inside a class in a package and assertions inside AMS
// modules.
select_functional  -ams_control  -imm_asrt_class_package

// Improve the scoping and naming of covergroup instances.
set_covergroup -new_instance_reporting

// Enable toggle coverage only on ports.
set_toggle_portsonly

// Enable scoring of FSM arcs (state transitions).
set_fsm_arc_scoring
