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.