Skip to content

Optimize the S-curve scan speed

Laurent Petre requested to merge feature/optimize-scurve-scan into main


This MR aims at improving the S-curves scan speed. Indeed, the first implementation from !216 (merged), while fully functional, showed speed limitations. The most critical register accesses are optimized, reducing the number of LMDB lookups and avoiding useless register writes.

The total improvement is the following. For the 96 VFATs on the GE1/1 integration setup:

  • Before: 4 minutes 47 with monitoring (~10 kHz)
  • After: 1 minute 45 with monitoring (~30 kHz) and 1 minute 24 without monitoring (~40 kHz)

Mind that the previous numbers are given with compiler optimization enabled. After this series of commits, the improvement is limited, but still present: 1 minute 51 seconds with the monitoring.

Related Issue

How Has This Been Tested?

The S-curves scan routine as well as data taking still runs seamlessly on the GE1/1 integration setup in b904.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)


  • My code follows the code style of this project.
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have read the CONTRIBUTING document.
  • I have added tests to cover my changes.
  • All new and existing tests passed.
Edited by Laurent Petre

Merge request reports