//! \brief Timer interrupt callback //! \param[in] timer_count the number of times this call back has been //! executed since start of simulation //! \param[in] unused unused parameter kept for API consistency //! \return None void timer_callback(uint timer_count, uint unused) { use(timer_count); use(unused); time++; log_debug("Timer tick %u \n", time); /* if a fixed number of simulation ticks that were specified at startup then do reporting for finishing */ if (infinite_run != TRUE && time >= simulation_ticks) { log_info("Simulation complete.\n"); // print statistics into logging region synapses_print_pre_synaptic_events(); synapses_print_saturation_count(); spike_processing_print_buffer_overflows(); // Finalise any recordings that are in progress, writing back the final // amounts of samples recorded to SDRAM if (recording_flags > 0) { recording_finalise(); } spin1_exit(0); return; } // otherwise do synapse and neuron time step updates synapses_do_timestep_update(time); neuron_do_timestep_update(time); // trigger buffering_out_mechanism if (recording_flags > 0) { recording_do_timestep_update(time); } }
//! \brief Timer interrupt callback //! \param[in] timer_count the number of times this call back has been //! executed since start of simulation //! \param[in] unused unused parameter kept for API consistency //! \return None void timer_callback(uint timer_count, uint unused) { use(timer_count); use(unused); time++; log_debug("Timer tick %u \n", time); /* if a fixed number of simulation ticks that were specified at startup then do reporting for finishing */ if (infinite_run != TRUE && time >= simulation_ticks) { // Enter pause and resume state to avoid another tick simulation_handle_pause_resume(resume_callback); // Finalise any recordings that are in progress, writing back the final // amounts of samples recorded to SDRAM if (recording_flags > 0) { log_info("updating recording regions"); recording_finalise(); } // Subtract 1 from the time so this tick gets done again on the next // run time -= 1; return; } // otherwise do synapse and neuron time step updates synapses_do_timestep_update(time); neuron_do_timestep_update(time); // trigger buffering_out_mechanism if (recording_flags > 0) { recording_do_timestep_update(time); } }