Network Composition & Orchestration in Axon

This guide describes how to compose, connect, and orchestrate symbolic SNN structures in Axon using the STICK model—enabling modular designs, reusable components, and seamless simulation-to-hardware workflows.


1. Modular Network Architecture

Axon encourages defining networks as combinations of modules:

  • Atomic modules: basic units (e.g., Adder, Multiplier, MemoryUnit)
  • Composite modules: built by connecting atomic or other composite units

Each module exposes:

  • Input ports (spike sources)
  • Output ports (spike sinks)
  • Internal logic (neurons, synapses, gating)

Example

from axon.networks import Adder, Multiplier
from axon.composition import compose

add = Adder(name='add1')
mul = Multiplier(name='mul1')
net = compose([add, mul],
              connections=[('add1.out', 'mul1.in1'),
                           ('external.x', 'add1.in1'),
                           ('external.y', 'add1.in2'),
                           ('external.z', 'mul1.in2')])

2. Connection Patterns

Axon supports flexible connection patterns between modules:

  • Direct connections: link output of one module to input of another
  • Broadcasting: send output to multiple inputs