Version History

This list is in reverse-chronological order (the latest change is at the top). Different heading levels are used for Major, Minor, and Patch releases - in Markdown syntax, that’s # for Major, ## for Minor, and ### for Patch.

Unreleased

2.5.0

  • Support for 16-bit floating point visibilities via “float_precision” keyword in subarray configuration for standard-visibilities and zooms. Note that the internal allocator/processor was extended, so a (new) compatible processor version is needed (v0.24.0+)

  • Jones age in subarray computed using SKA epoch as time reference instead of UNIX time

2.4.2

  • Reinstate change events for obsState (accidentally dropped in v2.3.0)

2.4.1

  • Eliminate one of the Subarray variables, _subscribed_sn, (duplication) tracking Alveos assigned to a Subarray; was causing exception

  • In Subarray configuration, increase maximum beam_id from 16 to 48

  • Add Subarray.processorFpgaTemperatureMean Tango attribute indicating the average temperature of Alveos in the subarray.

  • Add Subarray.processorFpgaPowerMean Tango attribute indicating the average power of Alveos in the subarray.

  • address Subarray exception when subarray is deallocated

  • address Tango TypeError in LowCbfSubarray where pstJonesAge and pstJonesAppliedPercent were throwing exception; it either didn’t like the float value or the value of -1 wich was less than min_value=0 set in the attribute definition; both attributes to return AttrQuality.ATTR_INVALID if underlying Processor conditions are invalid

  • change Tango attribute LowCbfSubarray.assigned_processors type to list of strings (Alveo serial numbers) - as it was before

  • first initialisation of LowCbfSubarray._assigned_proc_details should be empty dict ({}), not a list ([])

  • re-implement TOP-2638 to avoid introduced bug preventing FPGA sharing when default firmware was present in configuration

  • restructure LowCbfController to get cbfPacketLossRate and cbfPacketCorruptionRate working

  • fix SKB-1172 subarray abort should exit obsstate.CONFIGURING without waiting for timeout on processors ready

2.4.0

  • Add better handling for Tango events that arrive right after attribute change subscription call

  • Add Subarray.pstJonesAppliedPercent Tango attribute indicating what percentage of PST Jones applied.

  • Add Subarray.pssJonesAppliedPercent Tango attribute indicating what percentage of PSS Jones applied (Not yet ready).

  • Add Subarray.pstJonesAge Tango attribute indicating the age of applied PST Jones matrices.

  • Add Subarray.pssJonesAge Tango attribute indicating the age of applied PSS Jones matrices (Not yet ready).

  • ADR111: Subarray goes to ready immediately after configure command without waiting for processors

  • sort out issues with {pss,pst,sdp}HostResolvedPercent

  • Add Subarray.spsRmsInRange proportion of SPS signal within CBF acceptable range

  • Add Subarray.spsFlagsPercentMean percentage of SPS signal flagged

  • Add Subarray.RmsMinValue new property to configure the minimum value for spsRmsInRange calculation

  • Add Subarray.RmsMaxValue new property to configure the maximum value forspsRmsInRange calculation

  • Fix bug in handling events behind Ethernet locked percentage arriving before data structures existed (by using a defaultdict).

  • Add Controller.cbfPacketLossRate Tango attribute indicating what percentage of packet lost/late in the last observing interval. The interval is a property of the controller

  • Add Controller.cbfPacketCorruptionRate Tango attribute indicating what percentage of packet corrupted in the last observing interval. The interval is a property of the controller

  • Add Subarray.stationBeamDelayReadyPercent Tango attribute indicating that station beam polynomial in Alveo and polynomial time matches SPS time

  • Add Subarray.pssBeamDelayReadyPercent Tango attribute indicating that PSS beam polynomial in Alveo and polynomial time matches SPS time

  • Add Subarray.pstBeamDelayReadyPercent Tango attribute indicating that PST beam polynomial in Alveo and polynomial time matches SPS time

  • ADR111: subarray defaults to not waiting for processors, but now possible to wait by setting environment variable PROCESSOR_WAIT_QTY to “all”

  • Use a default “<firmware_type>_default” value for SubarrayDataProduct.firmware_name (improves log messages).

  • Add Tango properties to control Tango timeouts used for each DeviceProxy, configurable via Helm chart variables:

    • cbf.allocator_timeout_ms for connections to Allocator devices

    • cbf.connector_timeout_ms for connections to Connector devices

    • cbf.processor_timeout_ms for connections to Processor devices

2.3.1

  • bugfix SKB-1250 (controller not responding)

2.3.0

  • Add attributes reporting SPS statistics (RMS levels, flagging percentage). Requires latest processor software, otherwise will crash trying to access attributes only available in the latest processor. Processor software needed will be version 0.22.0 when it’s released.

  • Increase Tango timeout from 3 to 10 seconds for Subarray’s Processor proxies

  • ADR-111 compliance with following quality attributes:

    • spsLinkUpPercent in the controller representing the percentage of SPS links up.

    • sdpHostsResolvedPercent in the subarray representing the percentage of PSS hosts resolved.

    • pstHostsResolvedPercent in the subarray representing the percentage of PST hosts resolved.

    • pssHostsResolvedPercent in the subarray representing the percentage of PSS hosts resolved.

  • Add Subarray.processorsReadyPercent Tango attribute indicating what percentage of processors are ready for subarray scan.

  • Add Subarray.processorEthernetLockedPercent Tango attribute indicating what percentage of Ethernet ports are locked and ready for subarray scan.

2.2.7

  • Re-fix SKB-1246, adding routes for std-vis when requested with zooms

2.2.6

  • Fix subarray configure schema checks

2.2.5

  • Bugfix SKB-1243 invalid station/substation numbers

  • Bugfix SKB-1246 automatic routes for zooms

2.2.4

  • Bugfix SKB-1248 (delay-poly-sim crash with multiple substations)

2.2.3

  • Bugfix SKB-1254 SKB-1256 (zooms)

  • Discard duplicate station-IDs in subarray configuration

  • delay-poly-simulator is more robust when re-initialised

2.2.2

  • For LowCbfSubarray and LowCbfController enable health reporting when in ENGINEERING mode

    • use Connector Tango DB when getting DeviceProxy for Connector device

    • allign LowCbfController health calculation with that of Processor and Subarray

    • report HealthState.UNKNOWN when in OFFLINE, NOT_FITTED and RESERVED adminMode

    • relevant Jira issues SKB-1037 PERENTIE-3193

2.2.1

  • fix skb-1082 (allocator crash with PST+VIS config and no firmware)

  • SKB-1085 (also Jira PERENTIE-3191) flag delaysValid Tango attribute value as UNUSED (value of 2) once the subarray is deconfigured

2.2.0

  • New subarray-config item “sps_rfi_threshold_db” supported

  • Fix SKB-1049 in which PSS routing does not function as expected

2.1.0

  • New Realtime calibration emulator (used for perentie tests of PST Jones updates)

2.0.0

  • Change Allocator’s internal_alveo attribute format. The “fw” value is now a dictionary with “personality” and “url” keys.

1.0.4

  • Allocate PSS in blocks of 4 stations because FPGA works in 4-station blocks (SKB-817)

  • Update ska-tango-base and ska-tango-util chart dependencies to ~0.4.23

1.0.3

  • remove allocator.stationbeams attr and make subarray.stationbeams function (skb-940)

  • remove some restrictions on multiple host destinations for correlator

1.0.2

1.0.1

  • Fix SKB-964 PST routes not configured for some beam frequencies

1.0.0

  • Container image based on ska-tango-images-tango-python:0.3.0 (was previously ska-tango-images-pytango-runtime:9.5.0)

  • Update to Tango v10

  • allocator is now updating 2 new attributes:

    • switch_routes, containing the list of IP routing

    • ip_to_resolve, containing the list of IP address to resolve with ARP

  • Relax SPS channel restriction for station beams. Now accepts 0–511, with a warning message if outside the expected range of 64–447.

  • Relax frequency restriction for coarse zooms. Now accepts 0 - top of SPS channel 511, with a warning if outside SPS channel 64–447.

  • Deprecation notice: Allocator attribute sdp_routes

0.14.0

  • BREAKING change: Support for Zoom correlation by extending Allocator and Subarray devices. This change also extends the Allocator-Processor interface with extra data related to zoom correlation. Requires updated Processor to read the extra info: old processor will log a crash if used.

  • fix Allocator crash in no-hardware mode

0.13.3

  • Fix alveo auto-registration crash when using no-processor-hardware mode for SW testing

0.13.2

  • Flag allocator.internalAlveoLimit attribute as READ_WRITE

0.13.1

  • Reformat Tango attributes which Sphinx documetation generator finds hard to parse

    • replace attr_name = attribute(...) with @attribute(...)

    • replace @attribute.write with def write_attrName

  • Allow Delay Device reconfiguration without emptying Subarray first

0.13.0

  • LowCbfController._unavaliable_alveos didn’t corectly update once Alveos were made available; condition variable lock was held too long which lead to deadlock when multiple Alveos got registered with Allocator in a quick succession.

  • Suppress “missing subarray id” log messages when processing internal_alveo updates that contain empty register dictionaries (e.g. PST when only one pipeline configured)

  • Prevent unnecessary Allocator & Connector attribute subscription if subscribed already

  • healthState updated only when adminMode is ONLINE or ENGINEERING (see also ENGINEERING_MODE_IGNORE_HEALTH)

  • add ENGINEERING_MODE_IGNORE_HEALTH environment variable; when set to ‘True’ the health state won’t propagate to Low CBF Controller

  • Add assigned_processors Tango attribute to LowCbfSubarray device

0.12.0

  • Controller device exposes two new Tango attributes: all_alveos and available_alveos; updated Taranta dashboard Low CBF Controller - Status.wj

  • Remove FSPs from allocator. Deprecate FSPs in subarray configure command

  • Update Taranta dashboards that allow setting subarray and processor adminMode to ENGINEERING.

  • Add tool to calculate Alveo usage by any proposed subarray configuration (see src/allocator/extimation_tool.py)

0.11.1

  • Add cbf.telmodel_source_uri Helm variable, mapped to new DelayDevice Tango property TelmodelSourceURI

  • Delay-poly simulator changed to publish station-beam delays last. This means PSS/PST test output will begin with both validity flags “valid” for large numbers of stations. Note: For large numbers of stations, katpoint takes significant time to calculate delays. Expect delay-poly attributes to update slowly.

  • ObsState behaviour no longer rejects subarray.Configure() commands when a subarray is already configured (in ObsState.READY)

  • Apply known FPGA allocation limits by default.

  • Add new FPGA limit for PST number of channels (to work around PST FPGA 2k entry first-frequency table with 16 entries used per channel 2k/16 = 128 SPS chans max)

0.11.0

  • Avoid Allocator crash when using no Processors, by using a dummy tango device URI when auto-registering processors

  • Make Allocator per-personality limits adjustable via tango attribute

  • DelayDevice: Add ypol_offset_ns attribute

  • Update to pytango 9.5.0

  • DelayDevice: Polynomial updates enabled/disabled by ‘enable_poly_updates’ attribute

  • DelayDevice: Polynomial validity interval configurable by ‘validity_seconds’ attribute

  • Increase delay emulator CPU & memory limits

0.10.0

  • add support for PSS personality in the Allocator and Subarray devices

  • fix SKB-316: Make subarray configuration wait for processor firmware download

  • fix SKB-442: Sort stations in subarray configuration by station/substation ID as per CBF/SDP ICD

0.9.0

  • new subarray NO_HEALTH_ROLLUP environment variable stops subarray from including external Tango devices in its health roll-up (switches and processors)

  • new allocator ALLOW_AUTO_REGISTER_PROCESSORS environment variable - bugfix for undesired auto-registration with large depolyments

  • delay-polynomial simulator changed to produce PST beam polynomials that are differences from the polynomials for the corresponding station beam

  • delay-polynomial simulator changed to have initial empty scan_id string (matching CspLeafNode change), allowing processor to decide when to discard

  • properties related to subscriptions to the connector are configurable via helm chart

  • fix PERENTIE-2422 allocator-resubscribe-to-connector-ARP bug that occurs if connector is deleted/respawned

  • update delay polynomial validity Grafana panel

0.8.1

  • fix SKB-317 subarray healthState race condition

0.8.0

  • Three new Delay polynomial generator commands for PST delay generation: PstOffsetRaDec, PstOffsetAzEl, PstOffsetDelay

  • add delaysValid attribute to indicate/summarise whether all delay polynomials in this subarray are valid; used by a Grafana dashboard

  • Breaking Change: Delay polynomial generator updated to produce delay polynomials using the new Telmodel CSP_LOW_DELAYMODEL_1_0 format (https://gitlab.com/ska-telescope/ska-telmodel/-/blob/master/src/ska_telmodel/csp/examples.py?ref_type=heads#L1878-1914)

0.7.0

  • Separate Low CBF Helm charts - downstream users will need to add ska-low-cbf-proc and ska-low-cbf-conn sub-charts as required.

  • Added P4 switch interaction to allow for ARP of SDP hosts

  • Added calculation of P4 switch routes needed to get visibilities to SDP hosts

  • Internal interface to Correlator/Processor changed (not backward compatible)

  • Correlator allocation algorithm reworked to use both available Matrix Correlators in Correlator FPGA

  • New and updated tests to verify Correlator allocation with 2 Matrix Correlators

  • Propagate healthState attribute change: processor -> subarray -> controller

  • Fix allocator confusion of station beams when multiple station beams present

  • Delay polynomial epoch changed from 1970 to SKA-epoch (midnight, 1 January 2000 TAI)

  • Fix LowCbfController where opMode was DISABLED regardless of ONLINE/OFFLINE adminMode (Jira PERENTIE-2192)

0.6.1

  • bugfixes

    • fixes allocator-proxy-failure in subarray device (now uses mccsdeviceproxy)

    • fixes allocator-crash-when-no-fsps-available (now logs and returns error message)

  • updated ska-tango-base to v0.18.1

  • updated ska-* charts to latest versions for which events work (at 2023-06-09)

  • Added skeleton delay-polynomial simulator device (to enable processor development that uses delay-polynomials)

0.6.0

  • Added processor registration command and “fsps” attribute listing alveos of registered processors

  • Updated subarray AssignResources command:

    • FSP, P4, sharing-mode arguments removed

    • Now takes an empty JSON string argument

  • Updated subarray ConfigureScan command:

    • Now includes FSP selection and FSP firmware selection in ConfigureScan arguments

    • SDP destination address format updated to match Telmodel

    • PST destination address format updated to match PST “Channel Blocks” given to LMC

  • Fix for Abort-from-scanning-obsstate bug where it was impossible to scan again afterwards

  • Add psi-low-test CI job, which uses real harwdare in the Low PSI (currently only a CNIC-CNIC via P4/Connector test is performed)

  • Amend psi-low-test CI job with a call to switch’s LoadPorts() method which reportedly enables associated Alveo card

  • Switch to Xilinx platform/shell version 3 (XDMA 3) - helm charts and dependant packages (processor)

  • Use the latest Taranta versions 1.3.8/1.3.6 (Taranta and TangoGQL respectively).

  • Pin the CI runner version to 9.3.32 until PyTango upgrade to 9.3.6

0.5.7

  • Use pyproject.toml as source of software version number

  • Include ska-low-cbf-conn and ska-low-cbf-fpga sub-charts in our Helm chart (currently disabled by our test-parent chart for running local/CI tests)

  • Add charts/psi-low.values.yaml for enabling hardware in Low PSI

  • Add VALUES_FILE variable to Makefile

0.5.6

  • Allow Subarray On, Off, Standby commands to complete (response is “rejected”, except On which is handled by base classes)

  • Background work towards calculating Connector routing table entries & Processor virtual channel tables as Subarrays are configured

0.5.5

  • Implement AssignResources command to work with FSP & P4 resources in Low.CBF

  • Stubbed implementation of ConfigureScan command

0.5.4

  • Restructure src directory

  • Convert from setup.py to pyproject.toml

  • Replace allocation algorithm with allocator/resources.py (”resource tables”)

  • Update to ska-tango-base v0.13.2

  • Various edits to improve lint score

0.5.3

  • Subarray: Update attribute names used on Processor device

  • Allocation Algorithm

    • calculate routes from LFAA to FPGAs and from FPGAs to PST

    • calculate virtual channel tables

0.5.2

  • Allocation Algorithm can report allocated FPGAs for a subarray

  • Allocator device RequestAllocation command return value is derived from allocation (Processor devices only)

    • A very rough implementation, needs work on mapping ID to FQDN

0.5.1

  • Add tests for Allocator device

  • test-parent chart: add ska-low-cbf-proc chart, for integration tests

0.5.0

  • Allocator TANGO device created

    • RequestAllocation return value is hard-coded

  • Subarray passes on information from resource assignment requests to Allocator, expects to receive details of assigned Processor devices in response

0.4.0

  • Subarray can assign (hard-coded) Processor resource for 1 PST beam and turn on PSR test packet generation

0.3.4