Software

Version 0.8.2

Created on 30th July 2023.

  • Backend links: Add support for interpreting new format for link ID word 1 (required for use with APx).

Version 0.8.1

Created on 11th July 2023.

  • Python bindings: Block SIGBUS automatically when library loaded.

Version 0.8.0

Created on 6th July 2023.

Note

This release should only be used with v0.8.x firmware, not earlier firmware versions.

  • Backend links: Add support for error injection, and for new status registers from v0.8 of firmware.

Version 0.7.6

Created on 13th January 2023.

  • Added support for channels-specific TX CSP settings (in C++ library).

Version 0.7.5

Created on 13th January 2023.

  • Butler, mgts measure-clocks command: Explicitly label unused refclocks.

  • Added support for channel-specific values for link settings (in C++ library)

Version 0.7.4

Created on 4th January 2023.

  • Added ARM64 YUM repositories.

  • Butler: Add command for injecting PRBS errors.

  • Butler, MGTs configure command: Add flag for using idle method 2.

  • Add checks for QPLL lock and fundamental protocol errors at end of MGT configuration functions.

Version 0.7.3

Created on 17th November 2023.

  • Rx MGT configuration: Fix for spurious errors.

  • CI: Add hardware test jobs.

Version 0.7.2

Created on 16th October 2022.

  • Added convert-old-buffer-data-file.exe, which converts buffer data files from the old to new format.

Version 0.7.1

Created on 15th October 2022.

  • Fixed small bugs in board data I/O functions.

Version 0.7.0

Created on 13th October 2022.

Note

This release should only be used with v0.7.x firmware, not earlier firmware versions.

  • Added support for lpGBT and GBT links

  • Added support for SLink readout links

  • BE MGT links: Updated to support firmware implementation of new protocol (CSP)

    • As a result, the empbutler mgts set-board-id command now has two arguments: the crate ID number and the logical slot number.

  • BE MGT links: Added support for setting value of MGT Tx driver settings

  • Added ability to suppress data on input channels during configuration of buffers and links, then enable all inputs in synchronised manner.

    • By default inputs will be enabled at the end of the empbutler buffers rx and mgts configure rx subcommands

    • If you need to configure both input buffers and the input links, then you should add the --keep-suppressing-inputs flag to first of the two corresponding commands, so that the inputs are only enabled after both buffers and links have been configured.

  • Removed support for Python 2.7

  • Datapath: Fixed bug that caused region-local BC0 to be many clock cycles later than BC0 in TTC block

  • TTC interfaces: Added more monitoring counters


Version 0.6.8

Created on 24th January 2022.

  • TCDS2 interface: Fix status-checking function so that it ignores PRBS registers in non-test mode.

Version 0.6.7

Created on 24th January 2022.

  • TCDS2 interface: Support test mode.

  • TCDS2 interface: Wait until both RX & TX MGT ‘ready’ registers are high in configuration procedure.

  • Add ttc-measure-clocks and tcds2-test butler command.

  • Butler ttc-check command: Add repeat-every option.

Version 0.6.6

Created on 15th December 2022.

  • Test suite: Fix failing ‘MGT power after reset’ test.

Version 0.6.5

Created on 14th December 2022.

  • Backend link (i.e. Hermes) engine: Enable power of MGTs before configuring them.

  • MGT eyescan procedures: Minor improvements; enable eyescan by default when configuring links.

Version 0.6.4

Created on 29th November 2021

All of the improvements in this release are in the buffer configuration:

  • Playback modes (PlayOnce and PlayLoop)

    • If the loaded data is shorter than then length of the buffers, the frame range is now set to the length of the loaded data by default (rather than the length of the buffers).

    • Strobe value is now taken from the data loaded in the buffers (previously, was always set to 1)

  • Capture mode

    • Values of strobe, valid and the data word are now recorded for every clock cycle

    • To reproduce the previous behaviour of only recording clock cycles in which strobe == 1, you can use the new buffer mode CaptureWhenStrobeHigh

Warning

When updating to this version of the software, if strobe signals in the payload firmware’s output ports are not set to 1 for every clock cycle, then you will need to update to v0.6.3 of the firmware at the same time in order to ensure that the raw contents of captured data files will identical to those captured with previous v0.6.x releases. If you do not update to v0.6.3 of the firmware, and strobe signals from input links are forwarded to output links in your payload firmware, then the strobe signal may now be specified in your output files (as a 0s/1s prefix) and set to 0 in the initial unused frames from captures.

Version 0.6.3

Created on 14th November 2021

  • Moved eyescan/bathtub data-collection routines from Python modules to C++ library.

  • Test suite

    • Updated TTC ‘source absent’ tests to use correct method names (wasn’t updated when method names were last updated)

    • Put name of TTC source in names of TTC test cases, rather than TTC source index.

Version 0.6.2

Created on 20th September 2021.

  • Butler, capture subcommand: Fixed bug in printing of exception message

  • Butler, buffers subcommand: Fixed bug in handing of --frame-range message

Version 0.6.1

Created on 19th August 2021.

  • TTC configuration functions: Explicitly issue reset after changing TTC source.

  • Implemented functions for SYSMON-based temperature measurement; added this measurement to empbutler info subcommand.

Version 0.6.0

Created on 9th August 2021.

  • Removed dependence of test suite on ZeroMQ Python package.

  • Minor version number incremented to support new v0.6.x FW series

N.B. This release should only be used with v0.6.x firmware, not earlier firmware versions.


Version 0.5.4

Created on 26th June 2021.

  • Updated to uHAL v2.8

  • Switch to pybind11 for Python bindings

Version 0.5.3

Created on 20th May 2021.

  • Added PCIe reconnect script and reference GitLab runner config (for development boards)

Version 0.5.2

Created on 22nd March 2021.

  • Fixes bug in TTC configuration and monitoring functions for designs that do not instanitiate legacy TTC interface (e.g. K800 and VCU118 dev boards).

Version 0.5.1

Created on 6th March 2021.

  • Fixes bug in parsing of default channel range (all) for buffers and capture commands.

Version 0.5.0

Created on 21st February 2021.

  • Updated back-end link classes & functions to support Hermes v2 implementation.

    • Notably, in v2 of the Hermes protocol, there are new TX channel and board ID fields that can be used to automatically determine RX-TX channel mappings (regardless of the ‘payload’ data sent over the links). These can be printed out with the new empbutler mgts read-link-info command.

  • Added support for MGT margin analysis - specifically, scripts for saving BER measurements to files, as well as for creating eyescan and bathtub plots from those files.

  • Added support for the newly-integrated TCDS2 interface.

    • Included support for existing TTC masters (FPGA-internal and legacy-style TTC over LVDS)

    • The TCDS2 interface is only instantiated in the designs for two Serenity daughter cards so far: KU15P SO2 and KU15P SM1.

    • If you need it to use the TCDS2 interface on other daugther cards, please get in touch.

  • Added more build metadata to the framework. Specifically, the following quantities are now embedded in the bitfiles (and shown by the empbutler info command):

    • Timestamp (start of synthesis)

    • git repositories: SHA; branch/tag name; flag indicating whether there are any uncommitted changes

    • GitLab CI variables: pipeline & job IDs

N.B. This release should only be used with v0.5.x firmware, not earlier firmware versions.


Version 0.4.6

Created on 25th August 2020.

  • Adapted to change in datapath playback control registers introduced in v0.3.6 of firmware

  • Extended coverage of the link test suite (now covers both PlayOnce and PlayLoop modes, and a wider range of packet structures)

  • Added firmware address tables.

N.B. This release should only be used with v0.3.6 firmware, not earlier firmware versions.

Version 0.4.5

Created on 9th July 2020.

  • Extended pattern generator URI syntax to specify packet length and gap (format: generate://pattern:LENGTH:GAP)

Version 0.4.4

Created on 13th June 2020.

  • Added support for CentOS8

  • Updated functions reading firmware version for compatibility with FW v0.3.5

Version 0.4.3

Created on 4th April 2020.

  • Updated link clock measurement functions to match changes in frequency measurement indices from FW version 0.3.4

Version 0.4.2

Created on 25th March 2020.

  • Test suite: Fixed expected latency for 16G GTY links

Version 0.4.1

Created on 24th March 2020.

  • Removed ‘CDR lock’ register from link status checks

  • Test suite: Add dedicated tests for TTC/clock reset

  • Butler: Add script command

  • Butler: Add payload clock frequency to output of info command

Version 0.4.0

Created on 5th March 2020.

  • Updated to uHAL version 2.7

Version 0.3.7

Created on 23rd February 2020.

  • Butler: Add mgts measure-clocks command, for measuring the frequency of the MGT reference & link clocks.

  • Test suite: Skip board-to-board link ests if --link-mappings flag not used

  • Test suite: Significantly reduced time taken in comparing data captured from buffers with reference values.

Version 0.3.6

Created on 5th January 2020.

  • Remove duplicate etc directory in path of address tables (i.e. /opt/cactus/etc/etc/emp becomes /opt/cactus/etc/emp)

  • Remove unused datapath configuration modes

Version 0.3.5

Created on 24th November 2019.

  • Butler: Update mgts configure commands to run status checks (unless --no-check flag is used)

  • Butler: Improve output of mgts status commands

  • Butler: Add bash autocompletion for the DEVICE_ID argument

Version 0.3.4

Created on 16th November 2019.

  • Separated control of RX and TX link firmware into separate procedures. As a result, the empbutler do DEVICE_ID mgts configure command has been replaced by two separate commands:

    • empbutler do DEVICE_ID mgts configure tx (with options --invert and --loopback)

    • empbutler do DEVICE_ID mgts configure rx (with options --invert and --enable-dfe)

  • Updated source code to use new logging library (and updated default format for log messages printed by empbutler)

  • empbutler: Reorganised internal implementation of some commands

  • Test suite: Added board-to-board link tests.

N.B. Like the previous software version, this release should only be used with v0.3.1 or v0.3.2 firmware, not earlier firmware versions.

Version 0.3.3

Created on 17th October 2019.

  • empbutler: Fixed bug that led to some error messages not being displayed correctly

  • empbutler: Fixed bug that caused failure of mgts configure command.

N.B. Like the previous software version, this release should only be used with v0.3.1 or v0.3.2 firmware, not earlier firmware versions.

Version 0.3.2

Created on 16th October 2019.

  • Updated link functions to disable DFE by default.

  • empbutler: Fixed bug arising from use of -v flag.

  • Cleaned up test suite’s structure and command-line interface.

N.B. Like the previous software version, this release should only be used with v0.3.1 or v0.3.2 firmware, not earlier firmware versions.

Version 0.3.1

Created on 12th October 2019.

  • empbutler: Adds mgts align command (and updates underlying alignment source code)

  • empbutler: Adds region information to the output of the info command.

  • Updates link control functions to account for CRC counter reset fixes in the v0.3.1 firmware release

N.B. This version of the software should be used with v0.3.1 firmware, not earlier firmware versions.

Version 0.3.0

Created on 28th September 2019.

  • Removes dependency on MP7 libraries.

  • empbutler: Adds control and monitoring commands for 16G and 25G links.


Version 0.2.8

Created on 9th July 2019.

  • Re-adds empbutler script to RPMs (missing from 0.2.7 RPMs due to makefile bug)

Version 0.2.7

Created on 8th July 2019

  • Adds control and monitoring commands for external TTC source

Version 0.2.6

Created on 11th April 2019.

  • Adds CI configuration.

Version 0.2.5

Created on 21st February 2019.

  • empbutler: Fixes mismatch in name of variable (bug only present for some click versions).

Version 0.2.4

Created on 2nd December 2018.

  • empbutler: Fixes bug in conversion of ‘frame range’ argument for buffers command

Version 0.2.3

Created on 23rd November 2018.

  • empbutler: Improved error reporting in case of capture failure

Version 0.2.2

Created on 21st November 2018.

  • empbutler : Number of words captured from buffers can now be modified by command-line flag

Version 0.2.1

Created on 21st November 2018.

  • empbutler: Updated buffer command to support frame-based ranges

  • empbutler: Added flag to skip checks at end of reset command

Version 0.2.0

Created on 16th October 2018.

  • Core library updated to support buffer firmware with 64-bit data words

Version 0.1.0

First tag; created 23rd May 2018