|  | // 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_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 |