--- 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).