UVM AGENT By: Sankalp Dev What is UVM Agent? ● ● An Agent encapsulates a Sequencer, Driver and Monitor into a single entity by instantiating and connecting the components together via TLM interfaces. An agent can have configuration options lie type of UVM agent (active/passive) and knobs to turn on features such as functional coverage and other parameters. Typical UVM Environment What does a UVM agent do ? ● ● ● ● It generates transactions using a driver and send that to DUT via interface. It also observes DUT responses via monitor and collects data for analysis and scoreboard comparison. It can operate in active mode(stimulus Generation) or in the passive mode (monitor only), making it highly reusable across different environments. Usually, it makes sense to create an agent that provides protocol specific tasks to generate transactions, check the results and perform coverage. Active Agent ● ● An active agent generates stimulus and drives DUT. An active agent shall consists of all the three components driver, sequencer, and monitor Passive Agent ● ● A passive agent sample DUT signs but do not drive them. A passive agent consist of only monitor. Configuring Agent ● An agent can be configured as an active or passive agent by using set config method. The default agent will be active, the set config can be done in environment or test. ● get_is_active() Returns UVM_ACTIVE if the agent is acting as an active agent and UVM_PASSIVE if the agent acting as a passive agent. Writing a UVM agent Declare driver, sequencer and monitor instance Depending on agent type, create agent components in the build phase. Connect phase Reactive Agent ● ● A Reactive UVM Agent monitors activity on the DUT interface and reacts by generating new transactions based on observed behavior. It combines both monitoring and driving stimulus, but its stimulus is dependent on the DUT's activity (reaction-based). The reactive agent setup makes it possible to dynamically respond to DUT behavior, making it a flexible solution for complex verification scenarios. How it Works? ● ● ● Monitor observes DUT activity and sends transactions to the sequencer. Sequencer Reacts by generating new transactions based on the observed activity. Driver Drives these generated transactions back to the DUT. Monitor for reactive agent Sequencer for Reactive agent Driver for reactive agent