3.3 Status information

The driver provides functions to retrieve detailed information on the type of board, it’s configuration, settings and state. The information is split according to its scope and the computational requirements to query the information from the board.

int ndigo6g12_get_driver_revision()

Get the driver version in integer format.

Returns:

The driver version in the same format as ndigo6g12_static_info::driver_revision.

const char *ndigo6g12_get_driver_revision_str()

Get the driver version in string format.

Returns:

The Driver version including SVN build revision as a string with format x.y.z.svn.

int ndigo6g12_count_devices(int *error_code, const char **error_message)

Get the number of Ndigo6G-12 boards that are installed in the system.

Parameters:
  • error_code[out] Pointer to an integer in which to store the error code.

  • error_message[out] Location in which to store the error message as plain text.

Returns:

The number.

int ndigo6g12_get_static_info(ndigo6g12_device *device, ndigo6g12_static_info *static_info)

Get the static information.

The static information does not change after the device initialization.

Parameters:
  • device[in] Pointer to the device from which to get the information.

  • static_info[out] Pointer to a structure in which to store the information.

Returns:

See Function return values.

int ndigo6g12_get_param_info(ndigo6g12_device *device, ndigo6g12_param_info *param_info)

Get parametric information.

The parametric information may change due to the configuration.

Parameters:
  • device[in] Pointer to the device from which to get the information.

  • param_info[out] Pointer to a structure in which to store the information.

Returns:

See Function return values.

int ndigo6g12_get_fast_info(ndigo6g12_device *device, ndigo6g12_fast_info *fast_info)

Get fast status information.

The information can be retrieved within a few microseconds.

Parameters:
  • device[in] Pointer to the device from which to get the information.

  • fast_info[out] Pointer to a structure in which to store the information.

Returns:

See Function return values.

int ndigo6g12_get_pcie_info(ndigo6g12_device *device, crono_pcie_info *pcie_info)

Reads the PCIe info like correctable and uncorrectable errors.

Parameters:
  • device[in] Pointer to the device.

  • pcie_info[out] Pointer to the structure in which to store the information.

Returns:

See Function return values.

struct ndigo6g12_param_info

Contains configuration changes.

Structure filled by ndigo6g12_get_param_info(). This structure contains information that may change indirectly due to configuration changes.

Public Members

double bandwidth

Bandwidth.

4.5 or 6.5 GHz depending on ndigo6g12_configuration::extended_bandwidth.

int resolution

ADC sample resolution.

Always 12 bit.

double sample_rate

Actual ADC sample rate of currently sampled data.

Depending on ndigo6g12_configuration::adc_mode, that is, sample_rate = 6.4 GHz / channels.

double sample_period

The period that one sample in the data represents in picoseconds.

double tdc_period

The period that one TDC bin in the data represents in picoseconds.

double packet_ts_period

The period that one tick of the packet timestamp represents in picoseconds.

uint64_t tdc_packet_timestamp_offset

The TDC packet timestamp offset.

Since TDC packets carry the timestamp of the end of the packet, to calculate the start, tdc_packet_timestamp_offset has to be subtracted.

uint32_t tdc_rollover_period

Time span of one TDC timestamp rollover period in units of the TDC binsize.

All TDC hits within this period are written to one crono_packet.

double adc_sample_delay

The delay of the ADC samples due to pipelining in picoseconds.

int board_id

The ID the board uses to identify itself in the output data stream.

Takes values 0 to 255.

int channels

Number of ADC channels in the current mode.

See ndigo6g12_configuration::adc_mode.

int channel_mask

Mask with a set bit for each enabled input channel.

int tdc_channels

Number of TDC channels in the current mode.

int64_t total_buffer

The total amount of the DMA buffer in bytes.

int samples_per_clock

The number of samples in one clock cycle in the current mode.

struct ndigo6g12_static_info

Structure contains static information.

This structure contains information about the board that does not change during run time. It is provided by ndigo6g12_get_static_info().

Public Members

char bitstream_date[NDIGO6G12_BITSTREAM_DATE_LEN]

Bitstream creation date.

DIN EN ISO 8601 string YYYY-MM-DD HH:DD:SS describing the time when the bitstream was created.

int board_configuration

Describes the schematic configuration of the board.

The same board schematic can be populated in multiple variants. This is a 8-bit code that can be read from a register.

int board_revision

Board revision number.

The board revision number can be read from a register. It is a four bit number that changes when the schematic of the board is changed.

  • 0: Experimental version of the first board. Labeled “Rev. 1”.

  • 2: First commercial version. Labeled “Rev. 2”

int board_serial

The board’s serial number.

With year and running number in 8.24 format (yy.nnn; 8 bits are used to encode the year, 24 bits to encode the number).

The number is identical to the one printed on the silvery sticker on the board.

char calibration_date[NDIGO6G12_CALIBRATION_DATE_LEN]

Calibration date.

DIN EN ISO 8601 string YYYY-MM-DD HH:DD describing the time when the card was calibrated.

int chip_id

16-bit factory ID of the ADC chip.

This is the chipID as read from the 16-bit ADC chip-ID register.

crono_bool_t dc_coupled

Shows if the inputs are DC-coupled.

Default is false, that is, AC-coupled.

int driver_revision

Encoded version number for the driver.

The lower three bytes contain a triple-level hierarchy of version numbers. E.g., 0x010103 encodes version 1.1.3.

A change in the first digit generally requires a recompilation of user applications. Change in the second digit denote significant improvements or changes that don’t break compatibility and the third digit changes with minor bugfixes and the like (see https://semver.org/).

int driver_build_revision

The build number of the driver according to cronologic’s internal versioning system.

crono_bool_t flash_valid

Calibration data read from flash is valid.

If not false, the driver found valid calibration data in the flash on the board and is using it.

int fw_revision

Revision number of the FPGA configuration.

int fw_type

Type of firmware, always 5 -> Ndigo6G-12.

int pcb_serial

Trenz serial number.

int svn_revision

Subversion revision ID of the FPGA configuration.

A number to track builds of the firmware in more detail than the firmware revision. It changes with every change in the firmware, even if there is no visible effect for the user. The subversion revision number can be read from a register.

int application_type

Shows the initialized mode.

See NDIGO6G12_APP_TYPE_* constants.

char config_flash_signature_primary[NDIGO6G12_FLASH_SIG_LEN]

Shows the signature of the primary flash.

char config_flash_signature_secondary[NDIGO6G12_FLASH_SIG_LEN]

Shows the signature of the secondary flash.

double auto_trigger_ref_clock

Auto trigger clock frequency.

The clock frequency of the auto trigger in Hz used for the calculations of ndigo6g12_configuration::auto_trigger_period.

Fixed at 200 MHz.

struct ndigo6g12_fast_info

Contains fast dynamic information.

This structure is filled by ndigo6g12_get_fast_info(). This information can be obtained within a few microseconds.

Public Members

int state

The current state of the device.

Should be one of the NDIGO6G12_DEVICE_STATE_* values.

int fan_speed

Speed of the FPGA fan in rounds per minute.

Reports 0 if no fan is present.

double fpga_temperature

Temperature of the FPGA in °C.

double fpga_vccint

Internal Voltage of the FPGA in V. Useful debugging information.

double fpga_vccaux

Auxillary Voltage of the FPGA in V. Useful debugging information.

double fpga_vccbram

BRAM Voltage of the FPGA in V. Useful debugging information.

double mgt_0v9

Shows measured voltage for the mgt_0v9 power supply in V. Useful debugging information.

double mgt_1v2

Shows measured Voltage for the mgt_1v2 power supply in V. Useful debugging information.

double adc_2v5

Shows measured voltage for the 2v5 power supply in V. Useful debugging information.

double clk_3v3

Shows measured voltage for the clk_3v3 power supply in V. Useful debugging information.

double adc_3v3

Shows measured voltage for the adc_3v3 power supply in V. Useful debugging information.

double pcie_3v3

Shows measured voltage for the pcie_3v3 power supply in V. Useful debugging information.

double opamp_5v2

Shows measured voltage for the opamp_5v2 power supply in V. Useful debugging information.

double temp4633_1

Shows temperature of voltage regulartor U3_1 in °C.

double temp4633_2

Shows temperature of voltage regulator U3_2 in °C.

double temp4644

Shows temperature of voltage regulator U4 in °C.

double tdc1_temp

Temperature of the TDC-chip in °C.

double ev12_cmiref

Shows voltage for differential ADC input common mode voltage in V.

Measured or calibration target depending on board revision and assembly variant.

double ev12_temp

Temperature of the ADC in °C.

int alerts

Alert bits from temperature sensor and the system monitor.

Bit 0 is set if the TDC temperature exceeds 140°C. In this case the TDC shut down and the device needs to be reinitialized.

See NDIGO6G12_ALERT_* .

Number of PCIe lanes the card uses.

Should always be 8 for the Ndigo6G-12.

Data rate of the PCIe card.

Should always be 3 for the Ndigo6G-12.

int pcie_max_payload

Maximum size for a single PCIe transaction in bytes.

Depends on the system configuration.

crono_bool_t adc_data_pll_locked

ADC data clock is PLL locked.

crono_bool_t adc_data_pll_lost_lock

ADC data clock PLL lost lock (Sticky Bit).

int adc_lanes_synced

Shows the synced ADC lanes.

Each bit corresponds to one lane. Useful debugging information.

int adc_lanes_lost_sync

Shows the ADC lanes that lost sync.

Each bit corresponds to one lane. Useful debugging information.

int adc_lanes_fifo_empty

Shows which ADC lanes have an empty FIFO.

Each bit corresponds to one lane. Useful debugging information.

int adc_lanes_fifo_full

Shows which ADC lanes have a full FIFO.

Each bit corresponds to one lane. Useful debugging information.

int adc_lanes_running

Shows which ADC lanes are running.

Each bit corresponds to one lane. Useful debugging information.

int adc_lanes_sync_timeout

Shows which ADC lanes were unable to sync before a timeout.

Each bit corresponds to one lane. Useful debugging information.

int adc_sync_retry_count

The number of ADC lane synchronization retries.

Default is set to 0. Useful debugging information.

int adc_sync_strobe_retry_count

The number of ADC strobe synchronization retries.

Default is set to 0. Useful debugging information.

int adc_sync_delay_count

16 Bit number showing when the last ADC lane synchronization was achieved.

Useful debugging information.

crono_bool_t adc_mgt_power_good

Shows if the supplied mgt power is sufficient.

Useful debugging information.

crono_bool_t lmk_pll1_locked

Shows if lmk_pll1 is locked. Useful debugging information.

crono_bool_t lmk_pll2_locked

Shows if lmk_pll2 is locked. Useful debugging information.

crono_bool_t lmk_lost_lock

Shows if lmk lost lock. Useful debugging information.

int lmk_lock_wait_count

Wait count of the lmk. Useful debugging information.

int lmk_ctrl_vcxo

Usefull for hardware debugging.

crono_bool_t lmx_locked

lmx locked. Useful debugging information.

crono_bool_t lmx_lost_lock

lmx lost lock. Useful debugging information.

int lmx_lock_wait_count

lmx lock wait count. Useful debugging information.

struct crono_pcie_info

Structure containing PCIe information.

Public Members

uint32_t pwr_mgmt

Organizes power supply of PCIe lanes.

Number of PCIe lanes that the card uses.

Should be 1, 2, or 4 for Ndigo5G and 1, 2, 4, or 8 for the Ndigo6G-12. Ideally, should be the respective maximum.

uint32_t max_payload

Maximum size in bytes for one PCIe transaction.

Depends on the system configuration.

Data rate of the PCIe card.

Depends on the system configuration.

uint32_t error_status_supported

Different from 0 if the PCIe error status is supported for this device.

uint32_t correctable_error_status

Correctable error status flags, directly from the PCIe config register.

Useful for debugging PCIe problems. 0, if no error is present, otherwise one of CRONO_PCIE_* .

uint32_t uncorrectable_error_status

Uncorrectable error status flags, directly from the PCIe config register.

Useful for debugging PCIe problems. 0, if no error is present, otherwise one of CRONO_PCIE_UNC_* .

uint32_t reserved

For future extension.