blob: 41b5fc8bcad2a122776177e15794b8e6af394f2a [file] [log] [blame]
// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
package push_pull_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"
// Instantiated in agent's config object.
typedef enum {
PushAgent,
PullAgent
} push_pull_agent_e;
// Pull req-ack handshake type.
typedef enum {
/*
* The two-phase handshake follows this protocol:
* ____________________
* req _______/ \____________
* ____
* ack _______________________/ \____________
*
* Ack asserts for 1 cycle. Req is accepted when both req and ack is true.
*/
TwoPhase,
/*
* The four-phase handshake follows this protocol:
* __________________
* req _______/ \______________
* _______________________
* ack _____________/ \___
*
* Req de-asserts after ack asserts. Ack de-asserts after the req
* de-asserts. This type of handshake is more common in async domains.
*/
FourPhase
} pull_handshake_e;
`include "push_pull_item.sv"
`include "push_pull_agent_cfg.sv"
`include "push_pull_agent_cov.sv"
`include "push_pull_driver_lib.sv"
`include "push_pull_monitor.sv"
`include "push_pull_sequencer.sv"
`include "push_pull_seq_list.sv"
`include "push_pull_agent.sv"
endpackage : push_pull_agent_pkg