2 #include "halco/common/geometry.h"
3 #include "halco/common/typed_array.h"
4 #include "halco/hicann-dls/vx/capmem.h"
5 #include "halco/hicann-dls/vx/correlation.h"
9 #include "hate/visibility.h"
13 #include <cereal/cereal.hpp>
18 class OmnibusChipOverJTAG;
36 struct GENPYBIND(inline_base("*
")) SenseDelay
37 : public halco::common::detail::
38 RantWrapper<SenseDelay, uint_fast16_t, hate::math::pow(2, 12) - 1, 0>
40 constexpr explicit SenseDelay(uintmax_t const val = 1) GENPYBIND(implicit_conversion) :
49 struct GENPYBIND(inline_base("*
")) ResetDuration
50 : public halco::common::detail::
51 RantWrapper<ResetDuration, uint_fast16_t, hate::math::pow(2, 12) - 1, 0>
53 constexpr explicit ResetDuration(uintmax_t const val = 200) GENPYBIND(implicit_conversion) :
61 struct GENPYBIND(inline_base("*
")) ResetFallTime
62 : public halco::common::detail::
63 RantWrapper<ResetFallTime, uint_fast16_t, hate::math::pow(2, 12) - 1, 0>
65 constexpr explicit ResetFallTime(uintmax_t const val = 5) GENPYBIND(implicit_conversion) :
71 enum class ResetMode : uint_fast8_t
74 auto_calibrating = 0b1
78 typedef halco::common::typed_array<
79 halco::hicann_dls::vx::CapMemBlockOnHemisphere,
80 halco::hicann_dls::vx::CapMemBlockOnHemisphere>
81 RampOffsets GENPYBIND(opaque(false));
84 CommonCorrelationConfig() SYMBOL_VISIBLE;
90 GENPYBIND(getter_for(sense_delay))
91 SenseDelay get_sense_delay() const SYMBOL_VISIBLE;
92 GENPYBIND(setter_for(sense_delay))
93 void set_sense_delay(SenseDelay value) SYMBOL_VISIBLE;
99 GENPYBIND(getter_for(reset_duration))
100 ResetDuration get_reset_duration() const SYMBOL_VISIBLE;
101 GENPYBIND(setter_for(reset_duration))
102 void set_reset_duration(ResetDuration value) SYMBOL_VISIBLE;
107 GENPYBIND(getter_for(reset_fall_time))
108 ResetFallTime get_reset_fall_time() const SYMBOL_VISIBLE;
109 GENPYBIND(setter_for(reset_fall_time))
110 void set_reset_fall_time(ResetFallTime value) SYMBOL_VISIBLE;
116 GENPYBIND(getter_for(reset_mode))
117 ResetMode get_reset_mode() const SYMBOL_VISIBLE;
118 GENPYBIND(setter_for(reset_mode))
119 void set_reset_mode(ResetMode value) SYMBOL_VISIBLE;
127 GENPYBIND(getter_for(cadc_v_offset_assignment), return_value_policy(reference))
128 RampOffsets const& get_cadc_v_offset_assignment() const SYMBOL_VISIBLE;
129 GENPYBIND(setter_for(cadc_v_offset_assignment))
130 void set_cadc_v_offset_assignment(RampOffsets const& value) SYMBOL_VISIBLE;
132 bool operator==(CommonCorrelationConfig const& other) const SYMBOL_VISIBLE;
133 bool operator!=(CommonCorrelationConfig const& other) const SYMBOL_VISIBLE;
135 GENPYBIND(stringstream)
136 friend std::ostream& operator<<(std::ostream& os, CommonCorrelationConfig const& config)
139 static size_t constexpr config_size_in_words GENPYBIND(hidden) = 4;
140 template <typename AddressT>
141 static std::array<AddressT, config_size_in_words> addresses(coordinate_type const& word)
142 SYMBOL_VISIBLE GENPYBIND(hidden);
143 template <typename WordT>
144 std::array<WordT, config_size_in_words> encode() const SYMBOL_VISIBLE GENPYBIND(hidden);
145 template <typename WordT>
146 void decode(std::array<WordT, config_size_in_words> const& data) SYMBOL_VISIBLE
150 friend class cereal::access;
151 template <typename Archive>
152 void serialize(Archive& ar, std::uint32_t const version) SYMBOL_VISIBLE;
154 SenseDelay m_sense_delay;
155 ResetDuration m_reset_duration;
156 ResetFallTime m_reset_fall_time;
157 ResetMode m_reset_mode;
158 RampOffsets m_cadc_v_offset_assignment;
161 std::ostream& operator<<(std::ostream& os, CommonCorrelationConfig::ResetMode const& config)
164 } // namespace haldls::vx
166 namespace haldls::vx::detail {
169 struct BackendContainerTrait<CommonCorrelationConfig>
170 : public BackendContainerBase<
171 haldls::vx::CommonCorrelationConfig,
172 fisch::vx::word_access_type::Omnibus,
173 fisch::vx::word_access_type::OmnibusChipOverJTAG>
176 } // namespace haldls::vx::detail
179 CEREAL_CLASS_VERSION(haldls::vx::CommonCorrelationConfig, 1)
180 EXTERN_INSTANTIATE_CEREAL_SERIALIZE(haldls::vx::CommonCorrelationConfig)
Correlation reset and readout timing configuration container.
std::true_type is_leaf_node
halco::hicann_dls::vx::CommonCorrelationConfigOnDLS coordinate_type
#define GENPYBIND_TAG_HALDLS_VX