One access lib to rule them all

This is supposed to be an up-to-date overview of the requirements for a readout library and the status and features of the current implementations. This page is linked from the nurdlib homepage.

Requirements

See comments below.

Requirement acvmelib (A. Charpy) nurdlib (H. Törnqvist
+ many others)
libvme (B. Löher) Comments
Setup from (text) config file yes yes yes
DAQ env. agnostic yes yes yes
Data pump interface 50% - depend on BMA and shadow yes yes
ANSI C yes yes yes -ansi -pedantic-errors -Wall -Werror
-Wmissing-prototypes -Wshadow
-Wstrict-prototypes (-W or -Wextra)
SBC agnostic yes yes yes
Block transfer w-i-p and lots of questions!!!
waiting mode for discussion
1-> require test mapping
2-> require implement loop till berr2
Static
BMA
XPC 3.2.3
XPC 3.3.10
yes
Config consistency check per-module yes no
Firmware version check yes per-module per-module
Maintained setup state yes/can be disabled immutable yes
Fast up to config yes yes
Shallow data check yes per-module per-module Fast check after readout.
Deep data check yes per-module no Thorough check whenever.
Automatic pedestal cuts 30% yes no
Adaptive CVT Tag added to lib DAQ inteface -
need specific modules?
yes no
Multi-event mode according module yes no
Shadowed readout (where avail.) work-in-progress yes no
Debug mode Per module and/or process global and per
module override
verbose on startup
Module register dump yes yes no
Module barriers no yes no To guarantee identification with UCESB.
passes valgrind --memcheck yes non-signaling tests yes
log and debug messages yes message callback,
stdio default
no
API for module interface yes yes yes
API for 'f_user' yes yes yes
one exec file / env (SBC+OS) yes yes yes
Cmdline diagnostic tools w/wo config file, able to build sequence yes no
Non-lib code outside src tree yes yes yes Local config etc, for easy versioning.
Build prefs outside Makefile/git yes yes Machine dependent settings.
Automatic code-selection yes, hconf Caches env-dep code in build.
Automatic GCC flags selection yes, hconf Caches GCC flags in build.
Untidy system header replacement yes Creates local fixed sys headers to adhere to strict ANSI standards.
Updated - 2020-07-28 -

Command line tool:

    ctrl -h|--help
         -a|--addr=host[:port]
         -c|--crate-list
         -i|--crate=i
         -m|--module-list
         -j|--module=j
         -d|--register-dump
         -r|--raw-read=offset
         -w|--raw-write=offset,value
         -C|--crate-info

Code size

less is more

altho for tests, less is bad

Values as reported by "cat `find <dir> -type f` | wc -c" (k=1000,rounded up) in clean git repo.

Part acvmelib (A. Charpy) nurdlib (H. Törnqvist) libvme (B. Löher)
General 452 kB 279 kB 246 kB
Modules 453 kB 483 kB 20 kB + 630 kB generated
Config - 55 kB 71 kB
Total (above) 905 kB 817 kB 337 kB
Tests 13 kB 162 kB 0 kB
Test coverage - 42% (2813/6603 -
Reference Implementation - - udaq: 30 kB
Updated - 2016-03-10 -

Supported modules

This table shows the supported hardware for each library. Rates were measured using a RIO4 SBC. A performance increase of up to 30% from LynxOS to Linux is to be expected.

Secret code:

  1. b = block transfer
  2. m = multi-events
  3. s = shallow check
  4. c = deep check

Bus Module acvmelib (A.Charpy) Size nurdlib (H. Törnqvist) Size libvme (B. Löher) Size Comments
VME-bus yes yes yes
Caen V775/785/792/962 yes bmsc 46 kB no
Caen V820/830 yes bmsc 18 kB
Caen V895 yes 6 kB
Caen V1190/1290 yes bmsc 37 kB
Caen V1742 require update no
Mesytec MADC32/MQDC32/MTDC32 kinda bmsc 38 kB kinda
Mesytec MCFD32 no no no
Struck SIS3302? no no
Struck SIS3316 no yes 91 kB yes Readout rate: 30 MB/s (LynxOS) 40 MB/s (Linux)
GSI SAM3/4/5 no b 13 kB no GTB interface
GSI Tridi/Vulom (TRLO II) no msc 36 kB no
GSI VFTX2 48. kHz (Linux) sc 10 kB no
GSI VUPROM (TDC v3.5) yes yes 11 kB no REQUIRE FIRMWARE update
Waste to much vme access
GSI VETAR yes 13 kB
GTB yes
SIDEREM yes
CROS3 bsc 17 kB
TACQuila bsc 10 kB
PCIe
PEX??? yes optical (Gosip?) interface
Gosip?
GSI TAMEX yes (2,3,PADI support)
GSI FEBEX yes
GSI GEMEX no
GSI CTDC/KILOM yes
Updated - 2020-07-28 -

Currently operational machines/systems

(n) = 24..27 address, (0n) = 20..27 address and so on.

Hostname Architecture OS Used for Modules Current lib Arguments against others
r3-14 PPC-RIO3 LynxOS NeuLAND TRIDI(2), SAM5 legacy-HTJ SAM+Tacquila support
r3-15 PPC-RIO3 LynxOS NeuLAND backup TRIDI(2), SAM4 legacy-HTJ SAM+Tacquila support
r3-30 PPC-RIO3 LynxOS Master TRIDI(2), VULOM(9) legacy-HTJ Old TRLO firmware
r4l-5 PPC-RIO4 Linux TOF13 TRIDI(2), VFTX2(9,a,b,c) HT Builds and runs fast
r4l-6 PPC-RIO4 Linux LOS+ROLU TRIDI(2), TRIDI(3), MADC(05), VFTX(9) HT VETAR
r4l-7 PPC-RIO4 Linux S2 WR slew VULOM(9), VETAR(5) - Runs slewer
r4l-8 PPC-RIO4 Linux Testing Custom
r4l-9 PPC-RIO4 Linux TRIVA bridge TRIVA(2), VULOM(9) HT Can do TRLO II TS
r4l-11 PPC-RIO4 Linux PSP TRIDI(2), SIS3316(3,4,5,6,7,8) HT SIS3316
r4l-13 PPC-RIO4 Linux Cave WR slew TRIDI(3), VETAR(5) - Runs slewer
Updated 2014-09-05

TODO