I am a beginner in UVM and trying to understand the purpose of uvm_void.
From the hierarchy, I see:
uvm_void
↓
uvm_object
↓
other UVM classes
But I am confused because uvm_void is an empty class with no methods or variables.
So my questions are:
-
If
uvm_voidis completely empty, then why was it needed? -
Why didn’t UVM architects directly make
uvm_objectthe top/base class? -
What is the actual difference between
uvm_voidanduvm_objectapart from one being empty and the other having methods? -
What real problem does
uvm_voidsolve? -
In what situation would
uvm_voidwork differently fromuvm_object? -
Is this only for framework architecture flexibility, or is there an actual practical use case?
As a beginner, it feels like uvm_object could also work everywhere, so I am unable to relate the need for uvm_void.