Fix bit width when converting real value to binary/hex string in VPI.
(cherry picked from commit 5aae9ea770)
This commit is contained in:
parent
062fc43fab
commit
10e7eb55ce
|
|
@ -820,12 +820,12 @@ static void real_signal_value(struct t_vpi_value*vp, double rval)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case vpiHexStrVal:
|
case vpiHexStrVal:
|
||||||
sprintf(rbuf, "%lx", (long)vlg_round(rval));
|
sprintf(rbuf, "%" PRIx64, (uint64_t)vlg_round(rval));
|
||||||
vp->value.str = rbuf;
|
vp->value.str = rbuf;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case vpiBinStrVal: {
|
case vpiBinStrVal: {
|
||||||
unsigned long val = (unsigned long)vlg_round(rval);
|
uint64_t val = (uint64_t)vlg_round(rval);
|
||||||
unsigned len = 0;
|
unsigned len = 0;
|
||||||
|
|
||||||
while (val > 0) {
|
while (val > 0) {
|
||||||
|
|
@ -833,7 +833,7 @@ static void real_signal_value(struct t_vpi_value*vp, double rval)
|
||||||
val /= 2;
|
val /= 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
val = (unsigned long)vlg_round(rval);
|
val = (uint64_t)vlg_round(rval);
|
||||||
for (unsigned idx = 0 ; idx < len ; idx += 1) {
|
for (unsigned idx = 0 ; idx < len ; idx += 1) {
|
||||||
rbuf[len-idx-1] = (val & 1)? '1' : '0';
|
rbuf[len-idx-1] = (val & 1)? '1' : '0';
|
||||||
val /= 2;
|
val /= 2;
|
||||||
|
|
|
||||||
|
|
@ -132,17 +132,17 @@ static void vthr_real_get_value(vpiHandle ref, s_vpi_value*vp)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case vpiOctStrVal:
|
case vpiOctStrVal:
|
||||||
sprintf(rbuf, "%lo", (long)vlg_round(val));
|
sprintf(rbuf, "%" PRIo64, (uint64_t)vlg_round(val));
|
||||||
vp->value.str = rbuf;
|
vp->value.str = rbuf;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case vpiHexStrVal:
|
case vpiHexStrVal:
|
||||||
sprintf(rbuf, "%lx", (long)vlg_round(val));
|
sprintf(rbuf, "%" PRIx64, (uint64_t)vlg_round(val));
|
||||||
vp->value.str = rbuf;
|
vp->value.str = rbuf;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case vpiBinStrVal: {
|
case vpiBinStrVal: {
|
||||||
unsigned long vali = (unsigned long)vlg_round(val);
|
uint64_t vali = (uint64_t)vlg_round(val);
|
||||||
unsigned len = 0;
|
unsigned len = 0;
|
||||||
|
|
||||||
while (vali > 0) {
|
while (vali > 0) {
|
||||||
|
|
@ -150,7 +150,7 @@ static void vthr_real_get_value(vpiHandle ref, s_vpi_value*vp)
|
||||||
vali /= 2;
|
vali /= 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
vali = (unsigned long)vlg_round(val);
|
vali = (uint64_t)vlg_round(val);
|
||||||
for (unsigned idx = 0 ; idx < len ; idx += 1) {
|
for (unsigned idx = 0 ; idx < len ; idx += 1) {
|
||||||
rbuf[len-idx-1] = (vali & 1)? '1' : '0';
|
rbuf[len-idx-1] = (vali & 1)? '1' : '0';
|
||||||
vali /= 2;
|
vali /= 2;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue