ngscopeclient 0.1-dev+51fbda87c
Public Member Functions | Static Public Member Functions | Protected Types | Protected Attributes | List of all members

A MultiLANE BERT accessed via scopehal-mlbert-bridge. More...

#include <MultiLaneBERT.h>

Inheritance diagram for MultiLaneBERT:
Inheritance graph
[legend]
Collaboration diagram for MultiLaneBERT:
Collaboration graph
[legend]

Public Member Functions

 MultiLaneBERT (SCPITransport *transport)
 Initialize the driver. More...
 
virtual void PostCtorInit () override
 Do initialization after the constructor finishes. More...
 
virtual bool AcquireData () override
 Pull data from the instrument. More...
 
virtual uint32_t GetInstrumentTypesForChannel (size_t i) const override
 Returns a bitfield describing the set of instrument types that a given channel supports. More...
 
virtual Pattern GetTxPattern (size_t i) override
 Gets the currently selected transmit pattern for a channel. More...
 
virtual void SetTxPattern (size_t i, Pattern pattern) override
 Sets the transmit pattern for the selected channel. More...
 
virtual std::vector< PatternGetAvailableTxPatterns (size_t i) override
 Gets the list of available transmit patterns for a channel. More...
 
virtual bool IsCustomPatternPerChannel () override
 Determines whether custom patterns are settable per channel, or shared by the whole device. More...
 
virtual size_t GetCustomPatternLength () override
 Returns the number of bits in a custom pattern (may change with line rate) More...
 
virtual void SetGlobalCustomPattern (uint64_t pattern) override
 Sets the global custom pattern (only valid if IsCustomPatternPerChannel returns false) More...
 
virtual uint64_t GetGlobalCustomPattern () override
 Gets the global custom pattern (only valid if IsCustomPatternPerChannel returns false) More...
 
virtual bool GetTxInvert (size_t i) override
 Gets the transmit invert flag for a channel. More...
 
virtual void SetTxInvert (size_t i, bool invert) override
 Sets the transmit invert flag for a channel. More...
 
virtual std::vector< float > GetAvailableTxDriveStrengths (size_t i) override
 Gets the list of available drive strengths (in volts) for a channel. More...
 
virtual float GetTxDriveStrength (size_t i) override
 Get the drive strength for a channel. More...
 
virtual void SetTxDriveStrength (size_t i, float drive) override
 Set the drive strength for a channel. More...
 
virtual void SetTxEnable (size_t i, bool enable) override
 Sets the transmit enable flag for a channel. More...
 
virtual bool GetTxEnable (size_t i) override
 Gets the transmit enable flag for a channel. More...
 
virtual float GetTxPreCursor (size_t i) override
 Get the pre-cursor equalizer tap for a channel. More...
 
virtual void SetTxPreCursor (size_t i, float precursor) override
 Set the pre-cursor equalizer tap for a channel. More...
 
virtual float GetTxPostCursor (size_t i) override
 Get the post-cursor equalizer tap for a channel. More...
 
virtual void SetTxPostCursor (size_t i, float postcursor) override
 Set the post-cursor equalizer tap for a channel. More...
 
virtual bool GetRxInvert (size_t i) override
 Gets the transmit invert flag for a channel. More...
 
virtual void SetRxInvert (size_t i, bool invert) override
 Sets the receive invert flag for a channel. More...
 
virtual bool HasRxCTLE () override
 Determines whether the input buffer has a continuous-time linear equalizer. More...
 
virtual std::vector< float > GetRxCTLEGainSteps () override
 Get the list of available RX CTLE gain values (in dB) More...
 
virtual size_t GetRxCTLEGainStep (size_t i) override
 Gets the currently selected RX CTLE gain index. More...
 
virtual void SetRxCTLEGainStep (size_t i, size_t step) override
 Sets the RX CTLE gain index. More...
 
virtual Pattern GetRxPattern (size_t i) override
 Gets the currently selected receive pattern for a channel. More...
 
virtual void SetRxPattern (size_t i, Pattern pattern) override
 Sets the receive pattern for the selected channel. More...
 
virtual std::vector< PatternGetAvailableRxPatterns (size_t i) override
 Gets the list of available receive patterns for a channel. More...
 
virtual bool GetRxCdrLockState (size_t i) override
 Gets the RX CDR lock state (true=lock, false=unlock) More...
 
virtual void MeasureHBathtub (size_t i) override
 Acquires a bathtub curve. More...
 
virtual void MeasureEye (size_t i) override
 Acquires an eye pattern. More...
 
virtual void SetBERIntegrationLength (int64_t uis) override
 Set the integration period for BER measurements. More...
 
virtual int64_t GetBERIntegrationLength () override
 Get the integration period for BER measurements. More...
 
virtual void SetBERSamplingPoint (size_t i, int64_t dx, float dy) override
 Set the sampling point for BER measurements. More...
 
virtual void GetBERSamplingPoint (size_t i, int64_t &dx, float &dy) override
 Get the sampling point for BER measurements. More...
 
virtual size_t GetRefclkOutMux () override
 Gets the currently selected reference clock output mux setting. More...
 
virtual void SetRefclkOutMux (size_t i) override
 Sets the reference clock output mux. More...
 
virtual std::vector< std::string > GetRefclkOutMuxNames () override
 Gets the list of available reference clock mux settings. More...
 
virtual int64_t GetRefclkOutFrequency () override
 Gets the currently selected refclk out frequency, in Hz. More...
 
virtual int64_t GetRefclkInFrequency () override
 Gets the refclk in frequency, in Hz, required to generate the currently selected data rate. More...
 
virtual bool HasRefclkIn () override
 Returns true if this instrument has a reference clock input port. More...
 
virtual bool HasRefclkOut () override
 Returns true if this instrument has a reference clock output port. More...
 
virtual bool IsDataRatePerChannel () override
 Determines whether the TX/RX clock is a per-instrument or per-channel setting. More...
 
virtual int64_t GetDataRate (size_t i) override
 Gets the currently selected line rate (in symbols/sec) More...
 
virtual void SetDataRate (size_t i, int64_t rate) override
 Sets the data rate (in symbols/sec) More...
 
virtual std::vector< int64_t > GetAvailableDataRates () override
 Gets the list of available data rates, in symbols/sec. More...
 
virtual void SetUseExternalRefclk (bool external) override
 Sets the reference clock source (internal or external) More...
 
virtual bool GetUseExternalRefclk () override
 Sets the reference clock source. More...
 
virtual void PostCtorInit ()=0
 Does any initialization that can't happen during the constructor. More...
 
- Public Member Functions inherited from BERT
virtual unsigned int GetInstrumentTypes () const override
 Returns a bitfield describing the set of instrument types that this instrument supports. More...
 
virtual Pattern GetTxPattern (size_t i)=0
 Gets the currently selected transmit pattern for a channel. More...
 
virtual void SetTxPattern (size_t i, Pattern pattern)=0
 Sets the transmit pattern for the selected channel. More...
 
virtual std::vector< PatternGetAvailableTxPatterns (size_t i)=0
 Gets the list of available transmit patterns for a channel. More...
 
virtual bool IsCustomPatternPerChannel ()=0
 Determines whether custom patterns are settable per channel, or shared by the whole device. More...
 
virtual size_t GetCustomPatternLength ()=0
 Returns the number of bits in a custom pattern (may change with line rate) More...
 
virtual void SetGlobalCustomPattern (uint64_t pattern)=0
 Sets the global custom pattern (only valid if IsCustomPatternPerChannel returns false) More...
 
virtual uint64_t GetGlobalCustomPattern ()=0
 Gets the global custom pattern (only valid if IsCustomPatternPerChannel returns false) More...
 
virtual bool GetTxInvert (size_t i)=0
 Gets the transmit invert flag for a channel. More...
 
virtual void SetTxInvert (size_t i, bool invert)=0
 Sets the transmit invert flag for a channel. More...
 
virtual std::vector< float > GetAvailableTxDriveStrengths (size_t i)=0
 Gets the list of available drive strengths (in volts) for a channel. More...
 
virtual float GetTxDriveStrength (size_t i)=0
 Get the drive strength for a channel. More...
 
virtual void SetTxDriveStrength (size_t i, float drive)=0
 Set the drive strength for a channel. More...
 
virtual void SetTxEnable (size_t i, bool enable)=0
 Sets the transmit enable flag for a channel. More...
 
virtual bool GetTxEnable (size_t i)=0
 Gets the transmit enable flag for a channel. More...
 
virtual float GetTxPreCursor (size_t i)=0
 Get the pre-cursor equalizer tap for a channel. More...
 
virtual void SetTxPreCursor (size_t i, float precursor)=0
 Set the pre-cursor equalizer tap for a channel. More...
 
virtual float GetTxPostCursor (size_t i)=0
 Get the post-cursor equalizer tap for a channel. More...
 
virtual void SetTxPostCursor (size_t i, float postcursor)=0
 Set the post-cursor equalizer tap for a channel. More...
 
virtual bool GetRxInvert (size_t i)=0
 Gets the transmit invert flag for a channel. More...
 
virtual void SetRxInvert (size_t i, bool invert)=0
 Sets the receive invert flag for a channel. More...
 
virtual bool GetRxCdrLockState (size_t i)=0
 Gets the RX CDR lock state (true=lock, false=unlock) More...
 
virtual bool HasRxCTLE ()=0
 Determines whether the input buffer has a continuous-time linear equalizer. More...
 
virtual std::vector< float > GetRxCTLEGainSteps ()=0
 Get the list of available RX CTLE gain values (in dB) More...
 
virtual size_t GetRxCTLEGainStep (size_t i)=0
 Gets the currently selected RX CTLE gain index. More...
 
virtual void SetRxCTLEGainStep (size_t i, size_t step)=0
 Sets the RX CTLE gain index. More...
 
virtual Pattern GetRxPattern (size_t i)=0
 Gets the currently selected receive pattern for a channel. More...
 
virtual void SetRxPattern (size_t i, Pattern pattern)=0
 Sets the receive pattern for the selected channel. More...
 
virtual std::vector< PatternGetAvailableRxPatterns (size_t i)=0
 Gets the list of available receive patterns for a channel. More...
 
virtual int64_t GetExpectedBathtubCaptureTime (size_t i)
 Returns the expected time, in femtoseconds, to complete a bathtub scan with the current settings. More...
 
virtual int64_t GetExpectedEyeCaptureTime (size_t i)
 Returns the expected time, in femtoseconds, to complete an eye scan with the current settings. More...
 
virtual void MeasureHBathtub (size_t i)=0
 Acquires a bathtub curve. More...
 
virtual void MeasureEye (size_t i)=0
 Acquires an eye pattern. More...
 
virtual void SetBERIntegrationLength (int64_t uis)=0
 Set the integration period for BER measurements. More...
 
virtual int64_t GetBERIntegrationLength ()=0
 Get the integration period for BER measurements. More...
 
virtual void SetBERSamplingPoint (size_t i, int64_t dx, float dy)=0
 Set the sampling point for BER measurements. More...
 
virtual void GetBERSamplingPoint (size_t i, int64_t &dx, float &dy)=0
 Get the sampling point for BER measurements. More...
 
virtual bool IsHBathtubScanInProgress (size_t i)
 Returns true if a horizontal bathtub scan is in progress. More...
 
virtual bool IsEyeScanInProgress (size_t i)
 Returns true if an eye scan is in progress. More...
 
virtual float GetScanProgress (size_t i)
 Gets the estimated completion status (0-1) of the current scan. More...
 
virtual bool HasConfigurableScanDepth ()
 Determines whether this instrument has configurable integration depth for eye / bathtub scans. More...
 
virtual std::vector< int64_t > GetScanDepths (size_t i)
 Returns the list of integration depths for eye / bathtub scans. More...
 
virtual int64_t GetScanDepth (size_t i)
 Get the configured scan depth for a channel, in UIs per sample/pixel. More...
 
virtual void SetScanDepth (size_t i, int64_t depth)
 Set the configured scan depth for a channel. More...
 
virtual bool HasRefclkIn ()=0
 Returns true if this instrument has a reference clock input port. More...
 
virtual bool HasRefclkOut ()=0
 Returns true if this instrument has a reference clock output port. More...
 
virtual size_t GetRefclkOutMux ()=0
 Gets the currently selected reference clock output mux setting. More...
 
virtual void SetRefclkOutMux (size_t i)=0
 Sets the reference clock output mux. More...
 
virtual std::vector< std::string > GetRefclkOutMuxNames ()=0
 Gets the list of available reference clock mux settings. More...
 
virtual int64_t GetRefclkOutFrequency ()=0
 Gets the currently selected refclk out frequency, in Hz. More...
 
virtual int64_t GetRefclkInFrequency ()=0
 Gets the refclk in frequency, in Hz, required to generate the currently selected data rate. More...
 
virtual bool IsDataRatePerChannel ()=0
 Determines whether the TX/RX clock is a per-instrument or per-channel setting. More...
 
virtual int64_t GetDataRate (size_t i)=0
 Gets the currently selected line rate (in symbols/sec) More...
 
virtual void SetDataRate (size_t i, int64_t rate)=0
 Sets the data rate (in symbols/sec) More...
 
virtual std::vector< int64_t > GetAvailableDataRates ()=0
 Gets the list of available data rates, in symbols/sec. More...
 
virtual void SetUseExternalRefclk (bool external)=0
 Sets the reference clock source (internal or external) More...
 
virtual bool GetUseExternalRefclk ()=0
 Sets the reference clock source. More...
 
- Public Member Functions inherited from Instrument
virtual unsigned int GetInstrumentTypes () const =0
 Returns a bitfield describing the set of instrument types that this instrument supports. More...
 
virtual std::string GetName () const =0
 
virtual std::string GetVendor () const =0
 
virtual std::string GetSerial () const =0
 
virtual std::string GetTransportConnectionString ()=0
 Gets the connection string for our transport. More...
 
virtual std::string GetTransportName ()=0
 Gets the name of our transport. More...
 
virtual uint32_t GetInstrumentTypesForChannel (size_t i) const =0
 Returns a bitfield describing the set of instrument types that a given channel supports. More...
 
size_t GetChannelCount () const
 Gets the number of channels (of any type) this instrument has.
 
InstrumentChannelGetChannel (size_t i) const
 Gets a given channel on the instrument. More...
 
virtual std::string GetChannelDisplayName (size_t i)
 Gets the hardware display name for a channel. This is an arbitrary user-selected string. More...
 
virtual void SetChannelDisplayName (size_t i, std::string name)
 Sets the hardware display name for a channel. This is an arbitrary user-selected string. More...
 
InstrumentChannelGetChannelByDisplayName (const std::string &name)
 Gets a channel given the display name.
 
InstrumentChannelGetChannelByHwName (const std::string &name)
 Gets a channel given the hardware name.
 
virtual bool AcquireData ()=0
 Pull data from the instrument. More...
 
virtual YAML::Node SerializeConfiguration (IDTable &table) const
 Serializes this instrument's configuration to a YAML node. More...
 
virtual void LoadConfiguration (int version, const YAML::Node &node, IDTable &idmap)
 Load instrument and channel configuration from a save file. More...
 
virtual void PreLoadConfiguration (int version, const YAML::Node &node, IDTable &idmap, ConfigWarningList &warnings)
 Parse a limited subset of instrument configuration but do not apply it. More...
 
- Public Member Functions inherited from SCPIInstrument
 SCPIInstrument (SCPITransport *transport, bool identify=true)
 
virtual std::string GetTransportConnectionString ()
 Gets the connection string for our transport. More...
 
virtual std::string GetTransportName ()
 Gets the name of our transport. More...
 
virtual std::string GetName () const
 
virtual std::string GetVendor () const
 
virtual std::string GetSerial () const
 
virtual std::string GetDriverName () const =0
 
- Public Member Functions inherited from SCPIDevice
 SCPIDevice (SCPITransport *transport, bool identify=true)
 
SCPITransportGetTransport () const
 

Static Public Member Functions

static std::string GetDriverNameInternal ()
 Return the constant driver name "mlbert".
 
- Static Public Member Functions inherited from SCPIBERT
static void DoAddDriverClass (std::string name, BERTCreateProcType proc)
 
static void EnumDrivers (std::vector< std::string > &names)
 
static std::shared_ptr< SCPIBERTCreateBERT (std::string driver, SCPITransport *transport)
 
- Static Public Member Functions inherited from BERT
static std::string GetPatternName (Pattern pat)
 Converts a Pattern enum into a strnig. More...
 
static Pattern GetPatternOfName (std::string name)
 Converts a string name into a Pattern enum. More...
 

Protected Types

enum  RefclkMuxSelectors {
  RX0_DIV8 , RX0_DIV16 , RX1_DIV8 , RX1_DIV16 ,
  RX2_DIV8 , RX2_DIV16 , RX3_DIV8 , RX3_DIV16 ,
  LO_DIV32_OR_80 , SERDES
}
 Mux selectors for reference clock output. More...
 
- Protected Types inherited from SCPIBERT
typedef std::map< std::string, BERTCreateProcType > BERTCreateMapType
 

Protected Attributes

int m_rxChannelBase
 Index of the first receive channel.
 
Pattern m_txPattern [4]
 Active transmit pattern.
 
Pattern m_rxPattern [4]
 Active receive pattern.
 
bool m_txInvert [4]
 Transmit invert flag.
 
bool m_rxInvert [4]
 Receive invert flag.
 
float m_txDrive [4]
 TX drive strength.
 
bool m_txEnable [4]
 Transmit enable flag.
 
float m_txPreCursor [4]
 TX FFE pre-cursor coefficient.
 
float m_txPostCursor [4]
 TX FFE post-cursor coefficient.
 
bool m_rxLock [4]
 RX pattern lock state.
 
uint64_t m_txCustomPattern
 Bit pattern for TX custom-pattern mode.
 
size_t m_refclkOutMux
 Reference clock output mux selector.
 
size_t m_rxCtleGainSteps [4]
 CTLE gain step selected for each RX channel.
 
int64_t m_integrationLength
 BER integration period.
 
int64_t m_sampleX [4]
 Sample X position for BER measurements.
 
float m_sampleY [4]
 Sample Y position for BER measurements.
 
bool m_useExternalRefclk
 True if using external reference clock, false if internal.
 
uint64_t m_dataRate
 Current data rate, in bits/sec.
 
- Protected Attributes inherited from Instrument
std::list< sigc::slot< void(YAML::Node &, IDTable &)> > m_serializers
 List of methods which need to be called to serialize this node's configuration.
 
std::list< sigc::slot< void(int, const YAML::Node &, IDTable &)> > m_loaders
 List of methods which need to be called to deserialize this node's configuration.
 
std::list< sigc::slot< void(int, const YAML::Node &, IDTable &, ConfigWarningList &)> > m_preloaders
 List of methods which need to be called to pre-load this node's configuration.
 
std::vector< InstrumentChannel * > m_channels
 Set of all channels on this instrument.
 
- Protected Attributes inherited from SCPIDevice
SCPITransportm_transport
 
std::string m_vendor
 
std::string m_model
 
std::string m_serial
 
std::string m_fwVersion
 

Additional Inherited Members

- Public Types inherited from SCPIBERT
typedef std::shared_ptr< SCPIBERT >(* BERTCreateProcType) (SCPITransport *)
 
- Public Types inherited from BERT
enum  Pattern {
  PATTERN_PRBS7 , PATTERN_PRBS9 , PATTERN_PRBS11 , PATTERN_PRBS15 ,
  PATTERN_PRBS23 , PATTERN_PRBS31 , PATTERN_CUSTOM , PATTERN_CLOCK_DIV2 ,
  PATTERN_CLOCK_DIV32 , PATTERN_AUTO
}
 Set of patterns we can generate or accept. More...
 
- Public Types inherited from Instrument
enum  InstrumentTypes {
  INST_OSCILLOSCOPE = 0x01 , INST_DMM = 0x02 , INST_PSU = 0x04 , INST_FUNCTION = 0x08 ,
  INST_RF_GEN = 0x10 , INST_LOAD = 0x20 , INST_BERT = 0x40 , INST_MISC = 0x80 ,
  INST_SWITCH_MATRIX = 0x100
}
 
- Public Attributes inherited from Instrument
std::string m_nickname
 Optional user-selected nickname of the instrument. More...
 
- Protected Member Functions inherited from BERT
void DoSerializeConfiguration (YAML::Node &node, IDTable &table)
 Serializes this BERT's configuration to a YAML node. More...
 
void DoLoadConfiguration (int version, const YAML::Node &node, IDTable &idmap)
 Load instrument and channel configuration from a save file. More...
 
void DoPreLoadConfiguration (int version, const YAML::Node &node, IDTable &idmap, ConfigWarningList &list)
 Validate instrument and channel configuration from a save file. More...
 
- Protected Member Functions inherited from SCPIInstrument
void DoSerializeConfiguration (YAML::Node &node, IDTable &table)
 
- Static Protected Attributes inherited from SCPIBERT
static BERTCreateMapType m_bertcreateprocs
 

Detailed Description

A MultiLANE BERT accessed via scopehal-mlbert-bridge.

Member Enumeration Documentation

◆ RefclkMuxSelectors

Mux selectors for reference clock output.

Enumerator
RX0_DIV8 

Lane 0 recovered clock, 1/8 rate.

RX0_DIV16 

Lane 0 recovered clock, 1/16 rate.

RX1_DIV8 

Lane 1 recovered clock, 1/8 rate.

RX1_DIV16 

Lane 1 recovered clock, 1/16 rate.

RX2_DIV8 

Lane 2 recovered clock, 1/8 rate.

RX2_DIV16 

Lane 2 recovered clock, 1/16 rate.

RX3_DIV8 

Lane 3 recovered clock, 1/8 rate.

RX3_DIV16 

Lane 3 recovered clock, 1/16 rate.

LO_DIV32_OR_80 

TX local oscillator divided by 32 (in low rate mode) or 80 (in high rate mode)

SERDES 

Custom pattern generator output.

Constructor & Destructor Documentation

◆ MultiLaneBERT()

MultiLaneBERT::MultiLaneBERT ( SCPITransport transport)

Initialize the driver.

Parameters
transportSCPITwinLanTransport connected to scopehal-mlbert-bridge

Member Function Documentation

◆ AcquireData()

bool MultiLaneBERT::AcquireData ( )
overridevirtual

Pull data from the instrument.

Returns
True if waveform was acquired, false if connection lost or other serious error

Implements Instrument.

◆ GetAvailableDataRates()

vector< int64_t > MultiLaneBERT::GetAvailableDataRates ( )
overridevirtual

Gets the list of available data rates, in symbols/sec.

Implements BERT.

◆ GetAvailableRxPatterns()

vector< BERT::Pattern > MultiLaneBERT::GetAvailableRxPatterns ( size_t  i)
overridevirtual

Gets the list of available receive patterns for a channel.

Parameters
iChannel index

Implements BERT.

◆ GetAvailableTxDriveStrengths()

vector< float > MultiLaneBERT::GetAvailableTxDriveStrengths ( size_t  i)
overridevirtual

Gets the list of available drive strengths (in volts) for a channel.

Drive strength is nominal p-p swing with full main cursor tap and pre/post cursors at zero.

Parameters
iChannel index

Implements BERT.

◆ GetAvailableTxPatterns()

vector< BERT::Pattern > MultiLaneBERT::GetAvailableTxPatterns ( size_t  i)
overridevirtual

Gets the list of available transmit patterns for a channel.

Parameters
iChannel index

Implements BERT.

◆ GetBERIntegrationLength()

int64_t MultiLaneBERT::GetBERIntegrationLength ( )
overridevirtual

Get the integration period for BER measurements.

Implements BERT.

◆ GetBERSamplingPoint()

void MultiLaneBERT::GetBERSamplingPoint ( size_t  i,
int64_t &  dx,
float &  dy 
)
overridevirtual

Get the sampling point for BER measurements.

Parameters
iChannel index
dxHorizontal offset of the sampling point from the center of the eye, in femtoseconds
dyVertical offset of the sampling point from the center of the eye, in volts

Implements BERT.

◆ GetCustomPatternLength()

size_t MultiLaneBERT::GetCustomPatternLength ( )
overridevirtual

Returns the number of bits in a custom pattern (may change with line rate)

Returns
Length of the custom pattern

Implements BERT.

◆ GetDataRate()

int64_t MultiLaneBERT::GetDataRate ( size_t  i)
overridevirtual

Gets the currently selected line rate (in symbols/sec)

Parameters
iChannel index

Implements BERT.

◆ GetGlobalCustomPattern()

uint64_t MultiLaneBERT::GetGlobalCustomPattern ( )
overridevirtual

Gets the global custom pattern (only valid if IsCustomPatternPerChannel returns false)

Returns
The bit sequence

Implements BERT.

◆ GetInstrumentTypesForChannel()

uint32_t MultiLaneBERT::GetInstrumentTypesForChannel ( size_t  i) const
overridevirtual

Returns a bitfield describing the set of instrument types that a given channel supports.

Parameters
iChannel index

Implements Instrument.

◆ GetRefclkInFrequency()

int64_t MultiLaneBERT::GetRefclkInFrequency ( )
overridevirtual

Gets the refclk in frequency, in Hz, required to generate the currently selected data rate.

Implements BERT.

◆ GetRefclkOutFrequency()

int64_t MultiLaneBERT::GetRefclkOutFrequency ( )
overridevirtual

Gets the currently selected refclk out frequency, in Hz.

Implements BERT.

◆ GetRefclkOutMux()

size_t MultiLaneBERT::GetRefclkOutMux ( )
overridevirtual

Gets the currently selected reference clock output mux setting.

Implements BERT.

◆ GetRefclkOutMuxNames()

vector< string > MultiLaneBERT::GetRefclkOutMuxNames ( )
overridevirtual

Gets the list of available reference clock mux settings.

Mux selector names are free-form text whose meaning is defined by the instrument.

Implements BERT.

◆ GetRxCdrLockState()

bool MultiLaneBERT::GetRxCdrLockState ( size_t  i)
overridevirtual

Gets the RX CDR lock state (true=lock, false=unlock)

NOTE: For some instruments this is just CDR lock, for others it indicates both CDR and pattern checker lock

Parameters
iChannel index

Implements BERT.

◆ GetRxCTLEGainStep()

size_t MultiLaneBERT::GetRxCTLEGainStep ( size_t  i)
overridevirtual

Gets the currently selected RX CTLE gain index.

To get the actual gain in dB, use this value as the index into the table returned by GetRxCTLEGainSteps()

Parameters
iChannel index

Implements BERT.

◆ GetRxCTLEGainSteps()

vector< float > MultiLaneBERT::GetRxCTLEGainSteps ( )
overridevirtual

Get the list of available RX CTLE gain values (in dB)

Implements BERT.

◆ GetRxInvert()

bool MultiLaneBERT::GetRxInvert ( size_t  i)
overridevirtual

Gets the transmit invert flag for a channel.

Parameters
iChannel index

Implements BERT.

◆ GetRxPattern()

BERT::Pattern MultiLaneBERT::GetRxPattern ( size_t  i)
overridevirtual

Gets the currently selected receive pattern for a channel.

Parameters
iChannel index

Implements BERT.

◆ GetTxDriveStrength()

float MultiLaneBERT::GetTxDriveStrength ( size_t  i)
overridevirtual

Get the drive strength for a channel.

Parameters
iChannel index

Implements BERT.

◆ GetTxEnable()

bool MultiLaneBERT::GetTxEnable ( size_t  i)
overridevirtual

Gets the transmit enable flag for a channel.

Parameters
iChannel index

Implements BERT.

◆ GetTxInvert()

bool MultiLaneBERT::GetTxInvert ( size_t  i)
overridevirtual

Gets the transmit invert flag for a channel.

Parameters
iChannel index

Implements BERT.

◆ GetTxPattern()

BERT::Pattern MultiLaneBERT::GetTxPattern ( size_t  i)
overridevirtual

Gets the currently selected transmit pattern for a channel.

Parameters
iChannel index

Implements BERT.

◆ GetTxPostCursor()

float MultiLaneBERT::GetTxPostCursor ( size_t  i)
overridevirtual

Get the post-cursor equalizer tap for a channel.

Equalizer coefficients are are normalized so that 0 is the lowest possible tap value and 1 is the highest possible tap value. Some instruments allow negative values (which invert the sign of the tap).

The exact mapping of normalized coefficients to FFE gain steps is instrument specific and may be nonlinear.

Parameters
iChannel index

Implements BERT.

◆ GetTxPreCursor()

float MultiLaneBERT::GetTxPreCursor ( size_t  i)
overridevirtual

Get the pre-cursor equalizer tap for a channel.

Equalizer coefficients are are normalized so that 0 is the lowest possible tap value and 1 is the highest possible tap value. Some instruments allow negative values (which invert the sign of the tap).

The exact mapping of normalized coefficients to FFE gain steps is instrument specific and may be nonlinear.

Parameters
iChannel index

Implements BERT.

◆ GetUseExternalRefclk()

bool MultiLaneBERT::GetUseExternalRefclk ( )
overridevirtual

Sets the reference clock source.

Returns
True if external clock is in use, false if internal

Implements BERT.

◆ HasRefclkIn()

bool MultiLaneBERT::HasRefclkIn ( )
overridevirtual

Returns true if this instrument has a reference clock input port.

Implements BERT.

◆ HasRefclkOut()

bool MultiLaneBERT::HasRefclkOut ( )
overridevirtual

Returns true if this instrument has a reference clock output port.

Implements BERT.

◆ HasRxCTLE()

bool MultiLaneBERT::HasRxCTLE ( )
overridevirtual

Determines whether the input buffer has a continuous-time linear equalizer.

Implements BERT.

◆ IsCustomPatternPerChannel()

bool MultiLaneBERT::IsCustomPatternPerChannel ( )
overridevirtual

Determines whether custom patterns are settable per channel, or shared by the whole device.

Returns
True = per channel, false = global

Implements BERT.

◆ IsDataRatePerChannel()

bool MultiLaneBERT::IsDataRatePerChannel ( )
overridevirtual

Determines whether the TX/RX clock is a per-instrument or per-channel setting.

Returns
True if clock is a per-channel setting, false if global

Implements BERT.

◆ MeasureEye()

void MultiLaneBERT::MeasureEye ( size_t  i)
overridevirtual

Acquires an eye pattern.

Parameters
iChannel index

Implements BERT.

◆ MeasureHBathtub()

void MultiLaneBERT::MeasureHBathtub ( size_t  i)
overridevirtual

Acquires a bathtub curve.

Parameters
iChannel index

Implements BERT.

◆ PostCtorInit()

void MultiLaneBERT::PostCtorInit ( )
overridevirtual

Do initialization after the constructor finishes.

Implements SCPIBERT.

◆ SetBERIntegrationLength()

void MultiLaneBERT::SetBERIntegrationLength ( int64_t  uis)
overridevirtual

Set the integration period for BER measurements.

Longer values give better resolution for low BERs but update more slowly

Implements BERT.

◆ SetBERSamplingPoint()

void MultiLaneBERT::SetBERSamplingPoint ( size_t  i,
int64_t  dx,
float  dy 
)
overridevirtual

Set the sampling point for BER measurements.

Parameters
iChannel index
dxHorizontal offset of the sampling point from the center of the eye, in femtoseconds
dyVertical offset of the sampling point from the center of the eye, in volts

Implements BERT.

◆ SetDataRate()

void MultiLaneBERT::SetDataRate ( size_t  i,
int64_t  rate 
)
overridevirtual

Sets the data rate (in symbols/sec)

Parameters
iChannel index
rateBaud rate of the channel

Implements BERT.

◆ SetGlobalCustomPattern()

void MultiLaneBERT::SetGlobalCustomPattern ( uint64_t  pattern)
overridevirtual

Sets the global custom pattern (only valid if IsCustomPatternPerChannel returns false)

Parameters
patternThe bit sequence (up to 64 bits in length)

Implements BERT.

◆ SetRefclkOutMux()

void MultiLaneBERT::SetRefclkOutMux ( size_t  i)
overridevirtual

Sets the reference clock output mux.

Parameters
iIndex of the mux within the table returned by GetRefclkOutMuxNames()

Implements BERT.

◆ SetRxCTLEGainStep()

void MultiLaneBERT::SetRxCTLEGainStep ( size_t  i,
size_t  step 
)
overridevirtual

Sets the RX CTLE gain index.

Parameters
iChannel index
stepIndex of the gain value within the GetRxCTLEGainSteps() table to use

Implements BERT.

◆ SetRxInvert()

void MultiLaneBERT::SetRxInvert ( size_t  i,
bool  invert 
)
overridevirtual

Sets the receive invert flag for a channel.

Parameters
iChannel index
invertTrue = inverted, false = inverted

Implements BERT.

◆ SetRxPattern()

void MultiLaneBERT::SetRxPattern ( size_t  i,
Pattern  pattern 
)
overridevirtual

Sets the receive pattern for the selected channel.

Parameters
iChannel index
patternDesired input pattern

Implements BERT.

◆ SetTxDriveStrength()

void MultiLaneBERT::SetTxDriveStrength ( size_t  i,
float  drive 
)
overridevirtual

Set the drive strength for a channel.

Parameters
iChannel index
driveNominal p-p swing

Implements BERT.

◆ SetTxEnable()

void MultiLaneBERT::SetTxEnable ( size_t  i,
bool  enable 
)
overridevirtual

Sets the transmit enable flag for a channel.

Parameters
iChannel index
enableTrue = enabled, false = disabled

Implements BERT.

◆ SetTxInvert()

void MultiLaneBERT::SetTxInvert ( size_t  i,
bool  invert 
)
overridevirtual

Sets the transmit invert flag for a channel.

Parameters
iChannel index
invertTrue = inverted, false = normal

Implements BERT.

◆ SetTxPattern()

void MultiLaneBERT::SetTxPattern ( size_t  i,
Pattern  pattern 
)
overridevirtual

Sets the transmit pattern for the selected channel.

Parameters
iChannel index
patternThe selected pattern

Implements BERT.

◆ SetTxPostCursor()

void MultiLaneBERT::SetTxPostCursor ( size_t  i,
float  postcursor 
)
overridevirtual

Set the post-cursor equalizer tap for a channel.

Equalizer coefficients are are normalized so that 0 is the lowest possible tap value and 1 is the highest possible tap value. Some instruments allow negative values (which invert the sign of the tap).

The exact mapping of normalized coefficients to FFE gain steps is instrument specific and may be nonlinear.

Parameters
iChannel index
postcursorPost-cursor tap

Implements BERT.

◆ SetTxPreCursor()

void MultiLaneBERT::SetTxPreCursor ( size_t  i,
float  precursor 
)
overridevirtual

Set the pre-cursor equalizer tap for a channel.

Equalizer coefficients are are normalized so that 0 is the lowest possible tap value and 1 is the highest possible tap value. Some instruments allow negative values (which invert the sign of the tap).

The exact mapping of normalized coefficients to FFE gain steps is instrument specific and may be nonlinear.

Parameters
iChannel index
precursorPre-cursor tap

Implements BERT.

◆ SetUseExternalRefclk()

void MultiLaneBERT::SetUseExternalRefclk ( bool  external)
overridevirtual

Sets the reference clock source (internal or external)

Parameters
externalTrue to select external clock, false to select internal

Implements BERT.


The documentation for this class was generated from the following files: