uvm - uvm_port_base class derivation correct hierarchy -
the above 2 diagrams contradicting. can please clarify correct class inheritence class? below mentioned link both in sequential order
https://www.dvteclipse.com/uvm-1.2_public_api/uvm_pkg-uvm_port_base.html
it little sneaky because both true. looking @ source, first line declare uvm_port_base
virtual class uvm_port_base #(type if=uvm_void) extends if;
uvm_port_base
inherits if
, parameter. default value of if
uvm_void
.
for example, many tlm classes override parameter class extend from. example:
class uvm_blocking_put_export #(type t=int) extends uvm_port_base #(uvm_tlm_if_base #(t,t));
uvm_tlm_if_base
extends form uvm_if_base_abstract
, extends uvm_report_object
, extends uvm_object
, extends uvm_void
. uvm_blocking_put_export
still has uvm_void
parent got added functionality added other parents. redirected inheritance work around multiple inheritance challenge language can support single inheritance*.
*as of 2012 release, systemverilog added multiple inheritance approach inspired/borrowed/similar-to java's approach issue, adding interface class
, implements
. not major simulator vendor haven't implemented improvement. i'm guessing uvm overhauled , utilizes these features after simulator support feature mainstream.
Comments
Post a Comment