Да, вы можете использовать оператор типа делать генерации: если/дело, или процедурный, если/дело, как:
real r;
if (type(r) == type(real)) ...
Но, к сожалению код во всех филиалах по-прежнему должен успешно компилироваться, независимо от состояния. Вы не сможете ссылаться на элемент структуры, который не существует.
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