diff --git a/vvp/vpi_signal.cc b/vvp/vpi_signal.cc index dfe454d9c..d5a4203e1 100644 --- a/vvp/vpi_signal.cc +++ b/vvp/vpi_signal.cc @@ -989,6 +989,15 @@ static int PV_get_base(struct __vpiPV*rfp) /* We return from the symbol base if it is defined. */ if (rfp->sbase != 0) { s_vpi_value val; + /* Check to see if the value is defined. */ + val.format = vpiVectorVal; + vpi_get_value(rfp->sbase, &val); + int words = (vpi_get(vpiSize, rfp->sbase)-1)/32 + 1; + for(int idx = 0; idx < words; idx += 1) { + /* Return INT_MIN to indicate an X base. */ + if (val.value.vector[idx].bval != 0) return INT_MIN; + } + /* The value is defined so get and return it. */ val.format = vpiIntVal; vpi_get_value(rfp->sbase, &val); return val.value.integer;