https://github.com/Nuullll/SpikeRRAM
-
README doc.
-
Python-c interface specification.
-
Downscaling inputs -> 11x11.
-
Assess concurrency level. Reduce firing rate (if necessary).
-
I/O.
-
Schedule manager design.
-
I/O.
-
Build with tester-compatible legacy compiler.
-
I/O test.
MNIST dataset sequence.
Input layer of the SNN, implemented in python. (SpikeNet)
Responsible for:
-
Category filtering. (use subset of MNIST)
-
Resample input images. (28x28 to 11x11)
-
Convert images to temporal spike trains.
-
Reduce the firing rate, to alleviate the concurrency of different channels.
-
All spike trains are generated and stored into file system before interacting with Mercury Tester platform.
-
Be aware of pattern phases and background phases.
-
Each image is corresponding to 2 spike trains, i.e. pattern spike train and background spike train. Both trains should cover a sufficient long duration since phase switching could happen arbitrarily.
Storage for input spike trains.
Schedule manager for core SNN, implemented on the tester side in C.
Responsible for:
-
Run a global clock to handle events with fixed rate.
-
Fetch input spike trains from files. Hold each spike with corresponding duration, to stimulate the next module.
-
Rearrange pulse sequence to avoid pulse concurrency thoroughly.
-
Maintain the desired voltage level status for each ports/pads at any time.
-
Stimulate Array Manager at the global clock rate.
-
Read out the array responses from Array Manager at the global clock rate.
-
Simulate LIF layer manner with the array responses.
-
Switch between pattern phase and background phase.
-
Fetch the next image.
Map input and output signals to the probe platform, to stimulate the 1K RRAM array.
No parallel operation is allowed.
Responsible for:
-
Apply correct single voltage pulse to the correct port.
-
Read out current for each cells.
Physical RRAM crossbar array, as the DUT of the probe platform.
e.g.
[PARAMETERS]
n_input=121
dt=50e-9
w_pattern=1
w_background=5
[PATTERN DATA]
-1
0
32
120
-1
2
...
89
[BACKGROUND DATA]
54
-1
...
32
n_input
: number of input neuronsdt
: simulation resolution, unit: sw_pattern
: the relative width (with respect todt
) of each pattern spikew_background
: the relative width (with respect todt
) of each background spike
- Each row contains a single integer, which represents the index of fired neuron in one timestep.
-1
indicates that no neuron fires in this timestep.- Total simulation time = #{rows} *
dt
- At most one neuron is allowed to spike in each timestep. However, a
w_pattern
orw_background
larger than1
may lead to overlaid spikes, which is allowed. - Spike Time refers the very first rising edge of the spike.