5 #include "halco/common/typed_array.h" 
    6 #include "halco/hicann-dls/vx/chip.h" 
    7 #include "halco/hicann-dls/vx/madc.h" 
    8 #include "halco/hicann-dls/vx/readout.h" 
    9 #include "halco/hicann-dls/vx/synapse.h" 
   14 #include "hate/visibility.h" 
   17 class OmnibusChipOverJTAG;
 
   41     GENPYBIND(getter_for(enable_iconv_amplifier))
 
   42     bool get_enable_iconv_amplifier() const SYMBOL_VISIBLE;
 
   43     GENPYBIND(setter_for(enable_iconv_amplifier))
 
   44     void set_enable_iconv_amplifier(
bool const value) SYMBOL_VISIBLE;
 
   47     GENPYBIND(getter_for(enable_pre_amplifier))
 
   48     bool get_enable_pre_amplifier() const SYMBOL_VISIBLE;
 
   49     GENPYBIND(setter_for(enable_pre_amplifier))
 
   50     void set_enable_pre_amplifier(
bool const value) SYMBOL_VISIBLE;
 
   53     GENPYBIND(getter_for(enable_continuous_sampling))
 
   54     bool get_enable_continuous_sampling() const SYMBOL_VISIBLE;
 
   55     GENPYBIND(setter_for(enable_continuous_sampling))
 
   56     void set_enable_continuous_sampling(
bool const value) SYMBOL_VISIBLE;
 
   59     GENPYBIND(getter_for(enable_power_down_after_sampling))
 
   60     bool get_enable_power_down_after_sampling() const SYMBOL_VISIBLE;
 
   61     GENPYBIND(setter_for(enable_power_down_after_sampling))
 
   62     void set_enable_power_down_after_sampling(
bool const value) SYMBOL_VISIBLE;
 
   65     GENPYBIND(getter_for(stop_recording))
 
   66     bool get_stop_recording() const SYMBOL_VISIBLE;
 
   67     GENPYBIND(setter_for(stop_recording))
 
   68     void set_stop_recording(
bool const value) SYMBOL_VISIBLE;
 
   71     GENPYBIND(getter_for(start_recording))
 
   72     bool get_start_recording() const SYMBOL_VISIBLE;
 
   73     GENPYBIND(setter_for(start_recording))
 
   74     void set_start_recording(
bool const value) SYMBOL_VISIBLE;
 
   77     GENPYBIND(getter_for(wake_up))
 
   78     bool get_wake_up() const SYMBOL_VISIBLE;
 
   79     GENPYBIND(setter_for(wake_up))
 
   80     void set_wake_up(
bool const value) SYMBOL_VISIBLE;
 
   82     bool operator==(
MADCControl const& other) const SYMBOL_VISIBLE;
 
   83     bool operator!=(
MADCControl const& other) const SYMBOL_VISIBLE;
 
   85     static 
size_t constexpr write_config_size_in_words GENPYBIND(hidden) = 1;
 
   86     static 
size_t constexpr read_config_size_in_words GENPYBIND(hidden) = 0;
 
   87     template <typename AddressT>
 
   88     static std::array<AddressT, read_config_size_in_words> read_addresses(
 
   90     template <typename AddressT>
 
   91     static std::array<AddressT, write_config_size_in_words> write_addresses(
 
   93     template <typename WordT>
 
   94     std::array<WordT, write_config_size_in_words> encode() const SYMBOL_VISIBLE GENPYBIND(hidden);
 
   95     template <typename WordT>
 
   96     void decode(std::array<WordT, read_config_size_in_words> const& data) SYMBOL_VISIBLE
 
   99     GENPYBIND(stringstream)
 
  100     friend std::ostream& operator<<(std::ostream& os, 
MADCControl const& event) SYMBOL_VISIBLE;
 
  104     template <class Archive>
 
  105     void serialize(Archive& ar, std::uint32_t const version) SYMBOL_VISIBLE;
 
  107     bool m_enable_iconv_amplifier;
 
  108     bool m_enable_pre_amplifier;
 
  109     bool m_enable_continuous_sampling;
 
  110     bool m_enable_power_down_after_sampling;
 
  111     bool m_stop_recording;
 
  112     bool m_start_recording;
 
  124           fisch::vx::word_access_type::Omnibus,
 
  125           fisch::vx::word_access_type::OmnibusChipOverJTAG>
 
  141     struct GENPYBIND(inline_base("*
")) ActiveMuxInputSelectLength 
  142         : public halco::common::detail::RantWrapper<ActiveMuxInputSelectLength, uint_fast8_t, 15, 0> 
  144         constexpr explicit ActiveMuxInputSelectLength(uintmax_t const val = 0) 
  145             GENPYBIND(implicit_conversion) SYMBOL_VISIBLE : rant_t(val) 
  149     struct GENPYBIND(inline_base("*
")) SampleDurationAdjust 
  150         : public halco::common::detail::RantWrapper<SampleDurationAdjust, uint_fast8_t, 7, 0> 
  152         constexpr explicit SampleDurationAdjust(uintmax_t const val = 5) 
  153             GENPYBIND(implicit_conversion) SYMBOL_VISIBLE : rant_t(val) 
  157     struct GENPYBIND(inline_base("*
")) SARResetWait 
  158         : public halco::common::detail::RantWrapper<SARResetWait, uint_fast8_t, 3, 0> 
  160         constexpr explicit SARResetWait(uintmax_t const val = 3) 
  161             GENPYBIND(implicit_conversion) SYMBOL_VISIBLE : rant_t(val) 
  165     struct GENPYBIND(inline_base("*
")) SARResetLength 
  166         : public halco::common::detail::RantWrapper<SARResetLength, uint_fast8_t, 3, 0> 
  168         constexpr explicit SARResetLength(uintmax_t const val = 0) 
  169             GENPYBIND(implicit_conversion) SYMBOL_VISIBLE : rant_t(val) 
  173     struct GENPYBIND(inline_base("*
")) PowerupWaitValue 
  174         : public halco::common::detail::RantWrapper<PowerupWaitValue, uint_fast16_t, 1023, 0> 
  176         constexpr explicit PowerupWaitValue(uintmax_t const val = 96) 
  177             GENPYBIND(implicit_conversion) SYMBOL_VISIBLE : rant_t(val) 
  181     struct GENPYBIND(inline_base("*
")) ConversionCyclesOffset 
  182         : public halco::common::detail::RantWrapper<ConversionCyclesOffset, uint_fast8_t, 15, 0> 
  184         constexpr explicit ConversionCyclesOffset(uintmax_t const val = 12) 
  185             GENPYBIND(implicit_conversion) SYMBOL_VISIBLE : rant_t(val) 
  189     struct GENPYBIND(inline_base("*
")) CalibrationWaitValue 
  190         : public halco::common::detail::RantWrapper<CalibrationWaitValue, uint_fast16_t, 1023, 0> 
  192         constexpr explicit CalibrationWaitValue(uintmax_t const val = 0) 
  193             GENPYBIND(implicit_conversion) SYMBOL_VISIBLE : rant_t(val) 
  197     struct GENPYBIND(inline_base("*
")) NumberOfSamples 
  198         : public halco::common::detail::RantWrapper<NumberOfSamples, uint_fast16_t, 65535, 0> 
  200         constexpr explicit NumberOfSamples(uintmax_t const val = 0) 
  201             GENPYBIND(implicit_conversion) SYMBOL_VISIBLE : rant_t(val) 
  205     struct GENPYBIND(inline_base("*
")) SamplingWindowTiming 
  206         : public halco::common::detail::RantWrapper<SamplingWindowTiming, uint_fast8_t, 31, 0> 
  208         constexpr explicit SamplingWindowTiming(uintmax_t const val = 0) 
  209             GENPYBIND(implicit_conversion) SYMBOL_VISIBLE : rant_t(val) 
  213     struct GENPYBIND(inline_base("*
")) PreampGainCapacitorSize 
  214         : public halco::common::detail::RantWrapper<PreampGainCapacitorSize, uint_fast8_t, 31, 0> 
  216         constexpr explicit PreampGainCapacitorSize(uintmax_t const val = 31) 
  217             GENPYBIND(implicit_conversion) SYMBOL_VISIBLE : rant_t(val) 
  221     struct GENPYBIND(inline_base("*
")) MADCClockScaleValue 
  222         : public halco::common::detail::RantWrapper<MADCClockScaleValue, uint_fast16_t, 4095, 0> 
  224         constexpr explicit MADCClockScaleValue(uintmax_t const val = 0) 
  225             GENPYBIND(implicit_conversion) SYMBOL_VISIBLE : rant_t(val) 
  229     typedef halco::common::typed_array<bool, halco::hicann_dls::vx::HemisphereOnDLS> hemisphere_type 
  230         GENPYBIND(opaque(false)); 
  232     typedef halco::common::typed_array<bool, halco::hicann_dls::vx::SynapticInputOnNeuron> 
  233         synapse_target_type GENPYBIND(opaque(false)); 
  241     MADCConfig() SYMBOL_VISIBLE; 
  250     GENPYBIND(getter_for(active_mux_initially_selected_input)) 
  251     input_selection_type get_active_mux_initially_selected_input() const SYMBOL_VISIBLE; 
  252     GENPYBIND(setter_for(active_mux_initially_selected_input)) 
  253     void set_active_mux_initially_selected_input(input_selection_type const& value) SYMBOL_VISIBLE; 
  265     GENPYBIND(getter_for(active_mux_input_select_length)) 
  266     ActiveMuxInputSelectLength get_active_mux_input_select_length() const SYMBOL_VISIBLE; 
  267     GENPYBIND(setter_for(active_mux_input_select_length)) 
  268     void set_active_mux_input_select_length(ActiveMuxInputSelectLength const& value) SYMBOL_VISIBLE; 
  278     GENPYBIND(getter_for(sample_duration_adjust)) 
  279     SampleDurationAdjust get_sample_duration_adjust() const SYMBOL_VISIBLE; 
  280     GENPYBIND(setter_for(sample_duration_adjust)) 
  281     void set_sample_duration_adjust(SampleDurationAdjust const& value) SYMBOL_VISIBLE; 
  286     GENPYBIND(getter_for(enable_sar_reset_on_fall)) 
  287     bool get_enable_sar_reset_on_fall() const SYMBOL_VISIBLE; 
  288     GENPYBIND(setter_for(enable_sar_reset_on_fall)) 
  289     void set_enable_sar_reset_on_fall(bool const value) SYMBOL_VISIBLE; 
  291     GENPYBIND(getter_for(sar_reset_wait)) 
  292     SARResetWait get_sar_reset_wait() const SYMBOL_VISIBLE; 
  293     GENPYBIND(setter_for(sar_reset_wait)) 
  294     void set_sar_reset_wait(SARResetWait const& value) SYMBOL_VISIBLE; 
  296     GENPYBIND(getter_for(sar_reset_length)) 
  297     SARResetLength get_sar_reset_length() const SYMBOL_VISIBLE; 
  298     GENPYBIND(setter_for(sar_reset_length)) 
  299     void set_sar_reset_length(SARResetLength const& value) SYMBOL_VISIBLE; 
  306     GENPYBIND(getter_for(powerup_wait_value)) 
  307     PowerupWaitValue get_powerup_wait_value() const SYMBOL_VISIBLE; 
  308     GENPYBIND(setter_for(powerup_wait_value)) 
  309     void set_powerup_wait_value(PowerupWaitValue const& value) SYMBOL_VISIBLE; 
  318     GENPYBIND(getter_for(conversion_cycles_offset)) 
  319     ConversionCyclesOffset get_conversion_cycles_offset() const SYMBOL_VISIBLE; 
  320     GENPYBIND(setter_for(conversion_cycles_offset)) 
  321     void set_conversion_cycles_offset(ConversionCyclesOffset const& value) SYMBOL_VISIBLE; 
  326     GENPYBIND(getter_for(calibration_wait_value)) 
  327     CalibrationWaitValue get_calibration_wait_value() const SYMBOL_VISIBLE; 
  328     GENPYBIND(setter_for(calibration_wait_value)) 
  329     void set_calibration_wait_value(CalibrationWaitValue const& value) SYMBOL_VISIBLE; 
  334     GENPYBIND(getter_for(enable_calibration)) 
  335     bool get_enable_calibration() const SYMBOL_VISIBLE; 
  336     GENPYBIND(setter_for(enable_calibration)) 
  337     void set_enable_calibration(bool const value) SYMBOL_VISIBLE; 
  346     GENPYBIND(getter_for(number_of_samples)) 
  347     NumberOfSamples get_number_of_samples() const SYMBOL_VISIBLE; 
  348     GENPYBIND(setter_for(number_of_samples)) 
  349     void set_number_of_samples(NumberOfSamples const& value) SYMBOL_VISIBLE; 
  362     GENPYBIND(getter_for(preamp_sampling_window_start)) 
  363     SamplingWindowTiming get_preamp_sampling_window_start() const SYMBOL_VISIBLE; 
  364     GENPYBIND(setter_for(preamp_sampling_window_start)) 
  365     void set_preamp_sampling_window_start(SamplingWindowTiming const& value) SYMBOL_VISIBLE; 
  367     GENPYBIND(getter_for(preamp_sampling_window_end)) 
  368     SamplingWindowTiming get_preamp_sampling_window_end() const SYMBOL_VISIBLE; 
  369     GENPYBIND(setter_for(preamp_sampling_window_end)) 
  370     void set_preamp_sampling_window_end(SamplingWindowTiming const& value) SYMBOL_VISIBLE; 
  372     GENPYBIND(getter_for(iconv_sampling_window_start)) 
  373     SamplingWindowTiming get_iconv_sampling_window_start() const SYMBOL_VISIBLE; 
  374     GENPYBIND(setter_for(iconv_sampling_window_start)) 
  375     void set_iconv_sampling_window_start(SamplingWindowTiming const& value) SYMBOL_VISIBLE; 
  377     GENPYBIND(getter_for(iconv_sampling_window_end)) 
  378     SamplingWindowTiming get_iconv_sampling_window_end() const SYMBOL_VISIBLE; 
  379     GENPYBIND(setter_for(iconv_sampling_window_end)) 
  380     void set_iconv_sampling_window_end(SamplingWindowTiming const& value) SYMBOL_VISIBLE; 
  383      * Let the MADC sample on the positive clock edge. 
  385      * Caution: this property is called `sample_pos_edge` in the RTL description. 
  387     GENPYBIND(getter_for(sample_on_positive_edge)) 
  388     bool get_sample_on_positive_edge() const SYMBOL_VISIBLE; 
  389     GENPYBIND(setter_for(sample_on_positive_edge)) 
  390     void set_sample_on_positive_edge(bool const value) SYMBOL_VISIBLE; 
  393      * Accessor for enabling dummy data generation. 
  394      * If enabled, the MADC will stream out the last 10 bit of the sample 
  395      * counter value as a test pattern (sawtooth). 
  397     GENPYBIND(getter_for(enable_dummy_data)) 
  398     bool get_enable_dummy_data() const SYMBOL_VISIBLE; 
  399     GENPYBIND(setter_for(enable_dummy_data)) 
  400     void set_enable_dummy_data(bool const value) SYMBOL_VISIBLE; 
  403      * Accessors for configuration of the MADC input multiplexer. 
  404      * This multiplexer allows to patch any combination of the MADC's 
  405      * differential inputs, the preamp, and the two analog I/Os of the 
  407      * In the vast majority of use cases, the MADC is set to record from 
  409      * Connecting the preamp's outputs or the MADC's inputs to the pads 
  410      * allows to characterize the two circuits in isolation. 
  412      * Caution: the corresponding properties are called 
  413      *   `en_amp_to_adc`, `en_adc_to_pad`, and `en_amp_to_pad` in the RTL 
  414      *   description, where the two latter properties further seem to be 
  417     GENPYBIND(getter_for(connect_preamp_to_madc)) 
  418     bool get_connect_preamp_to_madc() const SYMBOL_VISIBLE; 
  419     GENPYBIND(setter_for(connect_preamp_to_madc)) 
  420     void set_connect_preamp_to_madc(bool const value) SYMBOL_VISIBLE; 
  422     GENPYBIND(getter_for(connect_pads_to_madc)) 
  423     bool get_connect_pads_to_madc() const SYMBOL_VISIBLE; 
  424     GENPYBIND(setter_for(connect_pads_to_madc)) 
  425     void set_connect_pads_to_madc(bool const value) SYMBOL_VISIBLE; 
  427     GENPYBIND(getter_for(connect_preamp_to_pads)) 
  428     bool get_connect_preamp_to_pads() const SYMBOL_VISIBLE; 
  429     GENPYBIND(setter_for(connect_preamp_to_pads)) 
  430     void set_connect_preamp_to_pads(bool const value) SYMBOL_VISIBLE; 
  435     GENPYBIND(getter_for(preamp_gain_capacitor_size)) 
  436     PreampGainCapacitorSize get_preamp_gain_capacitor_size() const SYMBOL_VISIBLE; 
  437     GENPYBIND(setter_for(preamp_gain_capacitor_size)) 
  438     void set_preamp_gain_capacitor_size(PreampGainCapacitorSize const& value) SYMBOL_VISIBLE; 
  444     GENPYBIND(getter_for(enable_madc_clock_scaling)) 
  445     bool get_enable_madc_clock_scaling() const SYMBOL_VISIBLE; 
  446     GENPYBIND(setter_for(enable_madc_clock_scaling)) 
  447     void set_enable_madc_clock_scaling(bool const value) SYMBOL_VISIBLE; 
  449     GENPYBIND(getter_for(madc_clock_scale_value)) 
  450     MADCClockScaleValue get_madc_clock_scale_value() const SYMBOL_VISIBLE; 
  451     GENPYBIND(setter_for(madc_clock_scale_value)) 
  452     void set_madc_clock_scale_value(MADCClockScaleValue const& value) SYMBOL_VISIBLE; 
  455      * Accessors for the enabledness of the active mux amplifiers. 
  457      * Caution: the corresponding property is called `act_mux_en_amps` in the 
  460     GENPYBIND(getter_for(enable_active_mux_amplifiers)) 
  461     bool get_enable_active_mux_amplifiers() const SYMBOL_VISIBLE; 
  462     GENPYBIND(setter_for(enable_active_mux_amplifiers)) 
  463     void set_enable_active_mux_amplifiers(bool const value) SYMBOL_VISIBLE; 
  469         getter_for(enable_pseudo_differential_reference), return_value_policy(reference_internal)) 
  470     hemisphere_type const& get_enable_pseudo_differential_reference() const SYMBOL_VISIBLE; 
  471     GENPYBIND(setter_for(enable_pseudo_differential_reference)) 
  472     void set_enable_pseudo_differential_reference(hemisphere_type const& value) SYMBOL_VISIBLE; 
  486     GENPYBIND(getter_for(signal_selection_connect_current_meter)) 
  487     bool get_signal_selection_connect_current_meter() const SYMBOL_VISIBLE; 
  488     GENPYBIND(setter_for(signal_selection_connect_current_meter)) 
  489     void set_signal_selection_connect_current_meter(bool const value) SYMBOL_VISIBLE; 
  491     GENPYBIND(getter_for(signal_selection_connect_active_mux)) 
  492     bool get_signal_selection_connect_active_mux() const SYMBOL_VISIBLE; 
  493     GENPYBIND(setter_for(signal_selection_connect_active_mux)) 
  494     void set_signal_selection_connect_active_mux(bool const value) SYMBOL_VISIBLE; 
  496     GENPYBIND(getter_for(signal_selection_connect_debug)) 
  497     bool get_signal_selection_connect_debug() const SYMBOL_VISIBLE; 
  498     GENPYBIND(setter_for(signal_selection_connect_debug)) 
  499     void set_signal_selection_connect_debug(bool const value) SYMBOL_VISIBLE; 
  501     GENPYBIND(getter_for(signal_selection_connect_preamp)) 
  502     bool get_signal_selection_connect_preamp() const SYMBOL_VISIBLE; 
  503     GENPYBIND(setter_for(signal_selection_connect_preamp)) 
  504     void set_signal_selection_connect_preamp(bool const value) SYMBOL_VISIBLE; 
  513     GENPYBIND(getter_for(enable_iconv_amplifier)) 
  514     bool get_enable_iconv_amplifier() const SYMBOL_VISIBLE; 
  515     GENPYBIND(setter_for(enable_iconv_amplifier)) 
  516     void set_enable_iconv_amplifier(bool const value) SYMBOL_VISIBLE; 
  518     GENPYBIND(getter_for(connect_iconv_neuron), return_value_policy(reference_internal)) 
  519     hemisphere_type const& get_connect_iconv_neuron() const SYMBOL_VISIBLE; 
  520     GENPYBIND(setter_for(connect_iconv_neuron)) 
  521     void set_connect_iconv_neuron(hemisphere_type const& value) SYMBOL_VISIBLE; 
  523     GENPYBIND(getter_for(connect_iconv_synapse), return_value_policy(reference_internal)) 
  524     synapse_target_type const& get_connect_iconv_synapse() const SYMBOL_VISIBLE; 
  525     GENPYBIND(setter_for(connect_iconv_synapse)) 
  526     void set_connect_iconv_synapse(synapse_target_type const& value) SYMBOL_VISIBLE; 
  539     double calculate_sample_rate(double const& madc_base_frequency) const SYMBOL_VISIBLE; 
  541     bool operator==(MADCConfig const& other) const SYMBOL_VISIBLE; 
  542     bool operator!=(MADCConfig const& other) const SYMBOL_VISIBLE; 
  544     static size_t constexpr config_size_in_words GENPYBIND(hidden) = 10; 
  545     template <typename AddressT> 
  546     std::array<AddressT, config_size_in_words> addresses(coordinate_type const& coord) const 
  548     template <typename WordT> 
  549     std::array<WordT, config_size_in_words> encode() const GENPYBIND(hidden); 
  550     template <typename WordT> 
  551     void decode(std::array<WordT, config_size_in_words> const& data) GENPYBIND(hidden); 
  553     GENPYBIND(stringstream) 
  554     friend std::ostream& operator<<(std::ostream& os, MADCConfig const& config) SYMBOL_VISIBLE; 
  557     friend class cereal::access; 
  558     template <class Archive> 
  559     void serialize(Archive& ar, std::uint32_t const); 
  561     input_selection_type m_active_mux_initially_selected_input; 
  562     ActiveMuxInputSelectLength m_active_mux_input_select_length; 
  563     SampleDurationAdjust m_sample_duration_adjust; 
  564     bool m_enable_sar_reset_on_fall; 
  565     SARResetWait m_sar_reset_wait; 
  566     SARResetLength m_sar_reset_length; 
  567     PowerupWaitValue m_powerup_wait_value; 
  568     ConversionCyclesOffset m_conversion_cycles_offset; 
  569     CalibrationWaitValue m_calibration_wait_value; 
  570     bool m_enable_calibration; 
  571     NumberOfSamples m_number_of_samples; 
  572     SamplingWindowTiming m_preamp_sampling_window_start; 
  573     SamplingWindowTiming m_preamp_sampling_window_end; 
  574     SamplingWindowTiming m_iconv_sampling_window_start; 
  575     SamplingWindowTiming m_iconv_sampling_window_end; 
  576     bool m_sample_on_positive_edge; 
  577     bool m_enable_dummy_data; 
  578     bool m_connect_preamp_to_madc; 
  579     bool m_connect_pads_to_madc; 
  580     bool m_connect_preamp_to_pads; 
  581     PreampGainCapacitorSize m_preamp_gain_capacitor_size; 
  582     bool m_enable_madc_clock_scaling; 
  583     MADCClockScaleValue m_madc_clock_scale_value; 
  584     bool m_enable_active_mux_amplifiers; 
  585     hemisphere_type m_enable_pseudo_differential_reference; 
  586     bool m_signal_selection_connect_current_meter; 
  587     bool m_signal_selection_connect_active_mux; 
  588     bool m_signal_selection_connect_debug; 
  589     bool m_signal_selection_connect_preamp; 
  590     bool m_enable_iconv_amplifier; 
  591     hemisphere_type m_connect_iconv_neuron; 
  592     synapse_target_type m_connect_iconv_synapse; 
  595 EXTERN_INSTANTIATE_CEREAL_SERIALIZE(MADCConfig) 
  600 struct BackendContainerTrait<MADCConfig> 
  601     : public BackendContainerBase< 
  603           fisch::vx::word_access_type::Omnibus, 
  604           fisch::vx::word_access_type::OmnibusChipOverJTAG> 
  607 } // namespace detail 
  610 } // namespace haldls 
#define EXTERN_INSTANTIATE_CEREAL_SERIALIZE(CLASS_NAME)
Configuration container for MADC and related circuitry.
halco::hicann_dls::vx::SourceMultiplexerOnReadoutSourceSelection input_selection_type
halco::hicann_dls::vx::MADCConfigOnDLS coordinate_type
std::true_type is_leaf_node
Container for MADC control state machine.
halco::hicann_dls::vx::MADCControlOnDLS coordinate_type
std::true_type is_leaf_node
MADCControl() SYMBOL_VISIBLE
#define GENPYBIND_TAG_HALDLS_VX
Backend container trait base.