Universal Verification Methodology (UVM) is the industry standard for verifying complex digital integrated circuits. At the heart of a UVM environment lies the UVM Agent, a container component that encapsulates the specific verification logic for a single interface (like PCIe, USB, or AXI). The agent typically contains three critical components: the Sequencer, the Driver, and the Monitor.
The Sequencer acts as the traffic controller or arbiter of the verification environment. It does not generate data itself; rather, it manages the flow of data objects (transactions) known as Sequence Items.
The Driver is the active worker that interacts with the physical Device Under Test (DUT). It is the bridge between the abstract object-oriented world of UVM and the signal-level world of Verilog RTL.
seq_item_port.get_next_item(req) to fetch a transaction from the Sequencer.item_done() to signal the Sequencer that it is ready for the next job.The Monitor is a passive observer. Unlike the Driver, it never drives signals; it only samples them. It is present in both Active (driving) and Passive (monitoring only) agents.
1. Sequence: Creates a randomized transaction object.
2. Sequencer: Queues the object.
3. Driver: Pulls object, drives pins on DUT.
4. DUT: Responds to pins.
5. Monitor: Observes pins, recreates object, sends to Scoreboard.
6. Scoreboard: Compares expected vs. actual result.