|
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 |
|
From: Stephen W. <st...@ic...> - 2015-05-13 15:42:13
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 The VCD reading and writing is not done in the vvp program, but in the system.vpi that the vvp program loads at run time. That means you cannot access arbitrary functions in the system.vpi from within the schedule.cc file. Anyhow, it is not at all clear what problem you are trying to solve, and why you are trying to solve it by tapping into the scheduler. On 05/12/2015 10:37 PM, Joshua Street wrote: > 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. - -- Steve Williams "The woods are lovely, dark and deep. steve at icarus.com But I have promises to keep, http://www.icarus.com and lines to code before I sleep, http://www.picturel.com And lines to code before I sleep." -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iEYEARECAAYFAlVTcMwACgkQrPt1Sc2b3inGzQCcDeflidS2ofd/uFrJWQG4Tf2E qLYAnjQu3jA6Isvo5tsrRuJ44pVAEjL4 =iuel -----END PGP SIGNATURE----- |
|
From: Guy H. <ghu...@gm...> - 2015-05-13 18:08:11
|
Periodic updates allow you to track the progress of the simulation while it is still running. To do this you need to leave the VCD file in a consistent state, the in the waveform viewer you can reload to see recent updates. I believe other simulators do this based on wall clock time or the amount of buffered write data they have. Guy > On May 13, 2015, at 8:42 AM, Stephen Williams <st...@ic...> wrote: > > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > > The VCD reading and writing is not done in the vvp program, but in > the system.vpi that the vvp program loads at run time. That means > you cannot access arbitrary functions in the system.vpi from within > the schedule.cc file. > > Anyhow, it is not at all clear what problem you are trying to solve, > and why you are trying to solve it by tapping into the scheduler. > >> On 05/12/2015 10:37 PM, Joshua Street wrote: >> 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. > > > - -- > Steve Williams "The woods are lovely, dark and deep. > steve at icarus.com But I have promises to keep, > http://www.icarus.com and lines to code before I sleep, > http://www.picturel.com And lines to code before I sleep." > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v2 > > iEYEARECAAYFAlVTcMwACgkQrPt1Sc2b3inGzQCcDeflidS2ofd/uFrJWQG4Tf2E > qLYAnjQu3jA6Isvo5tsrRuJ44pVAEjL4 > =iuel > -----END PGP SIGNATURE----- > > ------------------------------------------------------------------------------ > One dashboard for servers and applications across Physical-Virtual-Cloud > Widest out-of-the-box monitoring support with 50+ applications > Performance metrics, stats and reports that give you Actionable Insights > Deep dive visibility with transaction tracing using APM Insight. > http://ad.doubleclick.net/ddm/clk/290420510;117567292;y > _______________________________________________ > Iverilog-devel mailing list > Ive...@li... > https://lists.sourceforge.net/lists/listinfo/iverilog-devel |
|
From: Cary R. <cy...@ya...> - 2015-05-13 18:25:42
|
Is there a reason $dumpflush() does not work? If you wanted to maximize the likelihood of the file having all the data you could add a call to $dumpflush() whenever time advanced, but you are still left with the buffering that normally happens during writing data for a specific time step. I use GTKWave and reload data all the time without doing anything extra, but I am usually generating a fair amount of data at every time step.
Cary
On Wednesday, May 13, 2015 11:08 AM, Guy Hutchison <ghu...@gm...> wrote:
Periodic updates allow you to track the progress of the simulation while it is still running. To do this you need to leave the VCD file in a consistent state, the in the waveform viewer you can reload to see recent updates.
I believe other simulators do this based on wall clock time or the amount of buffered write data they have.
Guy
> On May 13, 2015, at 8:42 AM, Stephen Williams <st...@ic...> wrote:
>
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
>
> The VCD reading and writing is not done in the vvp program, but in
> the system.vpi that the vvp program loads at run time. That means
> you cannot access arbitrary functions in the system.vpi from within
> the schedule.cc file.
>
> Anyhow, it is not at all clear what problem you are trying to solve,
> and why you are trying to solve it by tapping into the scheduler.
>
>> On 05/12/2015 10:37 PM, Joshua Street wrote:
>> 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.
>
>
> - --
> Steve Williams "The woods are lovely, dark and deep.
> steve at icarus.com But I have promises to keep,
> http://www.icarus.com and lines to code before I sleep,
> http://www.picturel.com And lines to code before I sleep."
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v2
>
> iEYEARECAAYFAlVTcMwACgkQrPt1Sc2b3inGzQCcDeflidS2ofd/uFrJWQG4Tf2E
> qLYAnjQu3jA6Isvo5tsrRuJ44pVAEjL4
> =iuel
> -----END PGP SIGNATURE-----
>
> ------------------------------------------------------------------------------
> One dashboard for servers and applications across Physical-Virtual-Cloud
> Widest out-of-the-box monitoring support with 50+ applications
> Performance metrics, stats and reports that give you Actionable Insights
> Deep dive visibility with transaction tracing using APM Insight.
> http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
> _______________________________________________
> Iverilog-devel mailing list
> Ive...@li...
> https://lists.sourceforge.net/lists/listinfo/iverilog-devel
------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
Iverilog-devel mailing list
Ive...@li...
https://lists.sourceforge.net/lists/listinfo/iverilog-devel
|
|
From: J F. <jfi...@sb...> - 2015-05-13 15:57:13
|
The error cannot move is pretty simple. Do an ls of that directory and you will see that the source file does not exist. Sent from Yahoo Mail on Android From:"Joshua Street" <kni...@gm...> Date:Wed, May 13, 2015 at 8:36 AM Subject:[Iverilog-devel] periodic updating of vcd file 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 |