catalyst-n1 / sdk /README.md
mrwabbit's picture
Initial upload: Catalyst N1 open source neuromorphic processor RTL
e4cdd5f verified

Neurocore SDK

Python SDK for the Catalyst N1 neuromorphic processor.

Installation

pip install -e .

For GPU simulation (optional):

pip install torch  # PyTorch with CUDA support

Quick Start

import neurocore as nc

# Build a network
net = nc.Network()
inp = net.population(100, params={'threshold': 1000, 'leak': 10}, label='input')
hid = net.population(50, params={'threshold': 1000, 'leak': 5}, label='hidden')
out = net.population(10, params={'threshold': 1000, 'leak': 5}, label='output')

net.connect(inp, hid, weight=500, probability=0.3)
net.connect(hid, out, weight=400, probability=0.5)

# Simulate
sim = nc.Simulator()
sim.deploy(net)

# Inject spikes and run
for t in range(100):
    sim.inject(inp, neuron_ids=[0, 5, 10], current=1500)
    sim.step()

# Analyze results
result = sim.get_result()
result.raster_plot(show=True)

Backends

Backend Import Description
Simulator neurocore.Simulator CPU reference simulator (LIF neurons)
GpuSimulator neurocore.GpuSimulator PyTorch CUDA accelerated (4-8x speedup at 4K+ neurons)
Chip neurocore.Chip UART interface to FPGA (Arty A7)
F2Backend neurocore.f2.F2Backend AWS F2 FPGA via PCIe MMIO

All backends share the same deploy(net) / step() / get_result() API.

Package Structure

neurocore/
  __init__.py          # Public API exports
  network.py           # Network, Population, Connection
  compiler.py          # Network -> hardware instructions
  simulator.py         # CPU LIF simulator
  gpu_simulator.py     # PyTorch GPU simulator
  chip.py              # UART FPGA backend
  f2.py                # AWS F2 PCIe backend
  result.py            # Spike recording and analysis
  analysis.py          # Raster plots, firing rates, ISI
  topology.py          # all_to_all, random, small_world, ring
  microcode.py         # Learning rule microcode compiler
  constants.py         # Hardware limits (WEIGHT_MIN/MAX, etc.)
  exceptions.py        # NeuroError, CompileError, etc.

Benchmarks

benchmarks/
  shd_train.py         # Spiking Heidelberg Digits (surrogate gradient)
  shd_deploy.py        # SHD model quantization and deployment
  shd_loader.py        # SHD dataset loader (HDF5)
  stress_test.py       # SDK stress tests (saturation, stability, fan-out)
  scaling_benchmark.py # Neuron count scaling performance
  gpu_benchmark.py     # CPU vs GPU simulator comparison

SHD Benchmark

Train a spiking neural network on spoken digit classification:

# Download dataset (first run)
python benchmarks/shd_train.py --data-dir benchmarks/data/shd --epochs 200

# Evaluate quantization for hardware deployment
python benchmarks/shd_deploy.py --checkpoint benchmarks/shd_model.pt --data-dir benchmarks/data/shd

Tests

pytest tests/ -v        # 168 tests
pytest tests/ -v -k gpu # GPU tests only (requires CUDA)

Hardware Requirements

  • CPU Simulator: Python 3.9+, NumPy
  • GPU Simulator: PyTorch 2.0+ with CUDA
  • Chip backend: pyserial, FPGA with UART connection
  • F2 backend: AWS F2 instance, fpga_mgmt library