Fix the vpiObjTypeVal for signals to be scalar or vector.

Scalar signals have a preferred type of vpiScalarVal, but vectors
have a preferred type of vpiVectorVal. Use the signal width to
distinguish.
This commit is contained in:
Stephen Williams 2009-10-29 11:53:31 -07:00
parent 711365521d
commit 5fb89262df
1 changed files with 10 additions and 1 deletions

View File

@ -697,7 +697,6 @@ static void signal_get_value(vpiHandle ref, s_vpi_value*vp)
format_vpiStringVal(vsig, 0, wid, vp);
break;
case vpiObjTypeVal:
case vpiVectorVal:
format_vpiVectorVal(vsig, 0, wid, vp);
break;
@ -706,6 +705,16 @@ static void signal_get_value(vpiHandle ref, s_vpi_value*vp)
format_vpiRealVal(vsig, 0, wid, rfp->signed_flag, vp);
break;
case vpiObjTypeVal:
if (wid == 1) {
vp->format = vpiScalarVal;
format_vpiScalarVal(vsig, 0, vp);
} else {
vp->format = vpiVectorVal;
format_vpiVectorVal(vsig, 0, wid, vp);
}
break;
default:
fprintf(stderr, "vvp internal error: get_value: "
"value type %u not implemented."