5 #include "halco/common/geometry.h" 
    6 #include "halco/hicann-dls/vx/padi.h" 
   11 #include "hate/visibility.h" 
   14 #include "hxcomm/vx/target.h" 
   18 class OmnibusChipOverJTAG;
 
   44     struct GENPYBIND(inline_base("*
")) HagenAddress 
   45         : public halco::common::detail::RantWrapper<HagenAddress, uint_fast16_t, 1, 0> 
   47         constexpr explicit HagenAddress(uintmax_t const val = 0) GENPYBIND(implicit_conversion) : 
   56     struct GENPYBIND(inline_base("*
")) HagenActivation 
   57         : public halco::common::detail::RantWrapper<HagenActivation, uint_fast16_t, 31, 0> 
   59         constexpr explicit HagenActivation(uintmax_t const val = 0) GENPYBIND(implicit_conversion) : 
   64     struct GENPYBIND(inline_base("*
")) RowSelectAddress 
   65         : public halco::common::detail::RantWrapper<RowSelectAddress, uint_fast16_t, 31, 0> 
   67         constexpr explicit RowSelectAddress(uintmax_t const val = 0) 
   68             GENPYBIND(implicit_conversion) : 
   73     typedef halco::common::typed_array<bool, halco::hicann_dls::vx::PADIBusOnPADIBusBlock> 
   74         fire_bus_type GENPYBIND(opaque, expose_as(_fire_bus_type)); 
   76     PADIEvent() SYMBOL_VISIBLE; 
   81     GENPYBIND(getter_for(fire_bus), return_value_policy(reference_internal)) 
   82     fire_bus_type const& get_fire_bus() const SYMBOL_VISIBLE; 
   83     GENPYBIND(setter_for(fire_bus)) 
   84     void set_fire_bus(fire_bus_type const& value) SYMBOL_VISIBLE; 
   87     GENPYBIND(getter_for(event_address)) 
   88     EventAddress get_event_address() const SYMBOL_VISIBLE; 
   89     GENPYBIND(setter_for(event_address)) 
   90     void set_event_address(EventAddress const value) SYMBOL_VISIBLE; 
   96     GENPYBIND(getter_for(hagen_address)) 
   97     HagenAddress get_hagen_address() const SYMBOL_VISIBLE; 
   98     GENPYBIND(setter_for(hagen_address)) 
   99     void set_hagen_address(HagenAddress const value) SYMBOL_VISIBLE; 
  105     GENPYBIND(getter_for(hagen_activation)) 
  106     HagenActivation get_hagen_activation() const SYMBOL_VISIBLE; 
  107     GENPYBIND(setter_for(hagen_activation)) 
  108     void set_hagen_activation(HagenActivation const value) SYMBOL_VISIBLE; 
  116     GENPYBIND(getter_for(row_select_address)) 
  117     RowSelectAddress get_row_select_address() const SYMBOL_VISIBLE; 
  118     GENPYBIND(setter_for(row_select_address)) 
  119     void set_row_select_address(RowSelectAddress const value) SYMBOL_VISIBLE; 
  121     bool operator==(PADIEvent const& other) const SYMBOL_VISIBLE; 
  122     bool operator!=(PADIEvent const& other) const SYMBOL_VISIBLE; 
  124     static size_t constexpr write_config_size_in_words GENPYBIND(hidden) = 1; 
  125     static size_t constexpr read_config_size_in_words GENPYBIND(hidden) = 0; 
  126     template <typename AddressT> 
  127     static std::array<AddressT, read_config_size_in_words> read_addresses( 
  128         coordinate_type const& coord) SYMBOL_VISIBLE GENPYBIND(hidden); 
  129     template <typename AddressT> 
  130     static std::array<AddressT, write_config_size_in_words> write_addresses( 
  131         coordinate_type const& coord) SYMBOL_VISIBLE GENPYBIND(hidden); 
  132     template <typename WordT> 
  133     std::array<WordT, write_config_size_in_words> encode() const SYMBOL_VISIBLE GENPYBIND(hidden); 
  134     template <typename WordT> 
  135     void decode(std::array<WordT, read_config_size_in_words> const& data) SYMBOL_VISIBLE 
  138     GENPYBIND(stringstream) 
  139     friend std::ostream& operator<<(std::ostream& os, PADIEvent const& event) SYMBOL_VISIBLE; 
  142     friend class cereal::access; 
  143     template <class Archive> 
  144     void serialize(Archive& ar, std::uint32_t const version) SYMBOL_VISIBLE; 
  146     struct PADIEventBitfield; 
  148     fire_bus_type m_fire_bus; 
  149     EventAddress m_event_address; 
  150     RowSelectAddress m_row_select_address; 
  153 EXTERN_INSTANTIATE_CEREAL_SERIALIZE(PADIEvent) 
  161 class GENPYBIND(visible) CommonPADIBusConfig : public DifferentialWriteTrait 
  164     typedef halco::hicann_dls::vx::CommonPADIBusConfigOnDLS coordinate_type; 
  165     typedef std::true_type is_leaf_node; 
  167     constexpr static auto unsupported_read_targets GENPYBIND(hidden) = { 
  168         hxcomm::vx::Target::hardware}; 
  171     typedef halco::common::typed_array<bool, halco::hicann_dls::vx::PADIBusOnPADIBusBlock> 
  172         enable_spl1_type GENPYBIND(opaque(false), expose_as(_enable_spl1_type)); 
  174     typedef halco::common::typed_array<bool, halco::hicann_dls::vx::PADIBusOnPADIBusBlock> 
  175         enable_extended_timing_type 
  176             GENPYBIND(opaque(false), expose_as(_enable_extended_timing_type)); 
  178     struct GENPYBIND(inline_base("*
")) DacenPulseExtension 
  179         : public halco::common::detail::RantWrapper<DacenPulseExtension, uint_fast16_t, 15, 0> 
  181         constexpr explicit DacenPulseExtension(uintmax_t const val = 0) 
  182             GENPYBIND(implicit_conversion) : 
  187     typedef halco::common:: 
  188         typed_array<DacenPulseExtension, halco::hicann_dls::vx::PADIBusOnPADIBusBlock> 
  189             dacen_pulse_extension_type GENPYBIND(opaque, expose_as(_dacen_pulse_extension_type)); 
  191     CommonPADIBusConfig() SYMBOL_VISIBLE; 
  199     GENPYBIND(getter_for(enable_spl1), return_value_policy(reference_internal)) 
  200     enable_spl1_type const& get_enable_spl1() const SYMBOL_VISIBLE; 
  201     GENPYBIND(setter_for(enable_spl1)) 
  202     void set_enable_spl1(enable_spl1_type const& value) SYMBOL_VISIBLE; 
  210     GENPYBIND(getter_for(enable_extended_timing), return_value_policy(reference_internal)) 
  211     enable_extended_timing_type const& get_enable_extended_timing() const SYMBOL_VISIBLE; 
  212     GENPYBIND(setter_for(enable_extended_timing)) 
  213     void set_enable_extended_timing(enable_extended_timing_type const& value) SYMBOL_VISIBLE; 
  221     GENPYBIND(getter_for(dacen_pulse_extension), return_value_policy(reference_internal)) 
  222     dacen_pulse_extension_type const& get_dacen_pulse_extension() const SYMBOL_VISIBLE; 
  223     GENPYBIND(setter_for(dacen_pulse_extension)) 
  224     void set_dacen_pulse_extension(dacen_pulse_extension_type const& value) SYMBOL_VISIBLE; 
  226     bool operator==(CommonPADIBusConfig const& other) const SYMBOL_VISIBLE; 
  227     bool operator!=(CommonPADIBusConfig const& other) const SYMBOL_VISIBLE; 
  229     static size_t constexpr config_size_in_words GENPYBIND(hidden) = 1; 
  230     template <typename AddressT> 
  231     static std::array<AddressT, config_size_in_words> addresses(coordinate_type const& coord) 
  232         SYMBOL_VISIBLE GENPYBIND(hidden); 
  233     template <typename WordT> 
  234     std::array<WordT, config_size_in_words> encode() const SYMBOL_VISIBLE GENPYBIND(hidden); 
  235     template <typename WordT> 
  236     void decode(std::array<WordT, config_size_in_words> const& data) SYMBOL_VISIBLE 
  239     GENPYBIND(stringstream) 
  240     friend std::ostream& operator<<(std::ostream& os, CommonPADIBusConfig const& event) 
  244     friend class cereal::access; 
  245     template <class Archive> 
  246     void serialize(Archive& ar, std::uint32_t const version) SYMBOL_VISIBLE; 
  248     struct CommonPADIBusConfigBitfield; 
  250     enable_spl1_type m_enable_spl1; 
  251     enable_extended_timing_type m_enable_extended_timing; 
  252     dacen_pulse_extension_type m_dacen_pulse_extension; 
  255 EXTERN_INSTANTIATE_CEREAL_SERIALIZE(CommonPADIBusConfig) 
  261 class GENPYBIND(visible) CommonSTPConfig : public DifferentialWriteTrait 
  264     typedef halco::hicann_dls::vx::CommonSTPConfigOnDLS coordinate_type; 
  265     typedef std::true_type is_leaf_node; 
  267     constexpr static auto unsupported_read_targets GENPYBIND(hidden) = { 
  268         hxcomm::vx::Target::hardware, hxcomm::vx::Target::simulation}; 
  271     struct GENPYBIND(inline_base("*
")) RecoveryClockSpeed 
  272         : public halco::common::detail::RantWrapper<RecoveryClockSpeed, uint_fast16_t, 15, 0> 
  274         constexpr explicit RecoveryClockSpeed(uintmax_t const val = 0) 
  275             GENPYBIND(implicit_conversion) : 
  280     CommonSTPConfig() SYMBOL_VISIBLE; 
  285     GENPYBIND(getter_for(enable_recovery_clock)) 
  286     bool get_enable_recovery_clock() const SYMBOL_VISIBLE; 
  287     GENPYBIND(setter_for(enable_recovery_clock)) 
  288     void set_enable_recovery_clock(bool const value) SYMBOL_VISIBLE; 
  291     GENPYBIND(getter_for(recovery_clock_speed)) 
  292     RecoveryClockSpeed get_recovery_clock_speed() const SYMBOL_VISIBLE; 
  293     GENPYBIND(setter_for(recovery_clock_speed)) 
  294     void set_recovery_clock_speed(RecoveryClockSpeed const value) SYMBOL_VISIBLE; 
  296     bool operator==(CommonSTPConfig const& other) const SYMBOL_VISIBLE; 
  297     bool operator!=(CommonSTPConfig const& other) const SYMBOL_VISIBLE; 
  299     static size_t constexpr config_size_in_words GENPYBIND(hidden) = 1; 
  300     template <typename AddressT> 
  301     static std::array<AddressT, config_size_in_words> addresses(coordinate_type const& coord) 
  302         SYMBOL_VISIBLE GENPYBIND(hidden); 
  303     template <typename WordT> 
  304     std::array<WordT, config_size_in_words> encode() const SYMBOL_VISIBLE GENPYBIND(hidden); 
  305     template <typename WordT> 
  306     void decode(std::array<WordT, config_size_in_words> const& data) SYMBOL_VISIBLE 
  309     GENPYBIND(stringstream) 
  310     friend std::ostream& operator<<(std::ostream& os, CommonSTPConfig const& event) SYMBOL_VISIBLE; 
  313     friend class cereal::access; 
  314     template <class Archive> 
  315     void serialize(Archive& ar, std::uint32_t const version) SYMBOL_VISIBLE; 
  317     struct CommonSTPConfigBitfield; 
  319     bool m_enable_recovery_clock; 
  320     RecoveryClockSpeed m_recovery_clock_speed; 
  323 EXTERN_INSTANTIATE_CEREAL_SERIALIZE(CommonSTPConfig) 
  328 struct BackendContainerTrait<PADIEvent> 
  329     : public BackendContainerBase< 
  331           fisch::vx::word_access_type::Omnibus, 
  332           fisch::vx::word_access_type::OmnibusChipOverJTAG> 
  336 struct BackendContainerTrait<CommonPADIBusConfig> 
  337     : public BackendContainerBase< 
  339           fisch::vx::word_access_type::Omnibus, 
  340           fisch::vx::word_access_type::OmnibusChipOverJTAG> 
  344 struct BackendContainerTrait<CommonSTPConfig> 
  345     : public BackendContainerBase< 
  347           fisch::vx::word_access_type::Omnibus, 
  348           fisch::vx::word_access_type::OmnibusChipOverJTAG> 
  351 } // namespace detail 
  354 } // namespace haldls 
A container for the PADI event trigger register.
std::true_type is_leaf_node
halco::hicann_dls::vx::PADIEventOnDLS coordinate_type
#define GENPYBIND_TAG_HALDLS_VX
Value type of a single synapse label configuration.