A block team verifies a DMA with three agents: an APB agent that programs it, a stream agent that feeds it, and a second copy of that stream agent watching its output. Six months later the DMA sits inside a subsystem next to a second DMA. The subsystem bench reuses the block env twice, unchanged. One of the stream agents now watches a bus that the first DMA drives, so it is switched to passive with one configuration line, and its monitor keeps feeding the second DMA's scoreboard. Nothing was rewritten. That is what a well-built agent buys you, and it is what this part of the course teaches.
Take any agent apart: its sequencer, driver, monitor, configuration, analysis port and virtual interface, and the timing rules that keep driver and monitor race-free.
Build the agents that go beyond "drive a transaction": a reactive slave that answers the DUT, drivers and scoreboards that survive a reset in the middle of traffic, and a passive interrupt agent.
Package an agent as reusable VIP that runs active at block level and passive at subsystem or chip level.
Inject protocol errors on purpose, through sequences, driver hooks, callbacks or factory overrides, and check that the DUT reacts correctly.
# | Topic | What it covers |
|---|---|---|
1 | The parts of an agent and their contracts: the wrapper and its analysis port, configuration, mode-gated build, driver, monitor, sequencer, clocking-block sampling and X policy, and virtual interfaces versus abstract BFMs. | |
2 | Turning an agent into VIP: passive use at higher levels, parameterization, protocol-specific structure for APB, AXI and streams, and versioning and delivery. | |
3 | Making the DUT see illegal or unlucky traffic on purpose, and checking that it reports and recovers correctly, without the bench calling its own faults bugs. | |
4 | Agents that do more than initiate traffic: a reactive slave whose responder sequence decides when to accept each beat, drivers and scoreboards that handle a reset on the fly, a passive interrupt agent that publishes events, and drivers that keep several transfers in flight. |
Start with Agent Architecture even if you have written agents before: its last two lessons, on sampling races and interface abstraction, are where senior interviews go. Reusable VIP and Error Injection come next and can be read in either order; Agent Patterns comes last: it puts every part from the architecture topic under load at once.