PL1_GET_DATA

code: 425

Attention

Only for the following modules:

  • Freya-800G-4S-1P

  • Freya-800G-4S-1P-OSFP

# set
<module-index>/<port-index> PL1_CTRL [<serdes_index>, <func>] <result> <sweepno> <age_us> <value>

Description

The Signal Integrity feature offers the equivalent of an Equivalent Time oscilloscope trace of the RX PAM4 signal (later, also PAM2). The trace is done with the A/D converter in the GTM receiver also doing the data sampling / CDR function, i.e. the trace is taken after the RX equalizer.

The HW characteristics of the Versal GTM used in Z800 Freya are: Trace length = 2000 samples, sample resolution = 7 bits 2’s complement, i.e. range = -64..63.

Using the sampled eye scan feature through CLI involves two steps:

  • Trigger the acquisition of a trace (PL1_CTRL)

  • Retrieve the trace data (PL1_GET_DATA)

This command is a generic function to retrieve dynamic data related to Layer 1 / SERDES. For now, only used for signal integrity scan.

Actions

set

Indices

func: integer, function to operate on.

  • SAMPLED_SIGNAL_INTEGRITY_SCAN = 0

Parameters

  1. result: integer, data availability.

  2. sweep_no: integer, per-SERDES trace acquisition counter.

  3. age_us: integer, the “age” of the trace data in microseconds, i.e. the time from data acquisition from hardware was completed until the time the command reply data is generated.

  4. value: byte list, a set of 16 bit signed 2-complement sample values. With present hardware, the range of each sample is -64..63. In CLI scripting, each sample value is represented as two bytes, msb first.

For func==0, sampled eye scan:

  • result==0: No data available.

“No data available” means that either a scan was never started, an acquisition was started and in progress, or the acquired data has become too old (e.g. older than 500 ms). The acquisition time for a trace is in the very low ms-range. If result==0, sweep_no and age_us are dummy (=0), and no additional data are returned.

  • result==1: Data returned. In that case, the rest of the parameters apply:

sweep_no: per-SERDES trace acquisition counter: 1,2,3… Each trace can be returned multiple times, to different users, within its lifetime. A new trace acquisition is triggered with the PL1_CTRL command.

age_us: The “age” of the trace data in microseconds, i.e. the time from data acquisition from hardware was completed until the time the command reply data is generated.

value: The rest of the reply is a set of 16 bit signed 2-complement sample values. With present hardware, the range of each sample is -64..63. In XMP scripting, each sample value is represented as two bytes, msb first.

With present implementation, 2006 sample values (4012 bytes) are returned.

The first 6 sample values are so-called “sampled levels”: <p1> <p2> <p3> <m1> <m2> <m3>

Their meaning is explained by the following figure, where the “sampled levels” are illustrated by horizontal lines:

Illustration of sampled levels

Fig. 17 Illustration of sampled levels

M2 and P2 are “discrimination levels”. The 3rd discrimination level, the line at 0-level, is fixed and not acquired as part of the trace data.

P1, P3, M1, M3 are the average of each PAM4 level.

For PAM2/NRZ, only P1 and M1 are valid.

The remaining 2000 sample values in the reply are the trace itself - sampled values of the RX signal.

Example

# get
input:  0/0 PL1_GET_DATA [3,0] ?