Monitor / driver bus functional model (BFM)

We do something similar too, but without any SV interfaces involved. One advantage we see with using module-based BFMs instead of SV interfaces is that we can capture parameter settings and pass them up to the agent via the configuration database. With parameterized SV interfaces, the agent classes would end up being parameterized as well, and we wanted to avoid this proliferation that would become a maintenance problem. With BFMs, the classes do not need to be parameterized more than necessary. Another advantage is that we can reuse existing BFMs that would already contain a good set of assertions and coverage, and we wrap it in a module that provides the linkage to the UVM layer.