PyNCS: a microkernel for high-level definition and configuration of neuromorphic electronic systems - Fabio eStefanini; Emre O Neftci; Sadique eSheik; Giacomo eIndiveri (Frontiers in Neuroscience, 2014)
Neuromorphic hardware offers an electronic substrate for the realization of asynchronousevent-based sensory-motor systems and large-scale spiking neural network architectures. Inorder to characterize these systems, configure them, and carry out modeling experiments, it isoften necessary to interface them to workstations. The software used for this purpose typicallyconsists of a large monolithic block of code highly specific to the hardware setup used. While thisapproach can lead to highly integrated hardware/software systems, it hampers the developmentof modular and neuromorphic infrastructures. To alleviate this problem, we propose PyNCS,an open-source front-end for the definition of neural network models that is interfaced to thehardware through a set of Python Application Programming Interfaces (APIs). The designof PyNCS promotes modularity, portability and expandability and separates implementationfrom hardware description. The high-level front-end that comes with PyNCS includes tools todefine neural network models as well as to create, monitor and analyze spiking data. Here wereport the design philosophy behind the PyNCS framework and describe its implementation.We demonstrate its functionality with two representative case studies, one using an event-based neuromorphic vision sensor, and one using a set of multi-neuron devices for carryingout a cognitive decision-making task involving state-dependent computation. PyNCS, alreadyapplicable to a wide range of existing spike-based neuromorphic setups, will accelerate thedevelopment of hybrid software/hardware neuromorphic systems, thanks to its code flexibility.The code developed is open-source and available online at https://github.com/inincs/pyNCS.