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