5 #include "halco/common/geometry.h"
6 #include "halco/common/typed_array.h"
7 #include "halco/hicann-dls/vx/event.h"
8 #include "halco/hicann-dls/vx/routing_crossbar.h"
12 #include "hate/math.h"
13 #include "hate/visibility.h"
16 #include "hxcomm/vx/target.h"
20 class OmnibusChipOverJTAG;
33 constexpr
static auto unsupported_read_targets GENPYBIND(hidden) = {
34 hxcomm::vx::Target::hardware};
40 typedef
halco::common::typed_array<
bool,
halco::hicann_dls::vx::CrossbarOutputOnDLS>
42 typedef
halco::common::typed_array<
bool,
halco::hicann_dls::vx::CrossbarL2OutputOnDLS>
49 GENPYBIND(getter_for(enable_event_counter), return_value_policy(reference_internal))
56 GENPYBIND(setter_for(enable_event_counter))
59 GENPYBIND(getter_for(enable_slow), return_value_policy(reference_internal))
62 GENPYBIND(setter_for(enable_slow))
68 static
size_t constexpr config_size_in_words GENPYBIND(hidden) = 1;
69 template <typename AddressT>
70 static std::array<AddressT, config_size_in_words> addresses(
coordinate_type const& neuron)
71 SYMBOL_VISIBLE GENPYBIND(hidden);
72 template <typename WordT>
73 std::array<WordT, config_size_in_words> encode() const SYMBOL_VISIBLE GENPYBIND(hidden);
74 template <typename WordT>
75 void decode(std::array<WordT, config_size_in_words> const& data) SYMBOL_VISIBLE
78 GENPYBIND(stringstream)
84 template <class Archive>
85 void serialize(Archive& ar, std::uint32_t const version) SYMBOL_VISIBLE;
99 fisch::vx::word_access_type::Omnibus,
100 fisch::vx::word_access_type::OmnibusChipOverJTAG>
116 struct GENPYBIND(inline_base("*
")) Value
117 : public halco::common::detail::
118 RantWrapper<Value, uint_fast32_t, hate::math::pow(2, 16) - 1, 0>
120 constexpr explicit Value(uintmax_t const val = 0) GENPYBIND(implicit_conversion) :
126 CrossbarInputDropCounter() SYMBOL_VISIBLE;
132 CrossbarInputDropCounter(Value value) SYMBOL_VISIBLE;
138 GENPYBIND(getter_for(value))
139 Value get_value() const SYMBOL_VISIBLE;
145 GENPYBIND(setter_for(value))
146 void set_value(Value value) SYMBOL_VISIBLE;
148 bool operator==(CrossbarInputDropCounter const& other) const SYMBOL_VISIBLE;
149 bool operator!=(CrossbarInputDropCounter const& other) const SYMBOL_VISIBLE;
151 static size_t constexpr read_config_size_in_words GENPYBIND(hidden) = 1;
152 static size_t constexpr write_config_size_in_words GENPYBIND(hidden) = 0;
153 template <typename AddressT>
154 static std::array<AddressT, read_config_size_in_words> read_addresses(
155 coordinate_type const& coord) SYMBOL_VISIBLE GENPYBIND(hidden);
156 template <typename AddressT>
157 static std::array<AddressT, write_config_size_in_words> write_addresses(
158 coordinate_type const& coord) SYMBOL_VISIBLE GENPYBIND(hidden);
159 template <typename WordT>
160 std::array<WordT, write_config_size_in_words> encode() const SYMBOL_VISIBLE GENPYBIND(hidden);
161 template <typename WordT>
162 void decode(std::array<WordT, read_config_size_in_words> const& data) SYMBOL_VISIBLE
165 GENPYBIND(stringstream)
166 friend std::ostream& operator<<(std::ostream& os, CrossbarInputDropCounter const& config)
170 friend class cereal::access;
171 template <class Archive>
172 void serialize(Archive& ar, std::uint32_t const version) SYMBOL_VISIBLE;
177 EXTERN_INSTANTIATE_CEREAL_SERIALIZE(CrossbarInputDropCounter)
182 struct BackendContainerTrait<CrossbarInputDropCounter>
183 : public BackendContainerBase<
184 CrossbarInputDropCounter,
185 fisch::vx::word_access_type::Omnibus,
186 fisch::vx::word_access_type::OmnibusChipOverJTAG>
189 } // namespace detail
195 class GENPYBIND(visible) CrossbarOutputEventCounter
198 typedef halco::hicann_dls::vx::CrossbarOutputOnDLS coordinate_type;
199 typedef std::true_type is_leaf_node;
201 struct GENPYBIND(inline_base("*
")) Value
202 : public halco::common::detail::
203 RantWrapper<Value, uint_fast32_t, hate::math::pow(2, 24) - 1, 0>
205 constexpr explicit Value(uintmax_t const val = 0) GENPYBIND(implicit_conversion) :
211 CrossbarOutputEventCounter() SYMBOL_VISIBLE;
217 CrossbarOutputEventCounter(Value value) SYMBOL_VISIBLE;
223 GENPYBIND(getter_for(value))
224 Value get_value() const SYMBOL_VISIBLE;
230 GENPYBIND(setter_for(value))
231 void set_value(Value value) SYMBOL_VISIBLE;
233 bool operator==(CrossbarOutputEventCounter const& other) const SYMBOL_VISIBLE;
234 bool operator!=(CrossbarOutputEventCounter const& other) const SYMBOL_VISIBLE;
236 static size_t constexpr read_config_size_in_words GENPYBIND(hidden) = 1;
237 static size_t constexpr write_config_size_in_words GENPYBIND(hidden) = 0;
238 template <typename AddressT>
239 static std::array<AddressT, read_config_size_in_words> read_addresses(
240 coordinate_type const& coord) SYMBOL_VISIBLE GENPYBIND(hidden);
241 template <typename AddressT>
242 static std::array<AddressT, write_config_size_in_words> write_addresses(
243 coordinate_type const& coord) SYMBOL_VISIBLE GENPYBIND(hidden);
244 template <typename WordT>
245 std::array<WordT, write_config_size_in_words> encode() const SYMBOL_VISIBLE GENPYBIND(hidden);
246 template <typename WordT>
247 void decode(std::array<WordT, read_config_size_in_words> const& data) SYMBOL_VISIBLE
250 GENPYBIND(stringstream)
251 friend std::ostream& operator<<(std::ostream& os, CrossbarOutputEventCounter const& config)
255 friend class cereal::access;
256 template <class Archive>
257 void serialize(Archive& ar, std::uint32_t const version) SYMBOL_VISIBLE;
262 EXTERN_INSTANTIATE_CEREAL_SERIALIZE(CrossbarOutputEventCounter)
267 struct BackendContainerTrait<CrossbarOutputEventCounter>
268 : public BackendContainerBase<
269 CrossbarOutputEventCounter,
270 fisch::vx::word_access_type::Omnibus,
271 fisch::vx::word_access_type::OmnibusChipOverJTAG>
274 } // namespace detail
282 class GENPYBIND(visible) CrossbarNode
285 typedef halco::hicann_dls::vx::CrossbarNodeOnDLS coordinate_type;
286 typedef std::true_type is_leaf_node;
288 constexpr static auto unsupported_read_targets GENPYBIND(hidden) = {
289 hxcomm::vx::Target::hardware};
292 typedef halco::hicann_dls::vx::NeuronLabel neuron_label_type;
295 CrossbarNode() SYMBOL_VISIBLE;
301 GENPYBIND(getter_for(mask))
302 neuron_label_type get_mask() const SYMBOL_VISIBLE;
308 GENPYBIND(setter_for(mask))
309 void set_mask(neuron_label_type value) SYMBOL_VISIBLE;
315 GENPYBIND(getter_for(target))
316 neuron_label_type get_target() const SYMBOL_VISIBLE;
322 GENPYBIND(setter_for(target))
323 void set_target(neuron_label_type value) SYMBOL_VISIBLE;
325 GENPYBIND(getter_for(enable_drop_counter))
326 bool get_enable_drop_counter() const SYMBOL_VISIBLE;
328 GENPYBIND(setter_for(enable_drop_counter))
329 void set_enable_drop_counter(bool value) SYMBOL_VISIBLE;
331 bool operator==(CrossbarNode const& other) const SYMBOL_VISIBLE;
332 bool operator!=(CrossbarNode const& other) const SYMBOL_VISIBLE;
334 static const SYMBOL_VISIBLE CrossbarNode drop_all;
336 static size_t constexpr config_size_in_words GENPYBIND(hidden) = 1;
337 template <typename AddressT>
338 static std::array<AddressT, config_size_in_words> addresses(coordinate_type const& neuron)
339 SYMBOL_VISIBLE GENPYBIND(hidden);
340 template <typename WordT>
341 std::array<WordT, config_size_in_words> encode() const SYMBOL_VISIBLE GENPYBIND(hidden);
342 template <typename WordT>
343 void decode(std::array<WordT, config_size_in_words> const& data) SYMBOL_VISIBLE
346 GENPYBIND(stringstream)
347 friend std::ostream& operator<<(std::ostream& os, CrossbarNode const& config) SYMBOL_VISIBLE;
350 friend class cereal::access;
351 template <class Archive>
352 void serialize(Archive& ar, std::uint32_t const version) SYMBOL_VISIBLE;
354 neuron_label_type m_mask;
355 neuron_label_type m_target;
356 bool m_enable_drop_counter;
359 EXTERN_INSTANTIATE_CEREAL_SERIALIZE(CrossbarNode)
364 struct BackendContainerTrait<CrossbarNode>
365 : public BackendContainerBase<
367 fisch::vx::word_access_type::Omnibus,
368 fisch::vx::word_access_type::OmnibusChipOverJTAG>
371 } // namespace detail
374 } // namespace haldls
#define EXTERN_INSTANTIATE_CEREAL_SERIALIZE(CLASS_NAME)
halco::common::typed_array< bool, halco::hicann_dls::vx::CrossbarL2OutputOnDLS > enable_slow_type
halco::common::typed_array< bool, halco::hicann_dls::vx::CrossbarOutputOnDLS > enable_event_counter_type
CrossbarOutputConfig() SYMBOL_VISIBLE
Default constructor.
std::true_type is_leaf_node
halco::hicann_dls::vx::CrossbarOutputConfigOnDLS coordinate_type
#define GENPYBIND_TAG_HALDLS_VX
Backend container trait base.