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.
| Quantity | Value |
|---|---|
| Histories, seed | 1000, 1 |
| Incident minus escaped energy | 83.8 % of the beam energy |
| Deposited energy (band-bottom reference) | 240.2 % of the beam energy |
| of which Fermi-sea energy of liberated conduction electrons | 156.4 % |
| Share of the deposited energy in the resist, in the Si | 4.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 imbalance | 1.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.mduse 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.