Support vpiIntVal from memory.

This commit is contained in:
steve 2001-11-09 03:39:07 +00:00
parent 7793a49854
commit aca5afa95c
1 changed files with 24 additions and 2 deletions

View File

@ -27,7 +27,7 @@
* Picture Elements, Inc., 777 Panoramic Way, Berkeley, CA 94704. * Picture Elements, Inc., 777 Panoramic Way, Berkeley, CA 94704.
*/ */
#if !defined(WINNT) && !defined(macintosh) #if !defined(WINNT) && !defined(macintosh)
#ident "$Id: vpi_memory.cc,v 1.1 2001/05/08 23:59:33 steve Exp $" #ident "$Id: vpi_memory.cc,v 1.2 2001/11/09 03:39:07 steve Exp $"
#endif #endif
# include "vpi_priv.h" # include "vpi_priv.h"
@ -181,7 +181,26 @@ static void memory_word_get_value(vpiHandle ref, s_vpi_value*vp)
struct __vpiMemoryWord*rfp = (struct __vpiMemoryWord*)ref; struct __vpiMemoryWord*rfp = (struct __vpiMemoryWord*)ref;
assert(rfp->base.vpi_type->type_code==vpiMemoryWord); assert(rfp->base.vpi_type->type_code==vpiMemoryWord);
assert(0 && "sorry, not yet"); unsigned width = memory_data_width(rfp->mem->mem);
unsigned bidx = rfp->index * ((width+3)&~3);
switch (vp->format) {
default:
assert(!"not implemented");
case vpiIntVal:
vp->value.integer = 0;
for (unsigned idx = 0; idx < width; idx += 1) {
unsigned bit = memory_get(rfp->mem->mem, bidx+idx);
if (bit>1) {
vp->value.integer = 0;
break;
}
vp->value.integer |= bit << idx;
}
}
} }
static const struct __vpirt vpip_memory_rt = { static const struct __vpirt vpip_memory_rt = {
@ -221,6 +240,9 @@ vpiHandle vpip_make_memory(vvp_memory_t mem)
/* /*
* $Log: vpi_memory.cc,v $ * $Log: vpi_memory.cc,v $
* Revision 1.2 2001/11/09 03:39:07 steve
* Support vpiIntVal from memory.
*
* Revision 1.1 2001/05/08 23:59:33 steve * Revision 1.1 2001/05/08 23:59:33 steve
* Add ivl and vvp.tgt support for memories in * Add ivl and vvp.tgt support for memories in
* expressions and l-values. (Stephan Boettcher) * expressions and l-values. (Stephan Boettcher)