Device abstraction
The physical device or sample is represented by an instance of a Device class, which in turn is a QCodeS DelegateInstrument. The Device class extends its base class by adding attributes and methods specific to the characterization and dot-initialization process. Beside the initialization of instrument parameters and channels, the following attributes are meant to assist in the tuning process:
- List of gates and ohmics
Gates and ohmics are grouped in separate lists in the order specified by a device layout. The index of each gate or ohmic within the respective list should be the item’s ID, either gate_id or ohmic_id. A device layout is specified via a subclass of DeviceLayout.
- Readout
How and with which parameters the device should be read out. It is an instance of the Readout dataclass where each attribute, one for each readout method, is either a QcoDes Parameter or GroupedParameter. Typical readout method types are transport, sensing and rf.
- Main readout method
Indicating which readout method should be used to make tuning decisions. Features extracted during a data fit can vary between readout methods, some of which can have more noise than others. nanotune’s fitting procedures perform a fit on all of them, but only one is used decide e.g. whether the result is a good one or how gates should be adjusted next. It is added to static metadata and thus to every dataset measured.
- Normalization constants
Keeping track of the highest and lowest signals, i.e. noise floor and open device signal. These values are required for correct classification and need to be measured before tuning and every time settings on readout instruments are changed. Each readout method has its own constants. They are saved to static metadata of the device and thus to metadata of each dataset measured. A separate dataclass is used as a container.
- Current valid ranges
The voltages ranges within which we expect the desired features to occur, determined during tuning. If known, these are the current ranges within which to tune. They typically depend on voltages of other gates and need to be updated during tuning. These are also the ranges which will be swept during measurements.
- Initial valid ranges
The voltages ranges within which we expect the desired features to occur before any tuning has been done. They can be used if ranges can be narrowed down based on prior knowledge such as measurements of other samples or when a device is loaded pre-tuned. Will be set to each gate’s safety range if not specified.
- Transition voltages
Voltages at which a gate is able to deplete the electron gas nearby. Specifically, it is the voltage at which the measured signal drops from open to closed regime. These are determined during tuning and depend on voltages set to other gates.
- Quality
Indicating whether the device is fully functional and can thus be considered for dot tuning.
The class also has a convenience methods manipulating all gates collectively, which are used for initialization, resetting and normalization constant measurements.
The device can be initialized using a yaml file. Here an example of a dot device with three gates, already known normalization constants (which could be the case when re-loading a device), two readout instruments hooked up and some known tuning parameters.
instruments:
device_example:
type: nanotune.device.device.Device
init:
device_type:
doubledot
normalization_constants:
transport: [0, 2]
sensing: [-0.3, 0.6]
channels:
type: nanotune.device.device_channel.DeviceChannel
top_barrier:
channel: dac.ch01
gate_id: 0
left_plunger:
channel: dac.ch02
gate_id: 1
left_ohmic:
channel: dac.ch10
ohmic_id: 0
readout:
transport:
lockin.X
sensing:
rf.phase
initial_valid_ranges:
top_barrier: [-3, 0]
current_valid_ranges:
top_barrier: [-0.5, 0]
transition_voltages:
top_barrier: -0.4
Device layout
The DeviceLayout class serves as interface for specifying a device layout. A subclass needs to implement the methods which return the gate IDs of device channels serving the specific purpose. For example, the method barriers needs to return the gate IDs of all barriers of the device. DeviceLayout is a dataclass inheriting from the abstract IDeviceLayout. An example of a device layout is DoubleDotLayout.
Normalization constants
This dataclass is used to hold and update normalization constants of a device. Each attribute keeps track of the constants of one readout method, e.g. transport, sensing and rf.
Device channel
A DeviceChannel is a wrapper of an instrument channel, e.g. a DAC channel, but with added functionalities. The channel wrapped and passed to init function needs to either implement the methods of a DACChannelInterface described in Instruments & interfaces, or be in subclass thereof. This interface setup ensures that channels of different instruments can be used, where it is up to the user to implement the ‘glue’ between hardware and software.
Main attributes of DeviceChannel are:
- Gate ID
Identifier indicating which gate of a device the channel represents. Example: a left barrier’s ID of a DoubleDotLayout is 1.
- Ohmic ID
Identifier indicating which ohmic of a sample or device the channel represents.
- Safety voltage range
Voltage range within which the gate is guaranteed not to damage the device.
- Supports hardware ramp
Whether the instrument channel and thus instrument itself can sweep/set voltages with a hardware ramp.
- Use ramp
Whether voltages should be set or ramped.
- Ramp rate
Rate at which voltages should be ramped if use_ramp = True.
- Max voltage step
Maximum voltage step supported by the gate, i.e. the largest voltage change that can be set without ramping such that the device is not damaged.
- Relay state
If the DAC has relay states, this attribute indicates the current setting of it. Examples: ground or floating.