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 described | 1 of 5 properties we need are stated and encoded the same |
| History described | 3 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 |
| Timing | 0 of 2 simulated steps have a stated duration; 5 of 7 other steps have none; 6 timing gaps listed below |
| How the results are given | Figures 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 authors | Not 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 consistency | Fair. 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 |
| Outcome | 0 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.
“After degreasing in hot solvents, ultrasonic cleaning, and etching in acids,”
| oxide thickness (thin-oxide program) | 0 nm | |
| interface state density at midgap | 4.42×10¹¹ cm⁻² eV⁻¹ | 2.06×10¹¹ |
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.
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 Å
| # | Step | Starts at | Lasts | Ends at | Temperature | Rate | Gas | Is the timing in the paper? |
|---|---|---|---|---|---|---|---|---|
| 1 | Degrease, ultrasonic clean, acid etch | 0 s | not simulated | not stated. not stated | ||||
| 2 | Sacrificial oxidation, dry O2, 1100 °C, 30 min (not simulated) | 0 s | not simulated | stated. 30 min at 1100 °C | ||||
| 3 | Preoxide etched in HF, ultrasonic clean, DI rinse, N2 dry | 0 s | not simulated | not stated. not stated; time to loading not stated | ||||
| 4 | Final oxidation, dry O2, 900 °C, to 9.3 nm | 0 s | 19 min 40 s | 19 min 40 s | 900 → 900 °C | held | dry_O2 | not stated; assumed. no oxidation time is printed for any sample; chosen to give the thickness, searched 0.5 to 2 times |
| 5 | Withdrawal and cooling, in oxygen (assumed) | 19 min 40 s | 1 min | 20 min 40 s | 900 → 400 °C | -8.33 °C/s | dry_O2 | not stated; assumed. not stated; 6 s to 10 min and an end of 200 to 800 °C searched |
| 6 | Front Au dots, about 100 Å, 0.5 mm, W filament, 1×10⁻⁶ Torr | 20 min 40 s | not simulated | not stated | ||||
| 7 | Back oxide removed in HF, Al back contact | 20 min 40 s | not simulated | not stated | ||||
| 8 | No post-oxidation or post-metallization anneal | 20 min 40 s | not simulated | stated. none | ||||
| 9 | Admittance, 30 Hz to 100 kHz, dark and illuminated | 20 min 40 s | not simulated | not stated |
Simulated time in this history: 20 min 40 s.
Across the samples
| Sample | Oxidation | Pull | Total |
|---|---|---|---|
| n-Si/SiO2/Au, second set, 93 Å | 19 min 40 s at 900 °C | 1 min at 900→400 °C | 20 min 40 s |
| n-Si/SiO2/Au, second set, 125 Å | 32 min at 900 °C | 1 min at 900→400 °C | 33 min |
| n-Si/SiO2/Au, second set, 148 Å | 42 min 03 s at 900 °C | 1 min at 900→400 °C | 43 min 03 s |
| n-Si/SiO2/Au, second set, 164 Å | 49 min 34 s at 900 °C | 1 min at 900→400 °C | 50 min 34 s |
| n-Si/SiO2/Au, second set, 190 Å | 1 h 02 min 39 s at 900 °C | 1 min at 900→400 °C | 1 h 03 min 39 s |
| n-Si/SiO2/Au, second set, 208 Å | 1 h 12 min 18 s at 900 °C | 1 min at 900→400 °C | 1 h 13 min 18 s |
| n-Si/SiO2/Au, first set, about 93 Å | 19 min 40 s at 900 °C | 1 min at 900→400 °C | 20 min 40 s |
| n-Si/SiO2/Au, first set, about 103 Å | 23 min 18 s at 900 °C | 1 min at 900→400 °C | 24 min 18 s |
| n-Si/SiO2/Au, first set, about 138 Å | 37 min 34 s at 900 °C | 1 min at 900→400 °C | 38 min 34 s |
| n-Si/SiO2/Au, first set, about 166 Å | 50 min 32 s at 900 °C | 1 min at 900→400 °C | 51 min 32 s |
| n-Si/SiO2/Au, first set, about 186 Å | 1 h 00 min 34 s at 900 °C | 1 min at 900→400 °C | 1 h 01 min 34 s |
| n-Si/SiO2/Au, first set, about 203 Å | 1 h 09 min 35 s at 900 °C | 1 min at 900→400 °C | 1 h 10 min 35 s |
| p-Si/SiO2/Al, about 80 Å | 15 min 14 s at 900 °C | 1 min at 900→400 °C | 16 min 14 s |
| p-Si/SiO2/Al, about 90 Å | 18 min 37 s at 900 °C | 1 min at 900→400 °C | 19 min 37 s |
| p-Si/SiO2/Al, about 126 Å | 32 min 25 s at 900 °C | 1 min at 900→400 °C | 33 min 25 s |
| p-Si/SiO2/Al, about 148 Å | 42 min 03 s at 900 °C | 1 min at 900→400 °C | 43 min 03 s |
| p-Si/SiO2/Al, about 176 Å | 55 min 28 s at 900 °C | 1 min at 900→400 °C | 56 min 28 s |
| p-Si/SiO2/Al, about 226 Å | 1 h 22 min 26 s at 900 °C | 1 min at 900→400 °C | 1 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 says | We write | Kind in our vocabulary | Note |
|---|---|---|---|
| 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 program | The 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 annealing | no RUN after the pull; EVENT NoAnneal | absence of a step | |
| preoxidation ... part of the surface cleaning | EVENT Preoxidation, EVENT Strip | events | The language has no statement that removes oxide. |
| dry O2 at 900 °C at 1 atm | RUN Oxidation ... TEMP 900->900 AMBIENT dry_O2 | a RUN; process factor oxidation | Time ours. |
| oxide thickness tox | oxide thickness (thin-oxide program); OXIDE_NM_MEASURED | observable (target: layer_thickness) and a recorded sample field | |
| field-aided to field-free diffusion of oxidant (Deal-Grove initial regime, Cabrera-Mott) | (none) | no program | The authors' explanation of the peak near 150 Å. |
| Si3≡Si bonding defects (Poindexter) | N_Pb in the trap program | STATE | The 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.
| Sample and history | Quantity | The paper | Our simulation | Difference | Verdict | What the program's own evaluation says | Where in the paper |
|---|---|---|---|---|---|---|---|
| n-Si/SiO2/Au, second set, 93 Å | trap density at the profile's minimum (near midgap), no anneal | 2.06e+11 cm⁻² eV⁻¹ | 4.34e+11 cm⁻² eV⁻¹ | +111% | off (±15%) | outside the tested scope | Figure 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 band | 9.90e+11 cm⁻² eV⁻¹ | no program | not modelled (±15%) | no program | Figure 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 anneal | 1.65e+11 cm⁻² eV⁻¹ | 4.28e+11 cm⁻² eV⁻¹ | +160% | off (±15%) | outside the tested scope | Figure 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 band | 4.00e+11 cm⁻² eV⁻¹ | no program | not modelled (±15%) | no program | Figure 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 anneal | 2.95e+11 cm⁻² eV⁻¹ | 4.24e+11 cm⁻² eV⁻¹ | +44% | off (±15%) | outside the tested scope | Figure 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 band | 2.55e+12 cm⁻² eV⁻¹ | no program | not modelled (±15%) | no program | Figure 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 anneal | 2.71e+11 cm⁻² eV⁻¹ | 4.21e+11 cm⁻² eV⁻¹ | +55% | off (±15%) | outside the tested scope | Figure 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 band | 1.59e+12 cm⁻² eV⁻¹ | no program | not modelled (±15%) | no program | Figure 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 anneal | 2.21e+11 cm⁻² eV⁻¹ | 4.16e+11 cm⁻² eV⁻¹ | +88% | off (±15%) | direction only | Figure 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 band | 9.70e+11 cm⁻² eV⁻¹ | no program | not modelled (±15%) | no program | Figure 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 anneal | 2.00e+11 cm⁻² eV⁻¹ | 4.12e+11 cm⁻² eV⁻¹ | +106% | off (±15%) | direction only | Figure 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 band | 7.80e+11 cm⁻² eV⁻¹ | no program | not modelled (±15%) | no program | Figure 2(a), PDF p. 2, squares, read by eye | |
| n-Si/SiO2/Au, first set, about 93 Å | peak density near the valence band | 1.22e+12 cm⁻² eV⁻¹ | no program | not modelled (±15%) | no program | Figure 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 band | 7.10e+11 cm⁻² eV⁻¹ | no program | not modelled (±15%) | no program | Figure 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 band | 1.88e+12 cm⁻² eV⁻¹ | no program | not modelled (±15%) | no program | Figure 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 band | 1.92e+12 cm⁻² eV⁻¹ | no program | not modelled (±15%) | no program | Figure 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 band | 1.04e+12 cm⁻² eV⁻¹ | no program | not modelled (±15%) | no program | Figure 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 band | 8.50e+11 cm⁻² eV⁻¹ | no program | not modelled (±15%) | no program | Figure 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 band | 1.00e+12 cm⁻² eV⁻¹ | no program | not modelled (±15%) | no program | Figure 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 band | 7.10e+11 cm⁻² eV⁻¹ | no program | not modelled (±15%) | no program | Figure 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 band | 1.73e+12 cm⁻² eV⁻¹ | no program | not modelled (±15%) | no program | Figure 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 band | 4.00e+12 cm⁻² eV⁻¹ | no program | not modelled (±15%) | no program | Figure 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 band | 1.62e+12 cm⁻² eV⁻¹ | no program | not modelled (±15%) | no program | Figure 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 band | 1.15e+12 cm⁻² eV⁻¹ | no program | not modelled (±15%) | no program | Figure 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.
| Unknown | What the paper says | Range searched | The reproduction used | Best alone | Score at the reproduction's value | Best score alone |
|---|---|---|---|---|---|---|
| Final oxidation, dry O2, 900 °C, to 9.3 nm: duration | no oxidation time is printed for any sample; chosen to give the thickness, searched 0.5 to 2 times | 0.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): duration | not stated; 6 s to 10 min and an end of 200 to 800 °C searched | 6 to 600 s | 60 s | 600 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 end | not stated; 6 s to 10 min and an end of 200 to 800 °C searched | 200 to 800 °C | 400 °C | 400 °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:
| Variant | Alone | With 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 nitrogen | 0 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 off, 15 not modelled of 18 numbers with the aligned settings (the samples used to choose the unknowns are left out).
| Sample | Quantity | The paper | As reproduced above | Aligned | Difference | Verdict | How |
|---|---|---|---|---|---|---|---|
| n-Si/SiO2/Au, second set, 125 Å | trap density at the profile's minimum (near midgap), no anneal | 1.65e+11 cm⁻² eV⁻¹ | 4.28e+11 | 4.13e+11 | +150% | off (±15%) | test |
| n-Si/SiO2/Au, second set, 125 Å | peak density near the valence band | 4.00e+11 cm⁻² eV⁻¹ | no program | no program | not modelled (±15%) | test | |
| n-Si/SiO2/Au, second set, 164 Å | trap density at the profile's minimum (near midgap), no anneal | 2.71e+11 cm⁻² eV⁻¹ | 4.21e+11 | 4.00e+11 | +47% | off (±15%) | test |
| n-Si/SiO2/Au, second set, 164 Å | peak density near the valence band | 1.59e+12 cm⁻² eV⁻¹ | no program | no program | not modelled (±15%) | test | |
| n-Si/SiO2/Au, second set, 208 Å | trap density at the profile's minimum (near midgap), no anneal | 2.00e+11 cm⁻² eV⁻¹ | 4.12e+11 | 3.83e+11 | +92% | off (±15%) | test |
| n-Si/SiO2/Au, second set, 208 Å | peak density near the valence band | 7.80e+11 cm⁻² eV⁻¹ | no program | no program | not modelled (±15%) | test | |
| n-Si/SiO2/Au, first set, about 93 Å | peak density near the valence band | 1.22e+12 cm⁻² eV⁻¹ | no program | no program | not modelled (±15%) | test | |
| n-Si/SiO2/Au, first set, about 103 Å | peak density near the valence band | 7.10e+11 cm⁻² eV⁻¹ | no program | no program | not modelled (±15%) | test | |
| n-Si/SiO2/Au, first set, about 138 Å | peak density near the valence band | 1.88e+12 cm⁻² eV⁻¹ | no program | no program | not modelled (±15%) | test | |
| n-Si/SiO2/Au, first set, about 166 Å | peak density near the valence band | 1.92e+12 cm⁻² eV⁻¹ | no program | no program | not modelled (±15%) | test | |
| n-Si/SiO2/Au, first set, about 186 Å | peak density near the valence band | 1.04e+12 cm⁻² eV⁻¹ | no program | no program | not modelled (±15%) | test | |
| n-Si/SiO2/Au, first set, about 203 Å | peak density near the valence band | 8.50e+11 cm⁻² eV⁻¹ | no program | no program | not modelled (±15%) | test | |
| p-Si/SiO2/Al, about 80 Å | peak density near the conduction band | 1.00e+12 cm⁻² eV⁻¹ | no program | no program | not modelled (±15%) | test | |
| p-Si/SiO2/Al, about 90 Å | peak density near the conduction band | 7.10e+11 cm⁻² eV⁻¹ | no program | no program | not modelled (±15%) | test | |
| p-Si/SiO2/Al, about 126 Å | peak density near the conduction band | 1.73e+12 cm⁻² eV⁻¹ | no program | no program | not modelled (±15%) | test | |
| p-Si/SiO2/Al, about 148 Å | peak density near the conduction band | 4.00e+12 cm⁻² eV⁻¹ | no program | no program | not modelled (±15%) | test | |
| p-Si/SiO2/Al, about 176 Å | peak density near the conduction band | 1.62e+12 cm⁻² eV⁻¹ | no program | no program | not modelled (±15%) | test | |
| p-Si/SiO2/Al, about 226 Å | peak density near the conduction band | 1.15e+12 cm⁻² eV⁻¹ | no program | no program | not 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(orETCH 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|pullon 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_MEASUREDchecked 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_Ecwith 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. ACLEAN: sacrificial_oxide_HFwould 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.
| History | Within tolerance | Median error | Changed numbers |
|---|---|---|---|
| as the paper states it (above) | 0 of 24 | 105.8% | |
| heat-up A (hot push), fast cooling | 0 of 24 | 105.6% | 0 of 24 moved by more than 2% |
| heat-up A (hot push), slow cooling | 0 of 24 | 105.6% | 0 of 24 moved by more than 2% |
| heat-up B (cold-furnace ramp), fast cooling | 0 of 24 | 104.8% | 0 of 24 moved by more than 2% |
| heat-up B (cold-furnace ramp), slow cooling | 0 of 24 | 104.8% | 0 of 24 moved by more than 2% |
The paper's own conclusions
| The paper states | What 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 range | not in the program |
| Unannealed profiles: a peak near Ev (0.23-0.44 eV, shifting with thickness) on a concave background | No distribution is predicted without a hydrogen anneal | not 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 high | partly |
| The valley/peak may reflect the change from field-aided to field-free oxidant transport | No program carries the oxidant transport regime | not tested |
What we would like Emily to check
- 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?
- 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?
- 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)?
- 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?