AER-over-UDP Communication¶
Open protocol for inter-FPGA spike routing. No equivalent open standard exists.
AERSender— Pack AER events into UDP packets. Max 180 events per 1500-byte MTU.AERReceiver— Receive and decode.receive_as_vector()returns binary spike vectors.AEREvent— Single spike event (timestamp, neuron_id, data).
from sc_neurocore.comm import AERSender, AERReceiver
See Tutorial 50: AER Communication and Spike Codec Library.
sc_neurocore.comm.aer_udp
¶
AER-over-UDP: open protocol for inter-FPGA spike routing.
Pack AER (Address Event Representation) spike events into UDP packets for communication between FPGA boards or between FPGA and host.
Packet format::
Header: magic(16) | seq(16) | n_events(16) | reserved(16) = 8 bytes Events: timestamp(32) | neuron_id(16) | data(16) = 8 bytes each Max events per packet: 180 (fits in 1500-byte Ethernet MTU)
No equivalent open standard exists for multi-FPGA SNN communication. SpiNNaker uses a proprietary protocol. BrainScaleS uses wafer routing.
AEREvent
dataclass
¶
Single AER spike event.
Source code in src/sc_neurocore/comm/aer_udp.py
39 40 41 42 43 44 45 | |
AERSender
¶
Send AER spike events over UDP.
Parameters¶
host : str Destination IP address. port : int Destination UDP port.
Source code in src/sc_neurocore/comm/aer_udp.py
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | |
send(events)
¶
Send a batch of AER events. Returns number of packets sent.
Source code in src/sc_neurocore/comm/aer_udp.py
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | |
send_spikes(spike_vector, timestamp)
¶
Convert a binary spike vector to AER events and send.
Source code in src/sc_neurocore/comm/aer_udp.py
82 83 84 85 86 87 88 89 | |
AERReceiver
¶
Receive AER spike events over UDP.
Parameters¶
host : str Bind address. port : int Listen port. timeout : float Socket timeout in seconds.
Source code in src/sc_neurocore/comm/aer_udp.py
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 | |
receive()
¶
Receive one packet of AER events. Returns empty list on timeout.
Source code in src/sc_neurocore/comm/aer_udp.py
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 | |
receive_as_vector(n_neurons)
¶
Receive and convert to binary spike vector.
Returns (spike_vector, timestamp) or (zeros, -1) on timeout.
Source code in src/sc_neurocore/comm/aer_udp.py
140 141 142 143 144 145 146 147 148 149 150 151 152 | |