Neuromorphic Computing Journey (Part 7)
Hello everyone, thank you for appreciating this blog series. This time we are going to talk about hardware and software simulators used in Spiking Neural Networks (SNNs).

Here we will discuss some of the common simulators used in SNNs:
1. NEURON

NEURON is a simulation environment for modeling individual and networks of neurons. It was primarily developed by Michael Hines, John W. Moore, and Ted Carnevale at Yale and Duke.
Neuron models individual neurons via the use of sections that are automatically subdivided into individual compartments, instead of requiring the user to manually create compartments. The primary scripting language is hoc, but a Python interface is also available. Programs can be written interactively in a shell or loaded from a file.
- For Installation (click here)
- Programming NEURON with Python (click here)
- Learn more about NEURON (click here)
2. Nest

NEST is a simulator for spiking neural network models that focuses on the dynamics, size and structure of neural systems rather than on the exact morphology of individual neurons. You can use NEST either with the interpreted programming language Python (PyNEST) or as a stand-alone application.
You can also complement PyNEST with PyNN, a simulator-independent set of Python commands to formulate and run neural simulations. A NEST simulation tries to follow the logic of an electrophysiological experiment that takes place inside a computer with the difference, that the neural system to be investigated must be defined by the experimenter.
- Download Nest (click here)
- Official Documentation (click here).
- PyNEST Examples (click here)
3. GENESIS

GENESIS (short for GEneral NEural SImulation System) is a general purpose simulation platform that was developed to support the simulation of neural systems ranging from subcellular components and biochemical reactions to complex models of single neurons, simulations of large networks, and systems-level models. Most GENESIS applications involve realistic simulations of biological neural systems.
The underlying level of the GENESIS user interface is the Script Language Interpreter (SLI). This is a command interpreter similar to a Unix system shell with an extensive set of commands related to building, monitoring and controlling simulations. GENESIS simulation objects and graphical objects are linked together using the scripting language. The interpreter can read SLI commands either interactively from the keyboard (allowing interactive debugging, inspection, and control of the simulation), or from files containing simulation scripts.
- Subscribe to User Group (click here)
- GENESIS Archive (click here)
- Learn more (click here)
4. SpiNNaker

The SpiNNaker run-time software involves three different devices:
- Host machine — for application I/O and monitoring.
- SpiNNaker monitor cores — for application support and system monitoring. Additionally, one of them communicates with the host over Ethernet.
- SpiNNaker application cores — to run applications.
The SpiNNaker programming model is a simple, event-driven model. Applications do not control execution flow, they can only indicate the functions, referred to as callbacks, to be executed when specific events occur, such as the arrival of a packet, the completion of a Direct Memory Access (DMA) transfer or the lapse of a periodic time interval. The SpiNNaker Application Run-time Kernel (sark) controls the flow of execution and schedules/dispatches application call-back functions.

- PyNN on SpiNNaker (click here)
- Learn more about SpiNNaker Project (click here)
- PyNN Examples (click here)
5. Brian2

Brian is a free, open source simulator for spiking neural networks. It is written in the Python programming language and is available on almost all platforms. We believe that a simulator should not only save the time of processors, but also the time of scientists. Brian is therefore designed to be easy to learn and use, highly flexible and easily extensible.
Brian has a powerful, easy to understand syntax that can define, run and plot neural models in just a few lines of code. Brian uses runtime code generation for state-of-the-art performance, automatically converting your equations into low level C++ code, compiling and running them without any user input required.
- Installation Guide (click here)
- Brian demo without any installation (click here)
- Examples (click here)
That is all for now. Thank you for reading this blog. Currently I am working on how to train Convolutional Neural Network with SpiNNaker-1. I will share the details soon.
Recently I came to know that SpiNNaker-2 is almost ready for launch. Will create a blog post comparing SpiNNaker-1 and SpiNNaker-2.
Stay tuned…!