The following is the description for get_type_name in UVM reference guide.
This function returns the type name of the object, which is typically the type identifier enclosed in quotes. It is used for various debugging functions in the library, and it is used by the factory for creating objects.
This function must be defined in every derived class.
Please note the last sentence which mentions that it is necessary to define this in every defined class.
I have written drivers which does not define this and I don’t see any issue.
Can anyone comment why this is mandatory and how it works when I actually do not define it?