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

/**
 * Covergroups that are dependent on run-time parameters that may be available
 * only in build_phase can be defined here
 * Covergroups may also be wrapped inside helper classes if needed.
 */

% if is_cip:
class ${name}_env_cov extends cip_base_env_cov #(.CFG_T(${name}_env_cfg));
% else:
class ${name}_env_cov extends dv_base_env_cov #(.CFG_T(${name}_env_cfg));
% endif
  `uvm_component_utils(${name}_env_cov)

  // the base class provides the following handles for use:
  // ${name}_env_cfg: cfg

  // covergroups
  // [add covergroups here]

  function new(string name, uvm_component parent);
    super.new(name, parent);
    // [instantiate covergroups here]
  endfunction : new

  virtual function void build_phase(uvm_phase phase);
    super.build_phase(phase);
    // [or instantiate covergroups here]
% if is_cip:
    // Please instantiate sticky_intr_cov array of objects for all interrupts that are sticky
    // See cip_base_env_cov for details
% endif
  endfunction

endclass
