In reply to dave_59:
This thread has been very helpful. Is there a UVM example for this implementation?
I have a DUT bfm with built in tasks that I want to access(register writes/reads etc). My approach is going to be as follows:
I create the abstract class with the pure virtual functions, and I extend the abstract class in the top module that has the DUT and the virtual interface. I do this here so I can get hierarchical access to the tasks in the bfm, instead of binding it. I store the extended class in the uvm_config_db so I can access it in the driver. My only concern would be that the driver won’t be able to see my extended class in the top module and I do not know how to address that. Please advise.