DUV API Documentation

Complete Python API Documentation for DUV Lithography Simulation Suite

DUV Simulation API

POST Run Monte Carlo Simulation
/api/v1/duv/monte-carlo
Runs Monte Carlo particle simulation for energy deposition modeling.

Request Body

{
  "num_particles": 100000,
  "wavelength": 193,
  "na": 0.85,
  "feature_size": 50.0,
  "dose": 30.0,
  "simulation_speed": "medium"
}

Response

{
  "success": true,
  "simulation_results": {
    "energy_deposition": [...],
    "particle_distribution": [...],
    "statistics": {
      "total_energy": 1.23e-15,
      "peak_intensity": 2.45e-12,
      "simulation_time": 1.23
    }
  },
  "timestamp": "2024-01-15T10:30:00Z"
}
POST Calculate Double Gaussian PSF
/api/v1/duv/double-gaussian
Calculates double Gaussian point spread function with FFT convolution.

Request Body

{
  "sigma1": 30.0,
  "sigma2": 100.0,
  "amplitude1": 0.8,
  "amplitude2": 0.2,
  "grid_size": 128,
  "feature_size": 200.0
}
POST Analyze Partial Coherence
/api/v1/duv/partial-coherence
Analyzes partial coherence effects and calculates coherence length.

Request Body

{
  "na": 0.85,
  "sigma": 0.3,
  "wavelength": 193,
  "spectral_width": 0.5,
  "pupil_cutoff": 0.9,
  "illumination_type": "circular"
}
POST Model Flare Effects
/api/v1/duv/flare
Models flare effects using third Gaussian with long-tail characteristics.

Request Body

{
  "flare_level": 0.02,
  "flare_sigma": 10.0,
  "main_sigma": 50.0,
  "decay_rate": 0.5,
  "scattering_angle": 30.0,
  "feature_size": 1.0
}
POST Calculate Swing Curves
/api/v1/duv/swing-curves
Calculates swing curves vs duty cycle and pitch with contrast/NILS analysis.

Request Body

{
  "wavelength": 193,
  "na": 0.85,
  "sigma": 0.3,
  "resist_thickness": 200.0,
  "refractive_index": 1.7,
  "analysis_type": "pitch"
}
POST Compare Models
/api/v1/duv/compare
Compares Monte Carlo vs Double Gaussian models with statistical validation.

Request Body

{
  "feature_size": 50.0,
  "wavelength": 193,
  "na": 0.85,
  "num_particles": 100000,
  "comparison_metric": "accuracy",
  "validation_method": "experimental"
}

Python Integration Examples

Basic Usage

import duv_simulator as duv

# Initialize simulator
simulator = duv.DUVSimulator()

# Run Monte Carlo simulation
mc_results = simulator.run_monte_carlo(
    num_particles=100000,
    wavelength=193,
    na=0.85,
    feature_size=50.0,
    dose=30.0
)

# Calculate Double Gaussian PSF
psf_results = simulator.calculate_double_gaussian(
    sigma1=30.0,
    sigma2=100.0,
    amplitude1=0.8,
    amplitude2=0.2
)

# Analyze partial coherence
coherence_results = simulator.analyze_partial_coherence(
    na=0.85,
    sigma=0.3,
    wavelength=193
)

# Model flare effects
flare_results = simulator.model_flare(
    flare_level=0.02,
    flare_sigma=10.0,
    main_sigma=50.0
)

# Calculate swing curves
swing_results = simulator.calculate_swing_curves(
    wavelength=193,
    na=0.85,
    analysis_type="pitch"
)

Advanced Usage

# Advanced configuration
config = duv.SimulationConfig(
    wavelength=193,
    na=0.85,
    coherence_factor=0.3,
    resist_thickness=200.0,
    refractive_index=1.7
)

# Run comprehensive analysis
analysis = duv.ComprehensiveAnalysis(config)

# Monte Carlo with custom parameters
mc_config = duv.MonteCarloConfig(
    num_particles=1000000,
    simulation_speed="high",
    include_statistics=True
)

mc_results = analysis.run_monte_carlo(mc_config)

# Double Gaussian with FFT optimization
psf_config = duv.PSFConfig(
    sigma1=30.0,
    sigma2=100.0,
    grid_size=256,
    fft_optimization=True
)

psf_results = analysis.calculate_psf(psf_config)

# Partial coherence with multiple illumination types
coherence_config = duv.CoherenceConfig(
    illumination_types=["circular", "annular", "quadrupole"],
    pupil_cutoff=0.9,
    spectral_width=0.5
)

coherence_results = analysis.analyze_coherence(coherence_config)

# Generate comprehensive report
report = analysis.generate_report(
    include_plots=True,
    include_statistics=True,
    export_format="pdf"
)

Batch Processing

# Batch processing for multiple parameters
parameter_sets = [
    {"wavelength": 193, "na": 0.85, "feature_size": 50.0},
    {"wavelength": 193, "na": 0.90, "feature_size": 50.0},
    {"wavelength": 193, "na": 0.85, "feature_size": 100.0},
    {"wavelength": 248, "na": 0.85, "feature_size": 50.0}
]

batch_results = []
for params in parameter_sets:
    result = simulator.run_comprehensive_analysis(**params)
    batch_results.append(result)

# Analyze batch results
batch_analysis = duv.BatchAnalysis(batch_results)
summary = batch_analysis.generate_summary()
comparison = batch_analysis.compare_results()