Callbacks are empty virtual methods that are embedded in the user components at strategic points to allow the user to make customization which allows better reuse.
In UVM this can be achieved in two ways.
- Simply add empty virtual methods in the component say in a driver and invoke the virtual methods at appropriate locations , test writer or the user extends the driver class implements the virtual methods and uses set instance override to accomplish the functionality.
- Create a class which extends form uvm_callback class and it implements the virtual methods. Use `uvm_do_callbacks() to place the virtual methods at strategic points in the component say a driver. Now the test writer or user extends the callback class and implements the virtual methods and registers or associate the extended callback class with the instance of the component say the driver using add to accomplish the functionality.