sPyNNaker neural_modelling  7.4.2
spike_processing_fast.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2020 The University of Manchester
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * https://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
19 #ifndef _SPIKE_PROCESSING_FAST_H_
20 #define _SPIKE_PROCESSING_FAST_H_
21 
22 #include <common/neuron-typedefs.h>
23 #include <common/in_spikes.h>
24 #include <spin1_api.h>
25 #include "synapse_row.h"
26 
28 struct sdram_config {
30  uint32_t *address;
32  uint32_t size_in_bytes;
35 };
36 
39 struct key_config {
41  uint32_t key;
43  uint32_t mask;
45  uint32_t spike_id_mask;
47  uint32_t colour_shift;
49  uint32_t self_connected;
50 };
51 
57  uint32_t n_dmas_complete;
61  uint32_t n_rewires;
77  uint32_t earliest_receive;
79  uint32_t latest_receive;
82 };
83 
98  uint32_t row_max_n_words, uint32_t spike_buffer_size,
99  bool discard_late_packets, uint32_t pkts_per_ts_rec_region,
100  uint32_t multicast_priority, struct sdram_config sdram_inputs_param,
101  struct key_config key_config_param, weight_t *ring_buffers_param);
102 
108 void spike_processing_fast_time_step_loop(uint32_t time, uint32_t n_rewires);
109 
113  struct spike_processing_fast_provenance *prov);
114 
115 #endif // _SPIKE_PROCESSING_FAST_H_
static uint32_t time
Simulation time.
Functions for immediate handling of incoming spikes.
Data type definitions for SpiNNaker Neuron-modelling.
uint32_t spike_id_mask
The mask to get the spike ID.
uint32_t n_packets_dropped_from_lateness
The number of packets that were cleared at the end of timesteps.
uint32_t max_spikes_overflow
The most spikes left at the end of any time step.
uint32_t max_filled_input_buffer_size
The maximum size of the input buffer.
uint32_t mask
The mask.
uint32_t n_dmas_complete
The number of DMAs performed.
void spike_processing_fast_time_step_loop(uint32_t time, uint32_t n_rewires)
The main loop of spike processing to be run once per time step. Note that this function will not retu...
uint32_t n_rewires
The number of rewires performed.
uint32_t self_connected
Is the node self connected.
uint32_t n_skipped_time_steps
The number of times a time step was skipped entirely.
void spike_processing_fast_store_provenance(struct spike_processing_fast_provenance *prov)
Store any provenance data gathered from spike processing.
uint32_t key
The key.
uint32_t n_input_buffer_overflows
A count of the times that the synaptic input circular buffers overflowed.
uint32_t n_transfer_timer_overruns
The number of times the transfer took longer than expected.
uint32_t max_spikes_received
The maximum number of spikes received in a time step.
bool spike_processing_fast_initialise(uint32_t row_max_n_words, uint32_t spike_buffer_size, bool discard_late_packets, uint32_t pkts_per_ts_rec_region, uint32_t multicast_priority, struct sdram_config sdram_inputs_param, struct key_config key_config_param, weight_t *ring_buffers_param)
Set up spike processing.
uint32_t n_spikes_processed
The number of spikes received and processed.
uint32_t max_spikes_processed
The maximum number of spikes processed in a time step.
uint32_t max_transfer_timer_overrun
The maximum additional time taken to transfer.
uint32_t earliest_receive
The earliest received time of a spike.
uint32_t latest_receive
The latest received time of a spike.
uint32_t colour_shift
The colour shift to apply after masking.
Provenance for spike processing.
uint32_t size_in_bytes
The size of the input data to be transferred per core.
uint32_t time_for_transfer_overhead
The time of the transfer in us.
uint32_t * address
The address of the input data to be transferred.
static uint32_t spike_buffer_size
The size of each spike buffer in bytes.
A region of SDRAM used to transfer synapses.
implementation for handling the processing of synapse rows.