Skip to content

BERT optimisations, summary in merge request

Roman Mueller requested to merge bert-work into main
  • trying to improve BERT of Optoboard in preparation for integration tests during construction.
  • goal: testing all lanes as fast as possible, as reliable as possible
  • fixed bug in bert_by_elink and bert_internal. The main method bert had a misleading argument eprx_group. This variable can also be an EPTX group. I changed eprx_group to bertsource_g and made the logging consistent with whatever arrives at the bert method. The user should use the simpler method bert_by_elink so there is less gymnastics with the bertsource_* variables/arguments.
  • created a method bert_full_rx that goes through all EPRX links of one lpGBT
  • with the standard bertmeastime=11 a bert_full takes now 20 to 30 s. Previously this included 1200 status reads sent to FELIX (can take up to max. 6x328=1968 reads). A sleep statement inside the while loop prevents this now, the sleep_time is by default 0.5 s but for bertmeastime > 12 (more than 4 s) the sleep_time is 10 s to not fill the logs.
  • the bit errors are now given while the measurement is ongoing in steps of the sleep_time
  • added a flag high_ber_check that aborts the BERT if low BER values can't be reached anymore. This is very practical if we have many modules that are not powered/connected or have bad data transmission. There is no need to measure minutes if there are already more than 10000 error bits after half a second.
  • bert_by_elink supports now also lpGBT internal BERT, for example bert_by_elink("EPRX20", internal=True)
Edited by Roman Mueller

Merge request reports