Skip to content

SchusterLab/slab_junctions

Repository files navigation

Slab Junctions

Tools for designing and fabricating superconducting Josephson junctions using e-beam lithography.

Overview

This repository provides Python tools for:

  • Dose chip generation: Create comprehensive test chips with dose and geometry sweeps
  • Junction design: Multiple junction types (Dolan, Manhattan cross, arrays)
  • phidl integration: Modern GDS layout generation using the phidl library

Features

Dose Chip Generator

  • Create 5Γ—5 mm or 7Γ—7 mm dose test chips
  • Dose tests: Vary e-beam doses with fixed geometry
  • Geometry sweeps: Vary junction dimensions with fixed doses
  • Manhattan junction support
  • Automatic dose tables for BEAMER e-beam system
  • Configurable grid layouts

Junction Types

  • Dolan junctions: Standard bridge junctions with undercut
  • Manhattan cross junctions: Perpendicular crossing leads with paddle undercuts
  • Junction arrays: Multiple junctions in series
  • Asymmetric junctions: Different widths on left/right sides

phidl Bridge

  • Compatibility layer between old mask_maker API and modern phidl
  • Stateful CPW drawing (CPWStraight, CPWLinearTaper, CPWBend)
  • Two-layer support (PIN/GAP for optical/e-beam lithography)

Installation

Requirements

  • Python 3.8+ (tested with Python 3.10)
  • phidl (GDS layout library)
  • numpy (numerical computing)
  • shapely (polygon operations)
  • Optional: jupyter, matplotlib (for interactive notebooks)

Quick Setup (Recommended)

Option 1: Using conda (Recommended)

# Create a new environment
conda create -n slab_junctions python=3.10 -y

# Activate the environment
conda activate slab_junctions

# Install dependencies
pip install -r requirements.txt

# Test the installation
python test_installation.py

Option 2: Using pip

# Create a virtual environment (optional but recommended)
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

# Test the installation
python test_installation.py

Verification

After installation, run the test script to verify everything works:

python test_installation.py

You should see output like:

======================================================================
SLAB JUNCTIONS - INSTALLATION TEST
======================================================================

[OK] Imports: PASSED
[OK] phidl_bridge: PASSED
[OK] Dose Chip Generator: PASSED
[OK] Junction Functions: PASSED

[OK] ALL TESTS PASSED!
The slab_junctions package is working correctly.

Quick Start

1. Generate a Dose Chip

from dose_chip.dose_chip_generator import DoseChipGenerator, draw_dolan_junction

# Create 5Γ—5 mm chip
generator = DoseChipGenerator(chip_size=(5000, 5000))

# Add dose test grid (vary doses)
generator.add_dose_test(
    name='Dose Test',
    junction_func=draw_dolan_junction,
    geometry=(0.2, 0.2),  # Fixed width, gap
    dose_fullcut_range=(400, 3600),
    dose_undercut_range=(100, 1200),
    position=(-2350, 1017),
    n_rows=15,
    n_cols=15,
    spacing=100
)

# Save GDS and dose table
generator.save('my_chip.gds')

2. Design Custom Junctions

See junction_experiments/ for interactive notebooks and examples:

  • test_manhattan_junction.ipynb: Manhattan cross junction designer
  • examples/asymmetric_junction.py: Asymmetric junction example
  • templates/template_array.py: Junction array template

Documentation

phidl_bridge User Guide

Comprehensive guide to using the phidl_bridge API for CPW layout design:

πŸ“– PHIDL_BRIDGE_GUIDE.md

Covers:

  • Common functions: CPWStraight, CPWLinearTaper, CPWBend
  • CPW geometry convention: Understanding pinw/gapw parameters
  • Layer management: Single and two-layer modes for optical/e-beam
  • Complete examples: Lines, bends, tapers, junctions, meanders
  • Best practices: Tips and troubleshooting

Perfect for learning how to create custom CPW structures!

Repository Structure

slab_junctions/
β”œβ”€β”€ README.md
β”œβ”€β”€ requirements.txt
β”œβ”€β”€ .gitignore
β”œβ”€β”€ phidl_bridge.py          # phidl compatibility layer
β”œβ”€β”€ phidl_native.py           # Native phidl components
β”œβ”€β”€ dose_chip/
β”‚   β”œβ”€β”€ dose_chip_generator.py  # Main dose chip library
β”‚   └── my_chip_config.py       # Example configuration
β”œβ”€β”€ junction_experiments/
β”‚   β”œβ”€β”€ test_manhattan_junction.ipynb  # Interactive junction designer
β”‚   β”œβ”€β”€ examples/
β”‚   β”‚   └── asymmetric_junction.py
β”‚   └── templates/
β”‚       └── template_array.py
└── examples/
    └── run_files.ipynb          # Full workflow example

Usage Examples

Dose Test (Vary Doses)

generator.add_dose_test(
    name='My Dose Test',
    junction_func=draw_dolan_junction,
    geometry=(0.2, 0.2),
    dose_fullcut_range=(500, 2000),
    dose_undercut_range=(100, 600),
    position=(0, 0),
    n_rows=10,
    n_cols=10,
    spacing=100
)

Geometry Sweep (Vary Dimensions)

generator.add_dose_array(
    name='Geometry Sweep',
    junction_func=draw_dolan_junction,
    dose_fullcut=1450,
    dose_undercut=350,
    width_range=(0.1, 0.4),
    gap_range=(0.1, 0.4),
    position=(0, 0),
    n_rows=10,
    n_cols=10,
    spacing=100
)

Manhattan Junction

generator.add_manhattan_dose_test(
    name='Manhattan Test',
    geometry=(0.18, 0),
    dose_fullcut_range=(400, 3600),
    dose_undercut_range=(100, 1200),
    position=(0, 0),
    n_rows=15,
    n_cols=15,
    spacing=100
)

Layer Convention

  • Layer 1: Optical lithography labels and markers
  • Layer 2: Clearing dose text (3000 Β΅C/cmΒ²)
  • Layer 20: E-beam fullcut (PIN layer - junction metal)
  • Layer 60: E-beam undercut (GAP layer - junction bridge)
  • Layers 200-214: Dose test fullcut layers (varying doses)
  • Layers 600-614: Dose test undercut layers (varying doses)

Fabrication Notes

E-beam Doses

  • Fullcut doses typically range from 400-3600 Β΅C/cmΒ²
  • Undercut doses are multiplied by 4Γ— for BEAMER compatibility
  • Clearing dose for text labels: 3000 Β΅C/cmΒ²

Geometry

  • Minimum junction width: ~0.05 Β΅m (50 nm)
  • Typical undercut border: 0.15-0.3 Β΅m (150-300 nm)
  • Grid spacing: 50-500 Β΅m depending on chip size

Contributing

This is a research tool developed at the Schuster Lab. For questions or contributions, please contact the maintainers.

License

[Add license information]

Citation

If you use this code in your research, please cite: [Add citation information]

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •