  Recently, both industry and academia have proposed several different
neuromorphic systems to execute machine learning applications that are designed
using Spiking Neural Networks (SNNs). With the growing complexity on design and
technology fronts, programming such systems to admit and execute a machine
learning application is becoming increasingly challenging. Additionally,
neuromorphic systems are required to guarantee real-time performance, consume
lower energy, and provide tolerance to logic and memory failures. Consequently,
there is a clear need for system software frameworks that can implement machine
learning applications on current and emerging neuromorphic systems, and
simultaneously address performance, energy, and reliability. Here, we provide a
comprehensive overview of such frameworks proposed for both, platform-based
design and hardware-software co-design. We highlight challenges and
opportunities that the future holds in the area of system software technology
for neuromorphic computing.
