LRM 6.22 mentions ::
There are five levels of type compatibility, formally defined here: matching, equivalent, assignment compatible, cast compatible, and nonequivalent.
(1) If I were to set a resource ::
uvm_config_db #( config_class#( int p = 1, type T = int ) ) :: set( null , "<hierarchy>" ,.. )
For the get to succeed ( assuming hierarchy matches ),
what is the criteria for the type and value parameters of config_class ?
Should they be matching types OR equivalent types ?
(2) If the set consists of only value parameters
uvm_config_db #( config_class2#( 32,64 ) ) :: set( null , "<hierarchy>" ,.. )
The value parameters 32 , 64 are 32-bit signed type so I were to fetch the resource via ::
// Assume that hierarchy matches
if( ! uvm_config_db #( config_class2#( 32'd32,32'd64 ) ) :: get( this , "" ,.. )
`uvm_fatal( ... )
Since the value parameters for get are unsigned type, it would be unsuccessful right ?