Bus function modeling

,

In SystemC, I have seen complex bus protocol modelling in the interface module itself.
Similarly, in UVM, is it a good idea to handle bus functional model inside the interface rather than the driver class.
It is debatable as to what function has to be modelled in driver class and what portion in interface class.
But I wanted to get comments from experts here …

In reply to verif_learner:
In UVM the BFM is considered either as the driver or/and the monitor. Because the BFM provides the methods used for converting any high-level command to the pin level activity.

In reply to verif_learner:

Early OVM/UVM usage had the functional capabilities in the driver/monitor with the interface having only the wires for the DUT connectivity.

However, with the increase in emulation, prototyping and mixed-language environments, we are seeing more and more users move the functional logic into the interface. Emulation and prototyping require this as pin-level access betweeen a simulator and emulator is extremely slow.

Since their is no performance penalty in simulation by having the functionality in the interface vs the driver/monitor, we recommend that new development put the functionality in the interface for greater flexibility.