We have tested the firmware with the python scripts, and the readback is fine, but the validation failed when using the roc-barstress in ReadoutCard module.
Is there a ReadoutUnit reg-address parameter that we can use, to specify which reg we want to write and read back to/from RU via swt?
ALso, in the program, what is the purpose of SWT_RD_WORD_MON?
[ReadoutCard/latest] ~/alice $> roc-bar-stress --pci-address 21:00.0 gbt-link 0 --cycles 10 --errorcheck 1 --verbose 1
infoLoggerD not available, falling back to stdout logging
2018-11-20 11:26:50.421639 PCI Address: 21:00.0
2018-11-20 11:26:50.421682 GBT Link: 0
2018-11-20 11:26:50.421711 Cycles of SWT write(/read) operations: 10
2018-11-20 11:26:50.421733 Print frequency: 10
2018-11-20 11:26:50.421754 Error Check enabled: 1
2018-11-20 11:26:50.421775 Logging time every 120 bar operations, of which:
2018-11-20 11:26:50.421796 barWrites: 70 | barReads: 50
2018-11-20 11:26:50.725546 Resetting card…
2018-11-20 11:26:50.725569 Initializing SWT…
2018-11-20 11:26:50.725590 Running operations…
2018-11-20 11:26:50.725632 WR MON: 0x1
2018-11-20 11:26:50.725648 SWT validation failed
2018-11-20 11:26:50.725688 Read: 0x3fffffffcfffffffffff | Expected: 0x00030000000200000001
2018-11-20 11:26:50.725698 Total duration: 0s
2018-11-20 11:26:50.725707 Total bar operations: 0
2018-11-20 11:26:50.725715 Total bar writes 0
2018-11-20 11:26:50.725724 Total bar reads: 0
I found in SwtWord.cxx, that the high part of the word is being set to 0?
SwtWord(uint64_t swtInt) { mLow = swtInt & 0xffffffff; mMed = (swtInt >> 32) & 0xffffffff; mHigh = 0; //mHigh = (swtInt >> 64) & 0xffffffff; }