Support set by string for reg objects.

This commit is contained in:
steve 2002-05-15 04:48:46 +00:00
parent 8d6239301f
commit 48da46986b
1 changed files with 117 additions and 1 deletions

View File

@ -17,7 +17,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/ */
#if !defined(WINNT) #if !defined(WINNT)
#ident "$Id: vpi_signal.cc,v 1.33 2002/02/03 01:01:51 steve Exp $" #ident "$Id: vpi_signal.cc,v 1.34 2002/05/15 04:48:46 steve Exp $"
#endif #endif
/* /*
@ -468,6 +468,119 @@ static vpiHandle signal_put_value(vpiHandle ref, s_vpi_value*vp,
break; break;
} }
case vpiBinStrVal: {
unsigned char*bits = new unsigned char[(wid+3) / 4];
vpip_bin_str_to_bits(bits, wid, vp->value.str, false);
for (unsigned idx = 0 ; idx < wid ; idx += 1) {
unsigned bb = idx / 4;
unsigned bs = (idx % 4) * 2;
unsigned val = (bits[bb] >> bs) & 0x03;
switch (val) {
case 0: /* zero */
functor_poke(rfp,idx, 0, St0);
break;
case 1: /* one */
functor_poke(rfp,idx, 1, St1);
break;
case 2: /* x */
functor_poke(rfp,idx, 2, StX);
break;
case 3: /* z */
functor_poke(rfp,idx, 3, HiZ);
break;
}
}
delete[]bits;
break;
}
case vpiOctStrVal: {
unsigned char*bits = new unsigned char[(wid+3) / 4];
vpip_oct_str_to_bits(bits, wid, vp->value.str, false);
for (unsigned idx = 0 ; idx < wid ; idx += 1) {
unsigned bb = idx / 4;
unsigned bs = (idx % 4) * 2;
unsigned val = (bits[bb] >> bs) & 0x03;
switch (val) {
case 0: /* zero */
functor_poke(rfp,idx, 0, St0);
break;
case 1: /* one */
functor_poke(rfp,idx, 1, St1);
break;
case 2: /* x */
functor_poke(rfp,idx, 2, StX);
break;
case 3: /* z */
functor_poke(rfp,idx, 3, HiZ);
break;
}
}
delete[]bits;
break;
}
case vpiHexStrVal: {
unsigned char*bits = new unsigned char[(wid+3) / 4];
vpip_hex_str_to_bits(bits, wid, vp->value.str, false);
for (unsigned idx = 0 ; idx < wid ; idx += 1) {
unsigned bb = idx / 4;
unsigned bs = (idx % 4) * 2;
unsigned val = (bits[bb] >> bs) & 0x03;
switch (val) {
case 0: /* zero */
functor_poke(rfp,idx, 0, St0);
break;
case 1: /* one */
functor_poke(rfp,idx, 1, St1);
break;
case 2: /* x */
functor_poke(rfp,idx, 2, StX);
break;
case 3: /* z */
functor_poke(rfp,idx, 3, HiZ);
break;
}
}
delete[]bits;
break;
}
case vpiDecStrVal: {
unsigned char*bits = new unsigned char[wid];
vpip_dec_str_to_bits(bits, wid, vp->value.str, false);
for (unsigned idx = 0 ; idx < wid ; idx += 1) {
switch (bits[idx]) {
case 0: /* zero */
functor_poke(rfp,idx, 0, St0);
break;
case 1: /* one */
functor_poke(rfp,idx, 1, St1);
break;
case 2: /* x */
functor_poke(rfp,idx, 2, StX);
break;
case 3: /* z */
functor_poke(rfp,idx, 3, HiZ);
break;
}
}
delete[]bits;
break;
}
default: default:
assert(0); assert(0);
@ -532,6 +645,9 @@ vpiHandle vpip_make_net(char*name, int msb, int lsb, bool signed_flag,
/* /*
* $Log: vpi_signal.cc,v $ * $Log: vpi_signal.cc,v $
* Revision 1.34 2002/05/15 04:48:46 steve
* Support set by string for reg objects.
*
* Revision 1.33 2002/02/03 01:01:51 steve * Revision 1.33 2002/02/03 01:01:51 steve
* Use Larrys bits-to-decimal-string code. * Use Larrys bits-to-decimal-string code.
* *