Skip to content

Major Release: 8.0.0

Compare
Choose a tag to compare
@thattil thattil released this 15 Nov 13:55
· 1 commit to main since this release

SLS Detector Package Major Release 8.0.0 released on 13.11.2023

This document describes the differences between v8.0.0 and v7.0.3

CONTENTS
--------
1           Compilation Changes
2           New or Changed Features
    2.1         Breaking API
    2.2         Resolved or Changed Features
    2.3         New Features
3           On-board Detector Server Compatibility
4           Firmware Requirements
5           Kernel Requirements
6           Download, Documentation & Support

2 Compilation Changes

*   Minimum CMake version changed from 3.12 to 3.14


*   Internal zmq lib
    Building zmq from tar file in repo (libs/libzmq/libzmq-4.3.4.tar.gz), 
    but added option (SLS_FETCH_ZMQ_FROM_GITHUB) to pull zmq version (v4.3.4) 
    from github (https://github.com/zeromq/libzmq.git)


*   Internal pybind11 lib
    Building pybind11 from tar file in repo (libs/pybind11/v2.11.0.tar.gz), 
    but added option (SLS_FETCH_PYBIND11_FROM_GITHUB) to pull pybind11 version 
    (v2.11.0) from github (https://github.com/pybind/pybind11)        

2 New, Changed or Resolved Features

2.1 Breaking API

Firmware
--------

*   [Jungfrau] Status register and Sync mode fix
    The regiser bit definition changed and fixes for stable control in sync mode.
    Effect: Master and slaves give same status (previously master is sometimes 'idle' 
    when acquisition is stopped), same #frames left and #nextframenumber.
    Also ERROR status connected, but never noticed to occur.

    For user, everything is transparent unless one touches status register
    using advanced commands. 


*   [Moench] Status: Development mode
    Moench is now being made compatible with Jungfrau v2.0 readout boards. 
    Hence, firmware and software is in development mode. 
    7.x.x will continue to have fixes for Moench until this version is deployed.


*   [Ctb] Fixes and features described later on.


Client
======


*   Datatype change of port numbers from int to uint16_t   
    API: setVirtualDetectorServers, 
    get/setRxPort, get/setControlPort, get/setStopPort,
    get/setDestinationUDPPort(2), get/setRxZmqPort, get/setClientZmqPort


*   [Eiger] versions, hardware version, febl/r firmware version 
    Versions command modified to give more info about hardware version
    ['fx30', 'fx70'] and Febl/r firmware versions.
    Command line: versions (output modified), hardwareversion (added for Eiger)
    API added for Eiger: getHardwareVersion, getFrontEndFirmwareVersion
    Enums added: fpgaPosition {FRONT_LEFT, FRONT_RIGHT}


*   [Ctb] Voltage->Power name change
    Command line: voltagelist ->powerlist
    API: get/setVoltage -> get/setPower, get/setVoltageList -> get/setPowerList,
    getMeasuredVoltage -> getMeasuredPower

2.2 Resolved or Changed Features

Detector Server
---------------


*   Set bit and clear bit validation
    Previously, validation expected all the other bits in the register to 
    not change. Now, it only validates the selected bit.


*   [Jungfrau] Electron collection mode (bit 14 of 0x5D register)
    Affected Command line: setbit, clearbit, reg
    Affected API: setBit, clearBit, writeRegister
    Electron collection mode and requires chip reconfiguration. 
    Temporary fix added that touching this bit will reconfigure chip if chip 
    is v1.1 and powered on. Permanent fix by introducing a command for the 
    same in future release.


*   [Ctb] Fixes

    -   Patioctrl, patsetbit, patbitmask
        MSB (64 bit unsigned) could not be set as a value of -1 was interpreted 
        as a 'get'. Fixed in server. 

    -   Allow dac tristate when v_limit is set. Fixed.

    -   Changing fw bit from disable analog to enable analog

    -   Allow adc enable for 1 GbE and 10GbE to be 0.

    -   Slow ADCs previously misread (a high 5k+ value). Firmware updated 
        and software adjusted now.

    -   Allow non blocking acquire for 1GbE. Added Transmitting status when it
        might still be reading from fifo.

    -   Clean memory before reading from fifo in 1GbE mode. Read fifo then
        RD strobe (corresponding firmware fix) fixes number of reads, but 
        increases all pipelines by 1.
    
    -   Fixed pattern viewer (auto legend buf without wait and loop), allow 
        pyat files. (/patterngenerator)


Simulator
---------


*   Unique TCP port for multiple simulators
    Checks include unique TCP port-hostname combo.


Receiver
--------


*   Unique TCP port for multiple receivers
    7.x.x already has automatically increasing TCP ports in shared memory 
    for multiple receivers. Now, checks include unique TCP port-hostname 
    combo.


*   [Ctb] Fixes

    -   Readout mode updated
        'rx_hostname' should configure the receiver with parameters from detector,
        but readout mode in receiver always configured at start up to Analog only. 
        Fixed.

    -   Incorrect image size in zmq header, which happens when dbit list is 
        less than 64 bits. Fixed.

    -   Rearranging digital data when dbit list less than 64 bits fixed.


Client
------


*   [Jungfrau][Mythen3][Gotthard2] Sync mode should have at least one master
    Multi module synced detectors should have at least one master when 
    starting acquisition, else it will throw. Once master is done acquiring
    (blocking mode), status of all modules checked to ensure none of the 
    slaves in waiting due to hardware issues such as cabling.

2.3 New Features

Client
------


*   [Jungfrau] Pedestal mode
    Command line: pedestalmode
    API: get/setPedestalMode
    Example: 
        pedestalmode 0 # turns off pedestal mode
        pedestalmode 50 10 # turns on pedestal mode (50 pedestal frames, 10 loops)
    
    In pedestal mode, number of frames/triggers
    is overwritten by '#pedestal_frames x #pedestal_loops x 2'.
    In auto timing mode or trigger mode with #frames > 1, #frames is overwritten
    with #triggers is 1. Otherwise, #triggers is overwritten with #frames is 1.
    In pedestal mode, one cannot set #frames, #triggers or timing mode (exception).

    Disabling pedestal mode will set back to normal mode with normal previous
    values of #frames and #triggers.


*   Source UDP IP: Auto
    Command line: udp_srcip, udp_srcip2
    API: get/setSourceUDPIP(2)
    Allow 'auto' for udp_srcip to pick up IP from detector hostname. Not allowed
    for Gotthard1.


*   Custom row and column for detector UDP header
    Command line: row, column
    API: get/setRow, get/setColumn
    By default, row and column of module is determined in a pre-determined 
    manner or by custom detector size (Command line: detsize).
    This is useful if user accesses row and column in multi- detector UDP header 
    or for the GUI to rearrange for complete image.
    Option now added to set custom row and column. 


*   [Ctb] Features

    -   List for ADC, signal, power, slowadc 
        Also allow their list to set names and to obtain their indices and values.

        Command line: dacname, dacindex, 
        adclist, adcname, adcindex, 
        signallist, signalname,signalindex, 
        powerlist, powername, powerindex, powervalues,
        slowadclist, slowadcname, slowadcindex, slowadcvalues

        API: get/setDacName, getDacIndex, 
        get/setAdcNames, getAdcIndex, get/setAdcName,
        get/setSignalNames, getSignalIndex, get/setSignalName,
        get/setPowerNames, getPowerIndex, get/setPowerName, getPowerList,
        get/setSlowADCNames, getSlowADCIndex, get/setSlowADCName, getSlowADCList

    -   Added more modes for transceiver in read out mode.
        Allow to set number of samples and enable mask for transceiver.

        Command line: romode (more modes: 'transceiver', 'digital_transceiver'),
        tsamples, transceiverenable
        API: get/setTransceiverEnableMask, get/setNumberOfTransceiverSamples,
        get/setReadoutMode (more enums: TRANSCEIVER_ONLY, DIGITAL_AND_TRANSCEIVER)


    -   Command to get file name with path of last pattern uploaded.
        Command line: patfname
        API: getPatterFileName


*   Automatic test script for all virtual simulators added.

2 On-board Detector Server Compatibility

Eiger       8.0.0
Jungfrau    8.0.0
Mythen3     8.0.0
Gotthard2   8.0.0
Gotthard    8.0.0
Moench      8.0.0
Ctb         8.0.0


On-board Detector Server Upgrade
--------------------------------

From v6.1.0 (without tftp):
    Using command 'updatedetectorserver'
From 5.0.0 (with tftp):
    Using command 'copydetectorserver'

Instructions available at
    https://slsdetectorgroup.github.io/devdoc/serverupgrade.html

3 Firmware Requirements

Eiger       02.10.2023 (v32)                    (updated in 7.0.3)

Jungfrau    20.09.2023 (v1.5, HW v1.0)          (updated in 8.0.0)
            21.09.2023 (v2.5, HW v2.0)          (updated in 8.0.0)

Mythen3     24.01.2023 (v1.4)                   (updated in 7.0.0)

Gotthard2   23.11.2022 (v0.3)                   (updated in 7.0.0)

Gotthard    08.02.2018 (50um and 25um Master)
            09.02.2018 (25 um Slave) 

Moench      10.07.2023 (v0.3.2)                 (updated in 8.0.0, under development)

Ctb         28.08.2023 (v1.2)                   (updated in 8.0.0)


Detector Upgrade
----------------

The following can be upgraded remotely:

Eiger      via bit files
Jungfrau   via command <.pof>
Mythen3    via command <.rbf>
Gotthard2  via command <.rbf>
Moench     via command <.pof>
Ctb        via command <.pof>

Gotthard cannot be upgraded remotely  

Except Eiger, 
    upgrade 
        Using command 'programfpga' or

    udpate both server and firmware simultaneously
        Using command 'update'


Instructions available at
    https://slsdetectorgroup.github.io/devdoc/firmware.html

4 Kernel Requirements

Blackfin 
--------
Latest version: Fri Oct 29 00:00:00 2021

Older ones will work, but might have issues with programming firmware via
the package.

Nios
-----
Compatible version: Mon May 10 18:00:21 CEST 2021

Kernel Upgrade
---------------
Eiger   via bit files
Others  via command

Commands: udpatekernel, kernelversion
Instructions available at
    https://slsdetectorgroup.github.io/devdoc/commandline.html
    https://slsdetectorgroup.github.io/devdoc/detector.html
    https://slsdetectorgroup.github.io/devdoc/pydetector.html

5 Download, Documentation & Support

Download
--------

The Source Code:
     https://github.com/slsdetectorgroup/slsDetectorPackage
        
Documentation
-------------

Installation:
    https://slsdetectorgroup.github.io/devdoc/installation.html

Quick Start Guide:
    https://slsdetectorgroup.github.io/devdoc/quick_start_guide.html
    
Firmware Upgrade:
    https://slsdetectorgroup.github.io/devdoc/firmware.html

Detector Server upgrade:
    https://slsdetectorgroup.github.io/devdoc/serverupgrade.html

Detector Simulators:
    https://slsdetectorgroup.github.io/devdoc/virtualserver.html

Consuming slsDetectorPackage:
    https://slsdetectorgroup.github.io/devdoc/consuming.html
    
API Examples:
    https://github.com/slsdetectorgroup/api-examples

Command Line Documentation:
    https://slsdetectorgroup.github.io/devdoc/commandline.html

C++ API Documentation:
    https://slsdetectorgroup.github.io/devdoc/detector.html
   
C++ API Example:
    https://slsdetectorgroup.github.io/devdoc/examples.html#
    
Python API Documentation:
    https://slsdetectorgroup.github.io/devdoc/pygettingstarted.html

Python API Example:
    https://slsdetectorgroup.github.io/devdoc/pyexamples.html

Receivers (including custom receiver):
    https://slsdetectorgroup.github.io/devdoc/receivers.html
    https://slsdetectorgroup.github.io/devdoc/slsreceiver.html

Detector UDP Header:
    https://slsdetectorgroup.github.io/devdoc/udpheader.html
    https://slsdetectorgroup.github.io/devdoc/udpdetspec.html

slsReceiver Zmq Format:
    https://slsdetectorgroup.github.io/devdoc/slsreceiver.html#zmq-json-header-format

TroubleShooting:
    https://slsdetectorgroup.github.io/devdoc/troubleshooting.html
    https://slsdetectorgroup.github.io/devdoc/troubleshooting.html#receiver-pc-tuning-options
    
Further Documentation:
    https://www.psi.ch/en/detectors/documentation
    
Info on Releases:
    https://www.psi.ch/en/detectors/software


Support
-------

    dhanya.thattil@psi.ch
    erik.frojdh@psi.ch