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.