Agentic PrimitivesAP

Study reproduced ·

Reproducing Kar, Shanker and Chari 1985: interface states against oxide thickness in unannealed ultrathin oxides

Kar, Shanker and Chari 1985: the sample and the timing of its process history as the paper states them, our encoding beside them item by item, the simulation in ISL, and how far it lands from the paper's numbers (6 off, 18 not modelled).

Richard Pedersen · Agentic Trust Labs · Rich Canvas

One of the [studies we reproduced](/writing/interface-studies-reproduced) for [Questions we need Emily to answer](/writing/questions-for-emily-testing-a-theory-of-the-interface), the companion to [the essay](/writing/testing-a-theory-of-the-interface-with-an-ontology). Generated by `scripts/reproduce_studies.py` from `reproductions/kar_1985.py`. Every value from the paper was read by an AI agent and has not been checked by a person; the sample and history were re-read from the PDF alone by a second agent that had not seen our earlier transcription.

The study and why we depend on it

S. Kar, D. Shanker and K. S. Chari, “Dependence of Si-SiO2 interface state density on oxide thickness in structures with ultrathin (79-227 Å) oxides”, Appl. Phys. Lett. 47 (11), 1203-1205 (1985).

One of the few sources of interface state density on oxides thinner than 25 nm measured with no anneal at all, so that every dangling bond the oxidation left is still there: the case the trap-density program's unannealed branch is meant for. Its central result is that the density does not fall monotonically with thickness: it dips near 110-125 Å and rises to a maximum near 150 Å before falling again, in two n-type sets and a p-type set. The project held it unread; the bundle note said “two thicknesses at 900 C”. There are six per set, eighteen in all.

How well can this study be reproduced?

Low. Temperature, gas and pressure of the final oxidation are stated (900 °C, dry O2, 1 atm), and that no anneal followed. No oxidation time is printed for any sample, nor the load, pull or cooling, nor the time between the HF strip of the 1100 °C preoxide and loading. Thickness is given for one set (the Figure 1 legend) and otherwise only as positions on an axis. Every density is a graph reading on a log axis, and the reported quantity is the peak of a band-edge distribution, not the midgap value a program predicts.

Sample described1 of 5 properties we need are stated and encoded the same
History described3 of 10 steps are stated and encoded the same; 4 are stated by the paper and absent from our history; 2 are ours because the paper is silent
Timing0 of 2 simulated steps have a stated duration; 5 of 7 other steps have none; 6 timing gaps listed below
How the results are givenFigures 1 and 2 only, log axes, read by eye from a scan; no table. Midgap-region values only for the six profiles of Figure 1, and only as the lowest point of each profile near 0.7 eV
Repeatability stated by the authorsNot stated as a number. A second n-type set made later to check reproducibility: at like thicknesses the two sets differ by 7 to 17% in the peak, but at about 125 Å by a factor of 1.8 (0.40 against 0.71 × 10¹² at 103 Å)
Internal consistencyFair. Abstract 79-227 Å, Figure 1 caption 91-208 Å (n-type only); the extremes come from the p-type set. Both n-type sets and the p-type set show the same valley near 110-125 Å and peak near 140-150 Å
Is our model independent of this paper's data?Yes. Nothing in the predictor was fitted to this paper. The trap-density program was fitted on Vitkavage 1990 (dry oxidations of one hour or more, 750 to 1000 °C); every history here is shorter than 83 min, so outside its tested scope
Outcome0 of 24 numbers within tolerance

The grade is ours and is about the paper as a source for simulation, not about the quality of the experiment: high means the sample, every step and its timing are stated well enough that a simulation needs no choices of ours; moderate that some choices are ours and are listed; low that the result depends on choices the paper does not constrain.

The sample and its history, played back

The sample is drawn from the simulation: layer heights and the read-outs are what the ISL programs compute at each moment of the history. Steps the language cannot state (a clean, a metallization, a measurement) are on the clock and marked as recorded, not simulated.

Si
Step 1 of 9 · recorded, not simulated
Degrease, ultrasonic clean, acid etch
temperature 25 °C
elapsed 0 s of 20 min 40 s
timing in the paper: not stated. not stated

“After degreasing in hot solvents, ultrasonic cleaning, and etching in acids,”

The simulation at this moment
oxide thickness (thin-oxide program)0 nm
interface state density at midgap4.42×10¹¹ cm⁻² eV⁻¹2.06×10¹¹
right column: the paper, at the end of the history
CleanPreoxidationStripOxidation19.7 minPull60 sMetalBackStripNoAnnealMeasure9000 °CThe same history to true scale (20 min 40 s simulated). Steps with no stated duration take no width.Temperature through the history. Step widths grow with the logarithm of duration; the bar under each step is how well our encoding matches the paper.
Drag the sample to turn it. Click the clock to move through the history.Layer heights are the simulated thicknesses, drawn to one scale within the film; the substrate is cut short.

Does our sample and history match the paper's?

Left: the paper's own words, with the page of the PDF. Right: what we simulate. 4 same, 3 approximated, 3 assumed, 5 not in ours.

✓4 same≈3 approximated?3 assumed✕5 not in ours
Sample: what the paper saysWhat we simulate
Substrate
“n- and p-type epitaxial silicon (Monsanto Company) with (100) surface orientation and 1.0 Ω cm layer resistivity”
PDF p. 1
✓same
FAMILY: Si_Planar; ORIENTATION: Si100
Doping
1.0 Ω cm epitaxial layer, n or p; dopant and layer thickness not stated
PDF p. 1
≈approximated
DOPING: n_type_1ohmcm_epi | p_type_1ohmcm_epi (recorded; no program reads it)
Clean and preoxide
degrease, ultrasonic, acids; 30 min dry O2 at 1100 °C, stripped in HF
PDF p. 1
≈approximated
CLEAN: not_stated (the vocabulary has no solvent-acid-preoxide clean); three EVENTs
The preoxide's heat is not simulated: written as a RUN, it would be read as the oxidation by the trap program and never removed.
Oxide thickness
“The oxide thickness varied between 79 and 227 Å”; set 2: 93, 125, 148, 164, 190, 208 Å (Figure 1 legend); others read from Figure 2
PDF p. 1, 2
?assumed
OXIDE_NM_MEASURED on the sample (recorded); the oxidation time is set to reproduce it
Measurement method of thickness not stated.
Gate
about 100 Å semitransparent Au (n-Si) or Al (p-Si) dots, 0.5 mm, evaporated from W at 1×10⁻⁶ Torr; back contact the other metal
PDF p. 1
✕not in ours
GATE recorded; metallization an EVENT
History: what the paper saysWhat we simulate
Degrease, ultrasonic clean, acid etch
“After degreasing in hot solvents, ultrasonic cleaning, and etching in acids,”
PDF p. 1
✓same
EVENT Clean; CLEAN: not_stated on the sample (no vocabulary word for this clean)
Acids, times and temperatures not stated.
Sacrificial oxidation, dry O2, 1100 °C, 30 min (not simulated)
“preoxidation was carried out in dry O2 at 1100 °C at 1 atm in a Thermco resistance-heated furnace for 30 min.”
PDF p. 1
✕not in ours
an EVENT, not a RUN
Written as an event because the trap-density program takes the oxidation temperature and time from the first dry-oxygen RUN, and the language cannot remove the oxide in the strip that follows. Its 30 min at 1100 °C are left out of the simulated heat (variant below puts it back as a RUN).
Preoxide etched in HF, ultrasonic clean, DI rinse, N2 dry
“Subsequently, the wafers were etched in HF, ultrasonically cleaned, rinsed in 14 M Ω cm de-ionized water, and dried in filtered N2 gas. Preoxidation was a part of the surface cleaning.”
PDF p. 1
✕not in ours
EVENT Strip KIND etch; no statement removes oxide
Final oxidation, dry O2, 900 °C, to 9.3 nm
“Final oxidation was carried out in dry O2 at 900 °C at 1 atm. The oxide thickness varied between 79 and 227 Å.”; “fabricated under identical conditions except that the oxidation time was varied”
PDF p. 1, 2
?assumed
RUN Oxidation DURATION 1180 TEMP 900->900 AMBIENT dry_O2
Temperature, gas and pressure are the paper's. The time is ours: 1180 s is what the thin-oxide program needs for 93 Å. Load temperature and push not stated.
Withdrawal and cooling, in oxygen (assumed)
not stated
PDF p. 1
?assumed
RUN Pull DURATION 60 TEMP 900->400 AMBIENT dry_O2
No pull, cooling gas or rate is given, and no post-oxidation anneal (stated). One minute in oxygen down to 400 °C is ours.
Front Au dots, about 100 Å, 0.5 mm, W filament, 1×10⁻⁶ Torr
“introduced into a Varian VT-112A ultrahigh vacuum system for evaporation of the front semitransparent metal contact from a tungsten filament. Chamber pressure was held at about 1.0×10^-6 Torr”
PDF p. 1
✕not in ours
not in our history
Substrate temperature during evaporation not stated.
Back oxide removed in HF, Al back contact
“Before the metal back contacts were evaporated, the oxide layer was removed from the back surface with the help of HF. For n-Si substrates, the front metal was Au and the back contact metal was Al; for p-type substrates, it was the reverse.”
PDF p. 1
✕not in ours
not in our history
No post-oxidation or post-metallization anneal
“No post-oxidation or post-metallization annealing was carried out in this phase of the study, in order to preserve all the features in the interface state density profile”
PDF p. 1
✓same
no RUN after the pull
Admittance, 30 Hz to 100 kHz, dark and illuminated
“Admittance-voltage measurements were made in dark as well as under tungsten lamp illumination, over the frequency range of 30 Hz-100 kHz”
PDF p. 1
✓same
the observable Dit (midgap only)
Quasi-Fermi level separation about 0.15 eV under illumination (PDF p. 2).
Two n-type sets
“The second set of samples was made a period of time after the first set in order to check the reproducibility of results.”
PDF p. 2
≈approximated
separate cases with the same history
The interval and any difference between the runs are not stated.

The timing of the history

Time is counted from the start of the first simulated step. A step the language cannot state takes no simulated time; where the paper gives its duration, the duration is in the last column. Stated means the paper gives the duration; partly stated that it gives a bound or a range; not stated; assumed that the duration in our history is ours.

n-Si/SiO2/Au, second set, 93 Å

#StepStarts atLastsEnds atTemperatureRateGasIs the timing in the paper?
1Degrease, ultrasonic clean, acid etch0 snot simulatednot stated. not stated
2Sacrificial oxidation, dry O2, 1100 °C, 30 min (not simulated)0 snot simulatedstated. 30 min at 1100 °C
3Preoxide etched in HF, ultrasonic clean, DI rinse, N2 dry0 snot simulatednot stated. not stated; time to loading not stated
4Final oxidation, dry O2, 900 °C, to 9.3 nm0 s19 min 40 s19 min 40 s900 → 900 °Chelddry_O2not stated; assumed. no oxidation time is printed for any sample; chosen to give the thickness, searched 0.5 to 2 times
5Withdrawal and cooling, in oxygen (assumed)19 min 40 s1 min20 min 40 s900 → 400 °C-8.33 °C/sdry_O2not stated; assumed. not stated; 6 s to 10 min and an end of 200 to 800 °C searched
6Front Au dots, about 100 Å, 0.5 mm, W filament, 1×10⁻⁶ Torr20 min 40 snot simulatednot stated
7Back oxide removed in HF, Al back contact20 min 40 snot simulatednot stated
8No post-oxidation or post-metallization anneal20 min 40 snot simulatedstated. none
9Admittance, 30 Hz to 100 kHz, dark and illuminated20 min 40 snot simulatednot stated

Simulated time in this history: 20 min 40 s.

Across the samples

SampleOxidationPullTotal
n-Si/SiO2/Au, second set, 93 Å19 min 40 s at 900 °C1 min at 900→400 °C20 min 40 s
n-Si/SiO2/Au, second set, 125 Å32 min at 900 °C1 min at 900→400 °C33 min
n-Si/SiO2/Au, second set, 148 Å42 min 03 s at 900 °C1 min at 900→400 °C43 min 03 s
n-Si/SiO2/Au, second set, 164 Å49 min 34 s at 900 °C1 min at 900→400 °C50 min 34 s
n-Si/SiO2/Au, second set, 190 Å1 h 02 min 39 s at 900 °C1 min at 900→400 °C1 h 03 min 39 s
n-Si/SiO2/Au, second set, 208 Å1 h 12 min 18 s at 900 °C1 min at 900→400 °C1 h 13 min 18 s
n-Si/SiO2/Au, first set, about 93 Å19 min 40 s at 900 °C1 min at 900→400 °C20 min 40 s
n-Si/SiO2/Au, first set, about 103 Å23 min 18 s at 900 °C1 min at 900→400 °C24 min 18 s
n-Si/SiO2/Au, first set, about 138 Å37 min 34 s at 900 °C1 min at 900→400 °C38 min 34 s
n-Si/SiO2/Au, first set, about 166 Å50 min 32 s at 900 °C1 min at 900→400 °C51 min 32 s
n-Si/SiO2/Au, first set, about 186 Å1 h 00 min 34 s at 900 °C1 min at 900→400 °C1 h 01 min 34 s
n-Si/SiO2/Au, first set, about 203 Å1 h 09 min 35 s at 900 °C1 min at 900→400 °C1 h 10 min 35 s
p-Si/SiO2/Al, about 80 Å15 min 14 s at 900 °C1 min at 900→400 °C16 min 14 s
p-Si/SiO2/Al, about 90 Å18 min 37 s at 900 °C1 min at 900→400 °C19 min 37 s
p-Si/SiO2/Al, about 126 Å32 min 25 s at 900 °C1 min at 900→400 °C33 min 25 s
p-Si/SiO2/Al, about 148 Å42 min 03 s at 900 °C1 min at 900→400 °C43 min 03 s
p-Si/SiO2/Al, about 176 Å55 min 28 s at 900 °C1 min at 900→400 °C56 min 28 s
p-Si/SiO2/Al, about 226 Å1 h 22 min 26 s at 900 °C1 min at 900→400 °C1 h 23 min 26 s

Timing the paper does not give

  • Oxidation time at 900 °C: not printed for any sample.
  • Load temperature, push, pull, cooling rate and cooling gas after the 900 °C oxidation: not stated (no post-oxidation anneal is stated).
  • Time between the HF strip of the preoxide and loading for the final oxidation (native regrowth): not stated.
  • Ramps and cooling of the 1100 °C preoxidation: not stated.
  • Time between oxidation and metal evaporation, and between evaporation and measurement: not stated.
  • The interval between the first and second n-type sets: “a period of time”.

What the second reading changed

  • The source note (data/primary_sources/kar_shanker_chari_1985_apl_47_1203/SOURCE.md) says “two thicknesses at 900 C”. The paper has six thicknesses in each of three sets (two n-type, one p-type), 79 to 227 Å.
  • The library lists this source as held and used by nothing, quantity trap_density. Its numbers are peak densities near a band edge (Figure 2), the same kind of quantity the library notes as not comparable with midgap values for Kar and Narasimhan 1987; only Figure 1 gives values near midgap, and only by eye.
  • No stored recipe or dataset exists for this paper; every history here is new. The oxidation times are ours, chosen to reproduce the thicknesses.
  • The sacrificial 1100 °C preoxidation is not simulated. Written as a RUN it would be taken by the trap program as the oxidation (variant below), and the language cannot strip it.

Their terms and ours

The paper saysWe writeKind in our vocabularyNote
interface state density Nis (cm⁻² V⁻¹)Dit (target: interface state density at midgap)observable (target: trap_density)Per volt equals per eV for unit charge. The program gives the midgap value only.
Nis peak near Ev / near Ec(none)no programThe band-edge peak of a distribution; the predictor gives a distribution only after a hydrogen anneal.
concave (U-shaped) background(none)no program
unannealed; no post-oxidation or post-metallization annealingno RUN after the pull; EVENT NoAnnealabsence of a step
preoxidation ... part of the surface cleaningEVENT Preoxidation, EVENT StripeventsThe language has no statement that removes oxide.
dry O2 at 900 °C at 1 atmRUN Oxidation ... TEMP 900->900 AMBIENT dry_O2a RUN; process factor oxidationTime ours.
oxide thickness toxoxide thickness (thin-oxide program); OXIDE_NM_MEASUREDobservable (target: layer_thickness) and a recorded sample field
field-aided to field-free diffusion of oxidant (Deal-Grove initial regime, Cabrera-Mott)(none)no programThe authors' explanation of the peak near 150 Å.
Si3≡Si bonding defects (Poindexter)N_Pb in the trap programSTATEThe program's dangling-bond population; no energy distribution.
illuminated capacitance and conductance(none)observation method not carried

The simulation in our language

Each sample is one history file: a SAMPLE and a CONTROL_TRAJECTORY. This is the whole input; run it with PYTHONPATH=. python -m isl_harness.predict <file>.

n-Si/SiO2/Au, second set, 93 Å

# n-Si/SiO2/Au, second set, 93 Å
SAMPLE Kar_n2_93A {
    FAMILY: Si_Planar
    ORIENTATION: Si100
    CLEAN: not_stated
    DOPING: n_type_1ohmcm_epi
    OXIDE_NM_MEASURED: 9.3
    GATE: Au_dot
}
CONTROL_TRAJECTORY History {
    EVENT Clean KIND clean TIMING assumed                        # Degrease, ultrasonic clean, acid etch
    EVENT Preoxidation KIND other TIMING stated                  # Sacrificial oxidation, dry O2, 1100 °C, 30 min (not simulated)
    EVENT Strip KIND etch TIMING assumed                         # Preoxide etched in HF, ultrasonic clean, DI rinse, N2 dry
    RUN Oxidation DURATION 1180 TEMP 900->900 AMBIENT dry_O2 TIMING assumed VARY duration 590..2360
    RUN Pull DURATION 60 TEMP 900->400 AMBIENT dry_O2 TIMING assumed VARY duration 6..600 VARY T_end 200..800
    EVENT Metal KIND metallization TIMING assumed                # Front Au dots, about 100 Å, 0.5 mm, W filament, 1×10⁻⁶ Torr
    EVENT BackStrip KIND etch TIMING assumed                     # Back oxide removed in HF, Al back contact
    EVENT NoAnneal KIND other TIMING stated                      # No post-oxidation or post-metallization anneal
    EVENT Measure KIND measurement TIMING assumed                # Admittance, 30 Hz to 100 kHz, dark and illuminated
}

Thickness is printed in the Figure 1 legend; the oxidation time is chosen to give it, so thickness is not compared.

n-Si/SiO2/Au, second set, 125 Å

# n-Si/SiO2/Au, second set, 125 Å
SAMPLE Kar_n2_125A {
    FAMILY: Si_Planar
    ORIENTATION: Si100
    CLEAN: not_stated
    DOPING: n_type_1ohmcm_epi
    OXIDE_NM_MEASURED: 12.5
    GATE: Au_dot
}
CONTROL_TRAJECTORY History {
    EVENT Clean KIND clean TIMING assumed                        # Degrease, ultrasonic clean, acid etch
    EVENT Preoxidation KIND other TIMING stated                  # Sacrificial oxidation, dry O2, 1100 °C, 30 min (not simulated)
    EVENT Strip KIND etch TIMING assumed                         # Preoxide etched in HF, ultrasonic clean, DI rinse, N2 dry
    RUN Oxidation DURATION 1920 TEMP 900->900 AMBIENT dry_O2 TIMING assumed VARY duration 960..3840
    RUN Pull DURATION 60 TEMP 900->400 AMBIENT dry_O2 TIMING assumed VARY duration 6..600 VARY T_end 200..800
    EVENT Metal KIND metallization TIMING assumed                # Front Au dots, about 100 Å, 0.5 mm, W filament, 1×10⁻⁶ Torr
    EVENT BackStrip KIND etch TIMING assumed                     # Back oxide removed in HF, Al back contact
    EVENT NoAnneal KIND other TIMING stated                      # No post-oxidation or post-metallization anneal
    EVENT Measure KIND measurement TIMING assumed                # Admittance, 30 Hz to 100 kHz, dark and illuminated
}

Thickness is printed in the Figure 1 legend; the oxidation time is chosen to give it, so thickness is not compared.

n-Si/SiO2/Au, second set, 148 Å

# n-Si/SiO2/Au, second set, 148 Å
SAMPLE Kar_n2_148A {
    FAMILY: Si_Planar
    ORIENTATION: Si100
    CLEAN: not_stated
    DOPING: n_type_1ohmcm_epi
    OXIDE_NM_MEASURED: 14.8
    GATE: Au_dot
}
CONTROL_TRAJECTORY History {
    EVENT Clean KIND clean TIMING assumed                        # Degrease, ultrasonic clean, acid etch
    EVENT Preoxidation KIND other TIMING stated                  # Sacrificial oxidation, dry O2, 1100 °C, 30 min (not simulated)
    EVENT Strip KIND etch TIMING assumed                         # Preoxide etched in HF, ultrasonic clean, DI rinse, N2 dry
    RUN Oxidation DURATION 2523 TEMP 900->900 AMBIENT dry_O2 TIMING assumed VARY duration 1261.5..5046
    RUN Pull DURATION 60 TEMP 900->400 AMBIENT dry_O2 TIMING assumed VARY duration 6..600 VARY T_end 200..800
    EVENT Metal KIND metallization TIMING assumed                # Front Au dots, about 100 Å, 0.5 mm, W filament, 1×10⁻⁶ Torr
    EVENT BackStrip KIND etch TIMING assumed                     # Back oxide removed in HF, Al back contact
    EVENT NoAnneal KIND other TIMING stated                      # No post-oxidation or post-metallization anneal
    EVENT Measure KIND measurement TIMING assumed                # Admittance, 30 Hz to 100 kHz, dark and illuminated
}

Thickness is printed in the Figure 1 legend; the oxidation time is chosen to give it, so thickness is not compared.

n-Si/SiO2/Au, second set, 164 Å

# n-Si/SiO2/Au, second set, 164 Å
SAMPLE Kar_n2_164A {
    FAMILY: Si_Planar
    ORIENTATION: Si100
    CLEAN: not_stated
    DOPING: n_type_1ohmcm_epi
    OXIDE_NM_MEASURED: 16.4
    GATE: Au_dot
}
CONTROL_TRAJECTORY History {
    EVENT Clean KIND clean TIMING assumed                        # Degrease, ultrasonic clean, acid etch
    EVENT Preoxidation KIND other TIMING stated                  # Sacrificial oxidation, dry O2, 1100 °C, 30 min (not simulated)
    EVENT Strip KIND etch TIMING assumed                         # Preoxide etched in HF, ultrasonic clean, DI rinse, N2 dry
    RUN Oxidation DURATION 2974 TEMP 900->900 AMBIENT dry_O2 TIMING assumed VARY duration 1487..5948
    RUN Pull DURATION 60 TEMP 900->400 AMBIENT dry_O2 TIMING assumed VARY duration 6..600 VARY T_end 200..800
    EVENT Metal KIND metallization TIMING assumed                # Front Au dots, about 100 Å, 0.5 mm, W filament, 1×10⁻⁶ Torr
    EVENT BackStrip KIND etch TIMING assumed                     # Back oxide removed in HF, Al back contact
    EVENT NoAnneal KIND other TIMING stated                      # No post-oxidation or post-metallization anneal
    EVENT Measure KIND measurement TIMING assumed                # Admittance, 30 Hz to 100 kHz, dark and illuminated
}

Thickness is printed in the Figure 1 legend; the oxidation time is chosen to give it, so thickness is not compared.

n-Si/SiO2/Au, second set, 190 Å

# n-Si/SiO2/Au, second set, 190 Å
SAMPLE Kar_n2_190A {
    FAMILY: Si_Planar
    ORIENTATION: Si100
    CLEAN: not_stated
    DOPING: n_type_1ohmcm_epi
    OXIDE_NM_MEASURED: 19
    GATE: Au_dot
}
CONTROL_TRAJECTORY History {
    EVENT Clean KIND clean TIMING assumed                        # Degrease, ultrasonic clean, acid etch
    EVENT Preoxidation KIND other TIMING stated                  # Sacrificial oxidation, dry O2, 1100 °C, 30 min (not simulated)
    EVENT Strip KIND etch TIMING assumed                         # Preoxide etched in HF, ultrasonic clean, DI rinse, N2 dry
    RUN Oxidation DURATION 3759 TEMP 900->900 AMBIENT dry_O2 TIMING assumed VARY duration 1879.5..7518
    RUN Pull DURATION 60 TEMP 900->400 AMBIENT dry_O2 TIMING assumed VARY duration 6..600 VARY T_end 200..800
    EVENT Metal KIND metallization TIMING assumed                # Front Au dots, about 100 Å, 0.5 mm, W filament, 1×10⁻⁶ Torr
    EVENT BackStrip KIND etch TIMING assumed                     # Back oxide removed in HF, Al back contact
    EVENT NoAnneal KIND other TIMING stated                      # No post-oxidation or post-metallization anneal
    EVENT Measure KIND measurement TIMING assumed                # Admittance, 30 Hz to 100 kHz, dark and illuminated
}

Thickness is printed in the Figure 1 legend; the oxidation time is chosen to give it, so thickness is not compared.

n-Si/SiO2/Au, second set, 208 Å

# n-Si/SiO2/Au, second set, 208 Å
SAMPLE Kar_n2_208A {
    FAMILY: Si_Planar
    ORIENTATION: Si100
    CLEAN: not_stated
    DOPING: n_type_1ohmcm_epi
    OXIDE_NM_MEASURED: 20.8
    GATE: Au_dot
}
CONTROL_TRAJECTORY History {
    EVENT Clean KIND clean TIMING assumed                        # Degrease, ultrasonic clean, acid etch
    EVENT Preoxidation KIND other TIMING stated                  # Sacrificial oxidation, dry O2, 1100 °C, 30 min (not simulated)
    EVENT Strip KIND etch TIMING assumed                         # Preoxide etched in HF, ultrasonic clean, DI rinse, N2 dry
    RUN Oxidation DURATION 4338 TEMP 900->900 AMBIENT dry_O2 TIMING assumed VARY duration 2169..8676
    RUN Pull DURATION 60 TEMP 900->400 AMBIENT dry_O2 TIMING assumed VARY duration 6..600 VARY T_end 200..800
    EVENT Metal KIND metallization TIMING assumed                # Front Au dots, about 100 Å, 0.5 mm, W filament, 1×10⁻⁶ Torr
    EVENT BackStrip KIND etch TIMING assumed                     # Back oxide removed in HF, Al back contact
    EVENT NoAnneal KIND other TIMING stated                      # No post-oxidation or post-metallization anneal
    EVENT Measure KIND measurement TIMING assumed                # Admittance, 30 Hz to 100 kHz, dark and illuminated
}

Thickness is printed in the Figure 1 legend; the oxidation time is chosen to give it, so thickness is not compared.

n-Si/SiO2/Au, first set, about 93 Å

# n-Si/SiO2/Au, first set, about 93 Å
SAMPLE Kar_n1_93A {
    FAMILY: Si_Planar
    ORIENTATION: Si100
    CLEAN: not_stated
    DOPING: n_type_1ohmcm_epi
    OXIDE_NM_MEASURED: 9.3
    GATE: Au_dot
}
CONTROL_TRAJECTORY History {
    EVENT Clean KIND clean TIMING assumed                        # Degrease, ultrasonic clean, acid etch
    EVENT Preoxidation KIND other TIMING stated                  # Sacrificial oxidation, dry O2, 1100 °C, 30 min (not simulated)
    EVENT Strip KIND etch TIMING assumed                         # Preoxide etched in HF, ultrasonic clean, DI rinse, N2 dry
    RUN Oxidation DURATION 1180 TEMP 900->900 AMBIENT dry_O2 TIMING assumed VARY duration 590..2360
    RUN Pull DURATION 60 TEMP 900->400 AMBIENT dry_O2 TIMING assumed VARY duration 6..600 VARY T_end 200..800
    EVENT Metal KIND metallization TIMING assumed                # Front Au dots, about 100 Å, 0.5 mm, W filament, 1×10⁻⁶ Torr
    EVENT BackStrip KIND etch TIMING assumed                     # Back oxide removed in HF, Al back contact
    EVENT NoAnneal KIND other TIMING stated                      # No post-oxidation or post-metallization anneal
    EVENT Measure KIND measurement TIMING assumed                # Admittance, 30 Hz to 100 kHz, dark and illuminated
}

n-Si/SiO2/Au, first set, about 103 Å

# n-Si/SiO2/Au, first set, about 103 Å
SAMPLE Kar_n1_103A {
    FAMILY: Si_Planar
    ORIENTATION: Si100
    CLEAN: not_stated
    DOPING: n_type_1ohmcm_epi
    OXIDE_NM_MEASURED: 10.3
    GATE: Au_dot
}
CONTROL_TRAJECTORY History {
    EVENT Clean KIND clean TIMING assumed                        # Degrease, ultrasonic clean, acid etch
    EVENT Preoxidation KIND other TIMING stated                  # Sacrificial oxidation, dry O2, 1100 °C, 30 min (not simulated)
    EVENT Strip KIND etch TIMING assumed                         # Preoxide etched in HF, ultrasonic clean, DI rinse, N2 dry
    RUN Oxidation DURATION 1398 TEMP 900->900 AMBIENT dry_O2 TIMING assumed VARY duration 699..2796
    RUN Pull DURATION 60 TEMP 900->400 AMBIENT dry_O2 TIMING assumed VARY duration 6..600 VARY T_end 200..800
    EVENT Metal KIND metallization TIMING assumed                # Front Au dots, about 100 Å, 0.5 mm, W filament, 1×10⁻⁶ Torr
    EVENT BackStrip KIND etch TIMING assumed                     # Back oxide removed in HF, Al back contact
    EVENT NoAnneal KIND other TIMING stated                      # No post-oxidation or post-metallization anneal
    EVENT Measure KIND measurement TIMING assumed                # Admittance, 30 Hz to 100 kHz, dark and illuminated
}

n-Si/SiO2/Au, first set, about 138 Å

# n-Si/SiO2/Au, first set, about 138 Å
SAMPLE Kar_n1_138A {
    FAMILY: Si_Planar
    ORIENTATION: Si100
    CLEAN: not_stated
    DOPING: n_type_1ohmcm_epi
    OXIDE_NM_MEASURED: 13.8
    GATE: Au_dot
}
CONTROL_TRAJECTORY History {
    EVENT Clean KIND clean TIMING assumed                        # Degrease, ultrasonic clean, acid etch
    EVENT Preoxidation KIND other TIMING stated                  # Sacrificial oxidation, dry O2, 1100 °C, 30 min (not simulated)
    EVENT Strip KIND etch TIMING assumed                         # Preoxide etched in HF, ultrasonic clean, DI rinse, N2 dry
    RUN Oxidation DURATION 2254 TEMP 900->900 AMBIENT dry_O2 TIMING assumed VARY duration 1127..4508
    RUN Pull DURATION 60 TEMP 900->400 AMBIENT dry_O2 TIMING assumed VARY duration 6..600 VARY T_end 200..800
    EVENT Metal KIND metallization TIMING assumed                # Front Au dots, about 100 Å, 0.5 mm, W filament, 1×10⁻⁶ Torr
    EVENT BackStrip KIND etch TIMING assumed                     # Back oxide removed in HF, Al back contact
    EVENT NoAnneal KIND other TIMING stated                      # No post-oxidation or post-metallization anneal
    EVENT Measure KIND measurement TIMING assumed                # Admittance, 30 Hz to 100 kHz, dark and illuminated
}

n-Si/SiO2/Au, first set, about 166 Å

# n-Si/SiO2/Au, first set, about 166 Å
SAMPLE Kar_n1_166A {
    FAMILY: Si_Planar
    ORIENTATION: Si100
    CLEAN: not_stated
    DOPING: n_type_1ohmcm_epi
    OXIDE_NM_MEASURED: 16.6
    GATE: Au_dot
}
CONTROL_TRAJECTORY History {
    EVENT Clean KIND clean TIMING assumed                        # Degrease, ultrasonic clean, acid etch
    EVENT Preoxidation KIND other TIMING stated                  # Sacrificial oxidation, dry O2, 1100 °C, 30 min (not simulated)
    EVENT Strip KIND etch TIMING assumed                         # Preoxide etched in HF, ultrasonic clean, DI rinse, N2 dry
    RUN Oxidation DURATION 3032 TEMP 900->900 AMBIENT dry_O2 TIMING assumed VARY duration 1516..6064
    RUN Pull DURATION 60 TEMP 900->400 AMBIENT dry_O2 TIMING assumed VARY duration 6..600 VARY T_end 200..800
    EVENT Metal KIND metallization TIMING assumed                # Front Au dots, about 100 Å, 0.5 mm, W filament, 1×10⁻⁶ Torr
    EVENT BackStrip KIND etch TIMING assumed                     # Back oxide removed in HF, Al back contact
    EVENT NoAnneal KIND other TIMING stated                      # No post-oxidation or post-metallization anneal
    EVENT Measure KIND measurement TIMING assumed                # Admittance, 30 Hz to 100 kHz, dark and illuminated
}

n-Si/SiO2/Au, first set, about 186 Å

# n-Si/SiO2/Au, first set, about 186 Å
SAMPLE Kar_n1_186A {
    FAMILY: Si_Planar
    ORIENTATION: Si100
    CLEAN: not_stated
    DOPING: n_type_1ohmcm_epi
    OXIDE_NM_MEASURED: 18.6
    GATE: Au_dot
}
CONTROL_TRAJECTORY History {
    EVENT Clean KIND clean TIMING assumed                        # Degrease, ultrasonic clean, acid etch
    EVENT Preoxidation KIND other TIMING stated                  # Sacrificial oxidation, dry O2, 1100 °C, 30 min (not simulated)
    EVENT Strip KIND etch TIMING assumed                         # Preoxide etched in HF, ultrasonic clean, DI rinse, N2 dry
    RUN Oxidation DURATION 3634 TEMP 900->900 AMBIENT dry_O2 TIMING assumed VARY duration 1817..7268
    RUN Pull DURATION 60 TEMP 900->400 AMBIENT dry_O2 TIMING assumed VARY duration 6..600 VARY T_end 200..800
    EVENT Metal KIND metallization TIMING assumed                # Front Au dots, about 100 Å, 0.5 mm, W filament, 1×10⁻⁶ Torr
    EVENT BackStrip KIND etch TIMING assumed                     # Back oxide removed in HF, Al back contact
    EVENT NoAnneal KIND other TIMING stated                      # No post-oxidation or post-metallization anneal
    EVENT Measure KIND measurement TIMING assumed                # Admittance, 30 Hz to 100 kHz, dark and illuminated
}

n-Si/SiO2/Au, first set, about 203 Å

# n-Si/SiO2/Au, first set, about 203 Å
SAMPLE Kar_n1_203A {
    FAMILY: Si_Planar
    ORIENTATION: Si100
    CLEAN: not_stated
    DOPING: n_type_1ohmcm_epi
    OXIDE_NM_MEASURED: 20.3
    GATE: Au_dot
}
CONTROL_TRAJECTORY History {
    EVENT Clean KIND clean TIMING assumed                        # Degrease, ultrasonic clean, acid etch
    EVENT Preoxidation KIND other TIMING stated                  # Sacrificial oxidation, dry O2, 1100 °C, 30 min (not simulated)
    EVENT Strip KIND etch TIMING assumed                         # Preoxide etched in HF, ultrasonic clean, DI rinse, N2 dry
    RUN Oxidation DURATION 4175 TEMP 900->900 AMBIENT dry_O2 TIMING assumed VARY duration 2087.5..8350
    RUN Pull DURATION 60 TEMP 900->400 AMBIENT dry_O2 TIMING assumed VARY duration 6..600 VARY T_end 200..800
    EVENT Metal KIND metallization TIMING assumed                # Front Au dots, about 100 Å, 0.5 mm, W filament, 1×10⁻⁶ Torr
    EVENT BackStrip KIND etch TIMING assumed                     # Back oxide removed in HF, Al back contact
    EVENT NoAnneal KIND other TIMING stated                      # No post-oxidation or post-metallization anneal
    EVENT Measure KIND measurement TIMING assumed                # Admittance, 30 Hz to 100 kHz, dark and illuminated
}

p-Si/SiO2/Al, about 80 Å

# p-Si/SiO2/Al, about 80 Å
SAMPLE Kar_p_80A {
    FAMILY: Si_Planar
    ORIENTATION: Si100
    CLEAN: not_stated
    DOPING: p_type_1ohmcm_epi
    OXIDE_NM_MEASURED: 8
    GATE: Al_dot
}
CONTROL_TRAJECTORY History {
    EVENT Clean KIND clean TIMING assumed                        # Degrease, ultrasonic clean, acid etch
    EVENT Preoxidation KIND other TIMING stated                  # Sacrificial oxidation, dry O2, 1100 °C, 30 min (not simulated)
    EVENT Strip KIND etch TIMING assumed                         # Preoxide etched in HF, ultrasonic clean, DI rinse, N2 dry
    RUN Oxidation DURATION 914 TEMP 900->900 AMBIENT dry_O2 TIMING assumed VARY duration 457..1828
    RUN Pull DURATION 60 TEMP 900->400 AMBIENT dry_O2 TIMING assumed VARY duration 6..600 VARY T_end 200..800
    EVENT Metal KIND metallization TIMING assumed                # Front Al dots, about 100 Å, 0.5 mm, W filament, 1×10⁻⁶ Torr
    EVENT BackStrip KIND etch TIMING assumed                     # Back oxide removed in HF, Au back contact
    EVENT NoAnneal KIND other TIMING stated                      # No post-oxidation or post-metallization anneal
    EVENT Measure KIND measurement TIMING assumed                # Admittance, 30 Hz to 100 kHz, dark and illuminated
}

p-Si/SiO2/Al, about 90 Å

# p-Si/SiO2/Al, about 90 Å
SAMPLE Kar_p_90A {
    FAMILY: Si_Planar
    ORIENTATION: Si100
    CLEAN: not_stated
    DOPING: p_type_1ohmcm_epi
    OXIDE_NM_MEASURED: 9
    GATE: Al_dot
}
CONTROL_TRAJECTORY History {
    EVENT Clean KIND clean TIMING assumed                        # Degrease, ultrasonic clean, acid etch
    EVENT Preoxidation KIND other TIMING stated                  # Sacrificial oxidation, dry O2, 1100 °C, 30 min (not simulated)
    EVENT Strip KIND etch TIMING assumed                         # Preoxide etched in HF, ultrasonic clean, DI rinse, N2 dry
    RUN Oxidation DURATION 1117 TEMP 900->900 AMBIENT dry_O2 TIMING assumed VARY duration 558.5..2234
    RUN Pull DURATION 60 TEMP 900->400 AMBIENT dry_O2 TIMING assumed VARY duration 6..600 VARY T_end 200..800
    EVENT Metal KIND metallization TIMING assumed                # Front Al dots, about 100 Å, 0.5 mm, W filament, 1×10⁻⁶ Torr
    EVENT BackStrip KIND etch TIMING assumed                     # Back oxide removed in HF, Au back contact
    EVENT NoAnneal KIND other TIMING stated                      # No post-oxidation or post-metallization anneal
    EVENT Measure KIND measurement TIMING assumed                # Admittance, 30 Hz to 100 kHz, dark and illuminated
}

p-Si/SiO2/Al, about 126 Å

# p-Si/SiO2/Al, about 126 Å
SAMPLE Kar_p_126A {
    FAMILY: Si_Planar
    ORIENTATION: Si100
    CLEAN: not_stated
    DOPING: p_type_1ohmcm_epi
    OXIDE_NM_MEASURED: 12.6
    GATE: Al_dot
}
CONTROL_TRAJECTORY History {
    EVENT Clean KIND clean TIMING assumed                        # Degrease, ultrasonic clean, acid etch
    EVENT Preoxidation KIND other TIMING stated                  # Sacrificial oxidation, dry O2, 1100 °C, 30 min (not simulated)
    EVENT Strip KIND etch TIMING assumed                         # Preoxide etched in HF, ultrasonic clean, DI rinse, N2 dry
    RUN Oxidation DURATION 1945 TEMP 900->900 AMBIENT dry_O2 TIMING assumed VARY duration 972.5..3890
    RUN Pull DURATION 60 TEMP 900->400 AMBIENT dry_O2 TIMING assumed VARY duration 6..600 VARY T_end 200..800
    EVENT Metal KIND metallization TIMING assumed                # Front Al dots, about 100 Å, 0.5 mm, W filament, 1×10⁻⁶ Torr
    EVENT BackStrip KIND etch TIMING assumed                     # Back oxide removed in HF, Au back contact
    EVENT NoAnneal KIND other TIMING stated                      # No post-oxidation or post-metallization anneal
    EVENT Measure KIND measurement TIMING assumed                # Admittance, 30 Hz to 100 kHz, dark and illuminated
}

p-Si/SiO2/Al, about 148 Å

# p-Si/SiO2/Al, about 148 Å
SAMPLE Kar_p_148A {
    FAMILY: Si_Planar
    ORIENTATION: Si100
    CLEAN: not_stated
    DOPING: p_type_1ohmcm_epi
    OXIDE_NM_MEASURED: 14.8
    GATE: Al_dot
}
CONTROL_TRAJECTORY History {
    EVENT Clean KIND clean TIMING assumed                        # Degrease, ultrasonic clean, acid etch
    EVENT Preoxidation KIND other TIMING stated                  # Sacrificial oxidation, dry O2, 1100 °C, 30 min (not simulated)
    EVENT Strip KIND etch TIMING assumed                         # Preoxide etched in HF, ultrasonic clean, DI rinse, N2 dry
    RUN Oxidation DURATION 2523 TEMP 900->900 AMBIENT dry_O2 TIMING assumed VARY duration 1261.5..5046
    RUN Pull DURATION 60 TEMP 900->400 AMBIENT dry_O2 TIMING assumed VARY duration 6..600 VARY T_end 200..800
    EVENT Metal KIND metallization TIMING assumed                # Front Al dots, about 100 Å, 0.5 mm, W filament, 1×10⁻⁶ Torr
    EVENT BackStrip KIND etch TIMING assumed                     # Back oxide removed in HF, Au back contact
    EVENT NoAnneal KIND other TIMING stated                      # No post-oxidation or post-metallization anneal
    EVENT Measure KIND measurement TIMING assumed                # Admittance, 30 Hz to 100 kHz, dark and illuminated
}

p-Si/SiO2/Al, about 176 Å

# p-Si/SiO2/Al, about 176 Å
SAMPLE Kar_p_176A {
    FAMILY: Si_Planar
    ORIENTATION: Si100
    CLEAN: not_stated
    DOPING: p_type_1ohmcm_epi
    OXIDE_NM_MEASURED: 17.6
    GATE: Al_dot
}
CONTROL_TRAJECTORY History {
    EVENT Clean KIND clean TIMING assumed                        # Degrease, ultrasonic clean, acid etch
    EVENT Preoxidation KIND other TIMING stated                  # Sacrificial oxidation, dry O2, 1100 °C, 30 min (not simulated)
    EVENT Strip KIND etch TIMING assumed                         # Preoxide etched in HF, ultrasonic clean, DI rinse, N2 dry
    RUN Oxidation DURATION 3328 TEMP 900->900 AMBIENT dry_O2 TIMING assumed VARY duration 1664..6656
    RUN Pull DURATION 60 TEMP 900->400 AMBIENT dry_O2 TIMING assumed VARY duration 6..600 VARY T_end 200..800
    EVENT Metal KIND metallization TIMING assumed                # Front Al dots, about 100 Å, 0.5 mm, W filament, 1×10⁻⁶ Torr
    EVENT BackStrip KIND etch TIMING assumed                     # Back oxide removed in HF, Au back contact
    EVENT NoAnneal KIND other TIMING stated                      # No post-oxidation or post-metallization anneal
    EVENT Measure KIND measurement TIMING assumed                # Admittance, 30 Hz to 100 kHz, dark and illuminated
}

p-Si/SiO2/Al, about 226 Å

# p-Si/SiO2/Al, about 226 Å
SAMPLE Kar_p_226A {
    FAMILY: Si_Planar
    ORIENTATION: Si100
    CLEAN: not_stated
    DOPING: p_type_1ohmcm_epi
    OXIDE_NM_MEASURED: 22.6
    GATE: Al_dot
}
CONTROL_TRAJECTORY History {
    EVENT Clean KIND clean TIMING assumed                        # Degrease, ultrasonic clean, acid etch
    EVENT Preoxidation KIND other TIMING stated                  # Sacrificial oxidation, dry O2, 1100 °C, 30 min (not simulated)
    EVENT Strip KIND etch TIMING assumed                         # Preoxide etched in HF, ultrasonic clean, DI rinse, N2 dry
    RUN Oxidation DURATION 4946 TEMP 900->900 AMBIENT dry_O2 TIMING assumed VARY duration 2473..9892
    RUN Pull DURATION 60 TEMP 900->400 AMBIENT dry_O2 TIMING assumed VARY duration 6..600 VARY T_end 200..800
    EVENT Metal KIND metallization TIMING assumed                # Front Al dots, about 100 Å, 0.5 mm, W filament, 1×10⁻⁶ Torr
    EVENT BackStrip KIND etch TIMING assumed                     # Back oxide removed in HF, Au back contact
    EVENT NoAnneal KIND other TIMING stated                      # No post-oxidation or post-metallization anneal
    EVENT Measure KIND measurement TIMING assumed                # Admittance, 30 Hz to 100 kHz, dark and illuminated
}

The programs the predictor ran on these histories: experiments/deal_qss/two_equilibria.isl.template, experiments/vitkavage_dit/oxide_growth.isl.template, scripts/search_growth.py (structure generated from the grammar), scripts/search_trap_density.py (structure generated from the grammar).

The model itself, scripts/search_trap_density.py, as it is written. Every equation the simulation uses is in this text; the runtime holds no physics.

#!/usr/bin/env python3
"""
Structure search for midgap trap density on planar silicon (Vitkavage 1990), with and without the hydrogen anneal.
What the measurements show before any model: the forming-gas anneal lowers the density 5 to 8 times on (100) but 10 to
29 times on (110), and on (110) the unannealed density does not fall with time at 1000 C while the annealed one does.
The grammar asks which structure accounts for that:
    one_population          sites relax with time at temperature; hydrogen caps them at one rate (the form used so far)
    orientation_passivation the same, with the hydrogen rate fitted for each orientation
    two_populations         a second population set at oxidation, per orientation, that hydrogen removes and time does not
    two_populations_T       the same, with the second population depending on oxidation temperature
Every candidate is an ISL program (kinds Relaxation and Passivation). Since 11 November every candidate also carries Brower's hydrogen
kinetics: the passivation rate changes with temperature by E_f = 1.66 eV about 400 C (where it is fitted), and capped sites release their
hydrogen at k_d0 exp(-E_d / kT) with E_d = 2.56 eV and k_d0 = 1.2e12 /s. Every scored anneal is at 400 C, where the release is negligible
(about 1e-8 /s), so the fit is unchanged; the history now matters (a hot step after the anneal brings Pb back). Split, fixed here: the 900 C recipes and the
8 h recipes are held out; everything else is fitted. (The earlier split held out the (511) orientation; a structure
with a number per orientation cannot be scored that way, so the split was changed and that is recorded here.)
The structure is chosen on training rows only: most passed, then fewest parameters, then smallest training error.
Output: evaluations/trap_density_search_report.json
"""
import json
import math
import os
import sys
import numpy as np
from scipy.optimize import least_squares
from isl_harness.isl_runtime import ISLRuntime
from scripts import run_vitkavage_dit as d
ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
REPORT = os.path.join(ROOT, "evaluations", "trap_density_search_report.json")
K_B, T_REF = 8.617333262e-5, 1173.15
STRUCTURES = ("one_population", "orientation_passivation", "two_populations", "two_populations_T")
ORIENTATIONS = ("100", "110", "111", "511")
# name: (start, low, high)
BASE = {"log_N_born": (12.0, 10.5, 13.5), "log_N_floor": (11.3, 9.5, 12.5), "log_k_ref": (-4.0, -7.0, -1.0), "E_r": (2.0, 0.0, 4.0), "log_k_H": (-2.0, -4.0, 0.0)}

def parameters(structure): p = dict(BASE) if structure == "orientation_passivation": p.update({f"log_h_{o}": (0.0, -1.5, 1.5) for o in ORIENTATIONS[1:]}) if structure.startswith("two_populations"): p.update({f"log_B_{o}": (11.0, 9.0, 12.5) for o in ("100", "110", "511")}) # (111) has no unannealed measurement, so its second population cannot be fitted if structure.endswith("_T"): p["E_B"] = (0.5, 0.0, 2.0) return p

def program(structure, row, sha): o, two = row["orientation"], structure.startswith("two_populations") runs = [f" RUN Oxidation DURATION {row['t_ox_hr'] 3600.0:.1f} TEMP {row['T_ox_C']:.1f}->{row['T_ox_C']:.1f} AMBIENT dry_O2"] if row["anneal"] == "PMA": runs.append(" RUN PostMetalAnneal DURATION 1800.0 TEMP 400.0->400.0 AMBIENT forming_gas_H2") second = f""" STATE N_B {{ UNIT: cm^-2; INITIAL: B_unit exp(ln10 log_B) exp((E_B / k_B) (1 / T_ox - 1 / T_ref)); MIN: 0; MAX: 1.0e15 }} STATE N_BH {{ UNIT: cm^-2; INITIAL: 0; MIN: 0; MAX: 1.0e15 }} PARAMETER log_B {{ VALUE: 11.0; UNIT: 1; STATUS: fitted }} PARAMETER E_B {{ VALUE: 0.0; UNIT: eV; STATUS: fitted }} PARAMETER T_ox {{ VALUE: {row['T_ox_C'] + 273.15:.2f}; UNIT: K; STATUS: sourced; SOURCE: the temperature of the oxidation step in this recipe }} PARAMETER B_unit {{ VALUE: 1.0; UNIT: cm^-2; STATUS: constant }} # No source resolves how fast hydrogen removes this population; it is gone after the 30 min anneal in every sample. Its rate is given the # temperature dependence of Pb passivation (E_f), an assumption; no release of this population is written, since no source measures one. PARAMETER k_HB {{ VALUE: 1.0; UNIT: atm^-1 s^-1; STATUS: hypothesis }} OPERATOR F_SecondPopulationPassivation : Passivation {{ CONSERVATION: N_B + N_BH = const EQUATION: d(N_B)/dt = -k_HB exp(-(E_f / k_B) (1 / T - 1 / T_H)) p_H2 N_B EQUATION: d(N_BH)/dt = k_HB exp(-(E_f / k_B) (1 / T - 1 / T_H)) p_H2 N_B }}""" if two else "" return f"""# GENERATED by scripts/search_trap_density.py. Structure: {structure}. A candidate from the grammar; every rate and level is fitted. SAMPLE Wafer_{o}_{row['anneal']}_{row['T_ox_C']:.0f}C_{str(row['t_ox_hr']).replace('.', 'p')}h {{ FAMILY: Si_Planar; ORIENTATION: Si{o} }} STATE N_Pb {{ UNIT: cm^-2; INITIAL: g_or N_unit exp(ln10 log_N_born); MIN: 0; MAX: 1.0e15 }} STATE N_SiH {{ UNIT: cm^-2; INITIAL: 0; MIN: 0; MAX: 1.0e15 }} CONTROL T {{ UNIT: K }} CONTROL p_H2 {{ UNIT: atm }} PARAMETER log_N_born {{ VALUE: 12.0; UNIT: 1; STATUS: fitted }} PARAMETER log_N_floor {{ VALUE: 11.0; UNIT: 1; STATUS: fitted }} PARAMETER log_k_ref {{ VALUE: -4.0; UNIT: 1; STATUS: fitted }} PARAMETER E_r {{ VALUE: 2.0; UNIT: eV; STATUS: fitted }} PARAMETER log_k_H {{ VALUE: -2.0; UNIT: 1; STATUS: fitted }} PARAMETER log_h {{ VALUE: 0.0; UNIT: 1; STATUS: fitted }} PARAMETER g_or {{ VALUE: {d.G_OR[o]}; UNIT: 1; STATUS: sourced; SOURCE: Vitkavage, Irene and Massoud, ONR TR 34 (1990), Table VIII, ratio of silicon surface atom density to (100) }} PARAMETER c_mid {{ VALUE: 1.0; UNIT: eV^-1; STATUS: hypothesis }} PARAMETER N_unit {{ VALUE: 1.0; UNIT: cm^-2; STATUS: constant }} PARAMETER rate_unit {{ VALUE: 1.0; UNIT: s^-1; STATUS: constant }} PARAMETER H_unit {{ VALUE: 1.0; UNIT: atm^-1 s^-1; STATUS: constant }} PARAMETER T_ref {{ VALUE: {T_REF}; UNIT: K; STATUS: constant }} PARAMETER ln10 {{ VALUE: 2.302585092994046; UNIT: 1; STATUS: constant }} PARAMETER k_B {{ VALUE: 8.617333262e-5; UNIT: eV K^-1; STATUS: constant }} # Hydrogen and the Pb centre, from Brower's measurements as quoted by Stesmans and Afanas'ev 1996 (p. L505-L506). The passivation rate is fitted # at T_H, the 400 C of every scored anneal, so E_f sets only how it changes away from 400 C. The release (HPb -> Pb + H) is Brower's, prefactor and # energy both; Stesmans and Afanas'ev adopt the same prefactor without fitting it, so their release data stay an independent test. PARAMETER E_f {{ VALUE: 1.66; UNIT: eV; STATUS: sourced; SOURCE: Brower 1988 as quoted by Stesmans and Afanas'ev 1996 J. Phys. Condens. Matter 8 L505 p. L505, activation energy of Pb + H2 -> HPb + H }} PARAMETER T_H {{ VALUE: 673.15; UNIT: K; STATUS: constant }} PARAMETER E_d {{ VALUE: 2.56; UNIT: eV; STATUS: sourced; SOURCE: Brower 1990 as quoted by Stesmans and Afanas'ev 1996 J. Phys. Condens. Matter 8 L505 p. L506, activation energy of HPb -> Pb + H }} PARAMETER k_d0 {{ VALUE: 1.2e12; UNIT: s^-1; STATUS: sourced; SOURCE: Brower 1990 as quoted and adopted unfitted by Stesmans and Afanas'ev 1996 J. Phys. Condens. Matter 8 L505 p. L506, prefactor of HPb -> Pb + H }}{second} CONTROL_TRAJECTORY History {{ {chr(10).join(runs)} }} OPERATOR F_Relaxation : Relaxation {{ EQUATION: d(N_Pb)/dt = -rate_unit exp(ln10 log_k_ref) exp(-(E_r / k_B) (1 / T - 1 / T_ref)) (N_Pb - g_or N_unit exp(ln10 log_N_floor)) }} OPERATOR F_HydrogenPassivation : Passivation {{ CONSERVATION: N_Pb + N_SiH = const EQUATION: d(N_Pb)/dt = -H_unit exp(ln10 (log_k_H + log_h)) exp(-(E_f / k_B) (1 / T - 1 / T_H)) p_H2 N_Pb EQUATION: d(N_SiH)/dt = H_unit exp(ln10 (log_k_H + log_h)) exp(-(E_f / k_B) (1 / T - 1 / T_H)) p_H2 N_Pb }} OPERATOR F_HydrogenRelease : Passivation {{ CONSERVATION: N_Pb + N_SiH = const EQUATION: d(N_Pb)/dt = k_d0 exp(-E_d / (k_B T)) N_SiH EQUATION: d(N_SiH)/dt = -k_d0 exp(-E_d / (k_B T)) N_SiH }} OBSERVATION_MODEL Obs_Dit_Midgap {{ TARGET: Dit; UNIT: cm^-2 eV^-1; EQUATION: Dit = c_mid * ({'N_Pb + N_B' if two else 'N_Pb'}) }} EVALUATION_CONTRACT Contract {{ FROZEN: true DATASET: data/derived/vitkavage_1990_dit_midgap.csv DATASET_DIGEST: sha256:{sha} SPLIT: search TARGET: Dit = {row['Dit']:.4g} +/- {d.CONTRACT_TOLERANCE} rel }} """

def overrides(structure, x, names, orientation): v = dict(zip(names, [float(a) for a in x])) ov = {k: v[k] for k in BASE} ov["log_h"] = v.get(f"log_h_{orientation}", 0.0) if structure.startswith("two_populations"): ov["log_B"] = v.get(f"log_B_{orientation}", 0.0) # (111): no second population can be fitted; it is left out (zero is 1 per cm2) ov["E_B"] = v.get("E_B", 0.0) return ov

def split_of(row): return "holdout" if row["T_ox_C"] == 900 or row["t_ox_hr"] == 8.0 else "train"

def evaluate(structure): rows, sha = d.load_rows() pars = parameters(structure) names = list(pars) rts = [] for r in rows: rt = ISLRuntime() rt.parse_isl_source(program(structure, r, sha)) rts.append(rt) meas = np.array([r["Dit"] for r in rows]) train = [i for i, r in enumerate(rows) if split_of(r) == "train"] def predict(x, idx): out = [] for i in idx: try: out.append(next(iter(rts[i].execute_isl_evaluation(parameter_overrides=overrides(structure, x, names, rows[i]["orientation"]), base_dir=ROOT)["receipt"]["results"].values()))["pred"]) except Exception: out.append(float("nan")) return np.array(out) def residuals(x): p = predict(x, train) return np.where(np.isfinite(p) & (p > 0), np.log(np.maximum(p, 1.0) / meas[train]) / 0.10, 30.0) rng, best = np.random.default_rng(7), None lo, hi = [pars[n][1] for n in names], [pars[n][2] for n in names] for x0 in [[pars[n][0] for n in names]] + [[float(rng.uniform(a, b)) for a, b in zip(lo, hi)] for _ in range(5)]: f = least_squares(residuals, x0=x0, bounds=(lo, hi), diff_step=1e-2, max_nfev=60) if best is None or f.cost < best.cost: best = f pred = predict(best.x, range(len(rows))) samples = [{"orientation": r["orientation"], "anneal": r["anneal"], "T_ox_C": r["T_ox_C"], "t_ox_hr": r["t_ox_hr"], "split": split_of(r), "measured": r["Dit"], "predicted": float(p), "passed": bool(abs(p - r["Dit"]) <= d.CONTRACT_TOLERANCE * r["Dit"])} for r, p in zip(rows, pred)] out = {"structure": structure, "n_fitted": len(names), "fitted": dict(zip(names, [float(v) for v in best.x])), "samples": samples} for split in ("train", "holdout"): sel = [s for s in samples if s["split"] == split] err = [abs(s["predicted"] - s["measured"]) / s["measured"] for s in sel] out[split] = {"n": len(sel), "passed": sum(s["passed"] for s in sel), "within_25_percent": int(sum(e <= 0.25 for e in err)), "median_error": round(float(np.median(err)), 3)} return out

def run(workers=1): if workers > 1: import multiprocessing with multiprocessing.Pool(workers) as pool: results = pool.map(evaluate, STRUCTURES) else: results = [evaluate(s) for s in STRUCTURES] key = lambda r: (-r["train"]["passed"], r["n_fitted"], r["train"]["median_error"]) results.sort(key=key) report = {"what": "Structure search for midgap trap density on planar silicon, Vitkavage 1990. Candidates come from a grammar.", "data_verification": "Agent-transcribed values; four values ruled on by the project owner. Unverified otherwise.", "split": "held out: the 900 C recipes and the 8 h recipes; fitted: the rest. Changed from the earlier split (which held out (511)) because some structures have a number per orientation.", "selection_rule": "most training targets passed, then fewest parameters, then smallest training error; held-out scores are not used to choose", "selected": {k: v for k, v in results[0].items() if k != "samples"}, "ranking": [{k: v for k, v in r.items() if k != "samples"} for r in results], "samples_of_each": {r["structure"]: r["samples"] for r in results}} with open(REPORT, "w") as f: json.dump(report, f, indent=1) return report

if __name__ == "__main__": rep = run(int(sys.argv[sys.argv.index("--workers") + 1]) if "--workers" in sys.argv else 1) for r in rep["ranking"]: print(f" {r['structure']:26s} parameters {r['n_fitted']:2d} train {r['train']['passed']:2d}/{r['train']['n']} (25%: {r['train']['within_25_percent']}, median {r['train']['median_error']})" f" held-out {r['holdout']['passed']:2d}/{r['holdout']['n']} (25%: {r['holdout']['within_25_percent']}, median {r['holdout']['median_error']})") ```

Our simulation against the paper

6 off, 18 not modelled of 24 numbers. Tolerance is stated per row; nothing was fitted for this page.

✕6 outside∅18 not modelled
simulation below the paper ← 0 → simulation above the paper-100%-50%0%+50%+100%n-Si/SiO2/Au, second set, 93 Åtrap density at the profile's minimum (near midgap), no anneal+111% ▸ours 4.34×10¹¹ · paper 2.06×10¹¹ cm⁻² eV⁻¹✕ outsiden-Si/SiO2/Au, second set, 93 Åpeak density near the valence bandno program · paper 9.90×10¹¹ cm⁻² eV⁻¹∅ not modelledn-Si/SiO2/Au, second set, 125 Åtrap density at the profile's minimum (near midgap), no anneal+160% ▸ours 4.29×10¹¹ · paper 1.65×10¹¹ cm⁻² eV⁻¹✕ outsiden-Si/SiO2/Au, second set, 125 Åpeak density near the valence bandno program · paper 4.00×10¹¹ cm⁻² eV⁻¹∅ not modelledn-Si/SiO2/Au, second set, 148 Åtrap density at the profile's minimum (near midgap), no annealours 4.24×10¹¹ · paper 2.95×10¹¹ cm⁻² eV⁻¹✕ outside (+44%)n-Si/SiO2/Au, second set, 148 Åpeak density near the valence bandno program · paper 2.55×10¹² cm⁻² eV⁻¹∅ not modelledn-Si/SiO2/Au, second set, 164 Åtrap density at the profile's minimum (near midgap), no annealours 4.21×10¹¹ · paper 2.71×10¹¹ cm⁻² eV⁻¹✕ outside (+55%)n-Si/SiO2/Au, second set, 164 Åpeak density near the valence bandno program · paper 1.59×10¹² cm⁻² eV⁻¹∅ not modelledn-Si/SiO2/Au, second set, 190 Åtrap density at the profile's minimum (near midgap), no annealours 4.16×10¹¹ · paper 2.21×10¹¹ cm⁻² eV⁻¹✕ outside (+88%)n-Si/SiO2/Au, second set, 190 Åpeak density near the valence bandno program · paper 9.70×10¹¹ cm⁻² eV⁻¹∅ not modelledn-Si/SiO2/Au, second set, 208 Åtrap density at the profile's minimum (near midgap), no anneal+106% ▸ours 4.12×10¹¹ · paper 2.00×10¹¹ cm⁻² eV⁻¹✕ outsiden-Si/SiO2/Au, second set, 208 Åpeak density near the valence bandno program · paper 7.80×10¹¹ cm⁻² eV⁻¹∅ not modelledn-Si/SiO2/Au, first set, about 93 Åpeak density near the valence bandno program · paper 1.22×10¹² cm⁻² eV⁻¹∅ not modelledn-Si/SiO2/Au, first set, about 103 Åpeak density near the valence bandno program · paper 7.10×10¹¹ cm⁻² eV⁻¹∅ not modelledn-Si/SiO2/Au, first set, about 138 Åpeak density near the valence bandno program · paper 1.88×10¹² cm⁻² eV⁻¹∅ not modelledn-Si/SiO2/Au, first set, about 166 Åpeak density near the valence bandno program · paper 1.92×10¹² cm⁻² eV⁻¹∅ not modelledn-Si/SiO2/Au, first set, about 186 Åpeak density near the valence bandno program · paper 1.04×10¹² cm⁻² eV⁻¹∅ not modelledn-Si/SiO2/Au, first set, about 203 Åpeak density near the valence bandno program · paper 8.50×10¹¹ cm⁻² eV⁻¹∅ not modelledp-Si/SiO2/Al, about 80 Åpeak density near the conduction bandno program · paper 1.00×10¹² cm⁻² eV⁻¹∅ not modelledp-Si/SiO2/Al, about 90 Åpeak density near the conduction bandno program · paper 7.10×10¹¹ cm⁻² eV⁻¹∅ not modelledp-Si/SiO2/Al, about 126 Åpeak density near the conduction bandno program · paper 1.73×10¹² cm⁻² eV⁻¹∅ not modelledp-Si/SiO2/Al, about 148 Åpeak density near the conduction bandno program · paper 4.00×10¹² cm⁻² eV⁻¹∅ not modelledp-Si/SiO2/Al, about 176 Åpeak density near the conduction bandno program · paper 1.62×10¹² cm⁻² eV⁻¹∅ not modelledp-Si/SiO2/Al, about 226 Åpeak density near the conduction bandno program · paper 1.15×10¹² cm⁻² eV⁻¹∅ not modelled
The pale green band is the tolerance. Bars past ±100% are cut and carry their value.
Near-midgap density against oxide thickness (second n-type set)
01.17×10¹¹2.34×10¹¹3.51×10¹¹4.69×10¹¹9.312.215.117.920.8oxide thickness (nm)Dit (cm⁻² eV⁻¹)profile minimum, Fig. 1our simulationthe paper
Sample and historyQuantityThe paperOur simulationDifferenceVerdictWhat the program's own evaluation saysWhere in the paper
n-Si/SiO2/Au, second set, 93 Åtrap density at the profile's minimum (near midgap), no anneal2.06e+11 cm⁻² eV⁻¹4.34e+11 cm⁻² eV⁻¹+111%off (±15%)outside the tested scopeFigure 1, PDF p. 1, lowest point of the 93 Å profile at 0.72 eV above Ev, read by eye from the scan
n-Si/SiO2/Au, second set, 93 Åpeak density near the valence band9.90e+11 cm⁻² eV⁻¹no programnot modelled (±15%)no programFigure 2(a), PDF p. 2, squares, read by eye
n-Si/SiO2/Au, second set, 125 Åtrap density at the profile's minimum (near midgap), no anneal1.65e+11 cm⁻² eV⁻¹4.28e+11 cm⁻² eV⁻¹+160%off (±15%)outside the tested scopeFigure 1, PDF p. 1, lowest point of the 125 Å profile at 0.70 eV above Ev, read by eye from the scan
n-Si/SiO2/Au, second set, 125 Åpeak density near the valence band4.00e+11 cm⁻² eV⁻¹no programnot modelled (±15%)no programFigure 2(a), PDF p. 2, squares, read by eye
n-Si/SiO2/Au, second set, 148 Åtrap density at the profile's minimum (near midgap), no anneal2.95e+11 cm⁻² eV⁻¹4.24e+11 cm⁻² eV⁻¹+44%off (±15%)outside the tested scopeFigure 1, PDF p. 1, lowest point of the 148 Å profile at 0.70 eV above Ev, read by eye from the scan
n-Si/SiO2/Au, second set, 148 Åpeak density near the valence band2.55e+12 cm⁻² eV⁻¹no programnot modelled (±15%)no programFigure 2(a), PDF p. 2, squares, read by eye
n-Si/SiO2/Au, second set, 164 Åtrap density at the profile's minimum (near midgap), no anneal2.71e+11 cm⁻² eV⁻¹4.21e+11 cm⁻² eV⁻¹+55%off (±15%)outside the tested scopeFigure 1, PDF p. 1, lowest point of the 164 Å profile at 0.70 eV above Ev, read by eye from the scan
n-Si/SiO2/Au, second set, 164 Åpeak density near the valence band1.59e+12 cm⁻² eV⁻¹no programnot modelled (±15%)no programFigure 2(a), PDF p. 2, squares, read by eye
n-Si/SiO2/Au, second set, 190 Åtrap density at the profile's minimum (near midgap), no anneal2.21e+11 cm⁻² eV⁻¹4.16e+11 cm⁻² eV⁻¹+88%off (±15%)direction onlyFigure 1, PDF p. 1, lowest point of the 190 Å profile at 0.69 eV above Ev, read by eye from the scan
n-Si/SiO2/Au, second set, 190 Åpeak density near the valence band9.70e+11 cm⁻² eV⁻¹no programnot modelled (±15%)no programFigure 2(a), PDF p. 2, squares, read by eye
n-Si/SiO2/Au, second set, 208 Åtrap density at the profile's minimum (near midgap), no anneal2.00e+11 cm⁻² eV⁻¹4.12e+11 cm⁻² eV⁻¹+106%off (±15%)direction onlyFigure 1, PDF p. 1, lowest point of the 208 Å profile at 0.70 eV above Ev, read by eye from the scan
n-Si/SiO2/Au, second set, 208 Åpeak density near the valence band7.80e+11 cm⁻² eV⁻¹no programnot modelled (±15%)no programFigure 2(a), PDF p. 2, squares, read by eye
n-Si/SiO2/Au, first set, about 93 Åpeak density near the valence band1.22e+12 cm⁻² eV⁻¹no programnot modelled (±15%)no programFigure 2(a), PDF p. 2, circles, read by eye (thickness also read from the axis)
n-Si/SiO2/Au, first set, about 103 Åpeak density near the valence band7.10e+11 cm⁻² eV⁻¹no programnot modelled (±15%)no programFigure 2(a), PDF p. 2, circles, read by eye (thickness also read from the axis)
n-Si/SiO2/Au, first set, about 138 Åpeak density near the valence band1.88e+12 cm⁻² eV⁻¹no programnot modelled (±15%)no programFigure 2(a), PDF p. 2, circles, read by eye (thickness also read from the axis)
n-Si/SiO2/Au, first set, about 166 Åpeak density near the valence band1.92e+12 cm⁻² eV⁻¹no programnot modelled (±15%)no programFigure 2(a), PDF p. 2, circles, read by eye (thickness also read from the axis)
n-Si/SiO2/Au, first set, about 186 Åpeak density near the valence band1.04e+12 cm⁻² eV⁻¹no programnot modelled (±15%)no programFigure 2(a), PDF p. 2, circles, read by eye (thickness also read from the axis)
n-Si/SiO2/Au, first set, about 203 Åpeak density near the valence band8.50e+11 cm⁻² eV⁻¹no programnot modelled (±15%)no programFigure 2(a), PDF p. 2, circles, read by eye (thickness also read from the axis)
p-Si/SiO2/Al, about 80 Åpeak density near the conduction band1.00e+12 cm⁻² eV⁻¹no programnot modelled (±15%)no programFigure 2(b), PDF p. 2, read by eye (thickness also read from the axis)
p-Si/SiO2/Al, about 90 Åpeak density near the conduction band7.10e+11 cm⁻² eV⁻¹no programnot modelled (±15%)no programFigure 2(b), PDF p. 2, read by eye (thickness also read from the axis)
p-Si/SiO2/Al, about 126 Åpeak density near the conduction band1.73e+12 cm⁻² eV⁻¹no programnot modelled (±15%)no programFigure 2(b), PDF p. 2, read by eye (thickness also read from the axis)
p-Si/SiO2/Al, about 148 Åpeak density near the conduction band4.00e+12 cm⁻² eV⁻¹no programnot modelled (±15%)no programFigure 2(b), PDF p. 2, read by eye (thickness also read from the axis)
p-Si/SiO2/Al, about 176 Åpeak density near the conduction band1.62e+12 cm⁻² eV⁻¹no programnot modelled (±15%)no programFigure 2(b), PDF p. 2, read by eye (thickness also read from the axis)
p-Si/SiO2/Al, about 226 Åpeak density near the conduction band1.15e+12 cm⁻² eV⁻¹no programnot modelled (±15%)no programFigure 2(b), PDF p. 2, read by eye (thickness also read from the axis)

Aligning the simulation: what the unstated things would have to be

Every step whose timing or temperature the paper leaves open carries a range in the history above (VARY). scripts/align_study.py searched those ranges against the paper's numbers through the same predictor, first one unknown at a time, then all together. No parameter a program declares fitted was touched. The unknowns were chosen on n2_148A, n2_190A, n2_93A only; every other number is a test they played no part in.

UnknownWhat the paper saysRange searchedThe reproduction usedBest aloneScore at the reproduction's valueBest score alone
Final oxidation, dry O2, 900 °C, to 9.3 nm: durationno oxidation time is printed for any sample; chosen to give the thickness, searched 0.5 to 2 times0.5 to 2×1×2× (flat: the data do not constrain it)0 of 6 within tolerance, median error 88.0%0 of 6 within tolerance, median error 77.1%
Withdrawal and cooling, in oxygen (assumed): durationnot stated; 6 s to 10 min and an end of 200 to 800 °C searched6 to 600 s60 s600 s (flat: the data do not constrain it)0 of 6 within tolerance, median error 88.0%0 of 6 within tolerance, median error 87.8%
Withdrawal and cooling, in oxygen (assumed): T endnot stated; 6 s to 10 min and an end of 200 to 800 °C searched200 to 800 °C400 °C400 °C (flat: the data do not constrain it)0 of 6 within tolerance, median error 88.0%0 of 6 within tolerance, median error 88.0%

Together: Oxidation duration 2× (was 1); Pull duration 600 s (was 60); Pull T end 800 °C (was 400).

As reproduced: 0 of 24 within tolerance, median error 96.9%. Aligned: 0 of 24 within tolerance, median error 84.0%. On the held-out samples only: 0 of 18 within tolerance, median error 105.8% as reproduced, 0 of 18 within tolerance, median error 91.5% aligned.

Choices of program or material property, each scored on its own and on top of the aligned history:

VariantAloneWith the aligned history
preoxidation written as a RUN (not stripped)1 of 24 within tolerance, median error 26.1%1 of 24 within tolerance, median error 29.4%
pull in nitrogen0 of 24 within tolerance, median error 96.9%0 of 24 within tolerance, median error 84.0%

Three unknowns were declared: the oxidation time (one factor on every sample's own time, 0.5 to 2), and the pull's duration (6 to 600 s) and end temperature (200 to 800 °C). They were chosen on three of the six profiles of Figure 1 (93, 148 and 190 Å) and tested on the other three (125, 164 and 208 Å). Only those six near-midgap values have a program; the eighteen band-edge peaks of Figure 2 have none and count as failures before and after. As reproduced: 0 of 24 within tolerance (median error 96.9%). Aligned: 0 of 24 (84.0%). On the held-out profiles: 0 of 3 before and after.

Nothing the history leaves open brings the program down to the data. The program gives 4.1 to 4.3 × 10¹¹ cm⁻² eV⁻¹ for every oxide; the profiles' lowest points are 1.65 to 2.95 × 10¹¹. Each unknown, scanned alone, leaves the count at 0 of 6. The search drives every one to the end of its range that lowers the program's value most (oxidation time doubled, a 600 s pull ending at 800 °C), and that buys 5 to 7%: 125 Å goes from 4.29 to 4.13 × 10¹¹, 208 Å from 4.12 to 3.83 × 10¹¹, against 1.65 and 2.0 measured.

The aligned oxidation time is ruled out by the thickness the paper states. Doubling the time makes the 93 Å oxide 15.2 nm and the 208 Å oxide 33 nm in the thin-oxide program. Thickness is not scored on this page because the stated times are ours and were chosen from it, so the search cannot see that; read with the printed thicknesses, the oxidation-time factor is pinned at 1 and the aligned improvement is not available.

The pull's gas does not matter. Cooling in nitrogen instead of oxygen changes no value by more than 1% (variant: 0 of 24 alone and with the aligned history).

Writing the sacrificial oxidation as a RUN lands closer for the wrong reason. With 30 min at 1100 °C in dry oxygen as the first RUN (it is stripped in HF in the paper; the language cannot strip it), the trap program takes 1100 °C as the oxidation temperature and its second population, which falls as the oxidation temperature rises, drops: 1.55 to 1.60 × 10¹¹ for all six oxides, 1 of 6 within tolerance (125 Å, 1.59 against 1.65 × 10¹¹; median error 26%). The simulated oxides are then 82 to 86 nm thick, four to nine times the paper's. This variant shows what the language does to a stripped preoxide, not a better history.

Heating and cooling transitions (section below): a 1 to 5 min hot push or a 60 to 120 min cold-furnace ramp in nitrogen, with fast or five-times-slower radiative cooling after the pull, move none of the 24 numbers by more than 2% (median error 105.8% as stated, 104.8 to 105.6% with transitions). In this program the short-time heat around a 900 °C oxidation is invisible; the value is set by the oxidation temperature.

Quantum ESPRESSO bound. The page has no section for it: no step in this paper carries hydrogen (no anneal of any kind, stated), so the computed equilibrium bound on the density after a hydrogen step does not apply.

✕3 outside∅15 not modelled
simulation below the paper ← 0 → simulation above the paper-100%-50%0%+50%+100%n-Si/SiO2/Au, second set, 125 Åtrap density at the profile's minimum (near midgap), no anneal+150% ▸ours 4.13×10¹¹ · paper 1.65×10¹¹ cm⁻² eV⁻¹✕ outsiden-Si/SiO2/Au, second set, 125 Åpeak density near the valence bandno program · paper 4.00×10¹¹ cm⁻² eV⁻¹∅ not modelledn-Si/SiO2/Au, second set, 164 Åtrap density at the profile's minimum (near midgap), no annealours 4.00×10¹¹ · paper 2.71×10¹¹ cm⁻² eV⁻¹✕ outside (+47%)n-Si/SiO2/Au, second set, 164 Åpeak density near the valence bandno program · paper 1.59×10¹² cm⁻² eV⁻¹∅ not modelledn-Si/SiO2/Au, second set, 208 Åtrap density at the profile's minimum (near midgap), no annealours 3.83×10¹¹ · paper 2.00×10¹¹ cm⁻² eV⁻¹✕ outside (+92%)n-Si/SiO2/Au, second set, 208 Åpeak density near the valence bandno program · paper 7.80×10¹¹ cm⁻² eV⁻¹∅ not modelledn-Si/SiO2/Au, first set, about 93 Åpeak density near the valence bandno program · paper 1.22×10¹² cm⁻² eV⁻¹∅ not modelledn-Si/SiO2/Au, first set, about 103 Åpeak density near the valence bandno program · paper 7.10×10¹¹ cm⁻² eV⁻¹∅ not modelledn-Si/SiO2/Au, first set, about 138 Åpeak density near the valence bandno program · paper 1.88×10¹² cm⁻² eV⁻¹∅ not modelledn-Si/SiO2/Au, first set, about 166 Åpeak density near the valence bandno program · paper 1.92×10¹² cm⁻² eV⁻¹∅ not modelledn-Si/SiO2/Au, first set, about 186 Åpeak density near the valence bandno program · paper 1.04×10¹² cm⁻² eV⁻¹∅ not modelledn-Si/SiO2/Au, first set, about 203 Åpeak density near the valence bandno program · paper 8.50×10¹¹ cm⁻² eV⁻¹∅ not modelledp-Si/SiO2/Al, about 80 Åpeak density near the conduction bandno program · paper 1.00×10¹² cm⁻² eV⁻¹∅ not modelledp-Si/SiO2/Al, about 90 Åpeak density near the conduction bandno program · paper 7.10×10¹¹ cm⁻² eV⁻¹∅ not modelledp-Si/SiO2/Al, about 126 Åpeak density near the conduction bandno program · paper 1.73×10¹² cm⁻² eV⁻¹∅ not modelledp-Si/SiO2/Al, about 148 Åpeak density near the conduction bandno program · paper 4.00×10¹² cm⁻² eV⁻¹∅ not modelledp-Si/SiO2/Al, about 176 Åpeak density near the conduction bandno program · paper 1.62×10¹² cm⁻² eV⁻¹∅ not modelledp-Si/SiO2/Al, about 226 Åpeak density near the conduction bandno program · paper 1.15×10¹² cm⁻² eV⁻¹∅ not modelled
The pale green band is the tolerance. Bars past ±100% are cut and carry their value.

3 off, 15 not modelled of 18 numbers with the aligned settings (the samples used to choose the unknowns are left out).

SampleQuantityThe paperAs reproduced aboveAlignedDifferenceVerdictHow
n-Si/SiO2/Au, second set, 125 Åtrap density at the profile's minimum (near midgap), no anneal1.65e+11 cm⁻² eV⁻¹4.28e+114.13e+11+150%off (±15%)test
n-Si/SiO2/Au, second set, 125 Åpeak density near the valence band4.00e+11 cm⁻² eV⁻¹no programno programnot modelled (±15%)test
n-Si/SiO2/Au, second set, 164 Åtrap density at the profile's minimum (near midgap), no anneal2.71e+11 cm⁻² eV⁻¹4.21e+114.00e+11+47%off (±15%)test
n-Si/SiO2/Au, second set, 164 Åpeak density near the valence band1.59e+12 cm⁻² eV⁻¹no programno programnot modelled (±15%)test
n-Si/SiO2/Au, second set, 208 Åtrap density at the profile's minimum (near midgap), no anneal2.00e+11 cm⁻² eV⁻¹4.12e+113.83e+11+92%off (±15%)test
n-Si/SiO2/Au, second set, 208 Åpeak density near the valence band7.80e+11 cm⁻² eV⁻¹no programno programnot modelled (±15%)test
n-Si/SiO2/Au, first set, about 93 Åpeak density near the valence band1.22e+12 cm⁻² eV⁻¹no programno programnot modelled (±15%)test
n-Si/SiO2/Au, first set, about 103 Åpeak density near the valence band7.10e+11 cm⁻² eV⁻¹no programno programnot modelled (±15%)test
n-Si/SiO2/Au, first set, about 138 Åpeak density near the valence band1.88e+12 cm⁻² eV⁻¹no programno programnot modelled (±15%)test
n-Si/SiO2/Au, first set, about 166 Åpeak density near the valence band1.92e+12 cm⁻² eV⁻¹no programno programnot modelled (±15%)test
n-Si/SiO2/Au, first set, about 186 Åpeak density near the valence band1.04e+12 cm⁻² eV⁻¹no programno programnot modelled (±15%)test
n-Si/SiO2/Au, first set, about 203 Åpeak density near the valence band8.50e+11 cm⁻² eV⁻¹no programno programnot modelled (±15%)test
p-Si/SiO2/Al, about 80 Åpeak density near the conduction band1.00e+12 cm⁻² eV⁻¹no programno programnot modelled (±15%)test
p-Si/SiO2/Al, about 90 Åpeak density near the conduction band7.10e+11 cm⁻² eV⁻¹no programno programnot modelled (±15%)test
p-Si/SiO2/Al, about 126 Åpeak density near the conduction band1.73e+12 cm⁻² eV⁻¹no programno programnot modelled (±15%)test
p-Si/SiO2/Al, about 148 Åpeak density near the conduction band4.00e+12 cm⁻² eV⁻¹no programno programnot modelled (±15%)test
p-Si/SiO2/Al, about 176 Åpeak density near the conduction band1.62e+12 cm⁻² eV⁻¹no programno programnot modelled (±15%)test
p-Si/SiO2/Al, about 226 Åpeak density near the conduction band1.15e+12 cm⁻² eV⁻¹no programno programnot modelled (±15%)test

What alignment cannot fix. The paper's result is a shape the program cannot make. Kar's peak density near Ev dips near 103-126 Å and peaks near 138-149 Å in both n-type sets (0.40 to 2.55 × 10¹² in set 2) and near Ec in the p-type set (0.71 at 90 Å to 4.0 × 10¹² at 148 Å). No program in the predictor gives a band-edge peak, and the predictor gives no distribution over energy without a hydrogen anneal (reason c). The one quantity it does give, midgap density, falls monotonically by 5% from 93 to 208 Å; the profiles' lowest points follow the peak's shape weakly (1.65 × 10¹¹ at 125 Å, 2.95 at 148 Å) and the program has no way to move up and then down with thickness.

The level is 1.4 to 2.6 times high. The program's unannealed value is set by the oxidation temperature (the second population) and by relaxation over time at temperature; it was fitted on Vitkavage's oxidations of one hour or more, and every history here is 15 to 82 min. Part of the gap may be the comparison itself: the measured value is the lowest point of each profile at 0.69 to 0.72 eV, not 0.56 eV, and four of the six profiles have no points between about 0.5 and 0.7 eV.

The authors' mechanism has no counterpart. They link the peak near 150 Å to the end of the rapid, field-aided initial oxidation regime. The thin-oxide growth program has an initial regime in its rate, but no program connects how the last layer grew to the defects it leaves (reason c).

What our language and ontology cannot yet say

  • An etch that removes oxide. The 1100 °C preoxide is grown and stripped before the oxidation that matters. The language has no statement that removes oxide, so the step had to become an EVENT and its 30 min at 1100 °C left out of the simulated heat; written as a RUN it stays as about 70 nm of oxide under the real one. ETCH REMOVE ALL (or ETCH TO 0 nm) would let the strip be simulated and the heat kept.
  • Which RUN is the oxidation. The trap-density program takes the oxidation temperature from the first dry-oxygen RUN. A sacrificial oxidation in front of the real one changes the predicted density by a factor of 2.7 (4.3 to 1.6 × 10¹¹) through that choice alone. A ROLE sacrificial|oxidation|anneal|pull on each RUN would let programs find the oxidation by what it is (the same gap Hung 1987 hit with a boat-in).
  • A measured thickness as a constraint on an unstated time. The paper states thicknesses, not times. Here the time was set by hand from the thickness and thickness was then dropped from the score, so the search could double the time unchecked. A sample field the alignment reads as a constraint (OXIDE_NM_MEASURED checked against the growth program while other quantities are searched) would pin the time and say so.
  • A band-edge peak as an observable. Every number in Figure 2 is the height of a peak near Ev or Ec of an unannealed distribution. The observable vocabulary has midgap density and, after hydrogen only, a fixed set of energies. An observable Dit_peak_near_Ev / Dit_peak_near_Ec with its energy, and a program that predicts a distribution without hydrogen, are needed before any of the 18 peak values can be compared.
  • The clean. “Degreasing in hot solvents, ultrasonic cleaning, and etching in acids” followed by a sacrificial oxide has no CLEAN word in the vocabulary; it is written not_stated. A CLEAN: sacrificial_oxide_HF would record the most consequential part of it.
  • How the measurement was made. The densities are from illuminated admittance (capacitance and conductance, 30 Hz to 100 kHz) on 100 Å semitransparent Au or Al dots. Nothing in a history or result says which technique gave a density, and techniques disagree near the band edges; an observation statement with the method would let results from different methods be kept apart.

With heating and cooling transitions

No paper we hold states how its wafers heated up or cooled down. The project owner specified scenarios for one Vitkavage wafer (isl_harness/vitkavage_transitions.py); isl_harness/thermal_transitions.py applies the same numbers to every sample here: a heat-up in nitrogen before the first furnace step (a hot push of 1 to 5 min, or a cold-furnace ramp of 60 to 120 min), the owner's radiative cooling knots after the last furnace step or after the paper's own pull (fast, or every time multiplied by 5), and ramps around an anneal at 300 to 500 °C. The paper's own steps are kept as written. All transitions are assumptions, written in the history with TIMING assumed.

HistoryWithin toleranceMedian errorChanged numbers
as the paper states it (above)0 of 24105.8%
heat-up A (hot push), fast cooling0 of 24105.6%0 of 24 moved by more than 2%
heat-up A (hot push), slow cooling0 of 24105.6%0 of 24 moved by more than 2%
heat-up B (cold-furnace ramp), fast cooling0 of 24104.8%0 of 24 moved by more than 2%
heat-up B (cold-furnace ramp), slow cooling0 of 24104.8%0 of 24 moved by more than 2%

The paper's own conclusions

The paper statesWhat we find
The peak density near Ev goes through a minimum near 110-125 Å and a maximum near 150 Å instead of falling monotonically (Figure 2, both n sets and the p set)No program gives a band-edge peak. The midgap program falls monotonically and by 5% over the whole rangenot in the program
Unannealed profiles: a peak near Ev (0.23-0.44 eV, shifting with thickness) on a concave backgroundNo distribution is predicted without a hydrogen annealnot in the program
Near midgap the density is about 2 × 10¹¹ cm⁻² eV⁻¹ (graph, lowest point of each profile, 1.65 to 2.95 × 10¹¹)4.1 to 4.3 × 10¹¹: the right order, 1.4 to 2.6 times highpartly
The valley/peak may reflect the change from field-aided to field-free oxidant transportNo program carries the oxidant transport regimenot tested

What we would like Emily to check

  1. Would 1985 oxidation times at 900 °C in dry oxygen for 93 to 208 Å be about 20 to 75 min, as the thin-oxide program needs, and were the wafers pushed and pulled at 900 °C?
  2. With no anneal of any kind, could moisture in the furnace or in the room during cooling have passivated part of the dangling bonds, as O'Sullivan et al. 2001 argue for slow furnace cooling?
  3. Is the peak near Ev in these profiles the Pb0 level, and is its non-monotonic dependence on thickness a property of the oxidation or of the measurement (illuminated admittance on 100 Å Au)?
  4. The two n-type sets differ by a factor of 1.8 at about 103 and 125 Å, near the valley. Is the valley reproducible, or is it within run-to-run scatter?