pl1_commands module

This module contains the advanced layer 1 classes that mainly deal auto-negotiation and link training on a Freya port.

Port Advanced Layer 1 Commands

class PL1_ANLT[source]

Bases: object

ANLT action

class GetDataAttr[source]

Bases: ResponseBodyStruct

class SetDataAttr[source]

Bases: RequestBodyStruct

disable_anlt()

Disable ANLT.

enable_an_lt_auto()

Enable Autoneg + Link Training (auto).

enable_an_lt_interactive()

Enable Autoneg + Link Training (interactive).

enable_an_only()

Enable Autoneg only.

enable_lt_auto_only()

Enable Link Training (auto) only.

enable_lt_interactive_only()

Enable Link Training (interactive) only.

class PL1_AUTONEGINFO[source]

Bases: object

Get advanced auto-negotiation statistics. Statistics are split into a number of pages.

class GetDataAttr[source]

Bases: ResponseBodyStruct

duration_us

duration of the auto-negotiation in microseconds, from autoneg is enabled on the port to the negotiation is finished.

negotiation_fec_fail_count

number of negotiation FEC failures.

negotiation_hcd_fail_count

number of negotiation HCD (Highest Common Denominator) failures.

negotiation_loss_of_sync_count

number of negotiation Loss of Sync failures.

negotiation_success_count

number of negotiation successes.

negotiation_timeout_count

number of negotiation timeouts.

received number of Link Code Words (Base Pages).

rx_next_page_message_count

received number of Next Pages - Message Pages.

rx_next_page_unformatted_count

received number of Nex Pages - Unformatted Pages.

transmitted number of Link Code Words (Base Pages).

tx_next_page_message_count

transmitted number of Next Pages - Message Pages.

tx_next_page_unformatted_count

transmitted number of Nex Pages - Unformatted Pages.

get()[source]

Get L1 auto-negotiation information. Information is split into a number of pages.

Returns:

L1 auto-negotiation information

Return type:

PL1_AUTONEGINFO.GetDataAttr

class PL1_AUTONEG_ABILITIES[source]

Bases: object

Return the supported technology abilities, FEC abilities, and pause abilities of the port.

class GetDataAttr[source]

Bases: ResponseBodyStruct

fec_modes_supported

Supported FEC modes by the port. This returns a value in Hex of the format HH (8 bits). Each bit corresponds to FEC mode as defined in AutoNegFECAbility. A bit of 1 means the corresponding FEC mode is supported by the port.

pause_modes_supported

Pause abilities supported by the port. This returns a value in Hex of the format HH (8 bits). Each bit corresponds to pause mode as defined in AutoNegPauseAbility. A bit of 1 means the corresponding FEC mode is supported by the port.

tech_abilities_supported

Supported technology abilities by the port. This returns a value in Hex of the format HHHHHHHH (64 bits). Each bit corresponds to technology ability as defined in AutoNegTecAbility. A bit of 1 means the corresponding technology ability is supported by the port.

get()[source]

Get the supported technology abilities, FEC abilities, and pause abilities of the port.

Returns:

The supported abilities

Return type:

Token[GetDataAttr]

class PL1_AUTONEG_CONFIG[source]

Bases: object

Auto-negotiation configuration for Freya

class GetDataAttr[source]

Bases: ResponseBodyStruct

class SetDataAttr[source]

Bases: RequestBodyStruct

get()[source]

Get the advertised technology abilities, FEC abilities, and pause abilities of the port.

Returns:

The advertised abilities

Return type:

PL1_AUTONEG_CONFIG.GetDataAttr

set(tech_abilities, fec_abilities, pause_mode)[source]

Set the advertised technology abilities, FEC abilities, and pause abilities of the port.

Parameters:
  • tech_abilities (Hex) – Advertised technology abilities bitmask

  • fec_abilities (Hex) – Advertised FEC abilities bitmask

  • pause_mode (Hex) – Advertised pause mode bitmask

class PL1_AUTONEG_STATUS[source]

Bases: object

Returns received technology abilities, FEC abilities, pause abilities, HCD technology ability, FEC mode result, and pause mode result.

class GetDataAttr[source]

Bases: ResponseBodyStruct

autoneg_state

Autoneg status

fec_mode_result

FEC mode negotiation result

mode

Autoneg mode

pause_mode_result

Pause mode negotiation result

received_fec_abilities

Received FEC capabilities bitmask from the remote port

To parse the bitmask, refer to the AutoNegFECAbility enum IntFlag.

received_pause_mode

Received pause capabilities bitmask from the remote port

To parse the bitmask, refer to the AutoNegPauseAbility enum IntFlag.

received_tech_abilities

Received technology abilities bitmask from the remote port

To parse the bitmask, refer to the AutoNegTecAbility enum IntFlag.

tech_ability_hcd_status

HCD technology ability negotiation status

tech_ability_hcd_value

HCD technology ability negotiation result

get()[source]

Get the autonegotiation status.

Returns:

The autonegotiation status

Return type:

PL1_AUTONEG_STATUS.GetDataAttr

class PL1_CFG_TMP[source]

Bases: object

Warning

Still in beta mode. Subjected to changes

Configure some L1 parameters.

class GetDataAttr[source]

Bases: ResponseBodyStruct

Data structure of the get response.

class SetDataAttr[source]

Bases: RequestBodyStruct

Data structure of the set action.

get()[source]

Get various L1 parameters

Returns:

various L1 parameters

Return type:

PL1_CFG_TMP.GetDataAttr

set(values)[source]

Get various L1 parameters

Parameters:

values (List[int]) – L1 parameters

class PL1_CTRL[source]

Bases: object

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 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 control function related to Layer 1 / SERDES. For now, only used for signal integrity scan.

class SetDataAttr[source]

Bases: RequestBodyStruct

opcode

Operation code

set(opcode)[source]

Set the control command

Parameters:

opcode (Layer1Opcode) – operation code

class PL1_CWE_BIT_ERR_MASK[source]

Bases: object

Configure the bit error mask for the errored symbols.

class GetDataAttr[source]

Bases: ResponseBodyStruct

bitmask

bit error mask for the errored symbols, big endian, only 10 bits are effective.

mode

bit error mask mode.

class SetDataAttr[source]

Bases: RequestBodyStruct

bitmask

bit error mask for the errored symbols, big endian, only 10 bits are effective.

mode

bit error mask mode.

get()[source]

Get the bit error mask configuration.

Returns:

The bit error mask mode and bitmask

Return type:

PL1_CWE_BIT_ERR_MASK.GetDataAttr

set(mode, bitmask)[source]

Set the bit error mask configuration.

Parameters:
  • mode (FecCodewordBitErrorMaskMode) – Bit error mask mode

  • bitmask (Hex) – Bit error mask for the errored symbols, big endian, only 10 bits are effective

set_all_bits()

Set all bits to errored bits in an errored symbol.

set_no_bits()

Set no bits to errored bits in an errored symbol.

class PL1_CWE_CONTROL[source]

Bases: object

Control the FEC codeword error injection.

class GetDataAttr[source]

Bases: ResponseBodyStruct

action

Control action for FEC codeword error injection

class SetDataAttr[source]

Bases: RequestBodyStruct

action

Control action for FEC codeword error injection

get()[source]

Get the current control action for FEC codeword error injection.

Returns:

The current control action for FEC codeword error injection

Return type:

PL1_CWE_CONTROL.GetDataAttr

set(action)[source]

Set the control action for FEC codeword error injection.

Parameters:

action (StartOrStop) – Control action for FEC codeword error injection

Returns:

A token indicating the completion of the set operation

set_start()

Start FEC codeword error injection.

set_stop()

Stop FEC codeword error injection.

class PL1_CWE_CYCLE[source]

Bases: object

Configure the FEC codeword error injection cycle.

class GetDataAttr[source]

Bases: ResponseBodyStruct

cycle_len

The number of FEC codewords in the cycle, must be larger than 0 and an even number.

error_len

The number of consecutive errored FEC codewords in a cycle, must not be larger than cycle_len

loop

Loop count of the FEC codeword error injection cycle. <loop> == 0 means continuous.

class SetDataAttr[source]

Bases: RequestBodyStruct

cycle_len

The number of FEC codewords in the cycle, must be larger than 0 and an even number.

error_len

The number of consecutive errored FEC codewords in a cycle, must not be larger than cycle_len

loop

Loop count of the FEC codeword error injection cycle. <loop> == 0 means continuous.

get()[source]

Get the FEC codeword error injection cycle configuration.

Returns:

The FEC codeword error injection cycle configuration

Return type:

PL1_CWE_CYCLE.GetDataAttr

set(loop, cycle_len, error_len)[source]

Set the FEC codeword error injection cycle configuration.

Parameters:
  • loop (int) – Loop count of the FEC codeword error injection cycle. <loop> == 0 means continuous.

  • cycle_len (int) – The number of FEC codewords in the cycle, must be larger than 0 and an even number.

  • error_len (int) – The number of consecutive errored FEC codewords in a cycle, must not be larger than cycle_len

set_continuous(cycle_len, error_len)

Set continuous loop

class PL1_CWE_ERR_SYM_INDICES[source]

Bases: object

Configure the positions of the errored symbols in errored codewords.

class GetDataAttr[source]

Bases: ResponseBodyStruct

error_sym_indices

the indices of the position of the errored symbols.

  • An empty list means there is no errored symbol in the errored codewords.

  • The indices in the list must not duplicate.

  • The indices in the list do not necessarily need to be sorted.

  • The maximum value of an index must not be larger than what the FEC schema allows, e.g. an index must not be larger than 543 for RS(544, 514).

class SetDataAttr[source]

Bases: RequestBodyStruct

error_sym_indices

the indices of the position of the errored symbols.

  • An empty list means there is no errored symbol in the errored codewords.

  • The indices in the list must not duplicate.

  • The indices in the list do not necessarily need to be sorted.

  • The maximum value of an index must not be larger than what the FEC schema allows, e.g. an index must not be larger than 543 for RS(544, 514).

get()[source]

Get the positions of the errored symbols in errored codewords.

Returns:

The positions of the errored symbols in errored codewords

Return type:

PL1_CWE_ERR_SYM_INDICES.GetDataAttr

set(error_sym_indices)[source]

Set the positions of the errored symbols in errored codewords.

Parameters:

error_sym_indices (List[int]) – The positions of the errored symbols in errored codewords

class PL1_CWE_FEC_ENGINE[source]

Bases: object

Configure which FEC engines to use.

class GetDataAttr[source]

Bases: ResponseBodyStruct

bitmask

big endian.

  • the highest bit corresponds to FEC engine 4 (0x08)

  • the lowest bit corresponds to FEC engine 1 (0x01)

class SetDataAttr[source]

Bases: RequestBodyStruct

bitmask

big endian.

  • the highest bit corresponds to FEC engine 4 (0x08)

  • the lowest bit corresponds to FEC engine 1 (0x01)

get()[source]

Get which FEC engines are used.

Returns:

The FEC engines bitmask

Return type:

PL1_CWE_FEC_ENGINE.GetDataAttr

set(bitmask)[source]

Set which FEC engines to use.

Parameters:

bitmask (Hex) – FEC engines bitmask

set_all_engines()

Use all FEC engines

class PL1_CWE_FEC_STATS[source]

Bases: object

FEC error injection statistics.

class GetDataAttr[source]

Bases: ResponseBodyStruct

total_correctable_cw

Total injected correctable codewords.

total_cw

Total codewords transmitted.

total_error_free_cw

Total error-free codewords transmitted.

total_symbol_error

Total injected symbol errors.

total_uncorrectable_cw

Total uncorrectable codewords transmitted.

get()[source]

Get FEC error injection statistics.

Returns:

FEC error injection statistics

Return type:

PL1_CWE_FEC_STATS.GetDataAttr

class PL1_CWE_FEC_STATS_CLEAR[source]

Bases: object

Clear FEC codeword injection TX stats

class SetDataAttr[source]

Bases: RequestBodyStruct

set()[source]

Clear FEC codeword injection TX stats

class PL1_GET_DATA[source]

Bases: object

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 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.

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>

class GetDataAttr[source]

Bases: ResponseBodyStruct

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.

result

Data availability.

sweep_no

per-SERDES trace acquisition counter.

value

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.

get()[source]

Get SIV sample data.

Returns:

SIV sample data

Return type:

PL1_GET_DATA.GetDataAttr

class PL1_LINKTRAININFO[source]

Bases: object

Get L1 link training information. Information is per Serdes and split into a number of pages.

class GetDataAttr[source]

Bases: ResponseBodyStruct

duration_us

duration of the auto-negotiation process in microseconds, from autoneg is enabled on the port to the negotiation is finished.

frame_lock

frame lock status of the local end.

lock_lost_count

number of lost locks on auto-neg.

main_current_level

c(0) current level.

main_rx_coeff_at_limit_count

c(0) received number of coefficients at limit.

main_rx_coeff_eq_limit_reached_count

c(0) received number of maximum limits of coefficient and equalization requests reached.

main_rx_coeff_not_supported_count

c(0) received number of coefficients not supported.

main_rx_decrement_req_count

c(0) received number of decrement requests.

main_rx_eq_limit_reached_count

c(0) received number of maximum limits of equalization requests reached.

main_rx_increment_req_count

c(0) received number of increment requests.

main_tx_coeff_at_limit_count

c(0) transmitted number of coefficients at limit.

main_tx_coeff_eq_limit_reached_count

c(0) transmitted number of maximum limits of coefficient and equalization requests reached.

main_tx_coeff_not_supported_count

c(0) transmitted number of coefficients not supported.

main_tx_decrement_req_count

c(0) transmitted number of decrement requests.

main_tx_eq_limit_reached_count

c(0) transmitted number of maximum limits of equalization requests reached.

main_tx_increment_req_count

c(0) transmitted number of increment requests.

post1_current_level

c(1) current level.

post1_rx_coeff_at_limit_count

c(1) received number of coefficients at limit.

post1_rx_coeff_eq_limit_reached_count

c(1) received number of maximum limits of coefficient and equalization requests reached.

post1_rx_coeff_not_supported_count

c(1) received number of coefficients not supported.

post1_rx_decrement_req_count

c(1) received number of decrement requests.

post1_rx_eq_limit_reached_count

c(1) received number of maximum limits of equalization requests reached.

post1_rx_increment_req_count

c(1) received number of increment requests.

post1_tx_coeff_at_limit_count

c(1) transmitted number of coefficients at limit.

post1_tx_coeff_eq_limit_reached_count

c(1) transmitted number of maximum limits of coefficient and equalization requests reached.

post1_tx_coeff_not_supported_count

c(1) transmitted number of coefficients not supported.

post1_tx_decrement_req_count

c(1) transmitted number of decrement requests.

post1_tx_eq_limit_reached_count

c(1) transmitted number of maximum limits of equalization requests reached.

post1_tx_increment_req_count

c(1) transmitted number of increment requests.

prbs_total_bits_high

PRBS total bits (most significant 32-bit).

prbs_total_bits_low

PRBS total bits (least significant 32-bit).

prbs_total_error_bits_high

PRBS total error bits (most significant 32-bit, only bit 15-0 should be used).

prbs_total_error_bits_low

PRBS total error bits (least significant 32-bit).

pre1_current_level

c(-1) current level.

pre1_rx_coeff_at_limit_count

c(-1) received number of coefficients at limit.

pre1_rx_coeff_eq_limit_reached_count

c(-1) received number of maximum limits of coefficient and equalization requests reached.

pre1_rx_coeff_not_supported_count

c(-1) received number of coefficients not supported.

pre1_rx_decrement_req_count

c(-1) received number of decrement requests.

pre1_rx_eq_limit_reached_count

c(-1) received number of maximum limits of equalization requests reached.

pre1_rx_increment_req_count

c(-1) received number of increment requests.

pre1_tx_coeff_at_limit_count

c(-1) transmitted number of coefficients at limit.

pre1_tx_coeff_eq_limit_reached_count

c(-1) transmitted number of maximum limits of coefficient and equalization requests reached.

pre1_tx_coeff_not_supported_count

c(-1) transmitted number of coefficients not supported.

pre1_tx_decrement_req_count

c(-1) transmitted number of decrement requests.

pre1_tx_eq_limit_reached_count

c(-1) transmitted number of maximum limits of equalization requests reached.

pre1_tx_increment_req_count

c(-1) transmitted number of increment requests.

pre2_current_level

c(-2) current level.

pre2_rx_coeff_at_limit_count

c(-2) received number of coefficients at limit.

pre2_rx_coeff_eq_limit_reached_count

c(-2) received number of maximum limits of coefficient and equalization requests reached.

pre2_rx_coeff_not_supported_count

c(-2) received number of coefficients not supported.

pre2_rx_decrement_req_count

c(-2) received number of decrement requests.

pre2_rx_eq_limit_reached_count

c(-2) received number of maximum limits of equalization requests reached.

pre2_rx_increment_req_count

c(-2) received number of increment requests.

pre2_tx_coeff_at_limit_count

c(-2) transmitted number of coefficients at limit.

pre2_tx_coeff_eq_limit_reached_count

c(-2) transmitted number of maximum limits of coefficient and equalization requests reached.

pre2_tx_coeff_not_supported_count

c(-2) transmitted number of coefficients not supported.

pre2_tx_decrement_req_count

c(-2) transmitted number of decrement requests.

pre2_tx_eq_limit_reached_count

c(-2) transmitted number of maximum limits of equalization requests reached.

pre2_tx_increment_req_count

c(-2) transmitted number of increment requests.

pre3_current_level

c(-3) current level.

pre3_rx_coeff_at_limit_count

c(-3) received number of coefficients at limit.

pre3_rx_coeff_eq_limit_reached_count

c(-3) received number of maximum limits of coefficient and equalization requests reached.

pre3_rx_coeff_not_supported_count

c(-3) received number of coefficients not supported.

pre3_rx_decrement_req_count

c(-3) received number of decrement requests.

pre3_rx_eq_limit_reached_count

c(-3) received number of maximum limits of equalization requests reached.

pre3_rx_increment_req_count

c(-3) received number of increment requests.

pre3_tx_coeff_at_limit_count

c(-3) transmitted number of coefficients at limit.

pre3_tx_coeff_eq_limit_reached_count

c(-3) transmitted number of maximum limits of coefficient and equalization requests reached.

pre3_tx_coeff_not_supported_count

c(-3) transmitted number of coefficients not supported.

pre3_tx_decrement_req_count

c(-3) transmitted number of decrement requests.

pre3_tx_eq_limit_reached_count

c(-3) transmitted number of maximum limits of equalization requests reached.

pre3_tx_increment_req_count

c(-3) transmitted number of increment requests.

remote_frame_lock

frame lock status of the remote end.

get()[source]

Get L1 link training information. Information is per Serdes and split into a number of pages.

Returns:

L1 link training information

Return type:

PL1_LINKTRAININFO.GetDataAttr

class PL1_LINKTRAIN_CMD[source]

Bases: object

Warning

Still in beta mode. Subjected to changes

Link training RPC. Issue link training commands on a given serdes and poll for status

class GetDataAttr[source]

Bases: ResponseBodyStruct

class SetDataAttr[source]

Bases: RequestBodyStruct

get()[source]

Get status of current command

Returns:

4 bytes: command, arg, result, flags

Return type:

PL1_LINKTRAIN_CMD.GetDataAttr

set(cmd, arg)[source]

Issue a link train command (cmd, arg)

class PL1_LINKTRAIN_CONFIG[source]

Bases: object

Per-port link training settings

class GetDataAttr[source]

Bases: ResponseBodyStruct

class SetDataAttr[source]

Bases: RequestBodyStruct

get()[source]

Get the current per-port link training settings.

Returns:

The current per-port link training settings

Return type:

PL1_LINKTRAIN_CONFIG.GetDataAttr

set(oos_preset, timeout_mode)[source]

Set the current per-port link training settings.

Parameters:
Returns:

A token indicating the completion of the set operation

class PL1_LINKTRAIN_STATUS[source]

Bases: object

Per-lane link training status

class GetDataAttr[source]

Bases: ResponseBodyStruct

failure

coded byte, failure type.

mode

coded byte, link training mode

status

coded byte, lane status.

get()[source]

Get link training status of a lane of a port.

Returns:

link training status of a lane of a port, including mode, lane status, and failure type.

Return type:

PP_LINKTRAINSTATUS.GetDataAttr

class PL1_LOG[source]

Bases: object

Return a log line of either AN or LT for the given Serdes. The log string line contains the latest 100 lines.

class GetDataAttr[source]

Bases: ResponseBodyStruct

log_string

ANLT log string

get()[source]

Return a log line of ANLT of all serdes on a port. (latest 100 lines)

Returns:

a log line from AN/LT for the given Serdes.

Return type:

PL1_LOG.GetDataAttr

class PL1_LT_PHYTXEQ_RANGE[source]

Bases: object

Configure the lower and the upper bound of transmit equalizer (native value) of the serdes, and how the serdes responds to an increment/decrement request when either bound is reached.

class GetDataAttr[source]

Bases: ResponseBodyStruct

max

integer, the upper bound of the tap. When set, the value is ignored when <response> == AUTO.)

min

integer, the lower bound of the tap. When set, the value is ignored when <response> == AUTO.

response

byte, the response when either of the bounds is triggered. Default is AUTO.

class SetDataAttr[source]

Bases: RequestBodyStruct

max

integer, the upper bound of the tap. When set, the value is ignored when <response> == AUTO.)

min

integer, the lower bound of the tap. When set, the value is ignored when <response> == AUTO.

response

byte, the response when either of the bounds is triggered. Default is AUTO.

get()[source]

Get the lower and the upper bound of transmit equalizer (native value) of the serdes, and how the serdes responds to an increment/decrement request when either bound is reached.

Returns:

lower and upper bound of transmit equalizer (native value) and response mode

Return type:

PL1_LT_PHYTXEQ_RANGE.GetDataAttr

set(response, min, max)[source]

Set the lower and the upper bound of transmit equalizer (native value) of the serdes, and how the serdes responds to an increment/decrement request when either bound is reached.

Parameters:
  • response (FreyaLinkTrainingRangeResponse) – byte, the response when either of the bounds is triggered. Default is AUTO.

  • min (int) –

    integer, the lower bound of the tap. When set, the value is ignored when <response> == AUTO.

    • For <tap_index> == PRE3/PRE/POST, negative, scaled by 1E3.

    • For <tap_index> == MAIN/PRE2, positive, scaled by 1E3.

  • max (int) –

    integer, the upper bound of the tap. When set, the value is ignored when <response> == AUTO.

    • For <tap_index> == PRE3/PRE/POST, negative, scaled by 1E3.

    • For <tap_index> == MAIN/PRE2, positive, scaled by 1E3.

class PL1_LT_PHYTXEQ_RANGE_COEFF[source]

Bases: object

Configure the lower and the upper bound of transmit equalizer (IEEE coefficient value) of the serdes, and how the serdes responds to an increment/decrement request when either bound is reached.

Whenever <response> == AUTO (the default), min and max will have their default values, which can be read with “get”. Any value that attempt to set the min and max when <response> == AUTO will be ignored by the chassis.

class GetDataAttr[source]

Bases: ResponseBodyStruct

max

integer, the upper bound of the tap. When set, the value is ignored when <response> == AUTO.

  • For <tap_index> == PRE3/PRE/POST, negative, scaled by 1E3.

  • For <tap_index> == MAIN/PRE2, positive, scaled by 1E3.

min

integer, the lower bound of the tap. When set, the value is ignored when <response> == AUTO.

  • For <tap_index> == PRE3/PRE/POST, negative, scaled by 1E3.

  • For <tap_index> == MAIN/PRE2, positive, scaled by 1E3.

response

byte, the response when either of the bounds is triggered. Default is AUTO.

class SetDataAttr[source]

Bases: RequestBodyStruct

max

integer, the upper bound of the tap. When set, the value is ignored when <response> == AUTO.

  • For <tap_index> == PRE3/PRE/POST, negative, scaled by 1E3.

  • For <tap_index> == MAIN/PRE2, positive, scaled by 1E3.

min

integer, the lower bound of the tap. When set, the value is ignored when <response> == AUTO.

  • For <tap_index> == PRE3/PRE/POST, negative, scaled by 1E3.

  • For <tap_index> == MAIN/PRE2, positive, scaled by 1E3.

response

byte, the response when either of the bounds is triggered. Default is AUTO.

get()[source]

Get the lower and the upper bound of transmit equalizer (IEEE coefficient value) of the serdes, and how the serdes responds to an increment/decrement request when either bound is reached.

Returns:

lower and upper bound of transmit equalizer (IEEE coefficient value) and response mode

Return type:

PL1_LT_PHYTXEQ_RANGE_COEFF.GetDataAttr

set(response, min, max)[source]

Set the lower and the upper bound of transmit equalizer (IEEE coefficient value) of the serdes, and how the serdes responds to an increment/decrement request when either bound is reached.

Parameters:
  • response (FreyaLinkTrainingRangeResponse) – byte, the response when either of the bounds is triggered. Default is AUTO.

  • min (int) – integer, the lower bound of the tap. When set, the value is ignored when <response> == AUTO.

  • max (int) – integer, the upper bound of the tap. When set, the value is ignored when <response> == AUTO.

class PL1_PCS_VARIANT[source]

Bases: object

PCS variant configuration.

class GetDataAttr[source]

Bases: ResponseBodyStruct

variant

PCS variant

class SetDataAttr[source]

Bases: RequestBodyStruct

variant

PCS variant

get()[source]

Get the PCS variant configuration.

Returns:

The PCS variant configuration

Return type:

PL1_PCS_VARIANT.GetDataAttr

set(variant)[source]

Set the PCS variant configuration.

Parameters:

variant (FreyaPCSVariant) – The PCS variant configuration to set

Returns:

A token indicating the completion of the set operation

class PL1_PHYTXEQ[source]

Bases: object

Control and monitor the equalizer settings (native values) of the on-board PHY in the transmission direction (towards the transceiver cage).

This command returns a variable number of tap values with module-dependent ordering:

  • Regular Freya: Original fixed format [pre3, pre2, pre, main, post]

  • Loki-4P and H-Freya/Edun: Variable number in N*pre, main, M*post layout [pre_n, pre_n-1, …, pre_1, main, post_1, post_2, …, post_m]

Use P_CAPABILITIES to query numtxeqtaps and numtxeqpretaps to determine the number of taps and layout.

Note

PL1_PHYTXEQ, PL1_PHYTXEQ_LEVEL, and PL1_PHYTXEQ_COEFF facilitate the configuration and retrieval of TX tap values, each offering a unique perspective. Modifications made with any of these parameters will result in updates to the read results across all of them.

class GetDataAttr[source]

Bases: ResponseBodyStruct

tap_values

list of integers, TX EQ tap values (native values). The number and layout depend on the platform:

  • Regular Freya: [pre3, pre2, pre, main, post]

  • Loki-4P and H-Freya/Edun: [pre_n, …, pre_1, main, post_1, …, post_m] where N = numtxeqpretaps and M = numtxeqtaps - numtxeqpretaps - 1

class SetDataAttr[source]

Bases: RequestBodyStruct

tap_values

list of integers, TX EQ tap values (native values). The number and layout depend on the platform:

  • Regular Freya: [pre3, pre2, pre, main, post]

  • Loki-4P and H-Freya/Edun: [pre_n, …, pre_1, main, post_1, …, post_m] where N = numtxeqpretaps and M = numtxeqtaps - numtxeqpretaps - 1

get()[source]

Get the TX equalizer settings (native values) of the on-board PHY.

The returned tap values layout depends on the platform. Query P_CAPABILITIES for numtxeqtaps and numtxeqpretaps to determine the format.

Returns:

list of TX EQ tap values (native values)

Return type:

PL1_PHYTXEQ.GetDataAttr

set(tap_values)[source]

Set the TX equalizer settings (native values) of the on-board PHY.

The tap values layout depends on the platform. Query P_CAPABILITIES for numtxeqtaps and numtxeqpretaps to determine the required format.

Parameters:

tap_values (List[int]) – list of TX EQ tap values (native values) in platform-specific order

class PL1_PHYTXEQ_COEFF[source]

Bases: object

Control and monitor the equalizer settings (IEEE coefficient values) of the on-board PHY in the transmission direction (towards the transceiver cage).

This command returns a variable number of tap values with module-dependent ordering:

  • Regular Freya: Original fixed format [pre3, pre2, pre, main, post]

  • Loki-4P and H-Freya/Edun: Variable number in N*pre, main, M*post layout

    [pre_n, pre_n-1, ..., pre_1, main, post_1, post_2, ..., post_m]

Use P_CAPABILITIES to query numtxeqtaps and numtxeqpretaps to determine the number of taps and layout.

Note

PL1_PHYTXEQ, PL1_PHYTXEQ_LEVEL, and PL1_PHYTXEQ_COEFF facilitate the configuration and retrieval of TX tap values, each offering a unique perspective. Modifications made with any of these parameters will result in updates to the read results across all of them.

The following rules apply:

  • 0.5 approx. <= main <= 1

  • -0.4 approx <= post <= 0

  • -0.4 approx <= pre <= 0

  • 0 <= pre2 <= 0.25 approx.

  • -0.25 approx <= pre3 <= 0

  • The sum of the absolute value of each coefficients must be <= 1.

  • A sum of 1 corresponds to a TX output voltage swing of 1000 mVpp approximately.

class GetDataAttr[source]

Bases: ResponseBodyStruct

tap_values

list of integers, TX EQ tap values as IEEE coefficients scaled by 1E3. The number and layout depend on the platform:

  • Regular Freya: [pre3, pre2, pre, main, post] where pre3/pre/post are negative, pre2/main are positive

  • Loki-4P and H-Freya/Edun: [pre_n, …, pre_1, main, post_1, …, post_m] where N = numtxeqpretaps and M = numtxeqtaps - numtxeqpretaps - 1

class SetDataAttr[source]

Bases: RequestBodyStruct

tap_values

list of integers, TX EQ tap values as IEEE coefficients scaled by 1E3. The number and layout depend on the platform:

  • Regular Freya: [pre3, pre2, pre, main, post] where pre3/pre/post are negative, pre2/main are positive

  • Loki-4P and H-Freya/Edun: [pre_n, …, pre_1, main, post_1, …, post_m] where N = numtxeqpretaps and M = numtxeqtaps - numtxeqpretaps - 1

get()[source]

Get the TX equalizer settings (IEEE coefficient values) of the on-board PHY.

The returned tap values layout depends on the platform. Query P_CAPABILITIES for numtxeqtaps and numtxeqpretaps to determine the format.

Returns:

list of TX EQ tap values as IEEE coefficients scaled by 1E3

Return type:

PL1_PHYTXEQ_COEFF.GetDataAttr

set(tap_values)[source]

Set the TX equalizer settings (IEEE coefficient values) of the on-board PHY.

The tap values layout depends on the platform. Query P_CAPABILITIES for numtxeqtaps and numtxeqpretaps to determine the required format.

Parameters:

tap_values (List[int]) – list of TX EQ tap values as IEEE coefficients scaled by 1E3 in platform-specific order

class PL1_PHYTXEQ_LEVEL[source]

Bases: object

Control and monitor the equalizer settings (mV/dB values) of the on-board PHY in the transmission direction (towards the transceiver cage).

This command returns a variable number of tap values with module-dependent ordering:

  • Regular Freya: Original fixed format [pre3, pre2, pre, main, post]

  • Loki-4P and H-Freya/Edun: Variable number in N*pre, main, M*post layout

    [pre_n, pre_n-1, ..., pre_1, main, post_1, post_2, ..., post_m]

Query port capabilities for numtxeqtaps and numtxeqpretaps to determine the number of taps and layout.

Note

PL1_PHYTXEQ, PL1_PHYTXEQ_LEVEL, and PL1_PHYTXEQ_COEFF facilitate the configuration and retrieval of TX tap values, each offering a unique perspective. Modifications made with any of these parameters will result in updates to the read results across all of them.

class GetDataAttr[source]

Bases: ResponseBodyStruct

tap_values

list of integers, TX EQ tap values in mV/dB. The number and layout depend on the platform:

  • Regular Freya: [pre3, pre2, pre, main, post] where pre3/pre2 in dB/10 (0-71), pre/post in dB/10 (0-187), main in mV (507-998)

  • Loki-4P and H-Freya/Edun: [pre_n, …, pre_1, main, post_1, post_2, …, post_m] where N = numtxeqpretaps and M = numtxeqtaps - numtxeqpretaps - 1

class SetDataAttr[source]

Bases: RequestBodyStruct

tap_values

list of integers, TX EQ tap values in mV/dB. The number and layout depend on the platform:

  • Regular Freya: [pre3, pre2, pre, main, post] where pre3/pre2 in dB/10 (0-71), pre/post in dB/10 (0-187), main in mV (507-998)

  • Loki-4P and H-Freya/Edun: [pre_n, …, pre_1, main, post_1, post_2, …, post_m] where N = numtxeqpretaps and M = numtxeqtaps - numtxeqpretaps - 1

get()[source]

Get the TX equalizer settings (mV/dB values) of the on-board PHY.

The returned tap values layout depends on the platform. Query P_CAPABILITIES for numtxeqtaps and numtxeqpretaps to determine the format.

Returns:

list of TX EQ tap values in mV/dB

Return type:

PL1_PHYTXEQ_LEVEL.GetDataAttr

set(tap_values)[source]

Set the TX equalizer settings (mV/dB values) of the on-board PHY.

The tap values layout depends on the platform. Query P_CAPABILITIES for numtxeqtaps and numtxeqpretaps to determine the required format.

Parameters:

tap_values (List[int]) – list of TX EQ tap values in mV/dB in platform-specific order

class PL1_PNSWAP_RX[source]

Bases: object

Enable/disable P/N polarity swap of the SerDes in the receiving direction

class GetDataAttr[source]

Bases: ResponseBodyStruct

class SetDataAttr[source]

Bases: RequestBodyStruct

get()[source]

Get the P/N polarity swap setting of the SerDes in the receiving direction.

Returns:

P/N polarity swap setting of the SerDes in the receiving direction

Return type:

PL1_PNSWAP_RX.GetDataAttr

set(on_off)[source]

Set the P/N polarity swap setting of the SerDes in the receiving direction.

Parameters:

on_off (OnOff) – P/N polarity swap setting of the SerDes in the receiving direction.

set_off()

Set P/N polarity swap of the SerDes in the receiving direction to OFF

set_on()

Set P/N polarity swap of the SerDes in the receiving direction to ON

class PL1_PNSWAP_TX[source]

Bases: object

Enable/disable P/N polarity swap of the SerDes in the transmission direction

class GetDataAttr[source]

Bases: ResponseBodyStruct

class SetDataAttr[source]

Bases: RequestBodyStruct

get()[source]

Get the P/N polarity swap setting of the SerDes in the transmission direction.

Returns:

P/N polarity swap setting of the SerDes in the transmission direction

Return type:

PL1_PNSWAP_TX.GetDataAttr

set(on_off)[source]

Set the P/N polarity swap setting of the SerDes in the transmission direction.

Parameters:

on_off (OnOff) – P/N polarity swap setting of the SerDes in the transmission direction.

set_off()

Set P/N polarity swap of the SerDes in the transmission direction to OFF

set_on()

Set P/N polarity swap of the SerDes in the transmission direction to ON

class PL1_PRESET_CONFIG[source]

Bases: object

Configure the preset values (native values) of a serdes and the response to the received IC request.

class GetDataAttr[source]

Bases: ResponseBodyStruct

main

integer, main tap value.

post

integer, post tap value. Default = 0 (neutral)

pre

integer, pre tap value. Default = 0 (neutral)

pre2

integer, pre2 tap value. Default = 0 (neutral)

pre3

integer, pre3 tap value. Default = 0 (neutral)

response

integer, byte, the response to the received IC request. Default = ACCEPT.

class SetDataAttr[source]

Bases: RequestBodyStruct

main

integer, main tap value.

post

integer, post tap value. Default = 0 (neutral)

pre

integer, pre tap value. Default = 0 (neutral)

pre2

integer, pre2 tap value. Default = 0 (neutral)

pre3

integer, pre3 tap value. Default = 0 (neutral)

response

integer, byte, the response to the received IC request. Default = ACCEPT.

get()[source]

Get the preset values (native values) of a serdes and the response to the received IC request.

set(response, pre3, pre2, pre, main, post)[source]

Set the preset values (native values) of a serdes and the response to the received IC request.

class PL1_PRESET_CONFIG_COEFF[source]

Bases: object

Configure the preset values (IEEE coefficient values) of a serdes and the response to the received IC request.

class GetDataAttr[source]

Bases: ResponseBodyStruct

main

integer, main tap value, positive, scaled by 1E3. Default = 1000

post

integer, post tap value, negative, scaled by 1E3. Default = 0 (neutral)

pre

integer, pre tap value, negative, scaled by 1E3. Default = 0 (neutral)

pre2

integer, pre2 tap value, positive, scaled by 1E3. Default = 0 (neutral)

pre3

integer, pre3 tap value, negative, scaled by 1E3. Default = 0 (neutral)

response

integer, byte, the response to the received IC request. Default = ACCEPT.

class SetDataAttr[source]

Bases: RequestBodyStruct

main

integer, main tap value, positive, scaled by 1E3. Default = 1000

post

integer, post tap value, negative, scaled by 1E3. Default = 0 (neutral)

pre

integer, pre tap value, negative, scaled by 1E3. Default = 0 (neutral)

pre2

integer, pre2 tap value, positive, scaled by 1E3. Default = 0 (neutral)

pre3

integer, pre3 tap value, negative, scaled by 1E3. Default = 0 (neutral)

response

integer, byte, the response to the received IC request. Default = ACCEPT.

get()[source]

Get the preset values (IEEE coefficient values) of a serdes and the response to the received IC request.

Returns:

Custom preset values and response

Return type:

PL1_PRESET_CONFIG_COEFF.GetDataAttr

set(response, pre3, pre2, pre, main, post)[source]

Set the preset values (IEEE coefficient values) of a serdes and the response to the received IC request.

Parameters:
  • response (FreyaPresetResponse) – How to respond to the received IC request.

  • pre3 (int) – The pre3 tap value, negative, scaled by 1E3.

  • pre2 (int) – The pre2 tap value, positive, scaled by 1E3.

  • pre (int) – The pre tap value, negative, scaled by 1E3.

  • main (int) – The main tap value, positive, scaled by 1E3.

  • post (int) – The post tap value, negative, scaled by 1E3.

class PL1_PRESET_CONFIG_LEVEL[source]

Bases: object

Configure the preset values (mV/dB values) of a serdes and the response to the received IC request.

class GetDataAttr[source]

Bases: ResponseBodyStruct

main

integer, main tap value in mV, ranges from 507 to 998.

post

integer, post tap value in dB/10, ranges from 0 to 187 Default = 0 (neutral)

pre

integer, pre tap value in dB/10, ranges from 0 to 187. Default = 0 (neutral)

pre2

integer, pre2 tap value in dB/10, ranges from 0 to 71. Default = 0 (neutral)

pre3

integer, pre3 tap value in dB/10, ranges from 0 to 71. Default = 0 (neutral)

response

integer, byte, the response to the received IC request. Default = ACCEPT.

class SetDataAttr[source]

Bases: RequestBodyStruct

main

integer, main tap value in mV, ranges from 507 to 998.

post

integer, post tap value in dB/10, ranges from 0 to 187 Default = 0 (neutral)

pre

integer, pre tap value in dB/10, ranges from 0 to 187. Default = 0 (neutral)

pre2

integer, pre2 tap value in dB/10, ranges from 0 to 71. Default = 0 (neutral)

pre3

integer, pre3 tap value in dB/10, ranges from 0 to 71. Default = 0 (neutral)

response

integer, byte, the response to the received IC request. Default = ACCEPT.

get()[source]

Get the preset values (mV/dB values) of a serdes and the response to the received IC request

Returns:

Custom preset values and response

Return type:

PL1_PRESET_CONFIG_LEVEL.GetDataAttr

set(response, pre3, pre2, pre, main, post)[source]

Set the preset values (mV/dB values) of a serdes and the response to the received IC request

Parameters:
  • response (FreyaPresetResponse) – How to respond to the received IC request.

  • pre3 (int) – The pre3 tap value in dB/10, ranges from 0 to 71.

  • pre2 (int) – The pre2 tap value in dB/10, ranges from 0 to 71.

  • pre (int) – The pre tap value in dB/10, ranges from 0 to 187.

  • main (int) – The main tap value in mV, ranges from 507 to 998.

  • post (int) – The post tap value in dB/10, ranges from 0 to 187.

class PL1_PRESET_RESET[source]

Bases: object

Reset the preset of the serdes to its default values.

class SetDataAttr[source]

Bases: RequestBodyStruct

set()[source]

Reset the preset of the serdes to its default values.