PyNN (pronounced 'pine') is a simulator-independent language for building neuronal network models.
In other words, you can write the code for a model once, using the PyNN API and the Python programming language, and then run it without modification on any simulator that PyNN supports (currently NEURON, NEST, and Brian), and on the SpiNNaker and BrainScaleS neuromorphic hardware systems.
The PyNN API aims to support modelling at a high-level of abstraction (populations of neurons, layers, columns and the connections between them) while still allowing access to the details of individual neurons and synapses when required. By hiding the details and the book-keeping, it allows you to concentrate on the overall structure of your model. PyNN provides a library of standard neuron, synapse and synaptic plasticity models, which have been verified to work in the same way on the different supported simulators. PyNN also provides a set of commonly used connectivity algorithms (e.g., all-to-all, random, distance-dependent, small-world) but makes it easy to provide your own connectivity in a simulator-independent way.
PyNN is easy to install. On HPC machines, it can take advantage of MPI-based parallelism where the underlying simulator supports it. It is pre-installed on the SpiNNaker and BrainScaleS systems.