Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Electron deposition in a resist on Si

10 keV electrons at normal incidence on a 100 nm resist layer over Si. The input is examples/electron/e_10keV_resist_on_si.toml:

# 10 keV electrons into a 100 nm resist layer on Si: energy deposition in a
# layered target (an electron run).
#
# Run:   lindhard run examples/electron/e_10keV_resist_on_si.toml --out out/e_10keV_resist_on_si
# Check: lindhard check examples/electron/e_10keV_resist_on_si.toml
#
# Schema: docs/cli.md, "Electron runs". Energies are in eV, lengths in nm,
# angles in degrees.
#
# SYNTHETIC DATA, as in e_10keV_si.toml. "Resist" is an illustrative organic
# compound (the composition C5H8O2 and the density 1.19 g/cm^3 of a
# PMMA-class polymer), but its electron data are not that polymer's, and not
# Si's either: both materials use the same synthetic Drude-Lorentz plasmon
# ELF (synthetic_plasmon_elf.toml) and round-number band parameters. No
# optical or band data of real materials is committed
# (docs/data-provenance.md; the PMMA ELF is a recorded gap). The output shows
# the layered-target mechanics of a run (a layer over a substrate, deposition
# per layer), not what a real resist stack does.

[electron.beam]
energy_ev = 10000.0
tilt_deg = 0.0

[electron.transport]
cutoff_ev = 1.0
cutoff_reference = "vacuum-level"
secondaries = "kieft-bosch"
boundary = "step-barrier"

[electron.elastic]
model = "mott"
# The only potential that runs today is a stand-in (docs/data-provenance.md).
potential = "thomas-fermi-yukawa"
exchange = false

[electron.inelastic]
model = "penn-single-pole"

[electron.tables]
# A coarse grid keeps the example quick.
min_energy_ev = 10.0
points_per_decade = 8.0

[electron.materials.Resist]
optical_elf = "synthetic_plasmon_elf.toml"
band = { kind = "insulator", valence_band_width_ev = 10.0, band_gap_ev = 4.0, affinity_ev = 1.0, provenance = "SYNTHETIC round numbers for the gallery example (examples/electron/e_10keV_resist_on_si.toml), not band parameters of any resist" }

[electron.materials.Si]
optical_elf = "synthetic_plasmon_elf.toml"
band = { kind = "insulator", valence_band_width_ev = 10.0, band_gap_ev = 2.0, affinity_ev = 3.0, provenance = "SYNTHETIC round numbers for the gallery example (examples/electron/e_10keV_resist_on_si.toml), not band parameters of Si" }

[electron.tally]
escape_energy_bins = 100
escape_polar_bins = 18

# Deposited energy: 20 radial bins of 50 nm and 30 depth bins of 50 nm, so the
# resist (the first two bins) and the Si below it are separate rows.
[electron.tally.cylindrical]
r = { lo_nm = 0.0, hi_nm = 1000.0, bins = 20 }
depth = { lo_nm = 0.0, hi_nm = 1500.0, bins = 30 }

[materials.Resist]
density_g_cm3 = 1.19
elements = [
  { symbol = "C", atom_fraction = 5.0 },
  { symbol = "H", atom_fraction = 8.0 },
  { symbol = "O", atom_fraction = 2.0 },
]

[target]
substrate = "Si"

[[target.layers]]
material = "Resist"
thickness_nm = 100.0

[run]
histories = 1000
seed = 1

It uses the [electron] table of an electron run (TOML input reference) with a layered [target]: a [[target.layers]] entry in front of the substrate, and an [electron.materials.<name>] table (optical ELF and band) for each of the two materials. Resist is defined in [materials] by the composition and the density of a PMMA-class polymer. Run and check it with

lindhard check examples/electron/e_10keV_resist_on_si.toml
lindhard run examples/electron/e_10keV_resist_on_si.toml --out out/e_10keV_resist_on_si

A run takes about ten seconds, mostly building the cross-section tables.

Synthetic data: read this first

The electron data of this example are not those of a resist or of Si. Both materials use the same synthetic Drude-Lorentz plasmon as their optical energy-loss function (examples/electron/synthetic_plasmon_elf.toml), the band parameters are round numbers, and the elastic potential is the Thomas-Fermi stand-in. No optical data of PMMA or any other resist is in the repository: the source could not be opened (docs/data-provenance.md, the PMMA rows), and this example adds no dataset. The figure below shows what an electron run reports for a layered target, not how a resist stack behaves.

Result

1000 histories, seed 1. The figure sums electron_deposition_cylindrical.csv over the radial bins, in 50 nm depth bins, and divides by the total energy deposited. The shaded band is the resist layer.

QuantityValue
Histories, seed1000, 1
Incident minus escaped energy83.8 % of the beam energy
Deposited energy (band-bottom reference)240.2 % of the beam energy
of which Fermi-sea energy of liberated conduction electrons156.4 %
Share of the deposited energy in the resist, in the Si4.0 %, 96.0 %
Share inside the scoring grid (1000 nm radius, 1500 nm depth)90.5 %
Backscatter coefficient η, secondary yield δ0.251, 0.203
Energy balance, relative imbalance1.5e-16

The library measures deposited energy from the band bottom of each layer, so the total deposited includes the Fermi-sea energy of the conduction electrons that secondaries liberate and exceeds the beam energy. This is why the figure is a share of the total and the table lists the balance incident - escaped = deposited - Fermi-sea energy (checked here: electron_summary.json, results.budget; see Output files and docs/cli.md). With the synthetic 12 eV conduction-band bottom of the Si the Fermi-sea term is large.

What is validated, and what is an illustration

  • Validated: only the energy bookkeeping of the run: the relative imbalance in the table is at the level of rounding. The transport comparisons in docs/validation.md use their own cited data, not the synthetic data here, and say what they do and do not establish.
  • Illustration only: every number in the figure and table. There is no validated resist point-spread function: the comparison with a measured one is a recorded gap (docs/validation.md, “Resist PSF vs a published measurement”). The grid is coarse (50 nm bins), the histories few, and the layer thickness, composition and density are illustrative.