Thanks!
With overhead do you mean:
- coding overhead (implementing the do_* methods)
- memory usage by base class members
- runtime (e.g. time to create)
I would need to create copy, clone, compare, … methods for these objects anyway.
And my classes would also need to be polymorphic (all derived from virtual base class)
The nice thing about deriving from a uvm_object is that all the infrastructure to do it right and consistent is already there (e.g. copy that calls do_copy, etc…)
If I would have to make my own copy, clone, etc… method I would want them to behave like the uvm_object ones do, but I fear that I might then be redoing some code that is present in uvm_object already.
For example I believe the uvm_object copy is not virtual, but because it calls the virtual do_copy it still does a deep copy? So I would want my own object’s copy also to have that behavior but maybe without having do_* and non-do_* methods that becomes complicated, etc…