IO

JESD Interface

Lane Error Count

FPGA0

Core0

Description:

JESD204 link error count per lane as reported by the Xilinx JESD204 core within the FPGA firmware. The FPGA JESD204B receiver is the sync for the serialized output of the TPM AD9695 ADCs.

The FPGA0 JESD CORE0 link error count for the eight lanes managed by the first JESD core of the first FPGA. These correspond to the first four dual polarisation antennas.

To process data from eight dual channel ADCs, each TPM FPGA has two identical IP cores each managing 8 JESD lanes.

See Xilinx JESD204 v7.2 Product Guide.

  • Groups: io, jesd_interface

  • Reported By: TPM FPGAs

  • Expected: {'lane0': 0, 'lane1': 0, 'lane2': 0, 'lane3': 0, 'lane4': 0, 'lane5': 0, 'lane6': 0, 'lane7': 0}

  • Cleared When Read: Yes

Developer info
  • Tile Method: check_jesd_lane_error_counter(fpga_id=0, core_id=0)

    • Arguments:

      • fpga_id (int): Specify which FPGA, 0, 1, or None for both FPGAs

      • core_id (int): Specify which JESD Core, 0, 1, or None for both cores

    • Returns: dict of counts (dict(int) with an entry for each FPGA, core and lane)

  • Tile Method to Clear: clear_jesd_error_counters(fpga_id=0)


Core1

Description:

JESD204 link error count per lane as reported by the Xilinx JESD204 core within the FPGA firmware. The FPGA JESD204B receiver is the sync for the serialized output of the TPM AD9695 ADCs.

The FPGA0 JESD CORE1 link error count for the eight lanes managed by the second JESD core of the first FPGA. These correspond to the second four dual polarisation antennas.

To process data from eight dual channel ADCs, each TPM FPGA has two identical IP cores each managing 8 JESD lanes.

See Xilinx JESD204 v7.2 Product Guide.

  • Groups: io, jesd_interface

  • Reported By: TPM FPGAs

  • Expected: {'lane0': 0, 'lane1': 0, 'lane2': 0, 'lane3': 0, 'lane4': 0, 'lane5': 0, 'lane6': 0, 'lane7': 0}

  • Cleared When Read: Yes

Developer info
  • Tile Method: check_jesd_lane_error_counter(fpga_id=0, core_id=1)

    • Arguments:

      • fpga_id (int): Specify which FPGA, 0, 1, or None for both FPGAs

      • core_id (int): Specify which JESD Core, 0, 1, or None for both cores

    • Returns: dict of counts (dict(int) with an entry for each FPGA, core and lane)

  • Tile Method to Clear: clear_jesd_error_counters(fpga_id=0)


FPGA1

Core0

Description:

JESD204 link error count per lane as reported by the Xilinx JESD204 core within the FPGA firmware. The FPGA JESD204B receiver is the sync for the serialized output of the TPM AD9695 ADCs.

The FPGA1 JESD CORE0 link error count for the eight lanes managed by the first JESD core of the second FPGA. These correspond to the third four dual polarisation antennas.

To process data from eight dual channel ADCs, each TPM FPGA has two identical IP cores each managing 8 JESD lanes.

See Xilinx JESD204 v7.2 Product Guide.

  • Groups: io, jesd_interface

  • Reported By: TPM FPGAs

  • Expected: {'lane0': 0, 'lane1': 0, 'lane2': 0, 'lane3': 0, 'lane4': 0, 'lane5': 0, 'lane6': 0, 'lane7': 0}

  • Cleared When Read: Yes

Developer info
  • Tile Method: check_jesd_lane_error_counter(fpga_id=1, core_id=0)

    • Arguments:

      • fpga_id (int): Specify which FPGA, 0, 1, or None for both FPGAs

      • core_id (int): Specify which JESD Core, 0, 1, or None for both cores

    • Returns: dict of counts (dict(int) with an entry for each FPGA, core and lane)

  • Tile Method to Clear: clear_jesd_error_counters(fpga_id=1)


Core1

Description:

JESD204 link error count per lane as reported by the Xilinx JESD204 core within the FPGA firmware. The FPGA JESD204B receiver is the sync for the serialized output of the TPM AD9695 ADCs.

The FPGA1 JESD CORE1 link error count for the eight lanes managed by the second JESD core of the second FPGA. These correspond to the forth four dual polarisation antennas.

To process data from eight dual channel ADCs, each TPM FPGA has two identical IP cores each managing 8 JESD lanes.

See Xilinx JESD204 v7.2 Product Guide.

  • Groups: io, jesd_interface

  • Reported By: TPM FPGAs

  • Expected: {'lane0': 0, 'lane1': 0, 'lane2': 0, 'lane3': 0, 'lane4': 0, 'lane5': 0, 'lane6': 0, 'lane7': 0}

  • Cleared When Read: Yes

Developer info
  • Tile Method: check_jesd_lane_error_counter(fpga_id=1, core_id=1)

    • Arguments:

      • fpga_id (int): Specify which FPGA, 0, 1, or None for both FPGAs

      • core_id (int): Specify which JESD Core, 0, 1, or None for both cores

    • Returns: dict of counts (dict(int) with an entry for each FPGA, core and lane)

  • Tile Method to Clear: clear_jesd_error_counters(fpga_id=1)


Lane Status

Description:

TODO: Remove this monitoring point. This is simply a consolidated boolean form of the JESD204 link error counts above.

JESD204 link error summary per lane consolidated from the link error counts per lane as reported by the Xilinx JESD204 core within the FPGA firmware. The FPGA JESD204B receiver is the sync for the serialized output of the TPM AD9695 ADCs.

To process data from eight dual channel ADCs, each TPM FPGA has two identical IP cores each managing 8 JESD lanes. The aggregated status considers the link error counts across all 32 lanes.

See Xilinx JESD204 v7.2 Product Guide.

  • Groups: io, jesd_interface

  • Reported By: TPM FPGAs

  • Expected: True

  • Cleared When Read: Yes

Developer info
  • Tile Method: check_jesd_lane_status(fpga_id=None, core_id=None)

    • Arguments:

      • fpga_id (int): Specify which FPGA, 0, 1, or None for both FPGAs

      • core_id (int): Specify which JESD Core, 0, 1, or None for both cores

    • Returns: True if all error counters are 0 (bool)

  • Tile Method to Clear: clear_jesd_error_counters


Resync Count

FPGA0

Description:

A count of JESD resync events.

The FPGA JESD204B receiver is the sync for the serialized output of the TPM AD9695 ADCs.

The FPGA0 JESD resync event count for the sixteen lanes managed by the two JESD cores of the first FPGA. These correspond to the first eight dual polarisation antennas.

To track any occurances of intermittent loss of the JESD SYNC, the FPGA increments a counter each time the FPGA detects a rising edge of the JESD SYNC.

NOTE: To process data from eight dual channel ADCs, each TPM FPGA has two identical IP cores each managing 8 JESD lanes. The resync count is shared between both JESD cores in each FPGA, operating on the boolean AND of the JESD SYNC from both cores.

  • Groups: io, jesd_interface

  • Reported By: TPM FPGAs

  • Expected: 0

  • Cleared When Read: Yes

Developer info
  • Tile Method: check_jesd_resync_counter(fpga_id=0, show_result=False)

    • Arguments:

      • fpga_id (int): Specify which FPGA, 0, 1, or None for both FPGAs

      • show_result (bool): prints error counts on logger

    • Returns: counter values (dict(int) with an entry for each FPGA)

  • Tile Method to Clear: clear_jesd_error_counters(fpga_id=0)


FPGA1

Description:

A count of JESD resync events.

The FPGA JESD204B receiver is the sync for the serialized output of the TPM AD9695 ADCs.

The FPGA1 JESD resync event count for the sixteen lanes managed by the two JESD cores of the second FPGA. These correspond to the second eight dual polarisation antennas.

To track any occurances of intermittent loss of the JESD SYNC, the FPGA increments a counter each time the FPGA detects a rising edge of the JESD SYNC.

NOTE: To process data from eight dual channel ADCs, each TPM FPGA has two identical IP cores each managing 8 JESD lanes. The resync count is shared between both JESD cores in each FPGA, operating on the boolean AND of the JESD SYNC from both cores.

  • Groups: io, jesd_interface

  • Reported By: TPM FPGAs

  • Expected: 0

  • Cleared When Read: Yes

Developer info
  • Tile Method: check_jesd_resync_counter(fpga_id=1, show_result=False)

    • Arguments:

      • fpga_id (int): Specify which FPGA, 0, 1, or None for both FPGAs

      • show_result (bool): prints error counts on logger

    • Returns: counter values (dict(int) with an entry for each FPGA)

  • Tile Method to Clear: clear_jesd_error_counters(fpga_id=1)


QPLL Status

FPGA0

Description:

Status of transciever quad QPLL which generates the high-speed serial clock required by JESD204 links. The FPGA JESD204B receiver is the sync for the serialized output of the TPM AD9695 ADCs.

The current status and historical status of the FPGA0 JESD QPLL for the sixteen lanes managed by the two JESD cores of the first FPGA. These correspond to the first eight dual polarisation antennas.

Example: ( current_status, historical_status_counter )

current_status: The current QPLL lock status.

  • True → The QPLL is locked as expected.

  • False → The QPLL is not currently locked.

historical_status_counter: To detect transient loss of the QPLL lock that occurs for less than 1 second, there is also the historical loss of lock counter. This counts the number of loss of lock events since the last query.

  • 0 → No loss of QPLL lock events have occured since the last query.

  • N > 0 → N loss of QPLL lock events have occured since the last query.

NOTE: To process data from eight dual channel ADCs, each TPM FPGA has two identical IP cores each managing 8 JESD lanes. The QPLL is shared between both JESD cores in each FPGA.

  • Groups: io, jesd_interface

  • Reported By: TPM FPGAs

  • Expected: (True, 0)

  • Cleared When Read: Yes

Developer info
  • Tile Method: check_jesd_qpll_status(fpga_id=0, show_result=False)

    • Arguments:

      • fpga_id (int): Specify which FPGA, 0, 1, or None for both FPGAs

      • show_result (bool): prints error counts on logger

    • Returns: (True, 0) if lock is up and no loss of lock (dict of tuple with an entry for each FPGA)

  • Tile Method to Clear: clear_jesd_error_counters(fpga_id=0)


FPGA1

Description:

Status of transciever quad QPLL which generates the high-speed serial clock required by JESD204 links. The FPGA JESD204B receiver is the sync for the serialized output of the TPM AD9695 ADCs.

The current status and historical status of the FPGA1 JESD QPLL for the sixteen lanes managed by the two JESD cores of the second FPGA. These correspond to the second eight dual polarisation antennas.

Example: ( current_status, historical_status_counter )

current_status: The current QPLL lock status.

  • True → The QPLL is locked as expected.

  • False → The QPLL is not currently locked.

historical_status_counter: To detect transient loss of the QPLL lock that occurs for less than 1 second, there is also the historical loss of lock counter. This counts the number of loss of lock events since the last query.

  • 0 → No loss of QPLL lock events have occured since the last query.

  • N > 0 → N loss of QPLL lock events have occured since the last query.

NOTE: To process data from eight dual channel ADCs, each TPM FPGA has two identical IP cores each managing 8 JESD lanes. The QPLL is shared between both JESD cores in each FPGA.

  • Groups: io, jesd_interface

  • Reported By: TPM FPGAs

  • Expected: (True, 0)

  • Cleared When Read: Yes

Developer info
  • Tile Method: check_jesd_qpll_status(fpga_id=1, show_result=False)

    • Arguments:

      • fpga_id (int): Specify which FPGA, 0, 1, or None for both FPGAs

      • show_result (bool): prints error counts on logger

    • Returns: (True, 0) if lock is up and no loss of lock (dict of tuple with an entry for each FPGA)

  • Tile Method to Clear: clear_jesd_error_counters(fpga_id=1)


DDR Interface

Initialisation

Description:

Status of DDR4 initialization and calibration.

The TPM DDR4 SDRAM is utilized during operation of the station beamformer and antenna buffer components.

If True, initialization and calibration are complete and the user can safely initiate read and write requests from the client interface.

See init_calib_complete in Xilinx UltraScale Architecture FPGAs Memory Interface Solutions.

  • Groups: io, ddr_interface

  • Reported By: TPM FPGAs

  • Expected: True

  • Cleared When Read: No, this metric is managed by the Xilinx Memory Interface which autonomously updates the status.

Developer info
  • Tile Method: check_ddr_initialisation

    • Arguments:

      • fpga_id (int): Specify which FPGA, 0, 1, or None for both FPGAs

    • Returns: True if initialisation complete (bool)


Reset Counter

FPGA0

Description:

A count of FPGA0 DDR4 reset events. Each FPGA has its own independent DDR4 SDRAM.

The TPM DDR4 SDRAM is utilized during operation of the station beamformer and antenna buffer components.

To track any occurances of intermittent loss of the DDR, the FPGA increments a counter each time the FPGA detects a falling edge of the DDR user logic reset.

  • Groups: io, ddr_interface

  • Reported By: TPM FPGAs

  • Expected: 0

  • Cleared When Read: Yes

Developer info
  • Tile Method: check_ddr_reset_counter(fpga_id=0, show_result=False)

    • Arguments:

      • fpga_id (int): Specify which FPGA, 0, 1, or None for both FPGAs

      • show_result (bool): prints error counts on logger

    • Returns: counter values (dict)

  • Tile Method to Clear: clear_ddr_reset_counter(fpga_id=0)


FPGA1

Description:

A count of FPGA1 DDR4 reset events. Each FPGA has its own independent DDR4 SDRAM.

The TPM DDR4 SDRAM is utilized during operation of the station beamformer and antenna buffer components.

To track any occurances of intermittent loss of the DDR, the FPGA increments a counter each time the FPGA detects a falling edge of the DDR user logic reset.

  • Groups: io, ddr_interface

  • Reported By: TPM FPGAs

  • Expected: 0

  • Cleared When Read: Yes

Developer info
  • Tile Method: check_ddr_reset_counter(fpga_id=1, show_result=False)

    • Arguments:

      • fpga_id (int): Specify which FPGA, 0, 1, or None for both FPGAs

      • show_result (bool): prints error counts on logger

    • Returns: counter values (dict)

  • Tile Method to Clear: clear_ddr_reset_counter(fpga_id=1)


Rd Cnt

FPGA0

Description:

DDR interface status.

The TPM DDR4 SDRAM is utilized during operation of the station beamformer and antenna buffer components.

A count of FPGA0 DDR4 read cycles.

Each FPGA has its own independent DDR4 SDRAM.

  • Groups: io, ddr_interface

  • Reported By: TPM FPGAs

  • Expected: Updating/Incrementing

  • Cleared When Read: No, the counters are continuously incremented and roll-over.

Developer info
  • Tile Method: get_ddr_if_stat(fpga_id=0, key='rd_cnt')

    • Arguments:

      • key (str): ddr_if register

      • fpga_id (int): FPGA 0 or FPGA 1

    • Returns: ddr_if register contents (int)


FPGA1

Description:

DDR interface status.

The TPM DDR4 SDRAM is utilized during operation of the station beamformer and antenna buffer components.

A count of FPGA1 DDR4 read cycles.

Each FPGA has its own independent DDR4 SDRAM.

  • Groups: io, ddr_interface

  • Reported By: TPM FPGAs

  • Expected: Updating/Incrementing

  • Cleared When Read: No, the counters are continuously incremented and roll-over.

Developer info
  • Tile Method: get_ddr_if_stat(fpga_id=1, key='rd_cnt')

    • Arguments:

      • key (str): ddr_if register

      • fpga_id (int): FPGA 0 or FPGA 1

    • Returns: ddr_if register contents (int)


Wr Cnt

FPGA0

Description:

DDR interface status.

The TPM DDR4 SDRAM is utilized during operation of the station beamformer and antenna buffer components.

A count of FPGA0 DDR4 write cycles.

Each FPGA has its own independent DDR4 SDRAM.

  • Groups: io, ddr_interface

  • Reported By: TPM FPGAs

  • Expected: Updating/Incrementing

  • Cleared When Read: No, the counters are continuously incremented and roll-over.

Developer info
  • Tile Method: get_ddr_if_stat(fpga_id=0, key='wr_cnt')

    • Arguments:

      • key (str): ddr_if register

      • fpga_id (int): FPGA 0 or FPGA 1

    • Returns: ddr_if register contents (int)


FPGA1

Description:

DDR interface status.

The TPM DDR4 SDRAM is utilized during operation of the station beamformer and antenna buffer components.

A count of FPGA1 DDR4 write cycles.

Each FPGA has its own independent DDR4 SDRAM.

  • Groups: io, ddr_interface

  • Reported By: TPM FPGAs

  • Expected: Updating/Incrementing

  • Cleared When Read: No, the counters are continuously incremented and roll-over.

Developer info
  • Tile Method: get_ddr_if_stat(fpga_id=1, key='wr_cnt')

    • Arguments:

      • key (str): ddr_if register

      • fpga_id (int): FPGA 0 or FPGA 1

    • Returns: ddr_if register contents (int)


Rd Dat Cnt

FPGA0

Description:

DDR interface status.

The TPM DDR4 SDRAM is utilized during operation of the station beamformer and antenna buffer components.

A count of valid FPGA0 DDR4 read cycles.

Each FPGA has its own independent DDR4 SDRAM.

  • Groups: io, ddr_interface

  • Reported By: TPM FPGAs

  • Expected: Updating/Incrementing

  • Cleared When Read: No, the counters are continuously incremented and roll-over.

Developer info
  • Tile Method: get_ddr_if_stat(fpga_id=0, key='rd_dat_cnt')

    • Arguments:

      • key (str): ddr_if register

      • fpga_id (int): FPGA 0 or FPGA 1

    • Returns: ddr_if register contents (int)


FPGA1

Description:

DDR interface status.

The TPM DDR4 SDRAM is utilized during operation of the station beamformer and antenna buffer components.

A count of valid FPGA1 DDR4 read cycles.

Each FPGA has its own independent DDR4 SDRAM.

  • Groups: io, ddr_interface

  • Reported By: TPM FPGAs

  • Expected: Updating/Incrementing

  • Cleared When Read: No, the counters are continuously incremented and roll-over.

Developer info
  • Tile Method: get_ddr_if_stat(fpga_id=1, key='rd_dat_cnt')

    • Arguments:

      • key (str): ddr_if register

      • fpga_id (int): FPGA 0 or FPGA 1

    • Returns: ddr_if register contents (int)


F2F Interface

PLL Status

Description:

Status of transciever quad QPLL which generates the high-speed serial clock required by the FPGA-to-FPGA link.

The current status and historical status of the FPGA-to-FPGA (F2F) QPLL.

Example: ( current_status, historical_status_counter )

current_status: The current QPLL lock status.

  • True → The QPLL is locked as expected.

  • False → The QPLL is not currently locked.

historical_status_counter: To detect transient loss of the QPLL lock that occurs for less than 1 second, there is also the historical loss of lock counter. This counts the number of loss of lock events since the last query.

  • 0 → No loss of QPLL lock events have occured since the last query.

  • N > 0 → N loss of QPLL lock events have occured since the last query.

  • Groups: io, f2f_interface

  • Reported By: TPM FPGAs

  • Expected: (True, 0)

  • Cleared When Read: Yes

Developer info
  • Tile Method: check_f2f_pll_status(show_result=False)

    • Arguments:

      • core_id (int): Specify which F2F Core, 0, 1, or None for both cores

      • show_result (bool): prints error counts on logger

    • Returns: (True, 0) if lock is up and no loss of lock (dict of tuple with an entry for each core)

  • Tile Method to Clear: clear_f2f_pll_lock_loss_counter


Soft Error

Description:

Number of FPGA-to-FPGA link SOFT errors as reported by the Xilinx Aurora core within the FPGA firmware.

See Xilinx Aurora 64B/66B v12.0 Product Guide.

Soft errors are those detected by the Aurora 64B/66B encoding method. These can be caused by equipment problems and channel noise.

Unlike hard errors, soft errors do not usually lead to a reset of the link.

  • Groups: io, f2f_interface

  • Reported By: TPM FPGAs

  • Expected: 0

  • Cleared When Read: No, soft errors are live, they are reported every clock cycle in which they are detected.

Developer info
  • Tile Method: check_f2f_soft_errors

    • Returns: soft_err register value (int)


Hard Error

Description:

Number of FPGA-to-FPGA link HARD errors as reported by the Xilinx Aurora core within the FPGA firmware.

See Xilinx Aurora 64B/66B v12.0 Product Guide.

Hard errors are those detected by monitoring the FPGA transceivers for hardware errors such as buffer overflow and loss of lock.

When a hard error occurs, the Aurora core automatically resets itself and attempts to re-initialize. In most cases, this permits re-establishing the Aurora 64B/66B channel when the hardware issue causing the hard error is resolved.

  • Groups: io, f2f_interface

  • Reported By: TPM FPGAs

  • Expected: 0

  • Cleared When Read: No, hard errors are live, they are reported every clock cycle in which they are detected. Likely if a hard error occurs, the tile must be re-initialised.

Developer info
  • Tile Method: check_f2f_hard_errors

    • Returns: hard_err register value (int)


UDP Interface

ARP

Description:

Check UDP 40GbE ARP Table has been populated correctly. The TPM FPGAs transmit data products as UDP packets to the Science Data Network (SDN) using 40GbE.

Confirms that all valid (populated) entries in the TPM 40GbE ARP table are resolved with MAC addresses.

NOTE: This is a non-destructive version of the method check_arp_table which is to be used during station initialise.

NOTE: ARP table entries for 40GbE QSFP connections that were disabled at initialise via the active_40g_ports_setting or qsfp_detection setting are skipped.

  • Groups: io, udp_interface

  • Reported By: TPM FPGAs

  • Expected: True

  • Cleared When Read: No, the status is evaluated from the live ARP table contents.

Developer info
  • Tile Method: check_udp_arp_table_status(show_result=False)

    • Arguments:

      • show_result (bool): prints ARP table contents to logger

    • Returns: True if all populated ARP table entries are also resolved (bool)


Status

Description:

UDP 40GbE consolidated error status. The TPM FPGAs in a station aggregate data into station beams and ultimately transmit data products to MCCS and CBF as UDP packets to the Science Data Network (SDN) using 40GbE.

UDP Status is True if all of the below conditions are met:

  • The link is UP - the UDP Physical Layer (PHY) virtual lanes are aligned.

  • There are no RX Cyclic Redundancy Check (CRC) errors.

  • There are no RX Bit Interleave Parity (BIP) errors.

  • There are no Physical Layer (PHY) 66B/64B RX decoding errors.

  • Groups: io, udp_interface

  • Reported By: TPM FPGAs

  • Expected: True

  • Cleared When Read: Yes

Developer info
  • Tile Method: check_udp_status

    • Arguments:

      • fpga_id (int): Specify which FPGA, 0, 1, or None for both FPGAs

    • Returns: True if link is up and error counters are 0 (bool)

  • Tile Method to Clear: clear_udp_status


CRC Error Count

FPGA0

Description:

UDP 40GbE RX Cyclic Redundancy Check (CRC) errors. The TPM FPGAs in a station aggregate data into station beams and ultimately transmit data products to MCCS and CBF as UDP packets to the Science Data Network (SDN) using 40GbE.

A count of FPGA0 RX CRC errors.

RX CRC (Cyclic Redundancy Check) errors indicate corrupted Ethernet frames detected at Layer-2 (Data Link Layer) via a checksum mismatch, most commonly caused by Layer-1 (Physical Layer) issues like faulty cables or transceivers.

  • Groups: io, udp_interface

  • Reported By: TPM FPGAs

  • Expected: 0

  • Cleared When Read: Yes

Developer info
  • Tile Method: check_udp_crc_error_counter(fpga_id=0)

    • Arguments:

      • fpga_id (int): Specify which FPGA, 0, 1, or None for both FPGAs

    • Returns: counter values (dict)

  • Tile Method to Clear: clear_udp_status(fpga_id=0)


FPGA1

Description:

UDP 40GbE RX Cyclic Redundancy Check (CRC) errors. The TPM FPGAs in a station aggregate data into station beams and ultimately transmit data products to MCCS and CBF as UDP packets to the Science Data Network (SDN) using 40GbE.

A count of FPGA1 RX CRC errors.

RX CRC (Cyclic Redundancy Check) errors indicate corrupted Ethernet frames detected at Layer-2 (Data Link Layer) via a checksum mismatch, most commonly caused by Layer-1 (Physical Layer) issues like faulty cables or transceivers.

  • Groups: io, udp_interface

  • Reported By: TPM FPGAs

  • Expected: 0

  • Cleared When Read: Yes

Developer info
  • Tile Method: check_udp_crc_error_counter(fpga_id=1)

    • Arguments:

      • fpga_id (int): Specify which FPGA, 0, 1, or None for both FPGAs

    • Returns: counter values (dict)

  • Tile Method to Clear: clear_udp_status(fpga_id=1)


BIP Error Count

FPGA0

Description:

UDP 40GbE Bit Interleaved Parity (BIP) errors. The TPM FPGAs in a station aggregate data into station beams and ultimately transmit data products to MCCS and CBF as UDP packets to the Science Data Network (SDN) using 40GbE.

A count of FPGA0 RX BIP errors.

RX BIP (Bit Interleaved Parity) errors indicate bit-level corruption detected at Layer-1 (Physical Layer) via parity checks, most commonly caused by physical transmission issues like signal degreated caused by faulty cables or transceivers.

  • Groups: io, udp_interface

  • Reported By: TPM FPGAs

  • Expected: {'lane0': 0, 'lane1': 0, 'lane2': 0, 'lane3': 0}

  • Cleared When Read: Yes

Developer info
  • Tile Method: check_udp_bip_error_counter(fpga_id=0)

    • Arguments:

      • fpga_id (int): Specify which FPGA, 0, 1, or None for both FPGAs

    • Returns: counter values (dict of int with an entry for each FPGA and PHY lane)

  • Tile Method to Clear: clear_udp_status(fpga_id=0)


FPGA1

Description:

UDP 40GbE Bit Interleaved Parity (BIP) errors. The TPM FPGAs in a station aggregate data into station beams and ultimately transmit data products to MCCS and CBF as UDP packets to the Science Data Network (SDN) using 40GbE.

A count of FPGA1 RX BIP errors.

RX BIP (Bit Interleaved Parity) errors indicate bit-level corruption detected at Layer-1 (Physical Layer) via parity checks, most commonly caused by physical transmission issues like signal degreated caused by faulty cables or transceivers.

  • Groups: io, udp_interface

  • Reported By: TPM FPGAs

  • Expected: {'lane0': 0, 'lane1': 0, 'lane2': 0, 'lane3': 0}

  • Cleared When Read: Yes

Developer info
  • Tile Method: check_udp_bip_error_counter(fpga_id=1)

    • Arguments:

      • fpga_id (int): Specify which FPGA, 0, 1, or None for both FPGAs

    • Returns: counter values (dict of int with an entry for each FPGA and PHY lane)

  • Tile Method to Clear: clear_udp_status(fpga_id=1)


Decode Error Count

FPGA0

Description:

UDP 40GbE Physical Layer (PHY) 66B/64B decoding errors. The TPM FPGAs in a station aggregate data into station beams and ultimately transmit data products to MCCS and CBF as UDP packets to the Science Data Network (SDN) using 40GbE.

A count of FPGA0 RX decode errors.

PHY RX decode errors indicate failures in interpreting the incoming physical signal detected at Layer-1 (Physical Layer) due to invalid symbols or encoding violations, most commonly caused by severe signal integrity issues such as noise ot faulty cables or transceivers.

  • Groups: io, udp_interface

  • Reported By: TPM FPGAs

  • Expected: {'lane0': 0, 'lane1': 0, 'lane2': 0, 'lane3': 0}

  • Cleared When Read: Yes

Developer info
  • Tile Method: check_udp_decode_error_counter(fpga_id=0)

    • Arguments:

      • fpga_id (int): Specify which FPGA, 0, 1, or None for both FPGAs

    • Returns: counter values (dict of int with an entry for each FPGA and PHY lane)

  • Tile Method to Clear: clear_udp_status(fpga_id=0)


FPGA1

Description:

UDP 40GbE Physical Layer (PHY) 66B/64B decoding errors. The TPM FPGAs in a station aggregate data into station beams and ultimately transmit data products to MCCS and CBF as UDP packets to the Science Data Network (SDN) using 40GbE.

A count of FPGA1 RX decode errors.

PHY RX decode errors indicate failures in interpreting the incoming physical signal detected at Layer-1 (Physical Layer) due to invalid symbols or encoding violations, most commonly caused by severe signal integrity issues such as noise ot faulty cables or transceivers.

  • Groups: io, udp_interface

  • Reported By: TPM FPGAs

  • Expected: {'lane0': 0, 'lane1': 0, 'lane2': 0, 'lane3': 0}

  • Cleared When Read: Yes

Developer info
  • Tile Method: check_udp_decode_error_counter(fpga_id=1)

    • Arguments:

      • fpga_id (int): Specify which FPGA, 0, 1, or None for both FPGAs

    • Returns: counter values (dict of int with an entry for each FPGA and PHY lane)

  • Tile Method to Clear: clear_udp_status(fpga_id=1)


Linkup Loss Count

FPGA0

Description:

UDP 40GbE link loss status. The TPM FPGAs in a station aggregate data into station beams and ultimately transmit data products to MCCS and CBF as UDP packets to the Science Data Network (SDN) using 40GbE.

A count of FPGA0 UDP link loss events.

To track any occurances of intermittent loss of link-up, the FPGA increments a counter each time the FPGA detects the link is down by monitoring the UDP Physical Layer (PHY) virtual lanes are aligned signal.

  • Groups: io, udp_interface

  • Reported By: TPM FPGAs

  • Expected: 0

  • Cleared When Read: Yes

Developer info
  • Tile Method: check_udp_linkup_loss_counter(fpga_id=0, show_result=False)

    • Arguments:

      • fpga_id (int): Specify which FPGA, 0, 1, or None for both FPGAs

      • show_result (bool): prints error counts on logger

    • Returns: counter values (dict)

  • Tile Method to Clear: clear_udp_status(fpga_id=0)


FPGA1

Description:

UDP 40GbE link loss status. The TPM FPGAs in a station aggregate data into station beams and ultimately transmit data products to MCCS and CBF as UDP packets to the Science Data Network (SDN) using 40GbE.

A count of FPGA1 UDP link loss events.

To track any occurances of intermittent loss of link-up, the FPGA increments a counter each time the FPGA detects the link is down by monitoring the UDP Physical Layer (PHY) virtual lanes are aligned signal.

  • Groups: io, udp_interface

  • Reported By: TPM FPGAs

  • Expected: 0

  • Cleared When Read: Yes

Developer info
  • Tile Method: check_udp_linkup_loss_counter(fpga_id=1, show_result=False)

    • Arguments:

      • fpga_id (int): Specify which FPGA, 0, 1, or None for both FPGAs

      • show_result (bool): prints error counts on logger

    • Returns: counter values (dict)

  • Tile Method to Clear: clear_udp_status(fpga_id=1)


Data Router

Status

Description:

Data router error flag status.

The TPM supports sharing a single 40GbE QSFP connection between the two FPGAs, transmitting and receiving all UDP packets via a primary FPGA. The routing of all data to and from the FPGA-to-FPGA (F2F) interface and the active 40GbE UDP interface is managed by a component called the data router.

The data router status is > 0 if any of the below errors are detected:

  • The F2F to UDP Clock Domain Crossing FIFO (First-In, First-Out) is written when full.

  • The UDP to F2F Clock Domain Crossing FIFO is written when full.

  • The UDP TX Arbiter Packet FIFO for the primary FPGA’s staton beam is full.

  • The UDP TX Arbiter Packet FIFO for the primary FPGA’s LMC data is stalled.

  • The UDP TX Arbiter Packet FIFO for the secondary FPGA’s staton beam and LMC data is full.

  • The UDP TX Payload FIFO is stalled.

  • The UDP RX Input Selector FIFO is written when full.

  • Groups: io, data_router

  • Reported By: TPM FPGAs

  • Expected: {'FPGA0': 0, 'FPGA1': 0}

  • Cleared When Read: Yes

Developer info
  • Tile Method: check_data_router_status

    • Arguments:

      • fpga_id (int): Specify which FPGA, 0, 1, or None for both FPGAs

    • Returns: register values (dict of int with an entry for each FPGA)

  • Tile Method to Clear: clear_data_router_status


Discarded Packets

Description:

Number of station beam packets discarded by the data router.

The TPM supports sharing a single 40GbE QSFP connection between the two FPGAs, transmitting and receiving all UDP packets via a primary FPGA. The routing of all data to and from the FPGA-to-FPGA (F2F) interface and the active 40GbE UDP interface is managed by a component called the data router.

Example: [ rejected_packets, overflow_packets ]

rejected_packets: Packets that are discarded due to incorrect size.

  • 0 → No packets were rejected since the last query.

  • N > 0 → N packets were rejected since the last query.

overflow_packets: Packets that are discarded due to the UDP RX Input Selector FIFO being full.

  • 0 → No packets overflows since the last query.

  • N > 0 → N packet overflows since the last query.

  • Groups: io, data_router

  • Reported By: TPM FPGAs

  • Expected: {'FPGA0': [0, 0], 'FPGA1': [0, 0]}

  • Cleared When Read: Yes

Developer info
  • Tile Method: check_data_router_discarded_packets

    • Arguments:

      • fpga_id (int): Specify which FPGA, 0, 1, or None for both FPGAs

    • Returns: register values (dict of list of counts with an entry for each FPGA)

  • Tile Method to Clear: clear_data_router_status