API Categories
Core Functions
1. initializeReactor()
Initializes a new plasma reactor instance with specified configuration parameters. This is the primary entry point for creating reactor simulations.
Parameters
| Parameter | Type | Description | Default |
|---|---|---|---|
| config | ReactorConfig | Reactor geometry and RF configuration including chamber volume, electrode area, gap distance | Required |
| gases | GasSystem | Gas delivery system with flow controllers, MFCs, and gas mixing ratios | Required |
| vacuum | VacuumSystem | Vacuum pumping system parameters including base pressure and pumping speed | Required |
Returns
PlasmaReactor - Initialized reactor object with all subsystems ready for operation
Example Usage
ReactorConfig config = {
chamber_volume: 50.0, // liters
electrode_area: 0.12, // m^2
gap: 0.025, // m
type: "ICP"
};
GasSystem gases = createGasSystem(["CF4", "O2", "Ar"]);
VacuumSystem vacuum = createVacuumSystem(500.0); // L/s
PlasmaReactor reactor = initializeReactor(config, gases, vacuum);
2. setProcessParameters()
Configures the operational parameters for plasma etching including RF power, pressure, gas flows, and temperature.
Parameters
| Parameter | Type | Description | Range |
|---|---|---|---|
| reactor | PlasmaReactor* | Pointer to initialized reactor instance | - |
| params | ProcessParams | Process setpoints including power, pressure, flows, temperature | See ProcessParams struct |
Example Usage
ProcessParams params = {
source_power: 1500.0, // Watts
bias_power: 250.0, // Watts
pressure: 10.0, // mTorr
temperature: 20.0, // Celsius
cf4_flow: 50.0, // sccm
o2_flow: 10.0, // sccm
ar_flow: 200.0 // sccm
};
setProcessParameters(&reactor, params);
3. igniteP lasma()
Initiates plasma ignition sequence with controlled power ramp to reach stable discharge. Monitors impedance and ensures proper coupling.
Parameters
| Parameter | Type | Description | Default |
|---|---|---|---|
| reactor | PlasmaReactor* | Reactor instance to ignite | Required |
| ignition_power | double | Initial power for breakdown (Watts) | 1000.0 |
| ramp_time | double | Time to ramp to setpoint (seconds) | 5.0 |
Returns
PlasmaState - Current plasma state including density, temperature, uniformity metrics
4. runEtchProcess()
Executes complete etching process on substrate for specified duration. Monitors endpoint, uniformity, and process stability.
Parameters
| Parameter | Type | Description | Units |
|---|---|---|---|
| reactor | PlasmaReactor* | Active reactor with ignited plasma | - |
| wafer | Substrate* | Substrate to be etched with material stack definition | - |
| etch_time | double | Total etch duration | seconds |
Returns
EtchResult - Comprehensive results including etch rate, uniformity, selectivity, profile metrics
5. shutdownReactor()
Safely shuts down reactor with optional cleaning and purge sequences.
Parameters
| Parameter | Type | Description | Options |
|---|---|---|---|
| reactor | PlasmaReactor* | Reactor to shutdown | - |
| mode | ShutdownMode | Shutdown procedure type | NORMAL, EMERGENCY, WITH_CLEAN |
6. getReactorStatus()
Retrieves current reactor operational status and health metrics.
Returns
ReactorStatus - Real-time status including power delivery, gas flows, pressure, temperature, plasma metrics
7. calibrateEndpoint()
Calibrates optical emission spectroscopy (OES) or interferometry for endpoint detection.
Parameters
| Parameter | Type | Description |
|---|---|---|
| reactor | PlasmaReactor* | Reactor with active plasma |
| target | Material | Material being etched |
| stop | Material | Underlying stop layer material |
8. exportRecipe()
Exports current process recipe to file for equipment transfer or documentation.
Parameters
| Parameter | Type | Description |
|---|---|---|
| reactor | PlasmaReactor* | Reactor with configured recipe |
| filename | const char* | Output file path |
| format | RecipeFormat | Export format (JSON, XML, LAM9400, TEL, AMAT) |
Plasma Generation Functions
9. calculatePlasmaFrequency()
Computes plasma frequency from electron density using ω_pe = √(n_e * e^2 / (ε_0 * m_e)).
Parameters
| Parameter | Type | Description | Units |
|---|---|---|---|
| electron_density | double | Electron density | cm^-3 |
Returns
double - Plasma frequency in rad/s
Example Usage
double ne = 1e11; // 10^11 cm^-3
double omega_pe = calculatePlasmaFrequency(ne);
printf("Plasma frequency: %.2e rad/s\n", omega_pe);
// Output: Plasma frequency: 5.64e10 rad/s
10. calculateDebyeLength()
Computes Debye screening length: λ_D = √(ε_0 * k_B * T_e / (n_e * e^2)).
Parameters
| Parameter | Type | Description | Units |
|---|---|---|---|
| electron_density | double | Electron density | cm^-3 |
| electron_temp | double | Electron temperature | eV |
Returns
double - Debye length in cm
11. calculateSheathVoltage()
Estimates sheath voltage drop based on electron temperature and Bohm criterion.
Parameters
| Parameter | Type | Description | Units |
|---|---|---|---|
| electron_temp | double | Electron temperature | eV |
| ion_mass | double | Ion mass | amu |
Returns
double - Sheath voltage in Volts
12. calculateSheathThickness()
Computes sheath thickness using Child-Langmuir formulation: s = λ_D * (2/3) * (2 * e * V_s / (k_B * T_e))^(3/4).
Parameters
| Parameter | Type | Description | Units |
|---|---|---|---|
| debye_length | double | Debye screening length | cm |
| sheath_voltage | double | Sheath voltage drop | V |
| electron_temp | double | Electron temperature | eV |
Returns
double - Sheath thickness in cm
13. calculatePowerAbsorption()
Calculates absorbed power density in plasma accounting for coupling losses.
Parameters
| Parameter | Type | Description | Units |
|---|---|---|---|
| rf_power | double | Applied RF power | Watts |
| coupling_efficiency | double | Power coupling efficiency (0-1) | - |
| volume | double | Plasma volume | liters |
Returns
double - Power density in W/cm^3
14. calculateEEDF()
Computes electron energy distribution function assuming Maxwellian or Druyvesteyn distribution.
Parameters
| Parameter | Type | Description | Units |
|---|---|---|---|
| electron_temp | double | Electron temperature | eV |
| energies | double* | Energy grid points | eV |
| num_points | int | Number of energy points | - |
Returns
Array - EEDF values at specified energies (eV^-3/2)
15. calculateCollisionFrequency()
Computes electron-neutral collision frequency: ν_c = n_g * σ_c * v_e.
Parameters
| Parameter | Type | Description | Units |
|---|---|---|---|
| neutral_density | double | Neutral gas density | cm^-3 |
| cross_section | double | Collision cross-section | cm^2 |
| electron_temp | double | Electron temperature | eV |
Returns
double - Collision frequency in Hz
Chemistry & Kinetics Functions
16. calculateIonizationRate()
Computes ionization rate using temperature-dependent rate coefficients: R_ion = n_e * n_g * k_ion(T_e).
Parameters
| Parameter | Type | Description | Units |
|---|---|---|---|
| electron_density | double | Electron density | cm^-3 |
| neutral_density | double | Neutral gas density | cm^-3 |
| electron_temp | double | Electron temperature | eV |
| gas_type | Gas | Gas species (CF4, Cl2, etc.) | - |
Returns
double - Ionization rate in cm^-3 s^-1
17. calculateDissociationRate()
Computes dissociation rate: R_diss = n_e * n_mol * k_diss(T_e).
Parameters
| Parameter | Type | Description | Units |
|---|---|---|---|
| electron_density | double | Electron density | cm^-3 |
| molecular_density | double | Molecular density | cm^-3 |
| electron_temp | double | Electron temperature | eV |
| molecule | Molecule | Molecular species | - |
Returns
double - Dissociation rate in cm^-3 s^-1
18. calculateRadicalProduction()
Estimates radical production rate from power: R_rad = α * P_abs / (E_diss * V).
Parameters
| Parameter | Type | Description | Units |
|---|---|---|---|
| absorbed_power | double | Power absorbed in plasma | Watts |
| dissociation_energy | double | Bond dissociation energy | eV |
| efficiency | double | Dissociation efficiency (0-1) | - |
Returns
double - Radical production rate in molecules/s
19. solveChemicalKinetics()
Solves time-dependent chemical kinetics using stiff ODE solver for plasma chemistry network.
Parameters
| Parameter | Type | Description |
|---|---|---|
| reactions | Reaction* | Array of chemical reactions with rate constants |
| num_reactions | int | Number of reactions in network |
| timestep | double | Integration timestep (seconds) |
| num_steps | int | Number of timesteps to simulate |
Returns
SpeciesDensities - Time-resolved densities for all species in cm^-3
20. calculateFCRatio()
Computes effective F/C ratio in fluorocarbon plasmas accounting for dissociation and oxygen addition.
Parameters
| Parameter | Type | Description |
|---|---|---|
| mixture | GasMixture | Input gas composition (CF4, C4F8, O2, etc.) |
| plasma | PlasmaState | Plasma conditions (Te, ne, power) |
Returns
double - Effective F/C ratio in plasma
21. calculatePolymerizationRate()
Computes polymer formation rate: R_poly = k_poly * [CF_x] * [sites].
Parameters
| Parameter | Type | Description | Units |
|---|---|---|---|
| cfx_density | double | CF_x radical density | cm^-3 |
| surface_sites | double | Available surface sites | cm^-2 |
| rate_constant | double | Polymerization rate constant | cm^3/s |
Returns
double - Polymerization rate in cm^-2 s^-1
22. loadReactionDatabase()
Loads chemical reaction database from file with rate constants and cross-sections.
Parameters
| Parameter | Type | Description |
|---|---|---|
| filename | const char* | Path to reaction database file (JSON/XML) |
| primary_gas | Gas | Primary feedgas (CF4, Cl2, etc.) |
Returns
ReactionDatabase - Loaded reaction set with rate coefficients
23. calculateOxygenEffect()
Computes oxygen scavenging effect on F/C ratio: (F/C)_eff = (F/C)_base + k_O * [O]/[CF_x].
Parameters
| Parameter | Type | Description |
|---|---|---|
| o2_fraction | double | O2 fraction in gas mix (0-1) |
| fc_ratio_base | double | Base F/C ratio without O2 |
Returns
double - Effective F/C ratio with oxygen
24. calculateChargeTransfer()
Computes charge transfer reaction rate: A^+ + B → A + B^+.
Parameters
| Parameter | Type | Description |
|---|---|---|
| source_ion | Ion | Ion donating charge |
| target | Neutral | Neutral receiving charge |
| rate_constant | double | Charge transfer rate (cm^3/s) |
Returns
double - Charge transfer rate in cm^-3 s^-1
Transport Functions
25. calculateDiffusionCoefficient()
Computes diffusion coefficient: D = (1/3) * v_th * λ_mfp.
Parameters
| Parameter | Type | Description | Units |
|---|---|---|---|
| thermal_velocity | double | Thermal velocity | cm/s |
| mean_free_path | double | Mean free path | cm |
Returns
double - Diffusion coefficient in cm^2/s
26. calculateNeutralFlux()
Computes neutral flux: Γ_n = -D * ∇n + n * v_gas.
Parameters
| Parameter | Type | Description | Units |
|---|---|---|---|
| density | double | Neutral density | cm^-3 |
| diffusion_coeff | double | Diffusion coefficient | cm^2/s |
| gradient | double* | Density gradient (3D vector) | cm^-4 |
Returns
double - Neutral flux in cm^-2 s^-1
27. calculateIonEnergy()
Computes ion energy at substrate: E_i = (1/2) * m_i * v_i^2 + e * V_s.
Parameters
| Parameter | Type | Description | Units |
|---|---|---|---|
| bohm_velocity | double | Ion velocity at sheath edge | cm/s |
| ion_mass | double | Ion mass | amu |
| sheath_voltage | double | Sheath voltage drop | V |
Returns
double - Ion energy in eV
28. calculateIonFlux()
Computes ion flux: Γ_i = (1/4) * n_i * √(8 * k_B * T_i / (π * m_i)).
Parameters
| Parameter | Type | Description | Units |
|---|---|---|---|
| ion_density | double | Ion density | cm^-3 |
| ion_temp | double | Ion temperature | eV |
| ion_mass | double | Ion mass | amu |
Returns
double - Ion flux in cm^-2 s^-1
29. calculateAngularSpread()
Computes RMS angular spread: θ_rms = √(2 * k_B * T_i / E_i).
Parameters
| Parameter | Type | Description | Units |
|---|---|---|---|
| ion_temp | double | Ion temperature | eV |
| ion_energy | double | Ion bombardment energy | eV |
Returns
double - RMS angular spread in radians
30. calculateResidenceTime()
Computes gas residence time: τ_res = V / Q_pump.
Parameters
| Parameter | Type | Description | Units |
|---|---|---|---|
| reactor_volume | double | Chamber volume | liters |
| pumping_speed | double | Effective pumping speed | L/s |
Returns
double - Residence time in seconds
Surface Reaction Functions
31. calculateLangmuirCoverage()
Computes surface coverage: θ = (K * P) / (1 + K * P).
Parameters
| Parameter | Type | Description | Units |
|---|---|---|---|
| equilibrium_const | double | Adsorption equilibrium constant | Torr^-1 |
| partial_pressure | double | Species partial pressure | Torr |
Returns
double - Surface coverage (0-1)
32. calculateAdsorptionRate()
Computes adsorption rate: R_ads = S * Γ * (1 - θ).
Parameters
| Parameter | Type | Description | Units |
|---|---|---|---|
| sticking_coeff | double | Sticking coefficient (0-1) | - |
| flux | double | Incident particle flux | cm^-2 s^-1 |
| coverage | double | Surface coverage (0-1) | - |
Returns
double - Adsorption rate in cm^-2 s^-1
33. calculateEtchRate()
Computes total etch rate: ER_total = ER_chem + ER_phys + ER_ion-enh.
Parameters
| Parameter | Type | Description | Units |
|---|---|---|---|
| chemical_rate | double | Spontaneous chemical etch rate | nm/min |
| physical_rate | double | Physical sputter rate | nm/min |
| enhancement_factor | double | Ion enhancement factor | - |
Returns
double - Total etch rate in nm/min
34. calculateSputterYield()
Computes sputter yield: Y(E,θ) = Y_norm(E) * [cos(θ)]^(-f).
Parameters
| Parameter | Type | Description | Units |
|---|---|---|---|
| ion_energy | double | Ion bombardment energy | eV |
| ion_mass | double | Ion mass | amu |
| target | Material | Target material | - |
| angle | double | Angle from surface normal | degrees |
Returns
double - Sputter yield (atoms/ion)
35. calculateDesorptionRate()
Computes thermal desorption rate: R_des = ν * θ * exp(-E_des / (k_B * T)).
Parameters
| Parameter | Type | Description | Units |
|---|---|---|---|
| attempt_freq | double | Attempt frequency | s^-1 |
| coverage | double | Adsorbate coverage | - |
| activation_energy | double | Desorption activation energy | eV |
| temperature | double | Surface temperature | K |
Returns
double - Desorption rate in cm^-2 s^-1
36. calculateIonEnhancedDesorption()
Computes ion-enhanced desorption: R_des,ion = σ_des * Γ_i * θ.
Parameters
| Parameter | Type | Description | Units |
|---|---|---|---|
| cross_section | double | Desorption cross-section | cm^2 |
| ion_flux | double | Ion flux | cm^-2 s^-1 |
| coverage | double | Product coverage | - |
Returns
double - Ion-enhanced desorption rate in cm^-2 s^-1
37. calculateWaferTemperature()
Solves wafer thermal balance: P_ion + P_rec = P_cond + P_rad.
Parameters
| Parameter | Type | Description | Units |
|---|---|---|---|
| ion_power | double | Ion bombardment heating power | W |
| plasma_recomb | double | Recombination heating power | W |
| backside_pressure | double | Backside He pressure | Torr |
| chuck_temp | double | Chuck temperature | C |
Returns
double - Wafer temperature in C
38. calculateArrheniusRate()
Computes temperature-dependent rate: k(T) = A * exp(-E_a / (k_B * T)).
Parameters
| Parameter | Type | Description | Units |
|---|---|---|---|
| pre_exponential | double | Pre-exponential factor | varies |
| activation_energy | double | Activation energy | eV |
| temperature | double | Temperature | K |
Returns
double - Rate constant
Profile Evolution Functions
39. calculateLocalEtchRate()
Computes local etch rate: v_n = f(Γ_i, Γ_n, E_i, θ) / ρ.
Parameters
| Parameter | Type | Description | Units |
|---|---|---|---|
| ion_flux | double | Local ion flux | cm^-2 s^-1 |
| neutral_flux | double | Local radical flux | cm^-2 s^-1 |
| ion_energy | double | Local ion energy | eV |
| coverage | double | Reactant coverage | - |
| material | Material | Material being etched | - |
Returns
double - Normal etch velocity in nm/min
40. evolveProfile()
Evolves feature profile using level-set or string method: ∂r/∂t = v_n * n̂.
Parameters
| Parameter | Type | Description |
|---|---|---|
| initial | Profile | Initial feature geometry |
| timestep | double | Evolution timestep (seconds) |
| conditions | LocalConditions* | Array of local etch conditions |
Returns
Profile - Updated feature profile after timestep
41. calculateARDEFactor()
Computes ARDE factor: ER(AR) = ER_0 * F_n(AR) * F_i(AR) * F_c(AR).
Parameters
| Parameter | Type | Description |
|---|---|---|
| aspect_ratio | double | Feature aspect ratio (depth/width) |
| neutral_AR | double | Characteristic AR for neutral transport |
| ion_AR | double | Characteristic AR for ion transport |
| charging_AR | double | Characteristic AR for charging effects |
Returns
double - ARDE reduction factor (0-1)
42. calculateSurfacePotential()
Solves surface charging: dV_s/dt = (Γ_i - Γ_e) * e / C_s.
Parameters
| Parameter | Type | Description | Units |
|---|---|---|---|
| ion_flux | double | Ion flux to surface | cm^-2 s^-1 |
| electron_flux | double | Electron flux to surface | cm^-2 s^-1 |
| capacitance | double | Surface capacitance per area | F/cm^2 |
| time | double | Charging time | s |
Returns
double - Surface potential in Volts
43. calculateIonDeflection()
Computes ion deflection angle: Δθ = (e * V_s * L) / (2 * E_i * d).
Parameters
| Parameter | Type | Description | Units |
|---|---|---|---|
| surface_voltage | double | Charging voltage | V |
| feature_length | double | Feature dimension | um |
| ion_energy | double | Ion energy | eV |
| sheath_thickness | double | Sheath thickness | cm |
Returns
double - Deflection angle in radians
44. calculateMicroloading()
Computes microloading effect: ER_local = ER_iso / (1 + α * ρ_local).
Parameters
| Parameter | Type | Description |
|---|---|---|
| isolated_rate | double | Etch rate for isolated feature (nm/min) |
| pattern_density | double | Local pattern density (0-1) |
| loading_coeff | double | Microloading coefficient |
Returns
double - Local etch rate with microloading in nm/min
45. calculateSelectivity()
Computes etch selectivity: S = ER_target / ER_mask.
Parameters
| Parameter | Type | Description |
|---|---|---|
| target | Material | Target material to etch |
| mask | Material | Mask material |
| params | ProcessParams | Process conditions |
Returns
double - Selectivity ratio
Analysis & Diagnostic Functions
46. analyzeUniformity()
Analyzes etch uniformity across wafer with statistical metrics.
Parameters
| Parameter | Type | Description |
|---|---|---|
| results | EtchResult* | Array of etch results at measurement points |
| num_points | int | Number of measurement points |
Returns
UniformityMetrics - Mean, std dev, range, 3-sigma uniformity
47. detectEndpoint()
Detects etch endpoint using OES and/or interferometry signals.
Parameters
| Parameter | Type | Description |
|---|---|---|
| spectrum | OESData* | Optical emission spectroscopy data |
| interferogram | InterferometryData* | Laser interferometry data |
| threshold | double | Detection threshold |
Returns
EndpointSignal - Endpoint detection status and confidence
48. generateProcessReport()
Generates comprehensive process report with all metrics and diagnostics.
Parameters
| Parameter | Type | Description |
|---|---|---|
| reactor | PlasmaReactor* | Reactor instance |
| result | EtchResult | Etch results to report |
| filename | const char* | Output report filename (PDF/HTML) |
Returns
bool - Success status
49. optimizeRecipe()
ExperimentalUses machine learning optimization to find optimal process parameters.
Parameters
| Parameter | Type | Description |
|---|---|---|
| targets | OptimizationTarget* | Optimization objectives (rate, uniformity, selectivity) |
| num_targets | int | Number of optimization targets |
| constraints | Constraints | Process constraints and limits |
Returns
ProcessParams - Optimized process parameters
50. runSensitivityAnalysis()
Performs DOE sensitivity analysis of process parameters on etch metrics.
Parameters
| Parameter | Type | Description |
|---|---|---|
| baseline | ProcessParams | Baseline process conditions |
| varied_params | Parameter* | Parameters to vary with ranges |
| num_params | int | Number of parameters to vary |
Returns
SensitivityMatrix - Sensitivity coefficients for all parameters vs. metrics