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

% if is_cip:
class ${name}_base_vseq extends cip_base_vseq #(
% else:
class ${name}_base_vseq extends dv_base_vseq #(
% endif
% if has_ral:
    .RAL_T               (${name}_reg_block),
% endif
    .CFG_T               (${name}_env_cfg),
    .COV_T               (${name}_env_cov),
    .VIRTUAL_SEQUENCER_T (${name}_virtual_sequencer)
  );
  `uvm_object_utils(${name}_base_vseq)

  // various knobs to enable certain routines
  bit do_${name}_init = 1'b1;

  `uvm_object_new

  virtual task dut_init(string reset_kind = "HARD");
    super.dut_init();
    if (do_${name}_init) ${name}_init();
  endtask

  virtual task dut_shutdown();
    // check for pending ${name} operations and wait for them to complete
    // TODO
  endtask

  // setup basic ${name} features
  virtual task ${name}_init();
    `uvm_error(`gfn, "FIXME")
  endtask

endclass : ${name}_base_vseq
