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 |
dict[str, Any]
|
|
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: |
ChipSpec
dataclass
¶
Hardware specification of a Neuromap neuromorphic chip.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Human-readable chip identifier (e.g. |
required |
layers
|
tuple[int, ...]
|
Number of neurons per layer. For example
|
(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.
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: |
Raises:
| Type | Description |
|---|---|
KeyError
|
If no chip with the given name is registered. |