diff --git a/.ci/Jenkinsfile b/.ci/Jenkinsfile
index e366cadf27abce84fce7784c7417d2ba4167df87..a2edcd8e377a45f5a9a1b8611b642b0a798eae37 100644
--- a/.ci/Jenkinsfile
+++ b/.ci/Jenkinsfile
@@ -17,7 +17,7 @@ if (executeHwTests) {
 			testOptions      : "--test-execall -j1",
 			testSlurmResource: [partition: "cube",
 			                    wafer: 62,
-			                    "fpga-without-aout": 0],
+			                    "fpga-without-aout": 3],
 			preTestHook      : { configureHxCubeBitfile() },
 	]
 }
diff --git a/.ci/Jenkinsfile_calibrun b/.ci/Jenkinsfile_calibrun
index 39eb9c48c997c0e6abdd16e7d9fda01f53c86bb6..e9f4dee047360b4c34fa496e7a5fde2098272562 100644
--- a/.ci/Jenkinsfile_calibrun
+++ b/.ci/Jenkinsfile_calibrun
@@ -12,7 +12,7 @@ import static java.util.UUID.randomUUID
 final String deploymentRoot = "/wang/data/calibration/hicann-dls-sr-hx/"
 
 enum HxVersion {
-	HXv2(2)
+	HXv3(3)
 
 	final int chipRevision
 
@@ -103,7 +103,7 @@ if __name__ == '__main__':
 }
 
 Closure calibrationPipeline = { HxVersion version ->
-	if (version == HxVersion.HXv2)
+	if (version == HxVersion.HXv3)
 	{
 		wafSetup(projects: ["calix", "hwdb"])
 	}
diff --git a/src/py/calix/common/algorithms.py b/src/py/calix/common/algorithms.py
index 947ddee0603a7f6345a5cde9bc58829045063456..22bdaf0339844ba2767ac480980b2525785fe899 100644
--- a/src/py/calix/common/algorithms.py
+++ b/src/py/calix/common/algorithms.py
@@ -9,7 +9,7 @@ from typing import Union, Optional, ClassVar
 import numbers
 from abc import abstractmethod
 import numpy as np
-from dlens_vx_v2 import sta, hxcomm
+from dlens_vx_v3 import sta, hxcomm
 
 from calix.common import base, boundary_check, exceptions, helpers
 
diff --git a/src/py/calix/common/base.py b/src/py/calix/common/base.py
index 34ebe474babe4624c0a605bc71933274e8674b45..22630ee7533049683ab233a9e999b43a44fae60b 100644
--- a/src/py/calix/common/base.py
+++ b/src/py/calix/common/base.py
@@ -9,7 +9,7 @@ from typing import List, Union, Optional
 from dataclasses import dataclass
 from abc import ABC, abstractmethod
 import numpy as np
-from dlens_vx_v2 import halco, hal, sta, logger, hxcomm
+from dlens_vx_v3 import halco, hal, sta, logger, hxcomm
 
 from calix.common.boundary_check import check_range_boundaries
 
diff --git a/src/py/calix/common/cadc.py b/src/py/calix/common/cadc.py
index 20fac39191d84e7a10ecbb4da19619cb1403f837..9a32f0aa927a124898c733746f624575306f1ac3 100644
--- a/src/py/calix/common/cadc.py
+++ b/src/py/calix/common/cadc.py
@@ -6,7 +6,7 @@ from typing import Optional, Union
 import os
 from dataclasses import dataclass
 import numpy as np
-from dlens_vx_v2 import halco, hal, sta, logger, hxcomm
+from dlens_vx_v3 import halco, hal, sta, logger, hxcomm
 
 from calix.common import helpers, algorithms, base, \
     cadc_helpers, cadc_evaluation
diff --git a/src/py/calix/common/cadc_evaluation.py b/src/py/calix/common/cadc_evaluation.py
index 1fb4154404c20d8138e35daf360f116a98c2d351..9b34773814e4a988bdd25c58ddcb6f8cc2e4b325 100644
--- a/src/py/calix/common/cadc_evaluation.py
+++ b/src/py/calix/common/cadc_evaluation.py
@@ -4,7 +4,7 @@ CADC calibration.
 """
 
 import numpy as np
-from dlens_vx_v2 import halco, sta, logger, hxcomm
+from dlens_vx_v3 import halco, sta, logger, hxcomm
 
 from calix.common import cadc_helpers
 
diff --git a/src/py/calix/common/cadc_helpers.py b/src/py/calix/common/cadc_helpers.py
index f11e2e37a447df883595a7af3a8b588789b7ce83..ff65ef0896ff6e42d5c4fdc108279321729ba49b 100644
--- a/src/py/calix/common/cadc_helpers.py
+++ b/src/py/calix/common/cadc_helpers.py
@@ -5,7 +5,7 @@ calibration purposes.
 
 from typing import Tuple
 import numpy as np
-from dlens_vx_v2 import halco, hal, sta, hxcomm
+from dlens_vx_v3 import halco, hal, sta, hxcomm
 
 from calix.common import base, helpers
 
diff --git a/src/py/calix/common/helpers.py b/src/py/calix/common/helpers.py
index 028e9b51a5b13c2850b3f3608d13b69c97733d4b..fad56eb2f1f27c9d21ac9412c2463cc64ae7f749 100644
--- a/src/py/calix/common/helpers.py
+++ b/src/py/calix/common/helpers.py
@@ -7,7 +7,7 @@ from typing import Union, Dict, Optional, Tuple
 import warnings
 import numpy as np
 import quantities as pq
-from dlens_vx_v2 import hal, sta, halco
+from dlens_vx_v3 import hal, sta, halco
 
 
 def wait_for_us(builder: sta.PlaybackProgramBuilder, waiting_time: float
diff --git a/src/py/calix/common/madc_base.py b/src/py/calix/common/madc_base.py
index 82c73781fdcab7ebc3140b437670c48ec5dd8f44..a383a3caa74d1a526c4721ce1baba7fb6e37321f 100644
--- a/src/py/calix/common/madc_base.py
+++ b/src/py/calix/common/madc_base.py
@@ -9,7 +9,7 @@ import os
 import numpy as np
 import quantities as pq
 import matplotlib.pyplot as plt
-from dlens_vx_v2 import hal, sta, halco, hxcomm
+from dlens_vx_v3 import hal, sta, halco, hxcomm
 
 from calix.common import base, exceptions, helpers
 
diff --git a/src/py/calix/common/synapse.py b/src/py/calix/common/synapse.py
index ef560d41ca703638698e7c79ce3c3f9e8d20b387..3f8b1e59002950b56e87bd9111049f0008a3a443 100644
--- a/src/py/calix/common/synapse.py
+++ b/src/py/calix/common/synapse.py
@@ -1,7 +1,7 @@
 from typing import List
 import numpy as np
 import quantities as pq
-from dlens_vx_v2 import hal, sta, halco, hxcomm, logger
+from dlens_vx_v3 import hal, sta, halco, hxcomm, logger
 
 from calix.common import base, cadc_helpers, madc_base, helpers, exceptions
 from calix.hagen import neuron_helpers
diff --git a/src/py/calix/examples/plateau_potential.py b/src/py/calix/examples/plateau_potential.py
index f2284bfd783d91c5d68d83f12cef191b96a93579..104f33cd67938ba97164bb992c374bf47e1c39f1 100644
--- a/src/py/calix/examples/plateau_potential.py
+++ b/src/py/calix/examples/plateau_potential.py
@@ -7,7 +7,7 @@ from typing import Union
 from pathlib import Path
 import numpy as np
 import quantities as pq
-from dlens_vx_v2 import sta, hxcomm
+from dlens_vx_v3 import sta, hxcomm
 
 import calix.spiking
 from calix.spiking import SpikingCalibrationResult
diff --git a/src/py/calix/hagen/__init__.py b/src/py/calix/hagen/__init__.py
index 2b1c88bc6b43a96b885f26c0b175941a0df7d1e4..20ec8189abb694a69abc4c4048a1893d3a6904b9 100644
--- a/src/py/calix/hagen/__init__.py
+++ b/src/py/calix/hagen/__init__.py
@@ -7,7 +7,7 @@ from typing import Tuple, Union, Optional
 from dataclasses import dataclass
 import numpy as np
 
-from dlens_vx_v2 import sta, hxcomm, halco, hal, lola
+from dlens_vx_v3 import sta, hxcomm, halco, hal, lola
 
 from calix.common import algorithms, base, cadc, synapse, helpers
 from calix.hagen import neuron, synapse_driver, neuron_helpers, multiplication
@@ -55,9 +55,9 @@ class HagenSyninCalibrationResult(base.CalibrationResult):
              self.syn_i_bias_dac})
 
         # static neuron configuration
+        config = lola.AtomicNeuron()
+        multiplication.Multiplication.configure_for_integration(config)
         for coord in halco.iter_all(halco.AtomicNeuronOnDLS):
-            config = lola.AtomicNeuron()
-            multiplication.Multiplication.configure_for_integration(config)
             builder.write(coord, config)
 
         # Connect 1.2 V to synapse debug line:
diff --git a/src/py/calix/hagen/multiplication.py b/src/py/calix/hagen/multiplication.py
index 5266ec6ff9301b165d1f3aea5512bbdb0bdd78ae..565b0b262b38be3a6da3d37a3572766c1d903d02 100644
--- a/src/py/calix/hagen/multiplication.py
+++ b/src/py/calix/hagen/multiplication.py
@@ -8,7 +8,7 @@ import time
 import numpy as np
 import quantities as pq
 
-from dlens_vx_v2 import lola, halco, hal, sta, logger, hxcomm
+from dlens_vx_v3 import lola, halco, hal, sta, logger, hxcomm
 
 from calix.common import base, helpers
 from calix.hagen import neuron_helpers
@@ -92,18 +92,17 @@ class Multiplication:
         # Disable pullup of synaptic input lines (tau_syn -> inf) and
         # select the capacitor to be connected to the line.
         config.excitatory_input.enable = False
-        config.excitatory_input.enable_small_capacitor = False
+        config.excitatory_input.enable_small_capacitance = False
         config.excitatory_input.enable_high_resistance = True
         config.excitatory_input.i_bias_tau = 0
         config.inhibitory_input.enable = False
-        config.inhibitory_input.enable_small_capacitor = False
+        config.inhibitory_input.enable_small_capacitance = False
         config.inhibitory_input.enable_high_resistance = True
         config.inhibitory_input.i_bias_tau = 0
 
         # We need the source follower before the synaptic input OTA biased
-        # (i_drop_input) in order to see the potential at the readout.
-        config.excitatory_input.i_drop_input = 300 + helpers.capmem_noise()
-        config.inhibitory_input.i_drop_input = 310 + helpers.capmem_noise()
+        # (i_drop_input, which is a global bias current) in order to see
+        # the potential at the readout.
 
         # We choose the excitatory synaptic input line for the integration,
         # therefore we select it as readout source.
diff --git a/src/py/calix/hagen/neuron.py b/src/py/calix/hagen/neuron.py
index 4cfc7894228830f76e0243e50020ce76cdc9f02f..540743e76b5382cf3e40571273528dcf9373a915 100644
--- a/src/py/calix/hagen/neuron.py
+++ b/src/py/calix/hagen/neuron.py
@@ -8,7 +8,7 @@ from typing import Dict, Optional, Union, Callable
 from dataclasses import dataclass
 import numpy as np
 import quantities as pq
-from dlens_vx_v2 import sta, halco, hal, hxcomm, lola
+from dlens_vx_v3 import sta, halco, hal, hxcomm, lola
 
 from calix.common import algorithms, base, helpers
 from calix.hagen import neuron_helpers, neuron_evaluation, \
@@ -76,10 +76,6 @@ class CalibrationResultInternal:
         halco.NeuronConfigOnDLS.size, dtype=int)
     i_syn_inh_shift: np.ndarray = np.empty(
         halco.NeuronConfigOnDLS.size, dtype=int)
-    i_syn_exc_drop: np.ndarray = np.empty(
-        halco.NeuronConfigOnDLS.size, dtype=int)
-    i_syn_inh_drop: np.ndarray = np.empty(
-        halco.NeuronConfigOnDLS.size, dtype=int)
     i_bias_leak: np.ndarray = np.empty(
         halco.NeuronConfigOnDLS.size, dtype=int)
     i_bias_reset: np.ndarray = np.empty(
@@ -93,6 +89,7 @@ class CalibrationResultInternal:
     i_syn_inh_tau: np.ndarray = np.empty(
         halco.NeuronConfigOnDLS.size, dtype=int)
     success: np.ndarray = np.ones(halco.NeuronConfigOnDLS.size, dtype=bool)
+    use_synin_small_capacitance: bool = True
 
     def to_atomic_neuron(self,
                          neuron_coord: halco.AtomicNeuronOnDLS
@@ -125,8 +122,7 @@ class CalibrationResultInternal:
             self.i_syn_exc_gm[neuron_id])
         anexc.i_bias_tau = hal.CapMemCell.Value(
             self.i_syn_exc_tau[neuron_id])
-        anexc.i_drop_input = hal.CapMemCell.Value(
-            self.i_syn_exc_drop[neuron_id])
+        anexc.enable_small_capacitance = self.use_synin_small_capacitance
 
         aninh = atomic_neuron.inhibitory_input
         aninh.i_shift_reference = hal.CapMemCell.Value(
@@ -135,8 +131,7 @@ class CalibrationResultInternal:
             self.i_syn_inh_gm[neuron_id])
         aninh.i_bias_tau = hal.CapMemCell.Value(
             self.i_syn_inh_tau[neuron_id])
-        aninh.i_drop_input = hal.CapMemCell.Value(
-            self.i_syn_inh_drop[neuron_id])
+        aninh.enable_small_capacitance = self.use_synin_small_capacitance
 
         return atomic_neuron
 
@@ -174,13 +169,13 @@ class CalibrationResultInternal:
         return result
 
 
-# pylint: disable=too-many-statements
+# pylint: disable=too-many-statements, too-many-locals
 def calibrate(
         connection: hxcomm.ConnectionHandle, *,
         target_leak_read: Union[int, np.ndarray] = 120,
         tau_mem: pq.quantity.Quantity = 60 * pq.us,
         tau_syn: pq.quantity.Quantity = 0.32 * pq.us,
-        i_synin_gm: int = 300, target_noise: Optional[float] = None,
+        i_synin_gm: int = 450, target_noise: Optional[float] = None,
         readout_neuron: Optional[halco.AtomicNeuronOnDLS] = None,
         initial_configuration: Optional[
             Callable[[hxcomm.ConnectionHandle], None]] = None
@@ -314,20 +309,12 @@ def calibrate(
         builder, readout_neuron=readout_neuron)
     base.run(connection, builder)
 
-    # disable synaptic inputs initially
-    neuron_helpers.reconfigure_synaptic_input(
-        connection, excitatory_biases=0, inhibitory_biases=0)
-
     # call optional program for further initial configuration
     if initial_configuration is not None:
         initial_configuration(connection)
 
     # Initialize return object
     calib_result = CalibrationResultInternal()
-    calib_result.i_syn_exc_drop = initial_config[
-        halco.CapMemRowOnCapMemBlock.i_bias_synin_exc_drop]
-    calib_result.i_syn_inh_drop = initial_config[
-        halco.CapMemRowOnCapMemBlock.i_bias_synin_inh_drop]
     calib_result.i_bias_reset = initial_config[
         halco.CapMemRowOnCapMemBlock.i_bias_reset]
     calib_result.i_syn_exc_tau = initial_config[
@@ -335,6 +322,25 @@ def calibrate(
     calib_result.i_syn_inh_tau = initial_config[
         halco.CapMemRowOnCapMemBlock.i_bias_synin_inh_tau]
 
+    # disable synaptic inputs initially
+    neuron_helpers.reconfigure_synaptic_input(
+        connection, excitatory_biases=0, inhibitory_biases=0)
+
+    # select small capacitance mode for syn. input lines
+    tickets = list()
+    builder = sta.PlaybackProgramBuilder()
+    for coord in halco.iter_all(halco.NeuronConfigOnDLS):
+        tickets.append(builder.read(coord))
+    base.run(connection, builder)
+
+    builder = sta.PlaybackProgramBuilder()
+    for coord, ticket in zip(halco.iter_all(halco.NeuronConfigOnDLS), tickets):
+        config = ticket.get()
+        config.enable_synaptic_input_excitatory_small_capacitance = True
+        config.enable_synaptic_input_inhibitory_small_capacitance = True
+        builder.write(coord, config)
+    base.run(connection, builder)
+
     # Calibrate synaptic input time constant using MADC
     if np.all(tau_syn == 0 * pq.us):
         pass
diff --git a/src/py/calix/hagen/neuron_evaluation.py b/src/py/calix/hagen/neuron_evaluation.py
index ec9d5dd828f97bbeeae793f7d2b91ef5904c3857..340f6811277d3fba49a8c8a7477c70080efa10a2 100644
--- a/src/py/calix/hagen/neuron_evaluation.py
+++ b/src/py/calix/hagen/neuron_evaluation.py
@@ -4,7 +4,7 @@ per quadrant.
 """
 
 import numpy as np
-from dlens_vx_v2 import halco, logger, hxcomm
+from dlens_vx_v3 import halco, logger, hxcomm
 from calix.hagen import neuron_helpers
 
 
diff --git a/src/py/calix/hagen/neuron_helpers.py b/src/py/calix/hagen/neuron_helpers.py
index ec6a60bbbb226475b4984f9024a444ad4ab05eaf..ecd913bcd47c3c35c9337d3eb0d53d54cf7fde7d 100644
--- a/src/py/calix/hagen/neuron_helpers.py
+++ b/src/py/calix/hagen/neuron_helpers.py
@@ -7,7 +7,7 @@ from __future__ import annotations
 from typing import Tuple, Union, List, Optional, Dict
 import numpy as np
 import quantities as pq
-from dlens_vx_v2 import hal, sta, halco, lola, hxcomm
+from dlens_vx_v3 import hal, sta, halco, lola, hxcomm
 
 from calix.common import base, cadc_helpers, helpers
 from calix import constants
@@ -497,8 +497,8 @@ def set_analog_neuron_config(
         halco.CapMemRowOnCapMemBlock.i_bias_reset:
         hal.CapMemCell.Value.max - 2 * noise_amplitude,
         halco.CapMemRowOnCapMemBlock.v_reset: v_leak,
-        halco.CapMemRowOnCapMemBlock.i_bias_synin_exc_drop: 300,
-        halco.CapMemRowOnCapMemBlock.i_bias_synin_inh_drop: 300,
+        halco.CapMemRowOnCapMemBlock.i_bias_synin_exc_coba: 0,
+        halco.CapMemRowOnCapMemBlock.i_bias_synin_inh_coba: 0,
         halco.CapMemRowOnCapMemBlock.i_bias_synin_exc_shift: 310,
         halco.CapMemRowOnCapMemBlock.i_bias_synin_inh_shift: 310,
         halco.CapMemRowOnCapMemBlock.i_bias_synin_exc_tau:
@@ -527,7 +527,8 @@ def set_global_capmem_config(
         halco.CapMemCellOnCapMemBlock.neuron_i_bias_readout_amp: 110,
         halco.CapMemCellOnCapMemBlock.neuron_i_bias_leak_source_follower: 100,
         halco.CapMemCellOnCapMemBlock.syn_i_bias_dac: 1022,
-        halco.CapMemCellOnCapMemBlock.neuron_i_bias_spike_comparator: 200
+        halco.CapMemCellOnCapMemBlock.neuron_i_bias_spike_comparator: 200,
+        halco.CapMemCellOnCapMemBlock.neuron_i_bias_synin_drop: 300
     }
     builder = helpers.capmem_set_quadrant_cells(builder, parameters)
 
diff --git a/src/py/calix/hagen/neuron_leak_bias.py b/src/py/calix/hagen/neuron_leak_bias.py
index 638b53379c9f121235c2181dd54d0d4ed8daccbe..fc5dc2faca033e0739d271492e3b08e88b8af5b9 100644
--- a/src/py/calix/hagen/neuron_leak_bias.py
+++ b/src/py/calix/hagen/neuron_leak_bias.py
@@ -19,7 +19,7 @@ import os
 import numpy as np
 import quantities as pq
 from scipy.optimize import curve_fit
-from dlens_vx_v2 import hal, sta, halco, logger, hxcomm
+from dlens_vx_v3 import hal, sta, halco, logger, hxcomm
 
 from calix.common import algorithms, base, exceptions, madc_base, helpers
 from calix.hagen import neuron_potentials, neuron_helpers
diff --git a/src/py/calix/hagen/neuron_potentials.py b/src/py/calix/hagen/neuron_potentials.py
index 5a8866103ba461b24bd84ff5277f491663db9023..aa64b3378ec03f5ee1f2e62b1f54518239d380ee 100644
--- a/src/py/calix/hagen/neuron_potentials.py
+++ b/src/py/calix/hagen/neuron_potentials.py
@@ -5,7 +5,7 @@ Provides functions to calibrate leak and reset potential.
 from typing import Union, List, Optional
 import numpy as np
 import quantities as pq
-from dlens_vx_v2 import hal, sta, halco, logger, hxcomm
+from dlens_vx_v3 import hal, sta, halco, logger, hxcomm
 
 from calix.common import base, cadc, cadc_helpers, helpers
 from calix.hagen import neuron_helpers
diff --git a/src/py/calix/hagen/neuron_synin.py b/src/py/calix/hagen/neuron_synin.py
index 66228ddcf57eef747b95c91d4b4d7e14ff562aa9..1fdec7c47b73851857c84019c7b3aff994155d48 100644
--- a/src/py/calix/hagen/neuron_synin.py
+++ b/src/py/calix/hagen/neuron_synin.py
@@ -12,7 +12,7 @@ import os
 import numpy as np
 import quantities as pq
 from scipy.optimize import curve_fit
-from dlens_vx_v2 import hal, sta, halco, logger, hxcomm
+from dlens_vx_v3 import hal, sta, halco, logger, hxcomm
 
 from calix.common import algorithms, base, madc_base, cadc_helpers, helpers, \
     exceptions
diff --git a/src/py/calix/hagen/synapse_driver.py b/src/py/calix/hagen/synapse_driver.py
index bf340754a73e210be13d73d2b1ba80acd1306ea4..6831fc0819eafb13bae12850513b65567aa58393 100644
--- a/src/py/calix/hagen/synapse_driver.py
+++ b/src/py/calix/hagen/synapse_driver.py
@@ -13,7 +13,7 @@ be calibrated.
 from typing import Optional, Dict, Union
 from dataclasses import dataclass
 import numpy as np
-from dlens_vx_v2 import hal, sta, halco, logger, hxcomm
+from dlens_vx_v3 import hal, sta, halco, logger, hxcomm
 
 from calix.common import algorithms, base, helpers
 from calix.hagen import multiplication
diff --git a/src/py/calix/multicomp/neuron_icc_bias.py b/src/py/calix/multicomp/neuron_icc_bias.py
index 27cb62426841e4add6e200ce82bce2067d20476f..db54bd565201d0cf248ea2bff7ce7ea85ff4e8fb 100644
--- a/src/py/calix/multicomp/neuron_icc_bias.py
+++ b/src/py/calix/multicomp/neuron_icc_bias.py
@@ -2,7 +2,7 @@ import numpy as np
 import quantities as pq
 
 from typing import Optional, List
-from dlens_vx_v2 import halco, sta, hxcomm, hal
+from dlens_vx_v3 import halco, sta, hxcomm, hal
 
 from calix import constants
 from scipy.optimize import curve_fit
diff --git a/src/py/calix/scripts/calix_generate_default_calibration.py b/src/py/calix/scripts/calix_generate_default_calibration.py
index c2fbc9816761581b64edd6628ac512142c617b49..1522bb38bf91fe1b0554ffd966df15e02b96d0c7 100644
--- a/src/py/calix/scripts/calix_generate_default_calibration.py
+++ b/src/py/calix/scripts/calix_generate_default_calibration.py
@@ -11,9 +11,9 @@ from abc import ABCMeta, abstractmethod
 from pathlib import Path
 from typing import List
 
-from dlens_vx_v2 import logger
-from dlens_vx_v2.hxcomm import ConnectionHandle, ManagedConnection
-from dlens_vx_v2.sta import PlaybackProgramBuilderDumper, ExperimentInit, \
+from dlens_vx_v3 import logger
+from dlens_vx_v3.hxcomm import ConnectionHandle, ManagedConnection
+from dlens_vx_v3.sta import PlaybackProgramBuilderDumper, ExperimentInit, \
     run, to_json, to_portablebinary
 
 import calix.hagen
diff --git a/src/py/calix/spiking/__init__.py b/src/py/calix/spiking/__init__.py
index a29593cf42b742c36687f8835c47c49fcd269f48..67e8629aa70f4ae78a000607ba2e473320e5f6ff 100644
--- a/src/py/calix/spiking/__init__.py
+++ b/src/py/calix/spiking/__init__.py
@@ -4,7 +4,7 @@ from dataclasses import dataclass
 from calix.common import base, cadc, helpers
 from calix.spiking import neuron
 from calix import constants
-from dlens_vx_v2 import sta, hxcomm
+from dlens_vx_v3 import sta, hxcomm
 
 
 @dataclass
diff --git a/src/py/calix/spiking/neuron.py b/src/py/calix/spiking/neuron.py
index 1acbe97c615630cd0cf61a5150e196c9c816dfd5..d73b73501e9b8c5addae92dba9633224119afadc 100644
--- a/src/py/calix/spiking/neuron.py
+++ b/src/py/calix/spiking/neuron.py
@@ -9,7 +9,7 @@ from dataclasses import dataclass
 import numpy as np
 import quantities as pq
 
-from dlens_vx_v2 import sta, halco, hal, hxcomm, lola, logger
+from dlens_vx_v3 import sta, halco, hal, hxcomm, lola, logger
 
 from calix.common import algorithms, base, synapse, helpers
 from calix.hagen import neuron_helpers, neuron_leak_bias, neuron_synin, \
@@ -29,10 +29,15 @@ class _CalibrationResultInternal(hagen_neuron.CalibrationResultInternal):
 
     v_threshold: np.ndarray = np.empty(
         halco.NeuronConfigOnDLS.size, dtype=int)
+    i_syn_exc_coba: np.ndarray = np.zeros(
+        halco.NeuronConfigOnDLS.size, dtype=int)
+    i_syn_inh_coba: np.ndarray = np.zeros(
+        halco.NeuronConfigOnDLS.size, dtype=int)
     syn_bias_dac: np.ndarray = np.empty(
         halco.NeuronConfigBlockOnDLS.size, dtype=int)
     clock_settings: Optional[refractory_period.Settings] = None
     neuron_configs: Optional[List[hal.NeuronConfig]] = None
+    use_synin_small_capacitance: bool = False
 
     def set_neuron_configs_default(
             self, membrane_capacitance: Union[int, np.ndarray],
@@ -130,6 +135,11 @@ class _CalibrationResultInternal(hagen_neuron.CalibrationResultInternal):
         anref.input_clock = hal.NeuronBackendConfig.InputClock(
             self.clock_settings.input_clock[neuron_id])
 
+        atomic_neuron.excitatory_input.i_bias_coba = hal.CapMemCell.Value(
+            self.i_syn_exc_coba[neuron_id])
+        atomic_neuron.inhibitory_input.i_bias_coba = hal.CapMemCell.Value(
+            self.i_syn_inh_coba[neuron_id])
+
         return atomic_neuron
 
     def to_neuron_calib_result(self) -> NeuronCalibResult:
@@ -186,7 +196,7 @@ def calibrate(
         i_synin_gm: Union[int, np.ndarray] = 500,
         membrane_capacitance: Union[int, np.ndarray] = 63,
         refractory_time: pq.quantity.Quantity = 2. * pq.us,
-        synapse_dac_bias: int = 400,
+        synapse_dac_bias: int = 600,
         readout_neuron: Optional[halco.AtomicNeuronOnDLS] = None,
         holdoff_time: pq.Quantity = 0 * pq.us
 ) -> NeuronCalibResult:
@@ -369,10 +379,6 @@ def calibrate(
     builder = sta.PlaybackProgramBuilder()
     builder, initial_config = neuron_helpers.configure_chip(
         builder, readout_neuron=readout_neuron)
-    calib_result.i_syn_exc_drop = initial_config[
-        halco.CapMemRowOnCapMemBlock.i_bias_synin_exc_drop]
-    calib_result.i_syn_inh_drop = initial_config[
-        halco.CapMemRowOnCapMemBlock.i_bias_synin_inh_drop]
     calib_result.i_bias_reset = initial_config[
         halco.CapMemRowOnCapMemBlock.i_bias_reset]
 
@@ -397,8 +403,7 @@ def calibrate(
         connection, excitatory_biases=0, inhibitory_biases=0)
 
     # calibrate leak near middle of CADC range
-    # choose 100 since some neurons can not reach higher leak potentials
-    calibration = neuron_potentials.LeakPotentialCalibration(100)
+    calibration = neuron_potentials.LeakPotentialCalibration(120)
     calibration.run(connection, algorithm=algorithms.NoisyBinarySearch())
 
     # decide how to execute synin calib
diff --git a/src/py/calix/spiking/neuron_threshold.py b/src/py/calix/spiking/neuron_threshold.py
index 2b2f19771e0a1f479ebf7299bcd71043b1b5cef8..3f9611dea5b0a8df9090914a793d14e3b066cd2a 100644
--- a/src/py/calix/spiking/neuron_threshold.py
+++ b/src/py/calix/spiking/neuron_threshold.py
@@ -2,7 +2,7 @@ from copy import deepcopy
 from typing import List, Union, Optional
 import numpy as np
 import quantities as pq
-from dlens_vx_v2 import hal, halco, sta, logger, hxcomm
+from dlens_vx_v3 import hal, halco, sta, logger, hxcomm
 
 from calix.common import algorithms, base, cadc_helpers, helpers, madc_base
 from calix.hagen import neuron_helpers
@@ -496,7 +496,7 @@ class ThresholdCalibMADC(madc_base.Calibration):
             builder, {
                 halco.CapMemRowOnCapMemBlock.i_mem_offset: 250,
                 halco.CapMemRowOnCapMemBlock.i_bias_leak: 0,
-                halco.CapMemRowOnCapMemBlock.v_reset: 450})
+                halco.CapMemRowOnCapMemBlock.v_reset: 0})
         builder = helpers.wait(builder, constants.capmem_level_off_time)
 
         # run program
@@ -675,7 +675,7 @@ class ThresholdCalibCADC(base.Calibration):
             builder, {
                 halco.CapMemRowOnCapMemBlock.i_mem_offset: 70,
                 halco.CapMemRowOnCapMemBlock.i_bias_leak: 0,
-                halco.CapMemRowOnCapMemBlock.v_reset: 450})
+                halco.CapMemRowOnCapMemBlock.v_reset: 0})
         builder = helpers.wait(builder, constants.capmem_level_off_time)
 
         # set neuron config suitably
diff --git a/src/py/calix/spiking/refractory_period.py b/src/py/calix/spiking/refractory_period.py
index 4928cb73c8ff6f2ace4e3b50d9e69074b5c074ad..5bb81dd78bc611324ddf28373d4a9e8ecb2b4cbf 100644
--- a/src/py/calix/spiking/refractory_period.py
+++ b/src/py/calix/spiking/refractory_period.py
@@ -9,7 +9,7 @@ from typing import Optional
 import numpy as np
 import quantities as pq
 
-from dlens_vx_v2 import hal
+from dlens_vx_v3 import hal
 
 
 # Assume refractory clock frequency yo be unchanged after
diff --git a/src/py/calix/spiking/synapse_driver.py b/src/py/calix/spiking/synapse_driver.py
index 8813df9eff369ba78b37b0c82c444e6a4b8ad2fe..e000d1068af0ae91ac986596c179df71f43b3ca7 100644
--- a/src/py/calix/spiking/synapse_driver.py
+++ b/src/py/calix/spiking/synapse_driver.py
@@ -5,7 +5,7 @@ for the usual spiking mode.
 
 from typing import Union
 import numpy as np
-from dlens_vx_v2 import hal, halco, sta, hxcomm, logger
+from dlens_vx_v3 import hal, halco, sta, hxcomm, logger
 
 from calix import constants
 from calix.common import base, helpers
diff --git a/tests/hw/py/connection_setup.py b/tests/hw/py/connection_setup.py
index a2b6fac1df9e375998afad20715335926046e557..a0aafa33434a9f0cfdcda928c47853408d8473a7 100644
--- a/tests/hw/py/connection_setup.py
+++ b/tests/hw/py/connection_setup.py
@@ -3,7 +3,7 @@ from pathlib import Path
 import pickle
 import os
 
-from dlens_vx_v2 import sta, hxcomm, logger
+from dlens_vx_v3 import sta, hxcomm, logger
 
 from calix.common import base
 import calix.scripts.calix_generate_default_calibration as calib_generator
diff --git a/tests/hw/py/test_cadc_assignment.py b/tests/hw/py/test_cadc_assignment.py
index 1505f11da30d3f9b15bbe6154cb5746ad92f741d..9cf4a27ab2236df376c7fc41f86f6b58e095574c 100644
--- a/tests/hw/py/test_cadc_assignment.py
+++ b/tests/hw/py/test_cadc_assignment.py
@@ -8,7 +8,7 @@ changing the leak potential in one neuron after another.
 
 import unittest
 import numpy as np
-from dlens_vx_v2 import sta, halco, hal, logger
+from dlens_vx_v3 import sta, halco, hal, logger
 
 from calix.common import base, cadc, helpers
 from calix.hagen import neuron_helpers
diff --git a/tests/hw/py/test_cadc_calibration.py b/tests/hw/py/test_cadc_calibration.py
index 3a51b66b74af7f1752e9a6e8c6ed0ebb22230812..d83d71cf1fb63a6a8f81bf5ebdbf95b9af494dc2 100644
--- a/tests/hw/py/test_cadc_calibration.py
+++ b/tests/hw/py/test_cadc_calibration.py
@@ -5,7 +5,7 @@ calibration are significantly lower than one expects without calibration.
 
 import unittest
 import numpy as np
-from dlens_vx_v2 import sta, halco, hal, logger
+from dlens_vx_v3 import sta, halco, hal, logger
 
 from calix.common import cadc, cadc_helpers, helpers
 from calix import constants
diff --git a/tests/hw/py/test_connection_setup.py b/tests/hw/py/test_connection_setup.py
index b7b10e7c255cf4205a7cfe1ae18da63cc47f1513..c3d3cbab724147c0cdca0233e09bb7b49f7891d9 100644
--- a/tests/hw/py/test_connection_setup.py
+++ b/tests/hw/py/test_connection_setup.py
@@ -9,7 +9,7 @@ and serializes default calibrations.
 import unittest
 import os
 
-from dlens_vx_v2 import logger
+from dlens_vx_v3 import logger
 
 from connection_setup import ConnectionSetup
 
diff --git a/tests/hw/py/test_correlation.py b/tests/hw/py/test_correlation.py
index 994c6f3ee6e020c06acbdc5e1222738a05d586e9..693acec4f3c02a53a54cea8f3a501cb3288aa11e 100644
--- a/tests/hw/py/test_correlation.py
+++ b/tests/hw/py/test_correlation.py
@@ -10,7 +10,7 @@ from typing import List
 import numpy as np
 import quantities as pq
 
-from dlens_vx_v2 import hal, halco, sta, lola, logger
+from dlens_vx_v3 import hal, halco, sta, lola, logger
 from calix.hagen import base, cadc, helpers
 from calix import constants
 
diff --git a/tests/hw/py/test_hagen_input.py b/tests/hw/py/test_hagen_input.py
index cd9b58086a6fd418fc4bec4167be9bd5c1e2bf57..63c5084994c4715b19901267ea7bd68f4cc7387d 100644
--- a/tests/hw/py/test_hagen_input.py
+++ b/tests/hw/py/test_hagen_input.py
@@ -9,7 +9,7 @@ from typing import Optional
 
 import numpy as np
 
-from dlens_vx_v2 import hal, halco, sta, logger
+from dlens_vx_v3 import hal, halco, sta, logger
 
 from calix.common import base, helpers
 from calix.hagen import synapse_driver
diff --git a/tests/hw/py/test_hagen_multiplication.py b/tests/hw/py/test_hagen_multiplication.py
index b638dc54e2d1068d404bc14c1793d60ac5eb89b5..91eee82e8505fe76d372499d10e45b431dd0e1f0 100644
--- a/tests/hw/py/test_hagen_multiplication.py
+++ b/tests/hw/py/test_hagen_multiplication.py
@@ -8,7 +8,7 @@ import unittest
 import numpy as np
 import matplotlib.pyplot as plt
 
-from dlens_vx_v2 import halco, logger
+from dlens_vx_v3 import halco, logger
 
 from calix.hagen import multiplication
 import calix.hagen
diff --git a/tests/hw/py/test_madc_recorder.py b/tests/hw/py/test_madc_recorder.py
index 646db4f6e56e6b9210c3d4a7357b3863967355c8..6f7c104e1ac23d4098661a580feb242f8cf48c91 100644
--- a/tests/hw/py/test_madc_recorder.py
+++ b/tests/hw/py/test_madc_recorder.py
@@ -7,7 +7,7 @@ import os
 
 from calix.common import madc_base
 
-from dlens_vx_v2 import sta, logger
+from dlens_vx_v3 import sta, logger
 
 from connection_setup import ConnectionSetup
 
diff --git a/tests/hw/py/test_multicompartment.py b/tests/hw/py/test_multicompartment.py
index 882cb65af0de0fe0c83bf6ab4cf54264479e100c..7ce3272e34af53f07b541c2c41da0f0ff15ea96c 100644
--- a/tests/hw/py/test_multicompartment.py
+++ b/tests/hw/py/test_multicompartment.py
@@ -5,7 +5,7 @@ from typing import List
 import numpy as np
 import quantities as pq
 
-from dlens_vx_v2 import halco, sta, hal, logger
+from dlens_vx_v3 import halco, sta, hal, logger
 
 from calix.common import algorithms, base, cadc
 from calix.hagen import neuron_helpers
diff --git a/tests/hw/py/test_neuron_distribution.py b/tests/hw/py/test_neuron_distribution.py
index c90b6bc1f74db7f033c40d77627be8e9e826b885..d7e8bd3fff39b142ec019d2beebbe6558acf431b 100644
--- a/tests/hw/py/test_neuron_distribution.py
+++ b/tests/hw/py/test_neuron_distribution.py
@@ -5,7 +5,7 @@ import numpy as np
 import scipy.stats
 import quantities as pq
 
-from dlens_vx_v2 import hal, halco, sta, hxcomm, logger
+from dlens_vx_v3 import hal, halco, sta, hxcomm, logger
 
 from calix.common import base
 from calix.hagen import neuron_potentials, neuron_leak_bias, neuron_synin
diff --git a/tests/hw/py/test_neuron_integration.py b/tests/hw/py/test_neuron_integration.py
index a8447eb3d455544831287a317615ad7999cfd817..a3fe7c615e893ff1cfc0353a39a2121d91fbc020 100644
--- a/tests/hw/py/test_neuron_integration.py
+++ b/tests/hw/py/test_neuron_integration.py
@@ -10,7 +10,7 @@ import os
 import numpy as np
 import quantities as pq
 
-from dlens_vx_v2 import hal, sta, halco, logger, hxcomm
+from dlens_vx_v3 import hal, sta, halco, logger, hxcomm
 
 from calix.common import base, cadc, cadc_helpers, helpers
 from calix.hagen import neuron, neuron_helpers
@@ -42,7 +42,7 @@ class TestNeuronCalib(ConnectionSetup):
     def measure_amplitudes(
             cls,
             connection: hxcomm.ConnectionHandle, *,
-            excitatory: bool = True, n_events: int = 10,
+            excitatory: bool = True, n_events: int = 12,
             wait_between_events: pq.quantity.Quantity = 1.2 * pq.us,
             n_runs: int = 30) -> Tuple[np.ndarray, np.ndarray]:
         """
diff --git a/tests/hw/py/test_neuron_reference_madc.py b/tests/hw/py/test_neuron_reference_madc.py
index ea1b4e0ee71056163600f458317a14e1b3c83ae0..df620d2328fa63a78f62668d63ac48815c85f7ef 100644
--- a/tests/hw/py/test_neuron_reference_madc.py
+++ b/tests/hw/py/test_neuron_reference_madc.py
@@ -7,7 +7,7 @@ the drift of the membrane potentials is not too large.
 import unittest
 
 import numpy as np
-from dlens_vx_v2 import halco, sta, logger
+from dlens_vx_v3 import halco, sta, logger
 
 from calix.common import algorithms, base, helpers
 from calix.hagen import neuron_synin
diff --git a/tests/hw/py/test_neuron_spiking.py b/tests/hw/py/test_neuron_spiking.py
index 8496e93088572fd317d7ae7390d0d075679cec99..b8c7bdb9047088ccd8324412c39482260966b3a6 100644
--- a/tests/hw/py/test_neuron_spiking.py
+++ b/tests/hw/py/test_neuron_spiking.py
@@ -4,7 +4,7 @@ from typing import Optional
 import numpy as np
 import quantities as pq
 
-from dlens_vx_v2 import hal, halco, sta, hxcomm, logger
+from dlens_vx_v3 import hal, halco, sta, hxcomm, logger
 
 from calix.common import base, helpers
 from calix.hagen import neuron_helpers
diff --git a/tests/hw/py/test_neuron_threshold_calibration.py b/tests/hw/py/test_neuron_threshold_calibration.py
index 6e4961efb117080ae4fcd51cc1c6db96b741e8d7..00b0095968cc264fd6a1cf2fdacd868a19244e2c 100644
--- a/tests/hw/py/test_neuron_threshold_calibration.py
+++ b/tests/hw/py/test_neuron_threshold_calibration.py
@@ -3,7 +3,7 @@ import unittest
 import quantities as pq
 import numpy as np
 
-from dlens_vx_v2 import hal, halco, sta, logger, hxcomm
+from dlens_vx_v3 import hal, halco, sta, logger, hxcomm
 
 from calix.common import algorithms, base, cadc, helpers
 from calix.hagen import neuron, neuron_potentials, neuron_helpers
@@ -40,14 +40,10 @@ class NeuronThresholdTest(ConnectionSetup):
 
         cadc.calibrate(self.connection)
 
-        # Increase i_synin_gm a bit to facilitate spiking.
-        # Set target_noise to None in order to keep the membrane time
-        # constant calibrated, and not optimize for noise.
-        # Set tau_syn in order to have it calibrated and not just configured
-        # to the minimum possible setting.
+        # using hagen mode calib: set syn. input bias and tau_syn
+        # more suitable for spiking operation
         neuron.calibrate(
-            self.connection, i_synin_gm=140, target_noise=None,
-            tau_syn=2 * pq.us)
+            self.connection, i_synin_gm=300, tau_syn=2 * pq.us)
 
     @staticmethod
     def preconfigure(connection: hxcomm.ConnectionHandle,
diff --git a/tests/hw/py/test_stp_calibration.py b/tests/hw/py/test_stp_calibration.py
index e4bb6f15a903fcc3c72444950633325d15cb81b0..b762fb4d30d02292d686c035c507429d27b5532a 100644
--- a/tests/hw/py/test_stp_calibration.py
+++ b/tests/hw/py/test_stp_calibration.py
@@ -2,7 +2,7 @@ import unittest
 
 import numpy as np
 
-from dlens_vx_v2 import hal, halco, sta, logger, hxcomm
+from dlens_vx_v3 import hal, halco, sta, logger, hxcomm
 
 from calix.common import algorithms, base, cadc, synapse, helpers
 from calix.hagen import neuron_helpers
diff --git a/tests/sw/py/mock_connection_setup.py b/tests/sw/py/mock_connection_setup.py
index 28f8223ed9bf6c0e3af4ba2ec00f2adc8552da8d..241e496d39a66cdd43377d279ebda44487f162c2 100644
--- a/tests/sw/py/mock_connection_setup.py
+++ b/tests/sw/py/mock_connection_setup.py
@@ -1,5 +1,5 @@
 import unittest
-from dlens_vx_v2 import hxcomm
+from dlens_vx_v3 import hxcomm
 
 
 class ConnectionSetup(unittest.TestCase):
diff --git a/tests/sw/py/test_algorithms.py b/tests/sw/py/test_algorithms.py
index 36fcae3b05e5368cecb3fee6d1bb60d07466b0f7..e23106e95ba57d8ad3c594a625078338e1049bcc 100644
--- a/tests/sw/py/test_algorithms.py
+++ b/tests/sw/py/test_algorithms.py
@@ -2,7 +2,7 @@ import numbers
 from typing import Optional, Union, ClassVar
 import unittest
 import numpy as np
-from dlens_vx_v2 import sta, logger
+from dlens_vx_v3 import sta, logger
 
 from calix.common import algorithms, base
 
diff --git a/tests/sw/py/test_boundary_check.py b/tests/sw/py/test_boundary_check.py
index c487ffeb4f9c689250db191157fce3b7f3cf97f2..ce27ba83d47fd113bd9b282ef486fa7a9ec362fe 100644
--- a/tests/sw/py/test_boundary_check.py
+++ b/tests/sw/py/test_boundary_check.py
@@ -1,7 +1,7 @@
 import unittest
 import numpy as np
 
-from dlens_vx_v2 import logger
+from dlens_vx_v3 import logger
 from calix.common import base, boundary_check
 
 
diff --git a/tests/sw/py/test_generic_algorithm_calibration.py b/tests/sw/py/test_generic_algorithm_calibration.py
index 7c8ee7539b3181f68e5809a8eaa9770ccd0eec20..9f73a42f4cdc0a0bf4357f4e410b1603253b3aab 100644
--- a/tests/sw/py/test_generic_algorithm_calibration.py
+++ b/tests/sw/py/test_generic_algorithm_calibration.py
@@ -3,7 +3,7 @@ import pkgutil
 import unittest
 from typing import Callable, Set, Type
 
-from dlens_vx_v2 import logger
+from dlens_vx_v3 import logger
 import calix
 from calix.common import exceptions
 from calix.common.base import Algorithm, Calibration
diff --git a/tests/sw/py/test_refractory_period.py b/tests/sw/py/test_refractory_period.py
index ffaa3024af3f0dc97cf7a7d153c227ae5b24f64a..f5915a99a79febff321dcf2b8f98696e4f4d527b 100644
--- a/tests/sw/py/test_refractory_period.py
+++ b/tests/sw/py/test_refractory_period.py
@@ -3,7 +3,7 @@ from itertools import product
 import numpy as np
 import quantities as pq
 
-from dlens_vx_v2 import halco, hal, logger
+from dlens_vx_v3 import halco, hal, logger
 
 from calix.spiking.refractory_period import calculate_settings, Settings, \
     _clock_period, _clock_base_frequency
diff --git a/wscript b/wscript
index 3bae625fd52d53f61638e1c0c7dec833c4c06494..b5d6a039034647480d683b61a315b5622b073086 100644
--- a/wscript
+++ b/wscript
@@ -30,7 +30,7 @@ def build(bld):
     bld(name='calix_pylib',
         features='py pylint pycodestyle',
         source=bld.path.ant_glob('src/py/**/*.py'),
-        use='dlens_vx_v2',
+        use='dlens_vx_v3',
         install_path='${PREFIX}/lib',
         install_from='src/py',
         relative_trick=True,