all about vlsi DV
Building a Complete UVM Environment Using Master/Slave Agents
#
In the world of Universal Verification Methodology (UVM), the ability to create AXI protocol simulations plays a crucial role in ensuring our designs work flawlessly. Previously, we discussed the importance of creating AXI sequences and transaction items, which lay the groundwork for simulating read/write operations effectively. Today, we will go one step further: we'll describe how to build a complete UVM environment, integrating master/slave agents with an RTL DUT (Design Under Test). By the end, you’ll have a clear understanding of how individual UVM components interact to verify AXI-compliant designs.
To start, let’s break down the UVM architecture into digestible pieces. Our primary components are the **driver (drv)**, **sequencer (seqr)**, **monitor (mon)**, and **agent (combines driver, sequencer, and monitor)**. These components handle communication between the AXI protocol’s **master** (the stimulus generator) and its **slave** (the recipient model implemented as a DUT).
At the center of all activity lies the **txn** object, which models AXI read/write operations (like `read(address)`), managed by the **sequencer (seqr)** and executed by the **driver (drv)**. To interface the DUT with UVM and create repetitive AXI transactions (read/write), we’ll implement a virtual interface called **axi_if**. Additionally, the **monitor (mon)** will observe the transactions for both master and slave sides, ensuring we can later track and verify correctness.