ngscopeclient 0.1-dev+51fbda87c
|
Base class for bit error rate tester drivers. More...
#include <BERT.h>
Public Types | |
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... | |
![]() | |
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 Member Functions | |
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< Pattern > | GetAvailableTxPatterns (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< Pattern > | GetAvailableRxPatterns (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... | |
![]() | |
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. | |
InstrumentChannel * | GetChannel (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... | |
InstrumentChannel * | GetChannelByDisplayName (const std::string &name) |
Gets a channel given the display name. | |
InstrumentChannel * | GetChannelByHwName (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... | |
Static Public Member Functions | |
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 Member Functions | |
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... | |
Additional Inherited Members | |
![]() | |
std::string | m_nickname |
Optional user-selected nickname of the instrument. More... | |
![]() | |
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. | |
Base class for bit error rate tester drivers.
enum BERT::Pattern |
Set of patterns we can generate or accept.
|
protected |
Load instrument and channel configuration from a save file.
version | File format version |
node | Output node |
table | Table of IDs |
|
protected |
Validate instrument and channel configuration from a save file.
version | File format version |
node | Output node |
table | Table of IDs |
list | List of warnings generated by the pre-load process |
|
protected |
Serializes this BERT's configuration to a YAML node.
node | Output node |
table | Table of IDs |
|
pure virtual |
Gets the list of available data rates, in symbols/sec.
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
Gets the list of available receive patterns for a channel.
i | Channel index |
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
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.
i | Channel index |
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
Gets the list of available transmit patterns for a channel.
i | Channel index |
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
Get the integration period for BER measurements.
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
Get the sampling point for BER measurements.
i | Channel index |
dx | Horizontal offset of the sampling point from the center of the eye, in femtoseconds |
dy | Vertical offset of the sampling point from the center of the eye, in volts |
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
Returns the number of bits in a custom pattern (may change with line rate)
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
Gets the currently selected line rate (in symbols/sec)
i | Channel index |
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
virtual |
Returns the expected time, in femtoseconds, to complete a bathtub scan with the current settings.
The default implementation returns zero.
i | Channel index |
Reimplemented in AntikernelLabsTriggerCrossbar.
|
virtual |
Returns the expected time, in femtoseconds, to complete an eye scan with the current settings.
The default implementation returns zero.
i | Channel index |
Reimplemented in AntikernelLabsTriggerCrossbar.
|
pure virtual |
Gets the global custom pattern (only valid if IsCustomPatternPerChannel returns false)
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
overridevirtual |
Returns a bitfield describing the set of instrument types that this instrument supports.
Not all types may be available on a given channel.
Implements Instrument.
Reimplemented in AntikernelLabsTriggerCrossbar.
|
static |
Converts a Pattern enum into a strnig.
pat | The desired pattern |
|
static |
Converts a string name into a Pattern enum.
name | Name of the pattern |
|
pure virtual |
Gets the refclk in frequency, in Hz, required to generate the currently selected data rate.
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
Gets the currently selected refclk out frequency, in Hz.
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
Gets the currently selected reference clock output mux setting.
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
Gets the list of available reference clock mux settings.
Mux selector names are free-form text whose meaning is defined by the instrument.
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
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
i | Channel index |
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
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()
i | Channel index |
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
Get the list of available RX CTLE gain values (in dB)
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
Gets the transmit invert flag for a channel.
i | Channel index |
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
Gets the currently selected receive pattern for a channel.
i | Channel index |
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
virtual |
Get the configured scan depth for a channel, in UIs per sample/pixel.
i | Channel index |
Reimplemented in AntikernelLabsTriggerCrossbar.
|
virtual |
Returns the list of integration depths for eye / bathtub scans.
Higher depths will give better resolution at low BER values, but increase scan time.
i | Channel index |
Reimplemented in AntikernelLabsTriggerCrossbar.
|
virtual |
Gets the estimated completion status (0-1) of the current scan.
i | Channel index |
Reimplemented in AntikernelLabsTriggerCrossbar.
|
pure virtual |
Get the drive strength for a channel.
i | Channel index |
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
Gets the transmit enable flag for a channel.
i | Channel index |
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
Gets the transmit invert flag for a channel.
i | Channel index |
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
Gets the currently selected transmit pattern for a channel.
i | Channel index |
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
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.
i | Channel index |
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
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.
i | Channel index |
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
Sets the reference clock source.
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
virtual |
Determines whether this instrument has configurable integration depth for eye / bathtub scans.
Reimplemented in AntikernelLabsTriggerCrossbar.
|
pure virtual |
Returns true if this instrument has a reference clock input port.
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
Returns true if this instrument has a reference clock output port.
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
Determines whether the input buffer has a continuous-time linear equalizer.
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
Determines whether custom patterns are settable per channel, or shared by the whole device.
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
Determines whether the TX/RX clock is a per-instrument or per-channel setting.
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
virtual |
Returns true if an eye scan is in progress.
i | Channel index |
Reimplemented in AntikernelLabsTriggerCrossbar.
|
virtual |
Returns true if a horizontal bathtub scan is in progress.
i | Channel index |
Reimplemented in AntikernelLabsTriggerCrossbar.
|
pure virtual |
Acquires an eye pattern.
i | Channel index |
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
Acquires a bathtub curve.
i | Channel index |
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
Set the integration period for BER measurements.
Longer values give better resolution for low BERs but update more slowly
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
Set the sampling point for BER measurements.
i | Channel index |
dx | Horizontal offset of the sampling point from the center of the eye, in femtoseconds |
dy | Vertical offset of the sampling point from the center of the eye, in volts |
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
Sets the data rate (in symbols/sec)
i | Channel index |
rate | Baud rate of the channel |
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
Sets the global custom pattern (only valid if IsCustomPatternPerChannel returns false)
pattern | The bit sequence (up to 64 bits in length) |
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
Sets the reference clock output mux.
i | Index of the mux within the table returned by GetRefclkOutMuxNames() |
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
Sets the RX CTLE gain index.
i | Channel index |
step | Index of the gain value within the GetRxCTLEGainSteps() table to use |
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
Sets the receive invert flag for a channel.
i | Channel index |
invert | True = inverted, false = inverted |
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
Sets the receive pattern for the selected channel.
i | Channel index |
pattern | Desired input pattern |
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
virtual |
Set the configured scan depth for a channel.
i | Channel index |
depth | Integration depth, in UIs |
Reimplemented in AntikernelLabsTriggerCrossbar.
|
pure virtual |
Set the drive strength for a channel.
i | Channel index |
drive | Nominal p-p swing |
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
Sets the transmit enable flag for a channel.
i | Channel index |
enable | True = enabled, false = disabled |
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
Sets the transmit invert flag for a channel.
i | Channel index |
invert | True = inverted, false = normal |
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
Sets the transmit pattern for the selected channel.
i | Channel index |
pattern | The selected pattern |
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
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.
i | Channel index |
postcursor | Post-cursor tap |
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
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.
i | Channel index |
precursor | Pre-cursor tap |
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.
|
pure virtual |
Sets the reference clock source (internal or external)
external | True to select external clock, false to select internal |
Implemented in AntikernelLabsTriggerCrossbar, and MultiLaneBERT.