5 #include "halco/common/geometry.h"
6 #include "halco/hicann-dls/vx/synapse_driver.h"
11 #include "hate/visibility.h"
15 #include "hxcomm/vx/target.h"
19 class OmnibusChipOverJTAG;
30 typedef halco::hicann_dls::vx::SynapseDriverSRAMTimingConfigOnDLS
coordinate_type;
32 constexpr
static auto unsupported_read_targets GENPYBIND(hidden) = {
33 hxcomm::vx::Target::simulation, hxcomm::vx::Target::hardware};
39 GENPYBIND(stringstream)
43 template <typename AddressT>
44 std::array<AddressT, config_size_in_words> addresses(
coordinate_type const& word) const
45 SYMBOL_VISIBLE GENPYBIND(hidden);
49 template <typename Archive>
50 void serialize(Archive& ar, std::uint32_t);
62 SynapseDriverSRAMTimingConfig,
63 fisch::vx::word_access_type::Omnibus,
64 fisch::vx::word_access_type::OmnibusChipOverJTAG>
75 constexpr
static auto unsupported_read_targets GENPYBIND(hidden) = {
76 hxcomm::vx::Target::simulation};
79 struct GENPYBIND(inline_base("*
")) Utilization
80 : public halco::common::detail::RantWrapper<Utilization, uint_fast8_t, 15, 0>
82 constexpr explicit Utilization(uintmax_t const val = 0) GENPYBIND(implicit_conversion) :
87 struct GENPYBIND(inline_base("*
")) Offset
88 : public halco::common::detail::RantWrapper<Offset, uint_fast8_t, 15, 0>
90 constexpr explicit Offset(uintmax_t const val = 0) GENPYBIND(implicit_conversion) :
95 struct GENPYBIND(inline_base("*
")) Recovery
96 : public halco::common::detail::RantWrapper<Recovery, uint_fast8_t, 15, 0>
98 constexpr explicit Recovery(uintmax_t const val = 0) GENPYBIND(implicit_conversion) :
103 struct GENPYBIND(inline_base("*
")) HagenDACOffset
104 : public halco::common::detail::RantWrapper<HagenDACOffset, uint_fast8_t, 63, 0>
106 constexpr explicit HagenDACOffset(uintmax_t const val = 0) GENPYBIND(implicit_conversion) :
111 struct GENPYBIND(inline_base("*
")) TargetVoltages
112 : public halco::common::detail::RantWrapper<TargetVoltages, uint_fast8_t, 1, 0>
114 constexpr explicit TargetVoltages(uintmax_t const val = 0) GENPYBIND(implicit_conversion) :
119 struct GENPYBIND(inline_base("*
")) RowAddressCompareMask
120 : public halco::common::detail::RantWrapper<RowAddressCompareMask, uint_fast8_t, 31, 0>
122 constexpr explicit RowAddressCompareMask(uintmax_t const val = 0b11111)
123 GENPYBIND(implicit_conversion) :
128 enum class GENPYBIND(visible) RowMode
133 excitatory_and_inhibitory
136 SynapseDriverConfig() SYMBOL_VISIBLE;
141 GENPYBIND(getter_for(enable_receiver))
142 bool get_enable_receiver() const SYMBOL_VISIBLE;
143 GENPYBIND(setter_for(enable_receiver))
144 void set_enable_receiver(bool const value) SYMBOL_VISIBLE;
154 GENPYBIND(getter_for(row_address_compare_mask))
155 RowAddressCompareMask get_row_address_compare_mask() const SYMBOL_VISIBLE;
156 GENPYBIND(setter_for(row_address_compare_mask))
157 void set_row_address_compare_mask(RowAddressCompareMask const value) SYMBOL_VISIBLE;
163 GENPYBIND(getter_for(enable_address_out))
164 bool get_enable_address_out() const SYMBOL_VISIBLE;
165 GENPYBIND(setter_for(enable_address_out))
166 void set_enable_address_out(bool const value) SYMBOL_VISIBLE;
169 GENPYBIND(getter_for(utilization))
170 Utilization get_utilization() const SYMBOL_VISIBLE;
171 GENPYBIND(setter_for(utilization))
172 void set_utilization(Utilization const value) SYMBOL_VISIBLE;
175 GENPYBIND(getter_for(offset))
176 Offset get_offset() const SYMBOL_VISIBLE;
177 GENPYBIND(setter_for(offset))
178 void set_offset(Offset const value) SYMBOL_VISIBLE;
181 GENPYBIND(getter_for(enable_hagen_dac))
182 bool get_enable_hagen_dac() const SYMBOL_VISIBLE;
183 GENPYBIND(setter_for(enable_hagen_dac))
184 void set_enable_hagen_dac(bool value) SYMBOL_VISIBLE;
187 GENPYBIND(getter_for(recovery))
188 Recovery get_recovery() const SYMBOL_VISIBLE;
189 GENPYBIND(setter_for(recovery))
190 void set_recovery(Recovery const value) SYMBOL_VISIBLE;
193 GENPYBIND(getter_for(row_mode_bottom))
194 RowMode get_row_mode_bottom() const SYMBOL_VISIBLE;
195 GENPYBIND(setter_for(row_mode_bottom))
196 void set_row_mode_bottom(RowMode value) SYMBOL_VISIBLE;
199 GENPYBIND(getter_for(row_mode_top))
200 RowMode get_row_mode_top() const SYMBOL_VISIBLE;
201 GENPYBIND(setter_for(row_mode_top))
202 void set_row_mode_top(RowMode value) SYMBOL_VISIBLE;
209 GENPYBIND(getter_for(hagen_dac_offset))
210 HagenDACOffset get_hagen_dac_offset() const SYMBOL_VISIBLE;
211 GENPYBIND(setter_for(hagen_dac_offset))
212 void set_hagen_dac_offset(HagenDACOffset value) SYMBOL_VISIBLE;
223 GENPYBIND(getter_for(select_target_voltages))
224 TargetVoltages get_select_target_voltages() const SYMBOL_VISIBLE;
225 GENPYBIND(setter_for(select_target_voltages))
226 void set_select_target_voltages(TargetVoltages const value) SYMBOL_VISIBLE;
236 GENPYBIND(getter_for(enable_readout))
237 bool get_enable_readout() const SYMBOL_VISIBLE;
238 GENPYBIND(setter_for(enable_readout))
239 void set_enable_readout(bool const value) SYMBOL_VISIBLE;
242 GENPYBIND(getter_for(enable_renewing))
243 bool get_enable_renewing() const SYMBOL_VISIBLE;
244 GENPYBIND(setter_for(enable_renewing))
245 void set_enable_renewing(bool const value) SYMBOL_VISIBLE;
254 GENPYBIND(getter_for(enable_hagen_modulation))
255 bool get_enable_hagen_modulation() const SYMBOL_VISIBLE;
256 GENPYBIND(setter_for(enable_hagen_modulation))
257 void set_enable_hagen_modulation(bool const value) SYMBOL_VISIBLE;
260 GENPYBIND(getter_for(enable_stp))
261 bool get_enable_stp() const SYMBOL_VISIBLE;
262 GENPYBIND(setter_for(enable_stp))
263 void set_enable_stp(bool const value) SYMBOL_VISIBLE;
266 GENPYBIND(getter_for(enable_charge_sharing))
267 bool get_enable_charge_sharing() const SYMBOL_VISIBLE;
268 GENPYBIND(setter_for(enable_charge_sharing))
269 void set_enable_charge_sharing(bool const value) SYMBOL_VISIBLE;
272 GENPYBIND(getter_for(enable_recovery))
273 bool get_enable_recovery() const SYMBOL_VISIBLE;
274 GENPYBIND(setter_for(enable_recovery))
275 void set_enable_recovery(bool const value) SYMBOL_VISIBLE;
277 bool operator==(SynapseDriverConfig const& other) const SYMBOL_VISIBLE;
278 bool operator!=(SynapseDriverConfig const& other) const SYMBOL_VISIBLE;
280 static size_t constexpr config_size_in_words GENPYBIND(hidden) = 3;
281 template <typename AddressT>
282 static std::array<AddressT, config_size_in_words> addresses(
283 coordinate_type const& synapse_driver) SYMBOL_VISIBLE GENPYBIND(hidden);
284 template <typename WordT>
285 std::array<WordT, config_size_in_words> encode() const SYMBOL_VISIBLE GENPYBIND(hidden);
286 template <typename WordT>
287 void decode(std::array<WordT, config_size_in_words> const& data) SYMBOL_VISIBLE
290 GENPYBIND(stringstream)
291 friend std::ostream& operator<<(std::ostream& os, SynapseDriverConfig const& config)
295 friend class cereal::access;
296 template <class Archive>
297 void serialize(Archive& ar, std::uint32_t const version) SYMBOL_VISIBLE;
299 struct SynapseDriverConfigBitfield;
301 SynapseDriverConfigBitfield to_bitfield() const;
302 void from_bitfield(SynapseDriverConfigBitfield const& bitfield);
305 RowAddressCompareMask m_row_address_compare_mask;
306 bool m_en_address_out;
307 Utilization m_utilization;
311 RowMode m_row_mode_bottom;
312 RowMode m_row_mode_top;
313 HagenDACOffset m_hagen_dac_offset;
314 TargetVoltages m_select_target_voltages;
317 bool m_en_hagen_modulation;
319 bool m_en_charge_sharing;
323 std::ostream& operator<<(std::ostream& os, SynapseDriverConfig::RowMode const& mode) SYMBOL_VISIBLE;
326 EXTERN_INSTANTIATE_CEREAL_SERIALIZE(haldls::vx::SynapseDriverConfig)
332 struct BackendContainerTrait<SynapseDriverConfig>
333 : public BackendContainerBase<
335 fisch::vx::word_access_type::Omnibus,
336 fisch::vx::word_access_type::OmnibusChipOverJTAG>
339 } // namespace detail
342 } // namespace haldls
#define EXTERN_INSTANTIATE_CEREAL_SERIALIZE(CLASS_NAME)
Trait signalling derived-from container type support differential write operation.
halco::hicann_dls::vx::SynapseDriverOnDLS coordinate_type
std::true_type is_leaf_node
bool operator!=(SynapseDriverSRAMTimingConfig const &other) const SYMBOL_VISIBLE
halco::hicann_dls::vx::SynapseDriverSRAMTimingConfigOnDLS coordinate_type
bool operator==(SynapseDriverSRAMTimingConfig const &other) const SYMBOL_VISIBLE
Configuration of full-custom SRAM timing.
#define GENPYBIND_TAG_HALDLS_VX
Backend container trait base.