sim: signal writes working
This commit is contained in:
parent
9bbec278c6
commit
c4c22c9ca0
28
vpi/main.c
28
vpi/main.c
|
@ -17,14 +17,36 @@ static int h_go(void *user)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static s_vpi_time zero_delay = {
|
||||||
|
.type = vpiSimTime,
|
||||||
|
.high = 0,
|
||||||
|
.low = 0
|
||||||
|
};
|
||||||
|
|
||||||
static int h_write(char *name, int nchunks, const unsigned char *chunks, void *user)
|
static int h_write(char *name, int nchunks, const unsigned char *chunks, void *user)
|
||||||
{
|
{
|
||||||
|
vpiHandle item;
|
||||||
|
s_vpi_vecval vector[64];
|
||||||
int i;
|
int i;
|
||||||
|
s_vpi_value value;
|
||||||
|
|
||||||
printf("WRITE: %s / nchunks: %d / ", name, nchunks);
|
item = vpi_handle_by_name(name, NULL);
|
||||||
|
if(item == NULL) {
|
||||||
|
fprintf(stderr, "Attempted to write non-existing signal %s\n", name);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
assert(nchunks <= 255);
|
||||||
|
for(i=0;i<64;i++) {
|
||||||
|
vector[i].aval = 0;
|
||||||
|
vector[i].bval = 0;
|
||||||
|
}
|
||||||
for(i=0;i<nchunks;i++)
|
for(i=0;i<nchunks;i++)
|
||||||
printf("%02hhx", chunks[i]);
|
vector[i/4].aval |= chunks[i] << 8*(i % 4);
|
||||||
printf("\n");
|
|
||||||
|
value.format = vpiVectorVal;
|
||||||
|
value.value.vector = vector;
|
||||||
|
vpi_put_value(item, &value, &zero_delay, vpiInertialDelay);
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue