Skip to content

neuromap.chip

neuromap.chip

Chip hardware profile definitions for Neuromap neuromorphic processors.

This module defines :class:ChipSpec - the specification of a physical neuromorphic chip - and :class:NeuronParams - the default LIF neuron parameters baked into the hardware. The :class:chips namespace provides pre-defined profiles for every Neuromap chip revision.

Example::

from neuromap import chips

chip = chips.NEUROSOC_V1
print(chip.total_neurons)   # 48
print(chip.total_synapses)  # 512

NeuronParams dataclass

Default LIF neuron parameters matching the hardware defaults.

Parameters:

Name Type Description Default
tau_m float

Membrane time constant.

10.0
rm float

Membrane resistance.

1.0
dt float

Simulation time-step size.

1.0
v_th float

Firing threshold voltage.

1.0
v_reset float

Reset voltage after a spike.

0.0
t_ref int

Refractory period in time-steps.

2

beta property

Membrane decay rate for snnTorch: 1 - dt / tau_m.

to_snntorch_kwargs()

Return keyword arguments for :class:NeuromapLIF.

Returns:

Type Description
dict[str, Any]

Dictionary with beta, threshold, v_reset, and

dict[str, Any]

t_ref keys.

to_dict()

Serialise to a plain dictionary.

from_dict(data) classmethod

Deserialise from a plain dictionary.

Parameters:

Name Type Description Default
data dict[str, Any]

Dictionary with neuron parameter keys.

required

Returns:

Type Description
NeuronParams

A new :class:NeuronParams instance.

ChipSpec dataclass

Hardware specification of a Neuromap neuromorphic chip.

Parameters:

Name Type Description Default
name str

Human-readable chip identifier (e.g. "NeuroSoC-v1").

required
layers tuple[int, ...]

Number of neurons per layer. For example (16, 16, 16) describes the 3-layer topology of the first NeuroSoC ASIC.

(16, 16, 16)
weight_bits int

Bit-width of the synaptic weight DACs.

4
neuron_params NeuronParams

Default LIF neuron parameters for this chip.

NeuronParams()
max_frequency_khz float | None

Maximum neuron spiking frequency in kHz.

None
supply_voltage_mv int | None

Operating supply voltage in millivolts.

None
energy_per_spike_fj float | None

Energy per spike in femtojoules.

None

num_layers property

Number of layers in the network topology.

total_neurons property

Total neuron count across all layers.

total_synapses property

Total synapse count (fully-connected between consecutive layers).

input_size property

Number of neurons in the first (input) layer.

output_size property

Number of neurons in the last (output) layer.

to_dict()

Serialise the chip spec to a plain dictionary.

from_dict(data) classmethod

Deserialise from a plain dictionary.

Parameters:

Name Type Description Default
data dict[str, Any]

Dictionary with chip specification keys.

required

Returns:

Type Description
ChipSpec

A new :class:ChipSpec instance.

chips

Registry of predefined chip profiles.

NEUROSOC_V1 = ChipSpec(name='NeuroSoC-v1', layers=(16, 16, 16), weight_bits=4, neuron_params=(NeuronParams(tau_m=10.0, rm=1.0, dt=1.0, v_th=1.0, v_reset=0.0, t_ref=2)), max_frequency_khz=300.0, supply_voltage_mv=250, energy_per_spike_fj=1.61) class-attribute instance-attribute

NeuroSoC v1 - 48 LIF neurons, 512 4-bit synapses, 28 nm CMOS ASIC.

list() classmethod

Return names of all predefined chip profiles.

get(name) classmethod

Look up a predefined chip profile by name (case-insensitive).

Parameters:

Name Type Description Default
name str

The chip name to look up.

required

Returns:

Type Description
ChipSpec

The matching :class:ChipSpec.

Raises:

Type Description
KeyError

If no chip with the given name is registered.