Swt readback validation failure

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;

could you please specify the requirements of your tests?
The roc-bar-stress is a very specific program to verify some BAR performance and it requires a special setup.
So it is obvious that it failed.

You should not check the code to extract the information … please tell us what you are trying to achieve and the set-up you have.

We will point you to the proper documentation and tell you which tool you should use.

Keep alos in mind that the SWT is considered as part of the DCS protocol and it is controlled by ALF (that is part of the DCS framework).

Best regards

Hi Filippo,

I’m trying to test swt on the readout chain: ReadoutUnit - CRU - FLP using the ReadoutCard module. For now, I want to readout the some registers in ReadoutUnit via swt, for instance, the firmware version register, RU set/reset registers for scrubbing, status, timing mode, SEU counter, etc.

The setup here in our lab is using RUv2, the latest firmware release; also latest firmware (cru-v2_v2_5_0_24_links) release for CRU.


you are working for ITS right?
In this case you should synchronize with them. They are successfully using the SWT since quite some time so you can ask them what type of setup and commands they are using.