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.
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
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 | - |
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:
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 | - |
(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 |