AlveoDevice

AlveoDevice is a Tango device server for monitoring health status of Xilinx Alveo FPGA accelerator cards.

Usage

The pciPath property must be populated for each Tango device instance.

Use the full path to the sysfs location for user monitoring of the card. This will probably end in 00.1, and will contain further subdirectories such as xmc.u.<number> and rom.u.0.

For example, in our test server we use: /sys/devices/pci0000:ae/0000:ae:00.0/0000:af:00.1

Note there is also a ‘management’ device (ends in 00.0, contains xmc.m.<number>), it probably doesn’t matter which you use but we have not tested this.

Testing

To test the software without using a real FPGA, you can use a copy of the sysfs files. There is one such set in test-harness/alveo_sysfs.

If you’re running the device on a full Tango system, the pciPath parameter can be set to any filesystem location that is convenient to work with.

If you’re only running a DeviceTestContext (or similar), you can set the path on the module itself, e.g.

from ska.low_cbf_mcs import AlveoDevice
AlveoDevice.pciPath = '/build/alveo_sysfs'

We have tested this using a Xilinx Alveo U50 Data Center Acclerator Card. We expect it to work with other cards in the range, but modifications to the monitored parameters are likely to be required to match the sensors present on each card.

Continuous Integration

The CI tests in this repo use DeviceTestContext and do not require a full Tango system. The files in test-harness/alveo_sysfs are used, which have known values that are hard-coded into the test script.

We had problems with the tests running very slowly and often failing, so as a temporary workaround we only run one test in the CI pipeline. There’s a block of commented-out pytest parameters that should be reinstated once this issue is resolved. See tests/test_alveo.py.