Advanced UVM
Multi-agent coordination, virtual sequences, and the register abstraction layer (RAL).
- 01Meet AXI4-Lite and axil_regfileStart the Advanced UVM track with a new DUT: the AXI4-Lite protocol's five channels and VALID/READY handshake rules, a small register-mapped peripheral with an interrupt output, and a complete hand-driven testbench that proves it all works.
- 02AXI4-Lite Driver, Monitor, and AgentWrap axil_regfile in real UVM: an axi_txn sequence item, a driver that finally has to wait for READY instead of driving combinationally, a monitor that reconstructs transactions from two independent channels, and both packaged into axi_agent -- reusing UVM Basics' seq_item_port/analysis_port machinery directly, since the handshake is the only genuinely new thing here.
- 03A Second Interface: irq Monitor and Multi-Agent EnvironmentsGive axil_regfile's irq output its own minimal interface, build a passive irq_agent to watch it (no driver at all -- there's nothing on this signal a testbench could ever drive), and bundle it with axi_agent inside a uvm_env: the direct payoff of uvm ch10's 'coordinating more than one agent' gap.
- 04Virtual Sequencer and Virtual SequencesA uvm_sequencer with nothing to drive, coordinating axi_agent and irq_agent from one place -- uvm_event/uvm_event_pool as the cross-agent synchronization primitive, and a real same-clock-edge race between BVALID and irq, caught by actually checking simulation timestamps, not just reasoning about it.
- 05UVM RAL: the Register Abstraction LayerA real uvm_reg model for axil_regfile's four registers, a uvm_reg_adapter bridging front-door access to axi_txn, and the concrete payoff: RAL's mirror only updates from its own register's bus accesses, so COUNT's mirror stays stale at 0 through four DATA writes -- a real gap only a front-door read closes.
- 06Capstone: Assembling the Advanced EnvironmentOrganize five chapters' worth of classes into one package, add a second scenario that never clears the interrupt -- proving COUNT keeps incrementing past the threshold while irq stays level and the monitor never double-reports -- and switch between it and chapter 5's scenario from the command line, the same factory-override trick uvm ch10 used, without touching run_phase.