2 #include "halco/common/geometry.h"
3 #include "halco/hicann-dls/vx/cadc.h"
8 #include "hate/visibility.h"
11 #include "hxcomm/vx/target.h"
16 class OmnibusChipOverJTAG;
40 struct GENPYBIND(inline_base("*
")) ResetWait
41 : public halco::common::detail::RantWrapper<ResetWait, uint_fast16_t, 255, 0>
43 constexpr explicit ResetWait(uintmax_t const val = 100) GENPYBIND(implicit_conversion) :
52 struct GENPYBIND(inline_base("*
")) DeadTime
53 : public halco::common::detail::RantWrapper<DeadTime, uint_fast16_t, 255, 0>
55 constexpr explicit DeadTime(uintmax_t const val = 20) GENPYBIND(implicit_conversion) :
61 CADCConfig() SYMBOL_VISIBLE;
67 GENPYBIND(getter_for(enable))
68 bool get_enable() const SYMBOL_VISIBLE;
74 GENPYBIND(setter_for(enable))
75 void set_enable(bool value) SYMBOL_VISIBLE;
81 GENPYBIND(getter_for(reset_wait))
82 ResetWait get_reset_wait() const SYMBOL_VISIBLE;
88 GENPYBIND(setter_for(reset_wait))
89 void set_reset_wait(ResetWait value) SYMBOL_VISIBLE;
95 GENPYBIND(getter_for(dead_time))
96 DeadTime get_dead_time() const SYMBOL_VISIBLE;
102 GENPYBIND(setter_for(dead_time))
103 void set_dead_time(DeadTime value) SYMBOL_VISIBLE;
105 bool operator==(CADCConfig const& other) const SYMBOL_VISIBLE;
106 bool operator!=(CADCConfig const& other) const SYMBOL_VISIBLE;
108 GENPYBIND(stringstream)
109 friend std::ostream& operator<<(std::ostream& os, CADCConfig const& config) SYMBOL_VISIBLE;
111 static size_t constexpr config_size_in_words GENPYBIND(hidden) = 1;
112 template <typename AddressT>
113 static std::array<AddressT, config_size_in_words> addresses(coordinate_type const& word)
114 SYMBOL_VISIBLE GENPYBIND(hidden);
115 template <typename WordT>
116 std::array<WordT, config_size_in_words> encode() const SYMBOL_VISIBLE GENPYBIND(hidden);
117 template <typename WordT>
118 void decode(std::array<WordT, config_size_in_words> const& data) SYMBOL_VISIBLE
122 friend class cereal::access;
123 template <typename Archive>
124 void serialize(Archive& ar, std::uint32_t const version) SYMBOL_VISIBLE;
127 ResetWait m_reset_wait;
128 DeadTime m_dead_time;
131 EXTERN_INSTANTIATE_CEREAL_SERIALIZE(CADCConfig)
136 struct BackendContainerTrait<CADCConfig>
137 : public BackendContainerBase<
139 fisch::vx::word_access_type::Omnibus,
140 fisch::vx::word_access_type::OmnibusChipOverJTAG>
143 } // namespace detail
148 class SYMBOL_VISIBLE CADCChannelConfig
151 typedef std::true_type is_leaf_node;
152 typedef typename halco::hicann_dls::vx::CADCChannelConfigOnDLS coordinate_type;
154 constexpr static auto unsupported_read_targets GENPYBIND(hidden) = {
155 hxcomm::vx::Target::hardware};
161 struct GENPYBIND(inline_base("*
")) Offset
162 : public halco::common::detail::RantWrapper<Offset, int_fast16_t, 127, -128>
164 typedef halco::common::detail::RantWrapper<Offset, int_fast16_t, 127, -128> rant_t;
165 constexpr explicit Offset(intmax_t const val = 0) GENPYBIND(implicit_conversion) :
177 GENPYBIND(getter_for(offset))
178 Offset get_offset() const;
184 GENPYBIND(setter_for(offset))
185 void set_offset(Offset value);
187 bool operator==(CADCChannelConfig const& other) const;
188 bool operator!=(CADCChannelConfig const& other) const;
190 GENPYBIND(stringstream)
191 friend std::ostream& operator<<(std::ostream& os, CADCChannelConfig const& config)
197 static size_t constexpr config_size_in_words GENPYBIND(hidden) = 1;
198 template <typename AddressT>
199 static std::array<AddressT, config_size_in_words> addresses(coordinate_type const& word)
201 template <typename WordT>
202 std::array<WordT, config_size_in_words> encode() const GENPYBIND(hidden);
203 template <typename WordT>
204 void decode(std::array<WordT, config_size_in_words> const& data) GENPYBIND(hidden);
207 friend class cereal::access;
208 template <typename Archive>
209 void serialize(Archive& ar, std::uint32_t const version);
218 struct BackendContainerTrait<CADCChannelConfig>
219 : public BackendContainerBase<
221 fisch::vx::word_access_type::Omnibus,
222 fisch::vx::word_access_type::OmnibusChipOverJTAG>
225 } // namespace detail
228 // TODO: Switch to CRTP pattern when https://github.com/kljohann/genpybind/issues/28 is solved
229 class GENPYBIND(visible) CADCOffsetSRAMTimingConfig : public detail::SRAMTimingConfig
232 typedef halco::hicann_dls::vx::CADCOffsetSRAMTimingConfigOnDLS coordinate_type;
234 bool operator==(CADCOffsetSRAMTimingConfig const& other) const SYMBOL_VISIBLE;
235 bool operator!=(CADCOffsetSRAMTimingConfig const& other) const SYMBOL_VISIBLE;
237 GENPYBIND(stringstream)
238 friend std::ostream& operator<<(std::ostream& os, CADCOffsetSRAMTimingConfig const& config)
241 template <typename AddressT>
242 std::array<AddressT, config_size_in_words> addresses(coordinate_type const& word) const
243 SYMBOL_VISIBLE GENPYBIND(hidden);
246 friend class cereal::access;
247 template <typename Archive>
248 void serialize(Archive& ar, std::uint32_t);
251 EXTERN_INSTANTIATE_CEREAL_SERIALIZE(CADCOffsetSRAMTimingConfig)
256 struct BackendContainerTrait<CADCOffsetSRAMTimingConfig>
257 : public BackendContainerBase<
258 CADCOffsetSRAMTimingConfig,
259 fisch::vx::word_access_type::Omnibus,
260 fisch::vx::word_access_type::OmnibusChipOverJTAG>
263 } // namespace detail
268 class GENPYBIND(visible) CADCSampleQuad
271 typedef std::true_type is_leaf_node;
272 typedef halco::hicann_dls::vx::CADCSampleQuadOnDLS coordinate_type;
277 struct GENPYBIND(inline_base("*
")) Value
278 : public halco::common::detail::RantWrapper<Value, uint_fast16_t, 255, 0>
280 constexpr explicit Value(intmax_t const val = 0) GENPYBIND(implicit_conversion) :
286 CADCSampleQuad() SYMBOL_VISIBLE;
293 Value get_sample(halco::hicann_dls::vx::EntryOnQuad const& coord) const SYMBOL_VISIBLE;
300 void set_sample(halco::hicann_dls::vx::EntryOnQuad const& coord, Value value) SYMBOL_VISIBLE;
302 bool operator==(CADCSampleQuad const& other) const SYMBOL_VISIBLE;
303 bool operator!=(CADCSampleQuad const& other) const SYMBOL_VISIBLE;
305 GENPYBIND(stringstream)
306 friend std::ostream& operator<<(std::ostream& os, CADCSampleQuad const& config) SYMBOL_VISIBLE;
308 static size_t constexpr read_config_size_in_words GENPYBIND(hidden) = 1;
309 static size_t constexpr write_config_size_in_words GENPYBIND(hidden) = 0;
310 static std::array<halco::hicann_dls::vx::OmnibusAddress, read_config_size_in_words>
311 read_addresses(coordinate_type const& word) SYMBOL_VISIBLE GENPYBIND(hidden);
312 static std::array<halco::hicann_dls::vx::OmnibusAddress, write_config_size_in_words>
313 write_addresses(coordinate_type const& word) SYMBOL_VISIBLE GENPYBIND(hidden);
314 std::array<fisch::vx::word_access_type::Omnibus, write_config_size_in_words> encode() const
315 SYMBOL_VISIBLE GENPYBIND(hidden);
316 void decode(std::array<fisch::vx::word_access_type::Omnibus, read_config_size_in_words> const&
317 data) SYMBOL_VISIBLE GENPYBIND(hidden);
320 friend class cereal::access;
321 template <typename Archive>
322 void serialize(Archive& ar, std::uint32_t const version) SYMBOL_VISIBLE;
324 halco::common::typed_array<Value, halco::hicann_dls::vx::EntryOnQuad> m_samples;
330 struct BackendContainerTrait<CADCSampleQuad>
331 : public BackendContainerBase<CADCSampleQuad, fisch::vx::word_access_type::Omnibus>
334 } // namespace detail
336 EXTERN_INSTANTIATE_CEREAL_SERIALIZE(CADCSampleQuad)
339 } // namespace haldls
CADC container with global digital config for a vertical half.
std::true_type is_leaf_node
halco::hicann_dls::vx::CADCConfigOnDLS coordinate_type
#define GENPYBIND_TAG_HALDLS_VX
haldls::vx::CADCChannelConfig CADCChannelConfig