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:
parent
711365521d
commit
5fb89262df
|
|
@ -697,7 +697,6 @@ static void signal_get_value(vpiHandle ref, s_vpi_value*vp)
|
||||||
format_vpiStringVal(vsig, 0, wid, vp);
|
format_vpiStringVal(vsig, 0, wid, vp);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case vpiObjTypeVal:
|
|
||||||
case vpiVectorVal:
|
case vpiVectorVal:
|
||||||
format_vpiVectorVal(vsig, 0, wid, vp);
|
format_vpiVectorVal(vsig, 0, wid, vp);
|
||||||
break;
|
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);
|
format_vpiRealVal(vsig, 0, wid, rfp->signed_flag, vp);
|
||||||
break;
|
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:
|
default:
|
||||||
fprintf(stderr, "vvp internal error: get_value: "
|
fprintf(stderr, "vvp internal error: get_value: "
|
||||||
"value type %u not implemented."
|
"value type %u not implemented."
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue