Think of device configuration as your lab notebook for defining a quantum device. Instead of hardcoding voltages and channel numbers in your Python scripts, you describe your device topology once in a YAML file. This makes it easy to work with different devices, share configurations with collaborators, and keep your experimental code clean.
Let’s configure a simple single quantum dot device. Create a file called device.yaml:
Now you can control your device using gate names instead of channel numbers:
Gates control the electrostatic landscape of your device. Stanza supports four gate types:
Here’s how you might configure a double quantum dot device:
The voltage bounds act as safety limits - if your code tries to exceed them, Stanza raises an error before touching the hardware.
Filter gates by type for common operations:
For contacts that only measure without voltage control:
Use measurement-only contacts for fast current measurements during sweeps:
Contacts are where current flows in and out of your device. Stanza supports SOURCE and DRAIN contact types for DC transport measurements.
Configure contacts that can both measure current and apply bias voltage:
Sweep bias voltage to measure Coulomb diamonds:
GPIOS (General Purpose Input/Output) are digital pins for sending and receiving signals from external components.
If your device has an external component, such as an LED or a multiplexer, you can configure the positive supply voltage (VDD) and the drain (VSS) with the following configuration:
Instruments bridge your device configuration and actual hardware. The most common setup uses a QDAC-II for voltage control and current measurement.
Use a single QDAC-II for everything:
For more flexibility, split control and measurement:
The device automatically routes operations to the appropriate instrument based on control/measure channels.
Enable simulation mode for developing routines before hardware access:
The routines section lets you pre-configure parameters for common measurements:
Run routines without repeating parameters:
Use nested routines to organize multi-step tune-ups:
Run the entire workflow:
Here’s a full configuration for a double quantum dot device:
Use it in your code:
Use descriptive names: Names like LEFT_PLUNGER and RIGHT_BARRIER are clearer than G1 and G2.
Start with conservative voltage bounds: You can always widen them later. Better safe than sorry.
Test with simulation first: Use is_simulation: true to verify your configuration before connecting to hardware.
One config per device: Don’t try to reuse configurations across different physical devices. Channel mappings will differ.
Version control your configs: Keep them in git alongside your routines. Document what changed and why.
Comment your YAML: Future you will thank you for explaining why certain parameters were chosen.