---
title: "PUSH_PULL UVM Agent"
---

PUSH_PULL UVM Agent is extended from DV library agent classes.

## Description

This agent implements both Push (ready/valid) and Pull (req/ack) interface
protocols, and can be configured to behave in both host and device modes.

The agent configuration object (`push_pull_agent_cfg`) contains an enum `agent_type`
that is used to select either push or pull modes.
To configure the agent to use the ready/valid protocol, set `agent_type = PushAgent`, and
to configure the agent to use the req/ack protocol, set `agent_type = PullAgent`.
