Goal: Prove your environment can build and run a self-contained UVM test with Verilator.
This example intentionally keeps the DUT tiny (a simple register) so you can focus on the build/run/debug workflow and on the UVM structure: transaction → sequence → driver/monitor → scoreboard.
- Verilator 5.036+
UVM_HOMEset (must containsrc/uvm_pkg.sv), or vendored UVM in the repo (see Makefile)make+ a C++ compiler
uvm_smoke/
├── Makefile
├── test_uvm_smoke.sv # UVM testbench + top module
└── dut/
└── simple_register.v # Tiny DUT
From the repo root:
cd module2/examples/uvm_smoke
make SIM=verilator TEST=test_uvm_smokeIf you want to clean artifacts:
make clean- UVM output with
DRIVER,MONITOR, andSCOREBOARDmessages - A final report summary showing matches and mismatches
obj_dir/created by Verilator compilation