Device Configuration
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.
Your First Device Configuration
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:
Understanding Gates
Gates control the electrostatic landscape of your device. Stanza supports four gate types:
- PLUNGER: Controls charge occupation in quantum dots
- BARRIER: Controls tunnel coupling between regions
- RESERVOIR: Connects to electron reservoirs
- SCREEN: Provides electrostatic screening
Example: Double Quantum Dot
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.
Working with Gate Groups
Filter gates by type for common operations:
Contacts: Where You Measure
Contacts are where current flows in and out of your device. Stanza supports SOURCE and DRAIN contact types for DC transport measurements.
Example: DC Transport with Bias
Configure contacts that can both measure current and apply bias voltage:
Sweep bias voltage to measure Coulomb diamonds:
Example: Measurement-Only Contact
For contacts that only measure without voltage control:
Use measurement-only contacts for fast current measurements during sweeps:
Connecting to Hardware
Instruments bridge your device configuration and actual hardware. The most common setup uses a QDAC-II for voltage control and current measurement.
Example: Simple Setup
Use a single QDAC-II for everything:
Example: Separate Control and Measurement
For more flexibility, split control and measurement:
The device automatically routes operations to the appropriate instrument based on control/measure channels.
Testing Without Hardware
Enable simulation mode for developing routines before hardware access:
Pre-configuring Routine Parameters
The routines
section lets you pre-configure parameters for common measurements:
Run routines without repeating parameters:
Organizing Complex Workflows
Use nested routines to organize multi-step tune-ups:
Run the entire workflow:
Complete Example
Here’s a full configuration for a double quantum dot device:
Use it in your code:
Tips and Best Practices
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.
Next Steps
- Routines - Learn how to write measurement routines using your configured device
- Drivers - Understand how instruments communicate with hardware
- Data Logging - Automatically log data from your measurements