| // Copyright lowRISC contributors. | 
 | // 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_seqeuencer 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 |