From 70f15b472ff3f955bd362991a4f22ddc8b97523d Mon Sep 17 00:00:00 2001 From: Stephen Williams Date: Thu, 29 Oct 2009 11:53:31 -0700 Subject: [PATCH] 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. (cherry picked from commit 5fb89262dfad3db6c9be816310c8ab7b009d7b44) --- vvp/vpi_signal.cc | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/vvp/vpi_signal.cc b/vvp/vpi_signal.cc index 65ea697a4..f3b2343e9 100644 --- a/vvp/vpi_signal.cc +++ b/vvp/vpi_signal.cc @@ -696,7 +696,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; @@ -705,6 +704,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."