vpiVectorVal of very wide signals.
This commit is contained in:
parent
9b6b081e38
commit
99b3cc4464
|
|
@ -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.35 2002/06/21 04:58:55 steve Exp $"
|
#ident "$Id: vpi_signal.cc,v 1.36 2002/06/30 02:52:36 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -331,10 +331,15 @@ static void signal_get_value(vpiHandle ref, s_vpi_value*vp)
|
||||||
vp->value.str = result_buf;
|
vp->value.str = result_buf;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case vpiVectorVal:
|
case vpiVectorVal: {
|
||||||
{
|
|
||||||
s_vpi_vecval *op = vp->value.vector;
|
|
||||||
unsigned int obit = 0;
|
unsigned int obit = 0;
|
||||||
|
unsigned hwid = (wid - 1)/32 + 1;
|
||||||
|
|
||||||
|
need_result_buf(hwid * sizeof(s_vpi_vecval));
|
||||||
|
s_vpi_vecval *op = (p_vpi_vecval)result_buf;
|
||||||
|
vp->value.vector = op;
|
||||||
|
|
||||||
|
op->aval = op->bval = 0;
|
||||||
for (unsigned idx = 0 ; idx < wid ; idx += 1) {
|
for (unsigned idx = 0 ; idx < wid ; idx += 1) {
|
||||||
vvp_ipoint_t fptr = vvp_fvector_get(rfp->bits, idx);
|
vvp_ipoint_t fptr = vvp_fvector_get(rfp->bits, idx);
|
||||||
switch (functor_get(fptr)) {
|
switch (functor_get(fptr)) {
|
||||||
|
|
@ -356,13 +361,14 @@ static void signal_get_value(vpiHandle ref, s_vpi_value*vp)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
obit++;
|
obit++;
|
||||||
if (obit == 8*sizeof(op->aval)) {
|
if (!(obit % 32)) {
|
||||||
op++;
|
op++;
|
||||||
|
op->aval = op->bval = 0;
|
||||||
obit = 0;
|
obit = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
fprintf(stderr, "vvp internal error: signal_get_value: "
|
fprintf(stderr, "vvp internal error: signal_get_value: "
|
||||||
|
|
@ -660,6 +666,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.36 2002/06/30 02:52:36 steve
|
||||||
|
* vpiVectorVal of very wide signals.
|
||||||
|
*
|
||||||
* Revision 1.35 2002/06/21 04:58:55 steve
|
* Revision 1.35 2002/06/21 04:58:55 steve
|
||||||
* Add support for special integer vectors.
|
* Add support for special integer vectors.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue