Transactor, BFM, Interface

I have a question, isn’t the driver component is responsible for driving signals into the Interface? Interface is just the medium that bits dive through. Why some implementations called ‘Bus Functional Model’ need to include tasks into the interface? And another thing what is the transactor and why this term might replace driver,interface sometimes?

In reply to haithamx15:

I have a question, isn’t the driver component is responsible for driving signals into the Interface? Interface is just the medium that bits dive through. Why some implementations called ‘Bus Functional Model’ need to include tasks into the interface? And another thing what is the transactor and why this term might replace driver,interface sometimes?

I believe that Bus Functional Model/Transactor nomenclature were used before SV-OVM came into picture. Hence there is little bit confusion about these terminology.

In reply to haithamx15:

I have a question, isn’t the driver component is responsible for driving signals into the Interface?

The driver is responsible for converting the transaction it gets from the sequence into pin-level communication with the DUT. Typically, this is done via a virtual interface in the driver that is a reference to an SV interface connected to the DUT.

Interface is just the medium that bits dive through.

The interface is the SystemVerilog construct that allows class-based elements to communicate with RTL.

Why some implementations called ‘Bus Functional Model’ need to include tasks into the interface?

Ultimately, there will be signals in the interface that connect to the pin-level ports of the DUT (unless the DUT uses SV interfaces too). It is simply a matter of choice whether the driver controls those signals directly, as in


vif.foo <= 1;
vif.bar <= 0;

or whether the interface defines tasks that the driver can call:


vif.do_cycle(...);

And another thing what is the transactor and why this term might replace driver,interface sometimes?

The term ‘transactor’ is simply a generic term used to refer to those things that talk to the bus. In UVM terminology, the term usually refers to either a driver or a monitor.
Please note that in the new revision of the UVM Cookbook, we recommend using “split transactors” so that the driver calls methods of the virtual interface to which it is connected. This virtual interface generally has a signal-level interface instantiated inside it, whose pins get wiggled by the method called by the driver.