File size: 4,032 Bytes
e4cdd5f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
---
license: apache-2.0
tags:
  - neuromorphic
  - spiking-neural-networks
  - fpga
  - verilog
  - hardware
  - edge-ai
  - loihi
  - rtl
  - noc
  - stdp
language:
  - en
library_name: neurocore
pipeline_tag: other
---

# Catalyst N1

Open source 128-core neuromorphic processor with full mesh NoC, STDP learning, and RISC-V management. Verilog RTL, validated on FPGA.

## Specifications

| Parameter | Value |
|-----------|-------|
| Cores | 128 |
| Neurons per core | 1,024 |
| Total neurons | 131,072 |
| Neuron model | Leaky Integrate-and-Fire (16-bit fixed-point) |
| Synapse pool | 131,072 entries per core |
| Learning | STDP, 14-opcode programmable learning ISA |
| Network-on-Chip | Configurable XY mesh with multicast |
| Host interface | UART (FPGA) / AXI-Lite (F2) / PCIe MMIO |
| Management | RV32IM RISC-V cluster |
| Multi-chip | Chip link with routing table |
| Clock | 100 MHz (simulation default) |

## Directory Structure

```
catalyst-n1/
  rtl/           25 Verilog modules (core, NoC, memory, host, RISC-V)
  tb/            46 testbenches (unit, integration, regression)
  sdk/           Python SDK with CPU, GPU, and FPGA backends
  fpga/          FPGA build files (Arty A7, AWS F2, Kria K26)
  sim/           Simulation scripts and visualization
  Makefile       Compile and run simulation
```

## Simulation

Requires [Icarus Verilog](https://github.com/steveicarus/iverilog) (v12+).

```bash
# Compile and run basic simulation
make sim

# Run full regression (25 testbenches)
bash run_regression.sh

# Run a single testbench
iverilog -g2012 -DSIMULATION -o out.vvp \
  rtl/sram.v rtl/spike_fifo.v rtl/uart_tx.v rtl/uart_rx.v \
  rtl/scalable_core_v2.v rtl/neuromorphic_mesh.v \
  rtl/host_interface.v rtl/neuromorphic_top.v rtl/sync_tree.v \
  rtl/rv32i_core.v rtl/mmio_bridge.v rtl/rv32im_cluster.v \
  tb/tb_p24_final.v
vvp out.vvp

# View waveforms (requires GTKWave)
make waves
```

## SDK

Python SDK for building, simulating, and deploying spiking neural networks. See [`sdk/README.md`](sdk/README.md) for full documentation.

```bash
cd sdk
pip install -e .
```

```python
import neurocore as nc

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)

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

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

result = sim.get_result()
result.raster_plot(show=True)
```

Four backends: CPU simulator, GPU simulator (PyTorch CUDA), FPGA via UART (Arty A7), AWS F2 via PCIe. All share the same API.

## FPGA

### Arty A7

```bash
# Vivado batch build
vivado -mode batch -source fpga/build_vivado.tcl
```

Constraints: `fpga/arty_a7.xdc`. Top module: `fpga/fpga_top.v`.

### AWS F2

```bash
# Build on F2 build instance
cd fpga/f2
bash run_build.sh
```

CL wrapper: `fpga/f2/cl_neuromorphic.sv`. Host driver: `fpga/f2_host.py`.

### Kria K26

```bash
vivado -mode batch -source fpga/kria/build_kria.tcl
```

Wrapper: `fpga/kria/kria_neuromorphic.v`.

## Benchmarks

SHD (Spiking Heidelberg Digits) spoken digit classification:

```bash
cd sdk
python benchmarks/shd_train.py --data-dir benchmarks/data/shd --epochs 200
python benchmarks/shd_deploy.py --checkpoint benchmarks/shd_model.pt --data-dir benchmarks/data/shd
```

Additional benchmarks in `sdk/benchmarks/`: DVS gesture recognition, XOR classification, temporal patterns, scaling, stress tests.

## Links

- [GitHub Repository](https://github.com/catalyst-neuromorphic/catalyst-n1)
- [catalyst-neuromorphic.com](https://catalyst-neuromorphic.com)
- [Cloud API](https://github.com/catalyst-neuromorphic/catalyst-cloud-python)
- [Catalyst-Neurocore](https://github.com/catalyst-neuromorphic/catalyst-neurocore)

## License

Apache 2.0. See [LICENSE](LICENSE).