Jump to content

How to evaluate the time spent on building(initialize) R&C network?

Recommended Posts

I want to monitor the time spent on AMS building the R&C network, I put the command before and after the initialize() function in systemC sc_simcontext.cpp file:

   struct timeval t0;
   struct timeval t1;
   float elapsed;
   gettimeofday(&t0, 0);

   initialize( true );

   gettimeofday(&t1, 0);

   elapsed = (t1.tv_sec - t0.tv_sec) * 1000.0f + (t1.tv_usec - t0.tv_usec) / 1000.0f;

    std::cout << "SystemC Initialize Time: "<< elapsed << "ms" << std::endl;


But I think this time is not the time spent on initializing the R&C network... I checked the sca_simcontext.cpp file,  I found the class systemc_ams_initializer : sc_core::sc_module, but I didn't find which functions for invoking start to building the R&C network... Or should I monitor the function void sca_synchronization_alg::initialize() in sca_synchronization_alg.cpp file?

Where I can put the gettimeofday command to evaluate the time spent on building(initializing) R&C network? My target is to evaluate the proportion of initialized time on the total simulation time.


Thank you for sharing your idea.

Link to comment
Share on other sites

The easiest standard-conformant option I see to get an approximate idea how much time is spent in elaborating your SystemC model, which contains your RC network is by getting a time stamp using gettimeofday() just before calling sc_start() and then another from within the processing() member function of a TDF model attached to your RC network (e.g. via an sca_eln::sca_tdf::sca_vsource().

Note that I would personally prefer to use the std::chrono library introduced with C++'11 and more specifically std::chrono::high_resolution_clock::now() instead of gettimeofday() to time execution of code segments.

If you want to more precisely time the RC network setup, you would need to dive into the implementation details of the SystemC AMS extensions PoC simulator. A starting point would be to look into sca_eln::sca_implementation::sca_eln_view::setup_equations(), where the solvers for the different clusters of ELN modules are instantiated.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...