Permalink
Browse files

sim: signal writes working

  • Loading branch information...
1 parent 9bbec27 commit c4c22c9ca071816f7754d7eb2da46de04e5e8f33 @sbourdeauducq sbourdeauducq committed Mar 5, 2012
Showing with 25 additions and 3 deletions.
  1. +25 −3 vpi/main.c
View
@@ -17,14 +17,36 @@ static int h_go(void *user)
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)
{
+ vpiHandle item;
+ s_vpi_vecval vector[64];
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++)
- printf("%02hhx", chunks[i]);
- printf("\n");
+ vector[i/4].aval |= chunks[i] << 8*(i % 4);
+
+ value.format = vpiVectorVal;
+ value.value.vector = vector;
+ vpi_put_value(item, &value, &zero_delay, vpiInertialDelay);
return 1;
}

0 comments on commit c4c22c9

Please sign in to comment.