Implementing tasks inside the bus interface (BFM Tasks)

I can think of cons here -

  1. As interface is module, your tasks/functions will be static in nature. Whereas using task/function in Driver is dynamic and memory allocation for these are in run-time.

  2. To make use of other concepts like callback(Injecting Errors), polymorphism(Extending functionality) etc. you’ll need Driver implementation for task/function.

Basically whatever advantages can be achieved from OOPs might not be applicable if you are going for ‘Interface’ implementation for tasks.