Over Riding

In reply to shiva kumar:

How to do this is very specific to your design.

Generally, you use the factory to override your driver class with an error_driver class, and then override one of the driver’s methods. Inside that method, you need to make a decision amour what and when to introduce an error.

class driver extends uvm_driver;
  `uvm_component_utils(driver)
   ...
   task run_phase(uvm_phase phase);
     forever (@posedge vif.clk) begin
         do_a();
         do_b();
     end
   endtask
   virtual task do_a();
    ...
  endtask
endclass
class error_driver extends driver;
  `uvm_component_utils(error_driver)
   task do_a();
     if(error_condition)
        ... // do some error
     else
       super.do_A();
   endtask
endclass