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
result
: integer, data availability.sweep_no
: integer, per-SERDES trace acquisition counter.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.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:
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] ?