IO
JESD Interface
Link Status
Description:
JESD204 lane synchronisation status 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.
See Xilinx JESD204 v7.2 Product Guide.
JESD Sync Status is True if both of the below conditions are met:
A SYSREF event has been captured.
Link SYNC achieved.
Groups:
io,jesd_interfaceReported By: TPM FPGAs
Expected:
TrueCleared When Read: No, these metrics are continuously evaluated by the Xilinx JESD204 core so are live measurements.
Developer info
Tile Method:
check_jesd_link_statusArguments:
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 a SYSREF event has been captured and link SYNC is achieved (bool)
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_interfaceReported 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_interfaceReported 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_interfaceReported 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_interfaceReported 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_interfaceReported By: TPM FPGAs
Expected:
TrueCleared 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_interfaceReported By: TPM FPGAs
Expected:
0Cleared 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_interfaceReported By: TPM FPGAs
Expected:
0Cleared 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_interfaceReported 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_interfaceReported 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_interfaceReported By: TPM FPGAs
Expected:
TrueCleared When Read: No, this metric is managed by the Xilinx Memory Interface which autonomously updates the status.
Developer info
Tile Method:
check_ddr_initialisationArguments:
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_interfaceReported By: TPM FPGAs
Expected:
0Cleared 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_interfaceReported By: TPM FPGAs
Expected:
0Cleared 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_interfaceReported 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_interfaceReported 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_interfaceReported 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_interfaceReported 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_interfaceReported 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_interfaceReported 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_interfaceReported 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_interfaceReported By: TPM FPGAs
Expected:
0Cleared 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_errorsReturns: 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_interfaceReported By: TPM FPGAs
Expected:
0Cleared 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_errorsReturns: 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_interfaceReported By: TPM FPGAs
Expected:
TrueCleared 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_interfaceReported By: TPM FPGAs
Expected:
TrueCleared When Read: Yes
Developer info
Tile Method:
check_udp_statusArguments:
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_interfaceReported By: TPM FPGAs
Expected:
0Cleared 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_interfaceReported By: TPM FPGAs
Expected:
0Cleared 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_interfaceReported 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_interfaceReported 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_interfaceReported 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_interfaceReported 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_interfaceReported By: TPM FPGAs
Expected:
0Cleared 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_interfaceReported By: TPM FPGAs
Expected:
0Cleared 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_routerReported By: TPM FPGAs
Expected:
{'FPGA0': 0, 'FPGA1': 0}Cleared When Read: Yes
Developer info
Tile Method:
check_data_router_statusArguments:
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_routerReported By: TPM FPGAs
Expected:
{'FPGA0': [0, 0], 'FPGA1': [0, 0]}Cleared When Read: Yes
Developer info
Tile Method:
check_data_router_discarded_packetsArguments:
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