SignalGeneratorNode#

class FIREQ_SYSTEM.signal_generator_node.SignalGeneratorNode(*args: Any, **kwargs: Any)[source]#

Bases: _GenericNode

Object representing the signal generator system.

Configuration dictionary keys:

  • _name (str): Name of the signal generator node instance.

  • _ll_handler (GeneratorDriver): Low-level handler for the signal generator.

  • $dfrequency (float): Drive frequency, in MHz.

  • $rfrequency (float): Readout frequency, in MHz.

  • $rphase (float): Readout phase, in radians.

  • $rchannel (int): Readout trigger channel. Set to 0 to deactivate.

  • $dchannel (int): Drive trigger channel. Set to 0 to deactivate.

  • $lfsr_seed (int): Seed for the LFSR.

  • $drive_order (list[str]): Ordered list of pulse names to be generated.

nodetype = 'signal_generation'#
wraps = ['GeneratorDriver']#
init_memory() → int[source]#

Initialize the memory of the signal generator.

Returns:

Error code (0 on success)

Return type:

int

reserve_envelope_segment(sample_depth: int) → int[source]#

Reserve a segment of the envelope memory.

This function does not check if the segment is actually valid; it always returns an address and advances the internal pointer.

Parameters:

sample_depth (int) – Length of the segment in samples

Returns:

The starting address of the reserved segment

Return type:

int

reserve_wdw() → int[source]#

Reserve a wave definition word slot in memory.

Returns:

The index of the reserved WDW slot

Return type:

int

set_drive_frequency(frequency: float) → int[source]#

Set the drive frequency.

Parameters:

frequency (float) – Frequency in MHz

Returns:

Error code (0 on success)

Return type:

int

set_readout_frequency(frequency: float) → int[source]#

Set the readout frequency.

Parameters:

frequency (float) – Frequency in MHz

Returns:

Error code (0 on success)

Return type:

int

set_readout_phase(phase: float) → int[source]#

Set the readout phase.

Parameters:

phase (float) – Phase in radians

Returns:

Error code (0 on success)

Return type:

int

set_readout_channel(channel: int) → int[source]#

Set the readout trigger channel.

Parameters:

channel (int) – Channel number, set to 0 to deactivate

Returns:

Error code (0 on success)

Return type:

int

set_drive_channel(channel: int) → int[source]#

Set the drive trigger channel.

Parameters:

channel (int) – Channel number, set to 0 to deactivate

Returns:

Error code (0 on success)

Return type:

int

set_lfsr_seed(seed: int) → int[source]#

Set the LFSR seed.

Parameters:

seed (int) – Seed for the LFSR

Returns:

Error code (0 on success)

Return type:

int

set_drive_order(order: list[str]) → int[source]#

Set the order of drive generation.

Parameters:

order (list[str]) – Ordered list of pulse names to be generated

Returns:

Error code (0 on success)

Return type:

int

set_manual_wave_destination(destination: str) → int[source]#

Set the destination where manual waves should be sent.

Parameters:

destination (str) – ‘readout’ or ‘drive’

Returns:

Error code (0 on success)

Return type:

int

manual_trigger() → int[source]#

Trigger the generator manually.

create_child(name: str, of_type: str, **kwargs: dict[str, Any]) → _GenericEnvelope | _Pulse | _VZGate[source]#

Create a child node of the specified type.

Parameters:
  • name (str) – Name of the child node

  • of_type (str) – Type of child node — "envelope", "pulse" or "vzgate"

  • kwargs (dict[str, Any]) – Additional arguments to pass to the child node

Returns:

The created child node

Return type:

_GenericEnvelope or _Pulse or _VZGate

Raises:

ValueError – If the name is already taken or the type is unsupported