Hi,
I have a question on uvm_port_base class as follows :
- the uvm_port_base#(IF) parametrized class extends from IF and IF is also used as parameter with default value of uvm_void. UVM reference states that for TLM interfaces, IF parameter is always uvm_tlm_if_base#(T1, T2). Also uvm_tlm_if_base is a virtual class which declares all methods of TLM API. So all the classes like uvm_port, uvmexport, uvm*_imp would inherit the API methods from uvm_tlm_if_base. So while defining uvm_port_base#(IF), what is the necessity of defining IF as parameter. Does uvm_port_base declare member of the uvm_tlm_if_base type? Can someone explain please.
2.Also I came across a post on Internet saying that uvm_port_base#(IF) extends from IF and IF is also a parameter. This is done as a workaround for multiple interitance feature which System verilog does not support at present. (pls refer the link : uvm - uvm_port_base class derivation correct hierarchy - Stack Overflow)
In any case, even with this definition how is the multiple inheritance supported?
thanks,
-sunil