From 150fc6f3ee2bb2b907cde59f180278482b8cf79e Mon Sep 17 00:00:00 2001 From: steve Date: Tue, 22 May 2001 04:08:49 +0000 Subject: [PATCH] correctly interpret signed decimal values. --- vvp/vpi_signal.cc | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/vvp/vpi_signal.cc b/vvp/vpi_signal.cc index 0d6cb4a43..2a214744c 100644 --- a/vvp/vpi_signal.cc +++ b/vvp/vpi_signal.cc @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #if !defined(WINNT) -#ident "$Id: vpi_signal.cc,v 1.13 2001/05/15 15:09:08 steve Exp $" +#ident "$Id: vpi_signal.cc,v 1.14 2001/05/22 04:08:49 steve Exp $" #endif /* @@ -142,11 +142,17 @@ static void signal_vpiDecStrVal(struct __vpiSignal*rfp, s_vpi_value*vp) } if (rfp->signed_flag) { - long tmp = -1; - assert(sizeof(tmp) == sizeof(val)); - tmp <<= wid; - tmp |= val; - sprintf(buf, "%ld", tmp); + long tmp; + assert(sizeof(tmp) == sizeof(val)); + if (val & (1<<(wid-1)) && wid < 8*sizeof(tmp)) { + tmp = -1; + tmp <<= wid; + tmp |= val; + } else { + tmp = val; + } + sprintf(buf, "%ld", tmp); + } else { sprintf(buf, "%lu", val); } @@ -426,6 +432,9 @@ vpiHandle vpip_make_net(char*name, int msb, int lsb, bool signed_flag, /* * $Log: vpi_signal.cc,v $ + * Revision 1.14 2001/05/22 04:08:49 steve + * correctly interpret signed decimal values. + * * Revision 1.13 2001/05/15 15:09:08 steve * Add the glossary file. *