Plasma Etching API Reference

Complete Function Documentation for PlasmaEtch Library v3.5

Core Functions

1. initializeReactor()

PlasmaReactor initializeReactor(ReactorConfig config, GasSystem gases, VacuumSystem vacuum)

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()

void setProcessParameters(PlasmaReactor* reactor, ProcessParams params)

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()

PlasmaState ignitePlasma(PlasmaReactor* reactor, double ignition_power, double ramp_time)

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()

EtchResult runEtchProcess(PlasmaReactor* reactor, Substrate* wafer, double etch_time)

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()

void shutdownReactor(PlasmaReactor* reactor, ShutdownMode mode)

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()

ReactorStatus getReactorStatus(PlasmaReactor* reactor)

Retrieves current reactor operational status and health metrics.

Returns

ReactorStatus - Real-time status including power delivery, gas flows, pressure, temperature, plasma metrics

7. calibrateEndpoint()

EndpointCalibration calibrateEndpoint(PlasmaReactor* reactor, Material target, Material stop)

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()

bool exportRecipe(PlasmaReactor* reactor, const char* filename, RecipeFormat format)

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()

double calculatePlasmaFrequency(double electron_density)

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()

double calculateDebyeLength(double electron_density, double electron_temp)

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()

double calculateSheathVoltage(double electron_temp, double ion_mass)

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()

double calculateSheathThickness(double debye_length, double sheath_voltage, double electron_temp)

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()

double calculatePowerAbsorption(double rf_power, double coupling_efficiency, double volume)

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()

Array calculateEEDF(double electron_temp, double* energies, int num_points)

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()

double calculateCollisionFrequency(double neutral_density, double cross_section, double electron_temp)

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()

double calculateIonizationRate(double electron_density, double neutral_density, double electron_temp, Gas gas_type)

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()

double calculateDissociationRate(double electron_density, double molecular_density, double electron_temp, Molecule molecule)

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()

double calculateRadicalProduction(double absorbed_power, double dissociation_energy, double efficiency)

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()

SpeciesDensities solveChemicalKinetics(Reaction* reactions, int num_reactions, double timestep, int num_steps)

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()

double calculateFCRatio(GasMixture mixture, PlasmaState plasma)

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()

double calculatePolymerizationRate(double cfx_density, double surface_sites, double rate_constant)

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()

ReactionDatabase loadReactionDatabase(const char* filename, Gas primary_gas)

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()

double calculateOxygenEffect(double o2_fraction, double fc_ratio_base)

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()

double calculateChargeTransfer(Ion source_ion, Neutral target, double rate_constant)

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()

double calculateDiffusionCoefficient(double thermal_velocity, double mean_free_path)

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()

double calculateNeutralFlux(double density, double diffusion_coeff, double* gradient)

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()

double calculateIonEnergy(double bohm_velocity, double ion_mass, double sheath_voltage)

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()

double calculateIonFlux(double ion_density, double ion_temp, double ion_mass)

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()

double calculateAngularSpread(double ion_temp, double ion_energy)

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()

double calculateResidenceTime(double reactor_volume, double pumping_speed)

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()

double calculateLangmuirCoverage(double equilibrium_const, double partial_pressure)

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()

double calculateAdsorptionRate(double sticking_coeff, double flux, double coverage)

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()

double calculateEtchRate(double chemical_rate, double physical_rate, double enhancement_factor)

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()

double calculateSputterYield(double ion_energy, double ion_mass, Material target, double angle)

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()

double calculateDesorptionRate(double attempt_freq, double coverage, double activation_energy, double temperature)

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()

double calculateIonEnhancedDesorption(double cross_section, double ion_flux, double coverage)

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()

double calculateWaferTemperature(double ion_power, double plasma_recomb, double backside_pressure, double chuck_temp)

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()

double calculateArrheniusRate(double pre_exponential, double activation_energy, double temperature)

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()

double calculateLocalEtchRate(double ion_flux, double neutral_flux, double ion_energy, double coverage, Material material)

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()

Profile evolveProfile(Profile initial, double timestep, LocalConditions* conditions)

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()

double calculateARDEFactor(double aspect_ratio, double neutral_AR, double ion_AR, double charging_AR)

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()

double calculateSurfacePotential(double ion_flux, double electron_flux, double capacitance, double time)

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()

double calculateIonDeflection(double surface_voltage, double feature_length, double ion_energy, double sheath_thickness)

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()

double calculateMicroloading(double isolated_rate, double pattern_density, double loading_coeff)

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()

double calculateSelectivity(Material target, Material mask, ProcessParams params)

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()

UniformityMetrics analyzeUniformity(EtchResult* results, int num_points)

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()

EndpointSignal detectEndpoint(OESData* spectrum, InterferometryData* interferogram, double threshold)

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()

bool generateProcessReport(PlasmaReactor* reactor, EtchResult result, const char* filename)

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()

Experimental
ProcessParams optimizeRecipe(OptimizationTarget* targets, int num_targets, Constraints constraints)

Uses 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()

SensitivityMatrix runSensitivityAnalysis(ProcessParams baseline, Parameter* varied_params, int num_params)

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

Back to Main Project