The present disclosure describes systems and methods for operating an event-driven spiking neural network. The neural network is based on a pipelined comparator tree used to find the next neuron to fire (as per the event-driven simulation strategy), with each neuron having a firing time associated therewith. The neuron's discharge is then processed by updating the post-synaptic neurons affected by the firing event. The architecture can be duplicated or otherwise scaled to increase the performance of the system.
Please help me write a proper abstract based on the patent claims. CLAIM: 1. A method for operating an event-driven neural network comprising a plurality of neurons, the method comprising: (i) setting an initial state of the network; (ii) determining a next event in the network as a time to a next neuron firing by: (a) populating entries of a top level of at least one multi-level comparator with values representative of neuron firing times; (b) comparing pairs of entries and selecting from each pair an entry having a closest neuron firing time; (c) propagating the selected ones from each pair to a next level of the comparator and updating the entries of the top level with one or more new values; (d) repeating steps (b) and (c) until all top level entries are updated and no new values are written to any level of the comparator; and (e) determining the time to a next neuron firing based on the neuron firing time of the value in the final level; (iii) setting a subsequent time of simulation to the next neuron firing time; and (iv) simulating the network at the subsequent time of simulation. 2. The method of claim 1, wherein steps (b) and (c) are performed over one clock cycle. 3. The method of claim 1 or 2, further comprising repeating steps (ii) to (iv) iteratively during operation of the network. 4. The method of claim 1, wherein selecting from each pair an entry comprises promoting a random one of the entries of a pair when the associated neuron firing times are identical. 5. The method of claim 1, further comprising: distributing the plurality of neurons across a plurality of processing elements each having a comparator, performing steps (a) to (d) in parallel in each one of the processing elements, and outputting intermediate values from the final level of each comparator of each processing element; inputting the intermediate values into a merger unit having a comparator; and performing steps (a) to (d) in the merger unit with the intermediate values set as top level entries. 6. The method of claim 5, further comprising storing data associated with every neuron that is about to fire in pre-synaptic neuron memories provided in each one of the processing elements. 7. The method of claim 5, further comprising: identifying as synchronized neurons any neurons from separate processing elements that are set to fire at a same time; and redirecting the synchronized neurons to a same processing element. 8. The method of claim 7, wherein the synchronized neurons are pairs of pre-synaptic and post-synaptic neurons. 9. The method of claim 1, wherein simulating the network at the subsequent time of simulation comprises: finding post-synaptic neurons associated with pre-synaptic neurons ready to fire; determining synaptic weights between the post-synaptic neurons and the pre-synaptic neurons ready to fire; determining potential values of the post-synaptic neurons upon fire; and updating next firing times and values for the pre-synaptic neurons and the post-synaptic neurons. 10. A spiking neural network comprising: a memory having stored thereon program code executable by a processor; and at least one processing unit configured for: (i) setting an initial state of the network; (ii) determining a next event in the network as a time to a next neuron firing by: (a) populating entries of a top level of at least one multi-level comparator with values representative of neuron firing times; (b) comparing pairs of entries and selecting from each pair an entry having a closest neuron firing time; (c) propagating the selected ones from each pair to a next level of the comparator and updating the entries of the top level with one or more new values; (d) repeating steps (b) and (c) until all top level entries are updated and no new values are written to any level of the comparator; and (e) determining the time to a next neuron firing based on the neuron firing time of the value in the final level; (iii) setting a subsequent time of simulation to the next neuron firing time; and (iv) simulating the network at the subsequent time of simulation. 11. The system of claim 10, wherein steps (b) and (c) are performed over one clock cycle. 12. The system of claim 10 or 11, further comprising repeating steps (ii) to (iv) iteratively during operation of the network. 13. The system of claim 10, wherein selecting from each pair an entry comprises promoting a random one of the entries of a pair when the associated neuron firing times are identical. 14. The system of claim 10, wherein the at least one processing unit comprises: a controller; a merger unit having one of the at least one comparator and connected to the controller unit; and a plurality of processing elements, each one of the processing elements having an output connected to an input of the merger unit and having an input connected to an output of the controller unit for receiving from the controller unit a pre-synaptic neuron discharging in a current simulation cycle, each one of the processing elements comprising at least one of the at least one comparator and configured to perform steps (a) to (d) in parallel and output intermediate values from the final level of each comparator of each processing element; the merger unit configured for receiving the intermediate values from the plurality of processing units, performing steps (a) to (d) with the intermediate values set as top level entries in the comparator of the merger unit, and sending the neuron firing time of the value in the final level to the controller unit for processing new pre-synaptic neurons and updating the current simulation cycle. 15. The system of claim 14, wherein each one of the processing elements comprises a memory for storing data associated with every neuron that is about to fire. 16. The system of claim 14, wherein each one of the processing elements comprises a synaptic processing unit configured to identify as synchronized neurons any neurons from separate processing elements that are set to fire at a same time and to cause the controller unit to redirect the synchronized neurons to a same processing element. 17. The system of claim 14, wherein each one of the processing elements is pipelined to perform a series of operations over a number of clock cycles. 18. The system of claim 17, wherein the number of clock cycles is five. 19. The system of claim 17, wherein the series of operations comprise: finding post-synaptic neurons associated with pre-synaptic neurons ready to fire; determining synaptic weights between the post-synaptic neurons and the pre-synaptic neurons ready to fire; determining potential values of the post-synaptic neurons upon fire; and updating next firing times and values for the pre-synaptic neurons and the post-synaptic neurons. 20. A non-transitory computer-readable medium having stored thereon instructions for operating an event-based neural network, the instructions executable by a processing unit for: (i) setting an initial state of the network; (ii) determining a next event in the network as a time to a next neuron firing by: (a) populating entries of a top level of at least one multi-level comparator with values representative of neuron firing times; (b) comparing pairs of entries and selecting from each pair an entry having a closest neuron firing time; (c) propagating the selected ones from each pair to a next level of the comparator and updating the entries of the top level with one or more new values; (d) repeating steps (b) and (c) until all top level entries are updated and no new values are written to any level of the comparator; and (e) determining the time to a next neuron firing based on the neuron firing time of the value in the final level; (iii) setting a subsequent time of simulation to the next neuron firing time; (iv) simulating the network at the subsequent time of simulation; and (v) repeating steps (ii) to (iv) iteratively during operation of the network.