Can we use interface in object in uvm?

Hi Dave,
Here’s the sample code:


//sorry that I'm unable to add the indentation here

class callback extends uvm_callback;
   virtual interface vif;

   //constructor

   virtual task drive_data();
   endtask

endclass

class child_callback extends callback;
   virtual task drive_data();
      @(vif.cb); //error at this line: unintialized virtual interface object
      vif.cb.data <= 1'b1;
   endtask
endclass

//inside agent's build phase
   //get the config_h object using config db
   callback_h = callback::type_id::create("callback_h");
   callback_h.vif = config_h.vif;

//inside test we override the callback with child_callback
//call uvm_do_callback inside driver's run phase