Low Latency 100-Gbps Ethernet IP Core User Guide

ID 683160
Date 4/15/2021
Public
Document Table of Contents

3.4.1.6. RX Statistics Registers

The RX statistics registers count RX Ethernet traffic and errors. The 64-bit statistics registers are designed to roll over, to ensure timing closure on the FPGA. However, these registers should never roll over if the link is functioning properly. The statistics registers check the size of frames, which includes the following fields:

  • Size of the destination address
  • Size of the source address
  • Size of the data
  • Four bytes of CRC

The RX statistics counters module is a synthesis option. The statistics registers are counters that are implemented inside the CSR. When you turn on the Enable RX statistics parameter in the LL 100GbE parameter editor, the counters are implemented in the CSR. When you turn off the Enable RX statistics parameter in the LL 100GbE parameter editor, the counters are not implemented in the CSR, and read access to the counters returns read data equal to 0.

Reading the value of a statistics register does not affect its value. A configuration register at offset 0x945 allows you to clear all of the RX statistics counters.

To ensure that the counters you read are consistent, you should issue a shadow request to create a snapshot of all of the RX statistics registers, by setting bit [2] of the configuration register at offset 0x945. Until you reset this bit, the counters continue to increment but the readable values remain constant.

Table 42.  Receive Side Statistics Registers

Address

Name-

Description

Access

0x900

CNTR_RX_FRAGMENTS_LO

Number of received frames less than 64 bytes and reporting a CRC error (lower 32 bits)

RO

0x901

CNTR_RX_FRAGMENTS_HI

Number of received frames less than 64 bytes and reporting a CRC error (upper 32 bits)

RO

0x902

CNTR_RX_JABBERS_LO

Number of received oversized frames reporting a CRC error (lower 32 bits)

RO

0x903

CNTR_RX_JABBERS_HI

Number of received oversized frames reporting a CRC error (upper 32 bits)

RO

0x904

CNTR_RX_FCS_LO

Number of received packets with FCS errors. This register maintains a count of the number of pulses on the l<n>_rx_fcs_error or rx_fcs_error output signal (lower 32 bits)

RO

0x905

CNTR_RX_FCS_HI

Number of received packets with FCS errors. This register maintains a count of the number of pulses on the l<n>_rx_fcs_error output signal (upper 32 bits)

RO

0x906

CNTR_RX_CRCERR_LO

Number of received frames with a frame of length at least 64, with CRC error (lower 32 bits)

RO

0x907

CNTR_RX_CRCERR_HI

Number of received frames with a frame of length at least 64, with CRC error (upper 32 bits)

RO

0x908

CNTR_RX_MCAST_DATA_ERR_LO

Number of errored multicast frames received, excluding control frames (lower 32 bits)

RO

0x909

CNTR_RX_MCAST_DATA_ERR_HI

Number of errored multicast frames received, excluding control frames (upper 32 bits)

RO

0x90A

CNTR_RX_BCAST_DATA_ERR_LO

Number of errored broadcast frames received, excluding control frames (lower 32 bits)

RO

0x90B

CNTR_RX_BCAST_DATA_ERR_HI

Number of errored broadcast frames received, excluding control frames (upper 32 bits)

RO

0x90C

CNTR_RX_UCAST_DATA_ERR_LO

Number of errored unicast frames received, excluding control frames (lower 32 bits)

RO

0x90D

CNTR_RX_UCAST_DATA_ERR_HI

Number of errored unicast frames received, excluding control frames (upper 32 bits)

RO

0x90E

CNTR_RX_MCAST_CTRL_ERR_LO

Number of errored multicast control frames received (lower 32 bits)

RO

0x90F

CNTR_RX_MCAST_CTRL_ERR_HI

Number of errored multicast control frames received (upper 32 bits)

RO

0x910

CNTR_RX_BCAST_CTRL_ERR_LO

Number of errored broadcast control frames received (lower 32 bits)

RO

0x911

CNTR_RX_BCAST_CTRL_ERR_HI

Number of errored broadcast control frames received (upper 32 bits)

RO

0x912

CNTR_RX_UCAST_CTRL_ERR_LO

Number of errored unicast control frames received (lower 32 bits)

RO

0x913

CNTR_RX_UCAST_CTRL_ERR_HI

Number of errored unicast control frames received (upper 32 bits)

RO

0x914

CNTR_RX_PAUSE_ERR_LO

Number of errored pause frames received (lower 32 bits)

RO

0x915

CNTR_RX_PAUSE_ERR_HI

Number of errored pause frames received (upper 32 bits)

RO

0x916

CNTR_RX_64B_LO

Number of 64-byte received frames (lower 32 bits), including the CRC field but excluding the preamble and SFD bytes

RO

0x917

CNTR_RX_64B_HI

Number of 64-byte received frames (upper 32 bits), including the CRC field but excluding the preamble and SFD bytes

RO

0x918

CNTR_RX_65to127B_LO

Number of received frames between 65–127 bytes (lower 32 bits)

RO

0x919

CNTR_RX_65to127B_HI

Number of received frames between 65–127 bytes (upper 32 bits)

RO

0x91A

CNTR_RX_128to255B_LO

Number of received frames between 128 –255 bytes (lower 32 bits)

RO

0x91B

CNTR_RX_128to255B_HI

Number of received frames between 128 –255 bytes (upper 32 bits)

RO

0x91C

CNTR_RX_256to511B_LO

Number of received frames between 256 –511 bytes (lower 32 bits)

RO

0x91D

CNTR_RX_256to511B_HI

Number of received frames between 256 –511 bytes (upper 32 bits)

RO

0x91E

CNTR_RX_512to1023B_LO

Number of received frames between 512–1023 bytes (lower 32 bits)

RO

0x91F

CNTR_RX_512to1023B_HI

Number of received frames between 512 –1023 bytes (upper 32 bits)

RO

0x920

CNTR_RX_1024to1518B_LO

Number of received frames between 1024–1518 bytes (lower 32 bits)

RO

0x921

CNTR_RX_1024to1518B_HI

Number of received frames between 1024–1518 bytes (upper 32 bits)

RO

0x922

CNTR_RX_1519toMAXB_LO

Number of received frames between 1519 bytes and the maximum size defined in the MAX_RX_SIZE_CONFIG register (lower 32 bits)

RO

0x923

CNTR_RX_1519toMAXB_HI

Number of received frames between 1519 bytes and the maximum size defined in the MAX_RX_SIZE_CONFIG register (upper 32 bits)

RO

0x924

CNTR_RX_OVERSIZE_LO

Number of oversized frames (frames with more bytes than the number specified in the MAX_RX_SIZE_CONFIG register) received (lower 32 bits)

RO

0x925

CNTR_RX_OVERSIZE_HI

Number of oversized frames (frames with more bytes than the number specified in the MAX_RX_SIZE_CONFIG register) received (upper 32 bits)

RO

0x926

CNTR_RX_MCAST_DATA_OK_LO

Number of valid multicast frames received, excluding control frames (lower 32 bits)

RO

0x927

CNTR_RX_MCAST_DATA_OK_HI

Number of valid multicast frames received, excluding control frames (upper 32 bits)

RO

0x928

CNTR_RX_BCAST_DATA_OK_LO

Number of valid broadcast frames received, excluding control frames (lower 32 bits)

RO

0x929

CNTR_RX_BCAST_DATA_OK_HI

Number of valid broadcast frames received, excluding control frames (upper 32 bits)

RO

0x92A

CNTR_RX_UCAST_DATA_OK_LO

Number of valid unicast frames received, excluding control frames (lower 32 bits)

RO

0x92B

CNTR_RX_UCAST_DATA_OK_HI

Number of valid unicast frames received, excluding control frames (upper 32 bits)

RO

0x92C

CNTR_RX_MCAST_CTRL_LO

Number of valid multicast frames received, excluding data frames (lower 32 bits)

RO

0x92D

CNTR_RX_MCAST_CTRL_HI

Number of valid multicast frames received, excluding data frames (upper 32 bits)

RO

0x92E

CNTR_RX_BCAST_CTRL_LO

Number of valid broadcast frames received, excluding data frames (lower 32 bits)

RO

0x92F

CNTR_RX_BCAST_CTRL_HI

Number of valid broadcast frames received, excluding data frames (upper 32 bits)

RO

0x930

CNTR_RX_UCAST_CTRL_LO

Number of valid unicast frames received, excluding data frames (lower 32 bits)

RO

0x931

CNTR_RX_UCAST_CTRL_HI

Number of valid unicast frames received, excluding data frames (upper 32 bits)

RO

0x932

CNTR_RX_PAUSE_LO

Number of valid pause frames received (lower 32 bits)

RO

0x933

CNTR_RX_PAUSE_HI

Number of valid pause frames received (upper 32 bits)

RO

0x934

CNTR_RX_RUNT_LO

Number of received runt packets (lower 32 bits)

A run is a packet of size less than 64 bytes but greater than eight bytes. If a packet is eight bytes or smaller, it is considered a decoding error and not a runt frame, and the IP core does not flag it nor count it as a runt.

RO

0x935

CNTR_RX_RUNT_HI

Number of received runt packets (upper 32 bits)

A run is a packet of size less than 64 bytes but greater than eight bytes. If a packet is eight bytes or smaller, it is considered a decoding error and not a runt frame, and the IP core does not flag it nor count it as a runt.

RO

0x936

CNTR_RX_ST_LO

Number of received frame starts (lower 32 bits)

RO

0x937

CNTR_RX_ST_HI

Number of received frame starts (upper 32 bits)

RO

0x938–0x93F

Reserved

0x940 RXSTAT_REVID RX statistics module revision ID. RO
0x941 RXSTAT_SCRATCH Scratch register available for testing. Default value is 0x09. RW
0x942 RXSTAT_NAME_0 First 4 characters of IP core variation identifier string "100gMacStats" RO
0x943 RXSTAT_NAME_1 Next 4 characters of IP core variation identifier string "100gMacStats" RO
0x944 RXSTAT_NAME_2 Final 4 characters of IP core variation identifier string "100gMacStats" RO
0x945

CNTR_RX_CONFIG

Bits [2:0]: Configuration of RX statistics counters:

  • Bit [2]: Shadow request (active high): When set to the value of 1, RX statistics collection is paused. The underlying counters continue to operate, but the readable values reflect a snapshot at the time the pause flag was activated. Write a 0 to release.
  • Bit [1]: Parity-error clear. When software sets this bit, the IP core clears the parity bit CNTR_RX_STATUS[0]. This bit (CNTR_RX_CONFIG[1]) is self-clearing.
  • Bit [0]: Software can set this bit to the value of 1 to reset all of the RX statistics registers at the same time. This bit is self-clearing.

Bits [31:3] are Reserved.

RW

0x946

CNTR_RX_STATUS

  • Bit [1]: Indicates that the RX statistics registers are paused (while CNTR_RX_CONFIG[2] is asserted) .
  • Bit [0]: Indicates the presence of at least one parity error in the RX statistics counters.

Bits [31:2] are Reserved.

RO
0x960 RxOctetsOK_LO Number of received payload bytes in frames with no FCS, undersized, oversized, or payload length errors. This register is compliant with section 5.2.1.14 of the IEEE Standard 802.3-2008.

This register corresponds to the signals rx_inc_octetsOK[15:0] and rx_inc_octetsOK_valid.

RO
0x961 RxOctetsOK_HI RO