UVM employs a layered, object-oriented approach to testbench development.
uvm_sequence_item is a
uvm_object that contains data fields to implement protocols and communicate with with DUT.
uvm_driver is responsible for converted the sequence item(s) into "pin wiggles". The sequence_item(s) are provided by one
uvm_sequence objects that define stimulus at the transaction level and execute on the agent's
uvm_sequencer component. The sequencer is responsible for executing the sequences, arbitrating between them, and routing sequence items between the driver and the sequence.
UVM agents have a configuration object that allows the test writer to control how the testbench is assembled and executed.