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 |