|
From: Joshua S. <kni...@gm...> - 2015-05-13 05:38:39
|
Dear Sirs: I am trying to add periodic updates to the vcd file output by icarus during simulation using vvp.exe. I want to be able to update the file so I can read it with another vcd program, but I need to call fclose on the dumpfile in sys_vcd.c Sorry but I'm a noob at coding in c++, so any help would be deeply appreciated. I am wondering what the best way to get access to this function is. I tried to add a header called sys_vcd.h to the vpi folder. This just contained an extern declaration of the function that I wanted access to in sys_vcd.c. However, i also added a string so that I could make sure it was working. extern void reopen_dumpfile(void); char cake[] = "WHAT IS UP"; I then included the file in vvp/schedule.cc. I found that I could access the string from schedule.cc but not the function. I assume this is because I initialized the string in the header, but the actual definition of the function is contained in sys_vcd.c. How do I go about giving myself access to this function? As I remember, I think to get the actual definition, I need access to the object file sys_vcd.o. S I thought I could just change the makefile in the vvp folder like so: V = vpi_modules.o vpi_callback.o vpi_const.o vpi_event.o vpi_iter.o vpi_mcd.o \ vpi_priv.o vpi_scope.o vpi_real.o vpi_signal.o vpi_tasks.o vpi_time.o \ vpi_vthr_vector.o vpip_bin.o vpip_hex.o vpip_oct.o \ vpip_to_dec.o vpip_format.o vvp_vpi.o ../vpi/sys_vcd.o but this didn't work. the makefile gives some error message: mv: cannot move ../vpi/sys_vcd.d to dep/../vpi/sys_vcd.d : no such file or directory. I have no idea what this error means. I feel like the object file should contain the definition of the function I added to the header. Does anyone know what i'm doing wrong? i feel like it's really obvious, but I'm stumped. Also I get the feeling that probably the original intent of the icarus developers was for me not to access vpi headers from inside the vvp folder. Should I add a function to the vpi library instead? I know it already handles commands like $dumpflush, $dumpvars, etc. Regardless, I just want the ability to regularly flush and close the vcd file so that it updates with new data periodically or when a pause command is sent. then I could update the graph with this updated vcd file. Josh |