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

package ${name}_agent_pkg;
  // dep packages
  import uvm_pkg::*;
  import dv_utils_pkg::*;
  import dv_lib_pkg::*;

  // macro includes
  `include "uvm_macros.svh"
  `include "dv_macros.svh"

  // parameters

  // local types
  // forward declare classes to allow typedefs below
  typedef class ${name}_item;
  typedef class ${name}_agent_cfg;

% if has_separate_host_device_driver:
  // add typedef for ${name}_driver which is dv_base_driver with the right parameter set
  // ${name}_host_driver and ${name}_device_driver will extend from this
  typedef dv_base_driver #(.ITEM_T(${name}_item),
                           .CFG_T (${name}_agent_cfg)) ${name}_driver;

% endif
  // reuse dv_base_sequencer as is with the right parameter set
  typedef dv_base_sequencer #(.ITEM_T(${name}_item),
                              .CFG_T (${name}_agent_cfg)) ${name}_sequencer;

  // functions

  // package sources
  `include "${name}_item.sv"
  `include "${name}_agent_cfg.sv"
  `include "${name}_agent_cov.sv"
% if has_separate_host_device_driver:
  `include "${name}_host_driver.sv"
  `include "${name}_device_driver.sv"
% else:
  `include "${name}_driver.sv"
% endif
  `include "${name}_monitor.sv"
  `include "${name}_agent.sv"
  `include "${name}_seq_list.sv"

endpackage: ${name}_agent_pkg
