5 #include "halco/common/typed_array.h"
6 #include "halco/hicann-dls/vx/omnibus.h"
7 #include "halco/hicann-dls/vx/quad.h"
8 #include "halco/hicann-dls/vx/vector_generator.h"
14 #include "hate/visibility.h"
22 struct PPUMemoryWordOnDLS;
36 struct GENPYBIND(inline_base("*
")) SourceCount
37 : public halco::common::detail::RantWrapper<SourceCount, uint_fast8_t, 2, 1>
39 constexpr explicit SourceCount(uintmax_t const val = 1) GENPYBIND(implicit_conversion) :
47 struct GENPYBIND(inline_base("*
")) Wait
48 : public halco::common::detail::RantWrapper<Wait, uint_fast8_t, 15, 0>
50 constexpr explicit Wait(uintmax_t const val = 0) GENPYBIND(implicit_conversion) :
58 struct GENPYBIND(inline_base("*
")) ResendCount
59 : public halco::common::detail::RantWrapper<ResendCount, uint_fast8_t, 15, 0>
61 constexpr explicit ResendCount(uintmax_t const val = 0) GENPYBIND(implicit_conversion) :
69 enum class GENPYBIND(visible) Source
80 struct GENPYBIND(inline_base("*
")) EventPack
81 : public halco::common::detail::RantWrapper<EventPack, uint_fast8_t, 3, 1>
83 constexpr explicit EventPack(uintmax_t const val = 1) GENPYBIND(implicit_conversion) :
91 enum class GENPYBIND(visible) Notification
100 enum class GENPYBIND(visible) Trigger
109 enum class GENPYBIND(visible) Signal
113 trigger_and_notification
116 VectorGeneratorControl() = default;
122 GENPYBIND(getter_for(lookup_table_entry_start))
123 halco::hicann_dls::vx::VectorGeneratorLUTEntryOnVectorGeneratorLUT
124 get_lookup_table_entry_start() const SYMBOL_VISIBLE;
130 GENPYBIND(setter_for(lookup_table_entry_start))
131 void set_lookup_table_entry_start(
132 halco::hicann_dls::vx::VectorGeneratorLUTEntryOnVectorGeneratorLUT value) SYMBOL_VISIBLE;
134 GENPYBIND(getter_for(source_count))
135 SourceCount get_source_count() const SYMBOL_VISIBLE;
136 GENPYBIND(setter_for(source_count))
137 void set_source_count(SourceCount value) SYMBOL_VISIBLE;
139 GENPYBIND(getter_for(resend_count))
140 ResendCount get_resend_count() const SYMBOL_VISIBLE;
141 GENPYBIND(setter_for(resend_count))
142 void set_resend_count(ResendCount value) SYMBOL_VISIBLE;
144 typedef halco::common::typed_array<Wait, halco::hicann_dls::vx::SourceOnVectorGenerator>
145 SourceWaits GENPYBIND(opaque);
146 typedef halco::common::typed_array<Source, halco::hicann_dls::vx::SourceOnVectorGenerator>
147 Sources GENPYBIND(opaque);
149 GENPYBIND(getter_for(source_waits))
150 SourceWaits get_source_waits() const SYMBOL_VISIBLE;
151 GENPYBIND(setter_for(source_waits))
152 void set_source_waits(SourceWaits value) SYMBOL_VISIBLE;
154 GENPYBIND(getter_for(sources))
155 Sources get_sources() const SYMBOL_VISIBLE;
156 GENPYBIND(setter_for(sources))
157 void set_sources(Sources value) SYMBOL_VISIBLE;
159 GENPYBIND(getter_for(event_pack))
160 EventPack get_event_pack() const SYMBOL_VISIBLE;
161 GENPYBIND(setter_for(event_pack))
162 void set_event_pack(EventPack value) SYMBOL_VISIBLE;
168 GENPYBIND(getter_for(enable_ignore_zeros))
169 bool get_enable_ignore_zeros() const SYMBOL_VISIBLE;
175 GENPYBIND(setter_for(enable_ignore_zeros))
176 void set_enable_ignore_zeros(bool value) SYMBOL_VISIBLE;
178 GENPYBIND(getter_for(notification))
179 Notification get_notification() const SYMBOL_VISIBLE;
180 GENPYBIND(setter_for(notification))
181 void set_notification(Notification value) SYMBOL_VISIBLE;
183 GENPYBIND(getter_for(trigger))
184 Trigger get_trigger() const SYMBOL_VISIBLE;
185 GENPYBIND(setter_for(trigger))
186 void set_trigger(Trigger value) SYMBOL_VISIBLE;
188 GENPYBIND(getter_for(signal))
189 Signal get_signal() const SYMBOL_VISIBLE;
190 GENPYBIND(setter_for(signal))
191 void set_signal(Signal value) SYMBOL_VISIBLE;
193 bool operator==(VectorGeneratorControl const& other) const SYMBOL_VISIBLE;
194 bool operator!=(VectorGeneratorControl const& other) const SYMBOL_VISIBLE;
196 static size_t constexpr read_config_size_in_words GENPYBIND(hidden) = 0;
197 static size_t constexpr write_config_size_in_words GENPYBIND(hidden) = 1;
198 static std::array<halco::hicann_dls::vx::OmnibusAddress, read_config_size_in_words>
199 read_addresses(coordinate_type const& coord) SYMBOL_VISIBLE GENPYBIND(hidden);
200 static std::array<halco::hicann_dls::vx::OmnibusAddress, write_config_size_in_words>
201 write_addresses(coordinate_type const& coord) SYMBOL_VISIBLE GENPYBIND(hidden);
202 std::array<fisch::vx::word_access_type::Omnibus, write_config_size_in_words> encode() const
203 SYMBOL_VISIBLE GENPYBIND(hidden);
204 void decode(std::array<fisch::vx::word_access_type::Omnibus, read_config_size_in_words> const&
205 data) SYMBOL_VISIBLE GENPYBIND(hidden);
207 GENPYBIND(stringstream)
208 friend std::ostream& operator<<(std::ostream& os, VectorGeneratorControl const& config)
212 friend class cereal::access;
213 template <class Archive>
214 void serialize(Archive& ar, std::uint32_t const version) SYMBOL_VISIBLE;
216 halco::hicann_dls::vx::VectorGeneratorLUTEntryOnVectorGeneratorLUT m_lookup_table_entry_start{};
217 SourceCount m_source_count{};
218 ResendCount m_resend_count{};
219 SourceWaits m_source_waits{Wait(), Wait()};
220 Sources m_sources{Source::omnibus, Source::omnibus};
221 EventPack m_event_pack;
222 bool m_enable_ignore_zeros{false};
223 Notification m_notification{};
228 EXTERN_INSTANTIATE_CEREAL_SERIALIZE(VectorGeneratorControl)
233 struct BackendContainerTrait<VectorGeneratorControl>
234 : public BackendContainerBase<VectorGeneratorControl, fisch::vx::word_access_type::Omnibus>
237 } // namespace detail
239 std::ostream& operator<<(std::ostream& os, VectorGeneratorControl::Notification const& config)
242 std::ostream& operator<<(std::ostream& os, VectorGeneratorControl::Trigger const& config)
245 std::ostream& operator<<(std::ostream& os, VectorGeneratorControl::Signal const& config)
252 class GENPYBIND(visible) VectorGeneratorLUTEntry
255 typedef std::true_type is_leaf_node;
256 typedef halco::hicann_dls::vx::VectorGeneratorLUTEntryOnFPGA coordinate_type;
261 struct GENPYBIND(inline_base("*
")) Value
262 : public halco::common::detail::RantWrapper<Value, uint_fast16_t, 2047, 0>
264 constexpr explicit Value(uintmax_t const val = 0) GENPYBIND(implicit_conversion) :
270 VectorGeneratorLUTEntry() = default;
276 GENPYBIND(getter_for(value))
277 Value get_value() const SYMBOL_VISIBLE;
283 GENPYBIND(setter_for(value))
284 void set_value(Value value) SYMBOL_VISIBLE;
286 bool operator==(VectorGeneratorLUTEntry const& other) const SYMBOL_VISIBLE;
287 bool operator!=(VectorGeneratorLUTEntry const& other) const SYMBOL_VISIBLE;
289 GENPYBIND(stringstream)
290 friend std::ostream& operator<<(std::ostream& os, VectorGeneratorLUTEntry const& config)
293 static size_t constexpr config_size_in_words GENPYBIND(hidden) = 1;
294 static std::array<halco::hicann_dls::vx::OmnibusAddress, config_size_in_words> addresses(
295 coordinate_type const& coord) SYMBOL_VISIBLE GENPYBIND(hidden);
296 std::array<fisch::vx::word_access_type::Omnibus, config_size_in_words> encode() const
297 SYMBOL_VISIBLE GENPYBIND(hidden);
298 void decode(std::array<fisch::vx::word_access_type::Omnibus, config_size_in_words> const& data)
299 SYMBOL_VISIBLE GENPYBIND(hidden);
302 friend class cereal::access;
303 template <typename Archive>
304 void serialize(Archive& ar, std::uint32_t const version) SYMBOL_VISIBLE;
309 EXTERN_INSTANTIATE_CEREAL_SERIALIZE(VectorGeneratorLUTEntry)
314 struct BackendContainerTrait<VectorGeneratorLUTEntry>
315 : public BackendContainerBase<VectorGeneratorLUTEntry, fisch::vx::word_access_type::Omnibus>
318 } // namespace detail
321 class GENPYBIND(visible) VectorGeneratorNotificationAddress
324 typedef std::true_type is_leaf_node;
325 typedef halco::hicann_dls::vx::VectorGeneratorNotificationAddressOnFPGA coordinate_type;
327 typedef halco::hicann_dls::vx::OmnibusAddress Value GENPYBIND(visible);
330 VectorGeneratorNotificationAddress() = default;
336 GENPYBIND(getter_for(value))
337 Value get_value() const SYMBOL_VISIBLE;
343 GENPYBIND(setter_for(value))
344 void set_value(Value value) SYMBOL_VISIBLE;
350 VectorGeneratorNotificationAddress(halco::hicann_dls::vx::PPUMemoryWordOnDLS const& word)
353 bool operator==(VectorGeneratorNotificationAddress const& other) const SYMBOL_VISIBLE;
354 bool operator!=(VectorGeneratorNotificationAddress const& other) const SYMBOL_VISIBLE;
356 GENPYBIND(stringstream)
357 friend std::ostream& operator<<(
358 std::ostream& os, VectorGeneratorNotificationAddress const& config) SYMBOL_VISIBLE;
360 static size_t constexpr config_size_in_words GENPYBIND(hidden) = 1;
361 static std::array<halco::hicann_dls::vx::OmnibusAddress, config_size_in_words> addresses(
362 coordinate_type const& coord) SYMBOL_VISIBLE GENPYBIND(hidden);
363 std::array<fisch::vx::word_access_type::Omnibus, config_size_in_words> encode() const
364 SYMBOL_VISIBLE GENPYBIND(hidden);
365 void decode(std::array<fisch::vx::word_access_type::Omnibus, config_size_in_words> const& data)
366 SYMBOL_VISIBLE GENPYBIND(hidden);
369 friend class cereal::access;
370 template <typename Archive>
371 void serialize(Archive& ar, std::uint32_t const version) SYMBOL_VISIBLE;
376 EXTERN_INSTANTIATE_CEREAL_SERIALIZE(VectorGeneratorNotificationAddress)
381 struct BackendContainerTrait<VectorGeneratorNotificationAddress>
382 : public BackendContainerBase<
383 VectorGeneratorNotificationAddress,
384 fisch::vx::word_access_type::Omnibus>
387 } // namespace detail
390 class GENPYBIND(visible) VectorGeneratorTrigger
393 typedef std::true_type is_leaf_node;
394 typedef halco::hicann_dls::vx::VectorGeneratorTriggerOnFPGA coordinate_type;
397 VectorGeneratorTrigger() = default;
399 bool operator==(VectorGeneratorTrigger const& other) const SYMBOL_VISIBLE;
400 bool operator!=(VectorGeneratorTrigger const& other) const SYMBOL_VISIBLE;
402 GENPYBIND(stringstream)
403 friend std::ostream& operator<<(std::ostream& os, VectorGeneratorTrigger const& config)
406 static size_t constexpr write_config_size_in_words GENPYBIND(hidden) = 1;
407 static size_t constexpr read_config_size_in_words GENPYBIND(hidden) = 0;
408 static std::array<halco::hicann_dls::vx::OmnibusAddress, write_config_size_in_words>
409 write_addresses(coordinate_type const& coord) SYMBOL_VISIBLE GENPYBIND(hidden);
410 static std::array<halco::hicann_dls::vx::OmnibusAddress, read_config_size_in_words>
411 read_addresses(coordinate_type const& coord) SYMBOL_VISIBLE GENPYBIND(hidden);
412 std::array<fisch::vx::word_access_type::Omnibus, write_config_size_in_words> encode() const
413 SYMBOL_VISIBLE GENPYBIND(hidden);
414 void decode(std::array<fisch::vx::word_access_type::Omnibus, read_config_size_in_words> const&
415 data) SYMBOL_VISIBLE GENPYBIND(hidden);
418 friend class cereal::access;
419 template <typename Archive>
420 void serialize(Archive& ar, std::uint32_t const version) SYMBOL_VISIBLE;
423 EXTERN_INSTANTIATE_CEREAL_SERIALIZE(VectorGeneratorTrigger)
428 struct BackendContainerTrait<VectorGeneratorTrigger>
429 : public BackendContainerBase<VectorGeneratorTrigger, fisch::vx::word_access_type::Omnibus>
432 } // namespace detail
439 class GENPYBIND(visible) VectorGeneratorFIFOWord
442 typedef std::true_type is_leaf_node;
443 typedef halco::hicann_dls::vx::VectorGeneratorFIFOWordOnFPGA coordinate_type;
445 typedef PADIEvent::HagenActivation Value GENPYBIND(visible);
447 typedef halco::common::typed_array<Value, halco::hicann_dls::vx::EntryOnQuad> Values
449 typedef halco::common::typed_array<bool, halco::hicann_dls::vx::EntryOnQuad> Enables
453 VectorGeneratorFIFOWord() SYMBOL_VISIBLE;
459 GENPYBIND(getter_for(values), return_value_policy(reference))
460 Values const& get_values() const SYMBOL_VISIBLE;
466 GENPYBIND(setter_for(values))
467 void set_values(Values value) SYMBOL_VISIBLE;
473 GENPYBIND(getter_for(last), return_value_policy(reference))
474 Enables const& get_last() const SYMBOL_VISIBLE;
480 GENPYBIND(setter_for(last))
481 void set_last(Enables value) SYMBOL_VISIBLE;
487 GENPYBIND(getter_for(enable), return_value_policy(reference))
488 Enables const& get_enable() const SYMBOL_VISIBLE;
494 GENPYBIND(setter_for(enable))
495 void set_enable(Enables value) SYMBOL_VISIBLE;
497 bool operator==(VectorGeneratorFIFOWord const& other) const SYMBOL_VISIBLE;
498 bool operator!=(VectorGeneratorFIFOWord const& other) const SYMBOL_VISIBLE;
500 GENPYBIND(stringstream)
501 friend std::ostream& operator<<(std::ostream& os, VectorGeneratorFIFOWord const& config)
504 static size_t constexpr write_config_size_in_words GENPYBIND(hidden) = 1;
505 static size_t constexpr read_config_size_in_words GENPYBIND(hidden) = 0;
506 static std::array<halco::hicann_dls::vx::OmnibusAddress, write_config_size_in_words>
507 write_addresses(coordinate_type const& coord) SYMBOL_VISIBLE GENPYBIND(hidden);
508 static std::array<halco::hicann_dls::vx::OmnibusAddress, read_config_size_in_words>
509 read_addresses(coordinate_type const& coord) SYMBOL_VISIBLE GENPYBIND(hidden);
510 std::array<fisch::vx::word_access_type::Omnibus, write_config_size_in_words> encode() const
511 SYMBOL_VISIBLE GENPYBIND(hidden);
512 void decode(std::array<fisch::vx::word_access_type::Omnibus, read_config_size_in_words> const&
513 data) SYMBOL_VISIBLE GENPYBIND(hidden);
516 friend class cereal::access;
517 template <typename Archive>
518 void serialize(Archive& ar, std::uint32_t const version) SYMBOL_VISIBLE;
525 EXTERN_INSTANTIATE_CEREAL_SERIALIZE(VectorGeneratorFIFOWord)
530 struct BackendContainerTrait<VectorGeneratorFIFOWord>
531 : public BackendContainerBase<VectorGeneratorFIFOWord, fisch::vx::word_access_type::Omnibus>
534 } // namespace detail
536 } // namespace haldls::vx
std::true_type is_leaf_node
halco::hicann_dls::vx::VectorGeneratorControlOnFPGA coordinate_type
#define GENPYBIND_TAG_HALDLS_VX