Open-source part of the TENNLab Exploratory Neuromorphic Framework
Points of Contact: James S. Plank, Catherine D. Schuman, Charles P. Rizzo.
This repo contains the following:
- Simulator for the RISP neuroprocessor.
network_tool
: A command-line tool for creating and manipulating spiking neural networks, including those for the RISP neuroprocessor.processor_tool_risp
: Command-line tool for simulating the RISP neuroprocessor running networks.- Spiking neural network format definition.
- C++
Network
class with supporting methods for creating and manipulating networks. - C++
Processor
interface, for applications (like theprocessor_tool
) that employ spiking neural networks and neuroprocessors. The RISP simulator implements this interface, but the inteface allows for multiple neuroprocessor implementations.
This is an extremely simple spiking neuroprocessor. It features leaky integrate-and-fire neurons and synapses with integer delays. Its simplicity facilitates efficient implementations, and there are implementations for RISP in CPU simulation, microcontrollers, and FPGA's. Here are some links about RISP:
- The Case for RISP: A Reduced Instruction Spiking Processor, a paper describing RISP.
- The RISP Markdown In This Repo.
- The VRISP Vectorized Version of RISP
- Open-Source FPGA Implementation of RISP.
To get started with this repo, please do one or both of:
- Go through the Getting Started markdown file. This has a step-by-step walkthrough of using the various tools in this repo.
- Watch the Getting Started video. This is a video where I go through the Getting Started markdown file. This allows you to go through the steps of learning this software with me explaining as we go.
After that, you should:
- Go through the Network Tool markdown file (which has its own video).
- Go through the RISP markdown file (which also has its own video).
By the end of this exercise, you should be equipped with the know-how and tools to start creating and running your own RISP networks, and to start exploring embedded applications with the Open-Source FPGA Implementation of RISP.
Also, you may want to try vrisp, as its simulator is faster than the original RISP simulator.
- Using RISP to calculate the sine function
- The Bars and Stripes problem, and a RISP solution
- DBSCAN
- The Cart-Pole Application
- 8 Cart-Pole Networks from PRWS-2024 (with videos)
In addition to the material above, documentation of everything in this repo is in the markdown directory. You can typically find what you want there, including information on C++ support if you want to leverage this software from C++.
You don't have to.
Although all of the code in this repo is written in C++, your two main tools,
the network_tool
and processor_tool
, are command-line tools. You may interact with them as
command-line programs, and they fit really well with shell scripts and other programming
environments. So please go through "Getting Started" below -- you don't have to touch any C++.
Now, there is C++ support for network manipulation and for the RISP neuroprocessor. I suspect the users for this support are rare, but it is there, and we have it documented.
We would welcome a contribution of python support for this software. With the rest of our software corpus, we use python bindings so that our researchers may do work in either python or C++. Over time, we will provide that here, but we would also very much welcome that contribution from the community.