2 #include "haldls/vx/v3/capmem.h"
3 #include "haldls/vx/v3/neuron.h"
4 #include "hate/visibility.h"
16 typedef haldls::vx::v3::CapMemCell::Value
AnalogValue GENPYBIND(visible);
55 bool enable_small_capacitance;
58 bool enable_high_resistance;
61 bool enable_coba_mode;
66 GENPYBIND(stringstream)
67 friend std::ostream& operator<<(std::ostream& os,
SynapticInput const& config)
71 struct GENPYBIND(visible)
Leak
85 bool enable_degeneration;
91 bool enable_multiplication;
93 bool operator==(
Leak const& other) const SYMBOL_VISIBLE;
94 bool operator!=(
Leak const& other) const SYMBOL_VISIBLE;
96 GENPYBIND(stringstream)
97 friend std::ostream& operator<<(std::ostream& os,
Leak const& config) SYMBOL_VISIBLE;
114 bool enable_degeneration;
117 bool enable_division;
120 bool enable_multiplication;
122 bool operator==(
Reset const& other) const SYMBOL_VISIBLE;
123 bool operator!=(
Reset const& other) const SYMBOL_VISIBLE;
125 GENPYBIND(stringstream)
126 friend std::ostream& operator<<(std::ostream& os,
Reset const& config) SYMBOL_VISIBLE;
139 bool operator==(
Threshold const& other) const SYMBOL_VISIBLE;
140 bool operator!=(
Threshold const& other) const SYMBOL_VISIBLE;
142 GENPYBIND(stringstream)
143 friend std::ostream& operator<<(std::ostream& os,
Threshold const& config) SYMBOL_VISIBLE;
158 bool connect_soma_right;
164 bool connect_vertical;
167 bool enable_conductance;
170 bool enable_conductance_division;
173 bool enable_conductance_multiplication;
181 GENPYBIND(stringstream)
206 GENPYBIND(stringstream)
224 GENPYBIND(stringstream)
263 bool operator==(
Adaptation const& other) const SYMBOL_VISIBLE;
264 bool operator!=(
Adaptation const& other) const SYMBOL_VISIBLE;
266 GENPYBIND(stringstream)
267 friend std::ostream& operator<<(std::ostream& os,
Adaptation const& config) SYMBOL_VISIBLE;
286 GENPYBIND(stringstream)
287 friend std::ostream& operator<<(std::ostream& os,
Exponential const& config) SYMBOL_VISIBLE;
294 typedef
haldls::vx::v3::NeuronBackendConfig::AddressOut
Address GENPYBIND(visible);
330 bool enable_bypass_excitatory,
331 bool enable_bypass_inhibitory,
333 bool enable_post_overwrite) SYMBOL_VISIBLE;
343 GENPYBIND(stringstream)
344 friend std::ostream& operator<<(std::ostream& os,
EventRouting const& config)
350 typedef haldls::vx::v3::NeuronConfig::ReadoutSource
Source GENPYBIND(visible);
387 bool operator==(
Readout const& other) const SYMBOL_VISIBLE;
388 bool operator!=(
Readout const& other) const SYMBOL_VISIBLE;
390 GENPYBIND(stringstream)
391 friend std::ostream& operator<<(std::ostream& os,
Readout const& config) SYMBOL_VISIBLE;
396 typedef haldls::vx::v3::NeuronBackendConfig::InputClock
InputClock GENPYBIND(visible);
397 typedef haldls::vx::v3::NeuronBackendConfig::ResetHoldoff
ResetHoldoff GENPYBIND(visible);
434 GENPYBIND(stringstream)
444 bool connect_fire_vertical;
445 bool connect_fire_to_right;
446 bool connect_fire_from_right;
458 bool operator==(
Bayesian const& other) const SYMBOL_VISIBLE;
459 bool operator!=(
Bayesian const& other) const SYMBOL_VISIBLE;
461 GENPYBIND(stringstream)
462 friend std::ostream& operator<<(std::ostream& os,
Bayesian const& config) SYMBOL_VISIBLE;
487 explicit operator
haldls::vx::v3::NeuronConfig() const SYMBOL_VISIBLE;
489 parent.def(
"asNeuronConfig", [](GENPYBIND_PARENT_TYPE
const&
self) {
490 return static_cast<haldls::vx::v3::NeuronConfig
>(
self);
494 void set_from(haldls::vx::v3::NeuronConfig
const& neuron_config) SYMBOL_VISIBLE;
497 explicit operator haldls::vx::v3::NeuronBackendConfig() const SYMBOL_VISIBLE;
499 parent.def(
"asNeuronBackendConfig", [](GENPYBIND_PARENT_TYPE
const&
self) {
500 return static_cast<haldls::vx::v3::NeuronBackendConfig
>(
self);
504 void set_from(haldls::vx::v3::NeuronBackendConfig
const& neuron_backend_config) SYMBOL_VISIBLE;
509 GENPYBIND(stringstream)
510 friend std::ostream& operator<<(std::ostream& os,
AtomicNeuron const& config) SYMBOL_VISIBLE;
520 class GENPYBIND(visible) NeuronBlock
523 typedef haldls::vx::v3::CapMemCell::Value
AnalogValue GENPYBIND(visible);
530 NeuronBlock() =
default;
532 typedef halco::common::
533 typed_heap_array<AtomicNeuron, halco::hicann_dls::vx::v3::AtomicNeuronOnDLS>
534 AtomicNeurons GENPYBIND(opaque(
false));
538 AtomicNeurons atomic_neurons{};
540 typedef halco::common::typed_array<
541 haldls::vx::v3::CommonNeuronBackendConfig,
542 halco::hicann_dls::vx::v3::CommonNeuronBackendConfigOnDLS>
543 Backends GENPYBIND(opaque(
false));
550 typedef halco::common::typed_array<
552 halco::hicann_dls::vx::v3::ColumnCurrentRowOnDLS>
553 CurrentRows GENPYBIND(opaque(
false));
558 CurrentRows current_rows{};
560 typedef halco::common::
561 typed_array<AnalogValueVariant, halco::hicann_dls::vx::v3::CapMemBlockOnDLS>
566 AnalogValues v_bias_casc_n{
572 AnalogValues i_bias_readout_amp{
578 AnalogValues i_bias_leak_source_follower{
584 AnalogValues i_bias_threshold_comparator{
591 AnalogValues i_bias_synin_drop{
594 bool operator==(NeuronBlock
const& other)
const SYMBOL_VISIBLE;
595 bool operator!=(NeuronBlock
const& other)
const SYMBOL_VISIBLE;
597 GENPYBIND(stringstream)
598 friend std::ostream&
operator<<(std::ostream& os, NeuronBlock
const& config) SYMBOL_VISIBLE;
603 auto av = parent->py::template class_<::lola::vx::v3::NeuronBlock::AnalogValues>(
604 parent,
"AnalogValues");
606 "fill", &::lola::vx::v3::NeuronBlock::AnalogValues::fill,
"", parent->py::arg(
"val"));
608 typedef ::lola::vx::v3::NeuronBlock::AnalogValues::reference (
609 ::lola::vx::v3::NeuronBlock::AnalogValues::*genpybind_at_type)(
610 const ::lola::vx::v3::NeuronBlock::AnalogValues::key_type&);
612 "at", (genpybind_at_type) & ::lola::vx::v3::NeuronBlock::AnalogValues::at,
"",
613 parent->py::arg(
"key"));
616 typedef ::lola::vx::v3::NeuronBlock::AnalogValues::const_reference (
617 ::lola::vx::v3::NeuronBlock::AnalogValues::*genpybind_at_type)(
618 const ::lola::vx::v3::NeuronBlock::AnalogValues::key_type&)
const;
620 "at", (genpybind_at_type) & ::lola::vx::v3::NeuronBlock::AnalogValues::at,
"",
621 parent->py::arg(
"key"));
624 typedef ::lola::vx::v3::NeuronBlock::AnalogValues::reference (
625 ::lola::vx::v3::NeuronBlock::AnalogValues::*genpybind_front_type)();
627 "front", (genpybind_front_type) & ::lola::vx::v3::NeuronBlock::AnalogValues::front,
631 typedef ::lola::vx::v3::NeuronBlock::AnalogValues::const_reference (
632 ::lola::vx::v3::NeuronBlock::AnalogValues::*genpybind_front_type)()
const;
634 "front", (genpybind_front_type) & ::lola::vx::v3::NeuronBlock::AnalogValues::front,
638 typedef ::lola::vx::v3::NeuronBlock::AnalogValues::reference (
639 ::lola::vx::v3::NeuronBlock::AnalogValues::*genpybind_back_type)();
641 "back", (genpybind_back_type) & ::lola::vx::v3::NeuronBlock::AnalogValues::back,
645 typedef ::lola::vx::v3::NeuronBlock::AnalogValues::const_reference (
646 ::lola::vx::v3::NeuronBlock::AnalogValues::*genpybind_back_type)()
const;
648 "back", (genpybind_back_type) & ::lola::vx::v3::NeuronBlock::AnalogValues::back,
652 "__getitem__", &::lola::vx::v3::NeuronBlock::AnalogValues::get,
"",
653 parent->py::arg(
"key"), parent->py::return_value_policy::reference);
655 "__setitem__", &::lola::vx::v3::NeuronBlock::AnalogValues::set,
"",
656 parent->py::arg(
"key"), parent->py::arg(
"value"));
659 [av](::lola::vx::v3::NeuronBlock::AnalogValues&
self) {
660 return pybind11::make_iterator(
self);
662 parent->py::template keep_alive<0, 1>());
664 av.def(
"to_numpy", [](::lola::vx::v3::NeuronBlock::AnalogValues
const&
self) {
665 return ::halco::common::detail::to_numpy(
self);
669 [](::lola::vx::v3::NeuronBlock::AnalogValues&
self, pybind11::array
const& array) {
670 ::halco::common::detail::from_numpy(
self, array);
672 av.def(parent->py::template init<const ::lola::vx::v3::NeuronBlock::AnalogValues&>(),
"");
673 av.def(parent->py::template init<>(),
"");
674 av.def_property_readonly(
675 "size", parent->py::cpp_function(&::lola::vx::v3::NeuronBlock::AnalogValues::size));
676 av.def_property_readonly(
678 parent->py::cpp_function(&::lola::vx::v3::NeuronBlock::AnalogValues::max_size));
679 av.def_property_readonly(
680 "empty", parent->py::cpp_function(&::lola::vx::v3::NeuronBlock::AnalogValues::empty));
683 friend class haldls::vx::detail::VisitPreorderImpl<NeuronBlock>;
688 #include "lola/vx/v3/neuron.tcc"
Configuration of digital and analog parameters for a single-denmem neuron.
haldls::vx::v3::CapMemCell::Value AnalogValue
haldls::vx::v3::CapMemCell::DisableRefresh AnalogDisableRefresh
haldls::vx::v3::CapMemCell::value_type AnalogValueVariant
std::false_type has_local_data
halco::hicann_dls::vx::v3::AtomicNeuronOnDLS coordinate_type
#define GENPYBIND_TAG_LOLA_VX_V3
class lola::vx::v3::AtomicNeuron set_from(haldls::vx::v3::NeuronConfig const &neuron_config) SYMBOL_VISIBLE
lola::vx::ColumnCurrentRow ColumnCurrentRow
haldls::vx::v2::NeuronBackendConfig::AddressOut Address
Adaptation() SYMBOL_VISIBLE
Bayesian() SYMBOL_VISIBLE
Type
Sink/source offset current on membrane.
bool operator!=(ConstantCurrent const &other) const SYMBOL_VISIBLE
ConstantCurrent() SYMBOL_VISIBLE
bool operator==(ConstantCurrent const &other) const SYMBOL_VISIBLE
bool enable_bypass_inhibitory
Enable inhibitory bypass circuit.
EventRouting() SYMBOL_VISIBLE
Address address
Lower 8 bit of address sent on event output.
static const EventRouting bypass_exc SYMBOL_VISIBLE
EventRouting(AnalogOutputMode analog_output, bool enable_digital, bool enable_bypass_excitatory, bool enable_bypass_inhibitory, Address address, bool enable_post_overwrite) SYMBOL_VISIBLE
static const EventRouting bypass_inh SYMBOL_VISIBLE
bool enable_digital
Enable sending a spike packet out of the digital backend.
bool operator!=(EventRouting const &other) const SYMBOL_VISIBLE
haldls::vx::v3::NeuronBackendConfig::AddressOut Address
static const EventRouting enabled SYMBOL_VISIBLE
AnalogOutputMode
Analog output (off/normal/strong) settings.
bool operator==(EventRouting const &other) const SYMBOL_VISIBLE
bool enable_post_overwrite
Enable usage of external post pulses reaching the synapses exclusively.
bool enable_bypass_excitatory
Enable excitatory bypass circuit.
bool enable
Enable exponential term.
AnalogValueVariant v_exp
Threshold voltage for the exponential term.
Exponential() SYMBOL_VISIBLE
haldls::vx::v3::NeuronConfig::MembraneCapacitorSize CapacitorSize
Multicompartment configuration of connectivity to adjacent neurons.
Multicompartment() SYMBOL_VISIBLE
haldls::vx::v3::NeuronConfig::ReadoutSource Source
bool enable_unbuffered_access
Enable direct, unbuffered access.
bool enable_amplifier
Enable readout amplifier.
bool enable_buffered_access
Connect the readout amplifier's output to the shared readout lines.
bool enable_pause
Enable gating of synaptic inputs and exponential term during reset periods.
RefractoryPeriod() SYMBOL_VISIBLE
InputClock input_clock
Select between the two input clocks specified in the common neuron backend.
haldls::vx::v3::NeuronBackendConfig::ResetHoldoff ResetHoldoff
haldls::vx::v3::NeuronBackendConfig::InputClock InputClock
ResetHoldoff reset_holdoff
Release the reset potential before the refractory time ends.
RefractoryTime refractory_time
Counter value to control refractory time.
haldls::vx::v3::NeuronBackendConfig::RefractoryTime RefractoryTime
Threshold() SYMBOL_VISIBLE
bool operator!=(AtomicNeuron const &other) const SYMBOL_VISIBLE
bool operator==(AtomicNeuron const &other) const SYMBOL_VISIBLE
SynapticInput inhibitory_input
MembraneCapacitance membrane_capacitance
friend std::ostream & operator<<(std::ostream &os, AtomicNeuron const &config) SYMBOL_VISIBLE
ConstantCurrent constant_current
EventRouting event_routing
haldls::vx::v2::CapMemCell::DisableRefresh AnalogDisableRefresh
halco::hicann_dls::vx::v2::AtomicNeuronOnDLS coordinate_type
Multicompartment multicompartment
std::false_type has_local_data
haldls::vx::v2::CapMemCell::Value AnalogValue
SynapticInput excitatory_input
RefractoryPeriod refractory_period
haldls::vx::v2::CapMemCell::value_type AnalogValueVariant
AtomicNeuron() SYMBOL_VISIBLE