Oui, vous pouvez utiliser l'opérateur de type faire générer, si/cas ou procédure en cas/cas comme:
real r;
if (type(r) == type(real)) ...
Mais malheureusement, la le code dans toutes les branches doit encore compiler avec succès, quelle que soit la condition. Vous ne pourrez pas référencer un membre struct qui n'existe pas.
typedef struct {int a;} s1_t;
typedef struct {int a;int b;} s2_t;
s1_t s;
initial
#1 // procedural-if
if (type(s) == type(s1_t))
$display("%m s.a = %0d",s.a);
else if (type(s) == type(s2_t))
$display("%m s.b ==%0d",s.b); // this will not compile