Agentic PrimitivesAP

Study reproduced ·

Reproducing Deal, Sklar, Grove and Snow 1967: fixed charge and the last hot step

Deal, Sklar, Grove and Snow 1967: 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 (9 within, 4 near).

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/deal_1967.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

B. E. Deal, M. Sklar, A. S. Grove and E. H. Snow, “Characteristics of the Surface-State Charge (Qss) of Thermally Oxidized Silicon”, J. Electrochem. Soc. 114, 266 (1967).

The origin of the statement that fixed charge is set by the last hot step. Its Table I (charge against pull time) is what our pull model was fitted on, and its Tables II and III give 16 values in the graph. The fixed-charge program the predictor runs was fitted to another laboratory's anneals and uses this paper's steady-state line as a sourced input.

How well can this study be reproduced?

Moderate. The charge values are printed and the pull times are given to the second, but the paper gives a pull as tube travel time, never as wafer temperature, and gives an oxidation time for one table only. The quantity that carries the result, how the slice cools, is the one thing a simulation must invent.

Sample described1 of 5 properties we need are stated and encoded the same
History described2 of 8 steps are stated and encoded the same; 4 are stated by the paper and absent from our history; 0 are ours because the paper is silent
Timing1 of 3 simulated steps have a stated duration; 5 of 5 other steps have none; 6 timing gaps listed below
How the results are givenPrinted tables (I to III); Figures 3 and 4 not used
Repeatability stated by the authorsYes: “always better than 5 × 10^10 cm-2”
Internal consistencyFair: the standard fast pull is 1.9 in Table I and 1.7 in Tables II to IV; the tube is 50, 54 or 53.3 cm
Is our model independent of this paper's data?Mostly. The program was fitted to another laboratory's anneals and takes this paper's steady-state line as a sourced input; the end temperature of a pull (400 °C) was chosen against Table I
Outcome9 of 13 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 8 · recorded, not simulated
Solvent clean and chemical polish
temperature 25 °C
elapsed 0 s of 1 h 03 min 33 s
timing in the paper: not stated

“cleaned in both organic and inorganic solvents using ultrasonic agitation … chemically polished in a 4HF:10HNO3 solution … Approximately 50µ per side were removed”

The simulation at this moment
oxide thickness0 nm
fixed charge2.23×10¹¹ cm⁻²1.90×10¹¹
right column: the paper, at the end of the history
PolishLoadOxidation60 minPull3 sStripMetalMetalAnneal3.5 minCV12000 °CThe same history to true scale (1 h 03 min 33 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. 3 same, 4 approximated, 6 not in ours.

✓3 same≈4 approximated✕6 not in ours
Sample: what the paper saysWhat we simulate
Substrate
“single crystal Czochralski type … circular slices approximately 2 cm in diameter”, lapped to 250 µm; (111), (110) and (100)
PDF p. 2
✓same
FAMILY: Si_Planar; ORIENTATION: Si111 | Si100
We hold no (110) rows from this paper.
Doping
“Both p- and n-type dopants (boron and phosphorus) … ~10^16 cm-3”; Table I: p-type, boron, 1.4 × 10^16 cm-3
PDF p. 2–3
≈approximated
DOPING: p_type_boron_1p4e16 (recorded; no program reads it)
Tables II and III do not say which conductivity type each value is from.
Surface before oxidation
Chemically polished in 4HF:10HNO3, about 50 µm removed per side
PDF p. 2
✕not in ours
CLEAN: not_stated
Oxide
0.20 µm for Table I and for every point of Figure 3
PDF p. 3
≈approximated
not a sample property in ours: the oxide is grown by the history
Below 920 °C the paper's oxides were grown at 1200 °C and then held at the lower temperature, so the thickness was not grown at the temperature the charge is quoted for.
Device
Aluminium field plates 375 µm in diameter, or a gold pressure probe on bare oxide
PDF p. 2
✕not in ours
not in our sample
History: what the paper saysWhat we simulate
Solvent clean and chemical polish
“cleaned in both organic and inorganic solvents using ultrasonic agitation … chemically polished in a 4HF:10HNO3 solution … Approximately 50µ per side were removed”
PDF p. 2
✕not in ours
CLEAN: not_stated on the sample
The vocabulary's list of cleans has no entry for an HF-nitric chemical polish.
Slices flat on a quartz boat, into the tube
“placed flat on a thin quartz boat and inserted in a tube furnace with separate systems being used for n- and p-type samples”
PDF p. 2
✕not in ours
not in our history
Dry oxidation at 1200 °C
“(Samples were oxidized at 1200°C for 60 min. xo = 0.2µ.” (Table I caption)
PDF p. 3
✓same
RUN Oxidation DURATION 3600 TEMP 1200->1200 AMBIENT dry_O2
The datasets' recipe for this row has no oxidation: the charge program starts from its steady state in oxygen at this temperature.
Pull from the furnace, 3 s
“the standard one being very rapid (less than 3 sec through the 50 cm from the center of the furnace to the end of the tube)”
PDF p. 2
≈approximated
RUN Pull DURATION 3 TEMP 1200->400 AMBIENT dry_O2
The paper gives the time to travel the tube, not the wafer's temperature against time. A straight fall to 400 °C is ours; 400 °C was chosen because it fits Table I best among 300 to 800 °C.
50–100 Å of oxide removed in dilute HF, back oxide removed
“metallized with aluminum on the top surface after first removing 50-100Å of oxide in a 10:1 H2O:HF solution”
PDF p. 2
✕not in ours
not in our history
The 0.2 µm oxide is thinned by 2.5 to 5%; no program reads it.
Aluminium field plates, 375 µm
“metallized with aluminum on the top surface”; selected samples instead measured bare with a gold probe
PDF p. 2
✕not in ours
not in our history
Which tabulated samples took which route is not identified. The deposition method is not given.
Heat treatment after metal, 550 °C in nitrogen
“Finally, the slices were heat treated at 550°C for 2-5 min in dry nitrogen.”
PDF p. 2
≈approximated
RUN MetalAnneal DURATION 210 TEMP 550->550 AMBIENT inert_N2
Not in the datasets' recipe. Written here as 3.5 min, the middle of the stated range; it applies to the metallized samples only.
C-V at about 100 kc, 25 °C
“Capacitance measurement frequency was about 100 kc and measurements were at 25°C.” Reproducibility “always better than 5 × 10^10 cm-2”
PDF p. 3
✓same
the observable Qss

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.

(111), 1200 °C, standard fast pull

#StepStarts atLastsEnds atTemperatureRateGasIs the timing in the paper?
1Solvent clean and chemical polish0 snot simulatednot stated
2Slices flat on a quartz boat, into the tube0 snot simulatednot stated. Push rate and push gas not given
3Dry oxidation at 1200 °C0 s1 h 00 min1 h 00 min1200 → 1200 °Chelddry_O2stated. 60 min, from the Table I caption; Tables II and III give no time
4Pull from the furnace, 3 s1 h 00 min3 s1 h 00 min 03 s1200 → 400 °C-267 °C/sdry_O2partly stated. “less than 3 sec” is a bound; 3 s used; the end temperature is not given and is searched from 25 to 700 °C
550–100 Å of oxide removed in dilute HF, back oxide removed1 h 00 min 03 snot simulatednot stated
6Aluminium field plates, 375 µm1 h 00 min 03 snot simulatednot stated
7Heat treatment after metal, 550 °C in nitrogen1 h 00 min 03 s3 min 30 s1 h 03 min 33 s550 → 550 °Cheldinert_N2partly stated. “2-5 min”; 3.5 min used, searched from 2 to 5 min
8C-V at about 100 kc, 25 °C1 h 03 min 33 snot simulatednot stated

Simulated time in this history: 1 h 03 min 33 s.

Across the samples

SampleOxidationPullMetalAnnealOxygenHoldNitrogenAnnealOxidation920ArgonAnnealTotal
(111), 1200 °C, standard fast pull1 h 00 min at 1200 °C3 s at 1200→400 °C3 min 30 s at 550 °C––––1 h 03 min 33 s
(111), 1200 °C, pulled in 10 s1 h 00 min at 1200 °C10.02 s at 1200→400 °C3 min 30 s at 550 °C––––1 h 03 min 40 s
(111), 1200 °C, pulled in 30 s1 h 00 min at 1200 °C30 s at 1200→400 °C3 min 30 s at 550 °C––––1 h 04 min
(111), 1200 °C, pulled in 1 min1 h 00 min at 1200 °C1 min at 1200→400 °C3 min 30 s at 550 °C––––1 h 04 min 30 s
(111), 1200 °C, pulled in 2.8 min1 h 00 min at 1200 °C2 min 48 s at 1200→400 °C3 min 30 s at 550 °C––––1 h 06 min 18 s
(111), 1200 °C, pulled in 34 min1 h 00 min at 1200 °C34 min at 1200→400 °C3 min 30 s at 550 °C––––1 h 37 min 30 s
(111), 1200 °C, then oxygen at 900 °C1 h 00 min at 1200 °C3 s at 900→400 °C3 min 30 s at 550 °C10 min at 900 °C–––1 h 13 min 33 s
(111), 1200 °C, then oxygen at 550 °C1 h 00 min at 1200 °C3 s at 550→400 °C3 min 30 s at 550 °C1 h 30 min at 550 °C–––2 h 33 min 33 s
(111), 1200 °C, then nitrogen at 1200 °C1 h 00 min at 1200 °C3 s at 1200→400 °C3 min 30 s at 550 °C–10 min at 1200 °C––1 h 13 min 33 s
(111), 920 °C, then argon at 920 °C–3 s at 920→400 °C3 min 30 s at 550 °C––1 h 00 min at 920 °C30 min at 920 °C1 h 33 min 33 s
(100), 1200 °C, standard fast pull1 h 00 min at 1200 °C3 s at 1200→400 °C3 min 30 s at 550 °C––––1 h 03 min 33 s
(100), 1200 °C, then oxygen at 550 °C1 h 00 min at 1200 °C3 s at 550→400 °C3 min 30 s at 550 °C1 h 30 min at 550 °C–––2 h 33 min 33 s
(100), 920 °C, then argon at 920 °C–3 s at 920→400 °C3 min 30 s at 550 °C––1 h 00 min at 920 °C30 min at 920 °C1 h 33 min 33 s

Timing the paper does not give

  • The wafer's temperature against time during a pull. The paper gives the time to travel from the centre of the furnace to the end of the tube; where and in what gas the slice then cools is not said.
  • The tube length: 50 cm in the text, 54 cm in the Table I caption, 53.3 cm from the tabulated rate times the time.
  • Oxidation time for everything except Table I (60 min). Tables II and III give neither time nor thickness.
  • How the temperature was changed between the 1200 °C oxidation and the lower-temperature hold in oxygen: the same tube cooling, or a move to a second furnace. “Immediately” is all the paper says.
  • The pull after an anneal (speed and gas).
  • The 550 °C nitrogen treatment after metallization is “2-5 min”.

What the second reading changed

  • The recipe stored with each of these measurements is one step: the pull, or the anneal. The oxidation that came before it (1200 °C, 60 min, dry oxygen, 0.2 µm) is absent, and so is the pull that must follow an anneal.
  • The argon anneal at 920 °C is stored as inert_N2. The language has had inert_Ar since the SiC work; the row was never updated.
  • Metallized samples were heated at 550 °C for 2 to 5 min in dry nitrogen before measurement. No stored recipe has this step. Samples measured with a gold probe did not get it, and the paper does not say which table values are which.
  • Table I's fast-pull value is 1.9 × 10^11 cm^-2 and Tables II to IV give 1.7 for the same recipe; the slow pull of 2 min in Table III (7.4) sits beside 7.3 at 1.0 min and 8.9 at 2.8 min in Table I. The paper's own repeatability is about 0.5 × 10^11.
  • The end temperature of the pull (400 °C) is not from the paper. It was chosen by us as the best of six candidates against Table I, so the pull rows are fitted in one more number than their record says.

Their terms and ours

The paper saysWe writeKind in our vocabularyNote
Qss: surface-state chargeQssobservable (target: fixed_charge), same as Nf and Qf; quantity fixed-chargeThe 1967 name for what was later called fixed oxide charge.
pulling rate, pulling timeRUN Pull DURATION t TEMP T->400 AMBIENT dry_O2a RUN; process factor slow-pull-in-oxygenThe paper's variable is tube travel time; ours is a temperature ramp.
dry O2dry_O2ambient
wet O2 (oxygen bubbled through 95 °C water)wet_O2ambientThe language gives wet_O2 no partial pressures, so the Table III C rows are not simulated.
annealed in nitrogen or argon`RUN … AMBIENT inert_N2inert_Ar`a RUN; process factor inert-annealThe datasets write the argon anneal as inert_N2.
steady state value (of Qss at a temperature)Q_hot + slope × (T_ref − T)QUANTITY in the program; operator kind RelaxationThe triangle of Figure 5, as a line.
heat treated at 550 °C … in dry nitrogenRUN MetalAnneal DURATION 210 TEMP 550->550 AMBIENT inert_N2a RUNNo hydrogen: not the factor hydrogen-anneal.
(111), (110), (100)ORIENTATION: Si111 …sample field; process factor orientation

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>.

(111), 1200 °C, standard fast pull

# (111), 1200 °C, standard fast pull
SAMPLE Slice_111_pull_3s {
    FAMILY: Si_Planar
    ORIENTATION: Si111
    CLEAN: not_stated
    DOPING: p_type_boron_1p4e16
}
CONTROL_TRAJECTORY History {
    EVENT Polish KIND clean TIMING assumed                       # Solvent clean and chemical polish
    EVENT Load KIND load TIMING assumed                          # Slices flat on a quartz boat, into the tube
    RUN Oxidation DURATION 3600 TEMP 1200->1200 AMBIENT dry_O2 TIMING stated
    RUN Pull DURATION 3 TEMP 1200->400 AMBIENT dry_O2 TIMING bound VARY T_end 25..700 VARY duration 1..3
    EVENT Strip KIND etch TIMING assumed                         # 50–100 Å of oxide removed in dilute HF, back oxide removed
    EVENT Metal KIND metallization TIMING assumed                # Aluminium field plates, 375 µm
    RUN MetalAnneal DURATION 210 TEMP 550->550 AMBIENT inert_N2 TIMING range VARY duration 120..300
    EVENT CV KIND measurement TIMING assumed                     # C-V at about 100 kc, 25 °C
}

(111), 1200 °C, pulled in 10 s

# (111), 1200 °C, pulled in 10 s
SAMPLE Slice_111_pull_10s {
    FAMILY: Si_Planar
    ORIENTATION: Si111
    CLEAN: not_stated
    DOPING: p_type_boron_1p4e16
}
CONTROL_TRAJECTORY History {
    EVENT Polish KIND clean TIMING assumed                       # Solvent clean and chemical polish
    EVENT Load KIND load TIMING assumed                          # Slices flat on a quartz boat, into the tube
    RUN Oxidation DURATION 3600 TEMP 1200->1200 AMBIENT dry_O2 TIMING stated
    RUN Pull DURATION 10.02 TEMP 1200->400 AMBIENT dry_O2 TIMING stated VARY T_end 25..700
    EVENT Strip KIND etch TIMING assumed                         # 50–100 Å of oxide removed in dilute HF, back oxide removed
    EVENT Metal KIND metallization TIMING assumed                # Aluminium field plates, 375 µm
    RUN MetalAnneal DURATION 210 TEMP 550->550 AMBIENT inert_N2 TIMING range VARY duration 120..300
    EVENT CV KIND measurement TIMING assumed                     # C-V at about 100 kc, 25 °C
}

(111), 1200 °C, pulled in 30 s

# (111), 1200 °C, pulled in 30 s
SAMPLE Slice_111_pull_30s {
    FAMILY: Si_Planar
    ORIENTATION: Si111
    CLEAN: not_stated
    DOPING: p_type_boron_1p4e16
}
CONTROL_TRAJECTORY History {
    EVENT Polish KIND clean TIMING assumed                       # Solvent clean and chemical polish
    EVENT Load KIND load TIMING assumed                          # Slices flat on a quartz boat, into the tube
    RUN Oxidation DURATION 3600 TEMP 1200->1200 AMBIENT dry_O2 TIMING stated
    RUN Pull DURATION 30 TEMP 1200->400 AMBIENT dry_O2 TIMING stated VARY T_end 25..700
    EVENT Strip KIND etch TIMING assumed                         # 50–100 Å of oxide removed in dilute HF, back oxide removed
    EVENT Metal KIND metallization TIMING assumed                # Aluminium field plates, 375 µm
    RUN MetalAnneal DURATION 210 TEMP 550->550 AMBIENT inert_N2 TIMING range VARY duration 120..300
    EVENT CV KIND measurement TIMING assumed                     # C-V at about 100 kc, 25 °C
}

(111), 1200 °C, pulled in 1 min

# (111), 1200 °C, pulled in 1 min
SAMPLE Slice_111_pull_60s {
    FAMILY: Si_Planar
    ORIENTATION: Si111
    CLEAN: not_stated
    DOPING: p_type_boron_1p4e16
}
CONTROL_TRAJECTORY History {
    EVENT Polish KIND clean TIMING assumed                       # Solvent clean and chemical polish
    EVENT Load KIND load TIMING assumed                          # Slices flat on a quartz boat, into the tube
    RUN Oxidation DURATION 3600 TEMP 1200->1200 AMBIENT dry_O2 TIMING stated
    RUN Pull DURATION 60 TEMP 1200->400 AMBIENT dry_O2 TIMING stated VARY T_end 25..700
    EVENT Strip KIND etch TIMING assumed                         # 50–100 Å of oxide removed in dilute HF, back oxide removed
    EVENT Metal KIND metallization TIMING assumed                # Aluminium field plates, 375 µm
    RUN MetalAnneal DURATION 210 TEMP 550->550 AMBIENT inert_N2 TIMING range VARY duration 120..300
    EVENT CV KIND measurement TIMING assumed                     # C-V at about 100 kc, 25 °C
}

(111), 1200 °C, pulled in 2.8 min

# (111), 1200 °C, pulled in 2.8 min
SAMPLE Slice_111_pull_168s {
    FAMILY: Si_Planar
    ORIENTATION: Si111
    CLEAN: not_stated
    DOPING: p_type_boron_1p4e16
}
CONTROL_TRAJECTORY History {
    EVENT Polish KIND clean TIMING assumed                       # Solvent clean and chemical polish
    EVENT Load KIND load TIMING assumed                          # Slices flat on a quartz boat, into the tube
    RUN Oxidation DURATION 3600 TEMP 1200->1200 AMBIENT dry_O2 TIMING stated
    RUN Pull DURATION 168 TEMP 1200->400 AMBIENT dry_O2 TIMING stated VARY T_end 25..700
    EVENT Strip KIND etch TIMING assumed                         # 50–100 Å of oxide removed in dilute HF, back oxide removed
    EVENT Metal KIND metallization TIMING assumed                # Aluminium field plates, 375 µm
    RUN MetalAnneal DURATION 210 TEMP 550->550 AMBIENT inert_N2 TIMING range VARY duration 120..300
    EVENT CV KIND measurement TIMING assumed                     # C-V at about 100 kc, 25 °C
}

(111), 1200 °C, pulled in 34 min

# (111), 1200 °C, pulled in 34 min
SAMPLE Slice_111_pull_2040s {
    FAMILY: Si_Planar
    ORIENTATION: Si111
    CLEAN: not_stated
    DOPING: p_type_boron_1p4e16
}
CONTROL_TRAJECTORY History {
    EVENT Polish KIND clean TIMING assumed                       # Solvent clean and chemical polish
    EVENT Load KIND load TIMING assumed                          # Slices flat on a quartz boat, into the tube
    RUN Oxidation DURATION 3600 TEMP 1200->1200 AMBIENT dry_O2 TIMING stated
    RUN Pull DURATION 2040 TEMP 1200->400 AMBIENT dry_O2 TIMING stated VARY T_end 25..700
    EVENT Strip KIND etch TIMING assumed                         # 50–100 Å of oxide removed in dilute HF, back oxide removed
    EVENT Metal KIND metallization TIMING assumed                # Aluminium field plates, 375 µm
    RUN MetalAnneal DURATION 210 TEMP 550->550 AMBIENT inert_N2 TIMING range VARY duration 120..300
    EVENT CV KIND measurement TIMING assumed                     # C-V at about 100 kc, 25 °C
}

(111), 1200 °C, then oxygen at 900 °C

# (111), 1200 °C, then oxygen at 900 °C
SAMPLE Slice_111_O2_900 {
    FAMILY: Si_Planar
    ORIENTATION: Si111
    CLEAN: not_stated
    DOPING: p_type_boron_1p4e16
}
CONTROL_TRAJECTORY History {
    EVENT Polish KIND clean TIMING assumed                       # Solvent clean and chemical polish
    EVENT Load KIND load TIMING assumed                          # Slices flat on a quartz boat, into the tube
    RUN Oxidation DURATION 3600 TEMP 1200->1200 AMBIENT dry_O2 TIMING stated
    RUN OxygenHold DURATION 600 TEMP 900->900 AMBIENT dry_O2 TIMING stated
    RUN Pull DURATION 3 TEMP 900->400 AMBIENT dry_O2 TIMING bound VARY T_end 25..700 VARY duration 1..3
    EVENT Strip KIND etch TIMING assumed                         # 50–100 Å of oxide removed in dilute HF, back oxide removed
    EVENT Metal KIND metallization TIMING assumed                # Aluminium field plates, 375 µm
    RUN MetalAnneal DURATION 210 TEMP 550->550 AMBIENT inert_N2 TIMING range VARY duration 120..300
    EVENT CV KIND measurement TIMING assumed                     # C-V at about 100 kc, 25 °C
}

(111), 1200 °C, then oxygen at 550 °C

# (111), 1200 °C, then oxygen at 550 °C
SAMPLE Slice_111_O2_550 {
    FAMILY: Si_Planar
    ORIENTATION: Si111
    CLEAN: not_stated
    DOPING: p_type_boron_1p4e16
}
CONTROL_TRAJECTORY History {
    EVENT Polish KIND clean TIMING assumed                       # Solvent clean and chemical polish
    EVENT Load KIND load TIMING assumed                          # Slices flat on a quartz boat, into the tube
    RUN Oxidation DURATION 3600 TEMP 1200->1200 AMBIENT dry_O2 TIMING stated
    RUN OxygenHold DURATION 5400 TEMP 550->550 AMBIENT dry_O2 TIMING stated
    RUN Pull DURATION 3 TEMP 550->400 AMBIENT dry_O2 TIMING bound VARY duration 1..3
    EVENT Strip KIND etch TIMING assumed                         # 50–100 Å of oxide removed in dilute HF, back oxide removed
    EVENT Metal KIND metallization TIMING assumed                # Aluminium field plates, 375 µm
    RUN MetalAnneal DURATION 210 TEMP 550->550 AMBIENT inert_N2 TIMING range VARY duration 120..300
    EVENT CV KIND measurement TIMING assumed                     # C-V at about 100 kc, 25 °C
}

(111), 1200 °C, then nitrogen at 1200 °C

# (111), 1200 °C, then nitrogen at 1200 °C
SAMPLE Slice_111_N2_1200 {
    FAMILY: Si_Planar
    ORIENTATION: Si111
    CLEAN: not_stated
    DOPING: p_type_boron_1p4e16
}
CONTROL_TRAJECTORY History {
    EVENT Polish KIND clean TIMING assumed                       # Solvent clean and chemical polish
    EVENT Load KIND load TIMING assumed                          # Slices flat on a quartz boat, into the tube
    RUN Oxidation DURATION 3600 TEMP 1200->1200 AMBIENT dry_O2 TIMING stated
    RUN NitrogenAnneal DURATION 600 TEMP 1200->1200 AMBIENT inert_N2 TIMING stated
    RUN Pull DURATION 3 TEMP 1200->400 AMBIENT inert_N2 TIMING bound VARY T_end 25..700 VARY duration 1..3
    EVENT Strip KIND etch TIMING assumed                         # 50–100 Å of oxide removed in dilute HF, back oxide removed
    EVENT Metal KIND metallization TIMING assumed                # Aluminium field plates, 375 µm
    RUN MetalAnneal DURATION 210 TEMP 550->550 AMBIENT inert_N2 TIMING range VARY duration 120..300
    EVENT CV KIND measurement TIMING assumed                     # C-V at about 100 kc, 25 °C
}

(111), 920 °C, then argon at 920 °C

# (111), 920 °C, then argon at 920 °C
SAMPLE Slice_111_Ar_920 {
    FAMILY: Si_Planar
    ORIENTATION: Si111
    CLEAN: not_stated
    DOPING: p_type_boron_1p4e16
}
CONTROL_TRAJECTORY History {
    EVENT Polish KIND clean TIMING assumed                       # Solvent clean and chemical polish
    EVENT Load KIND load TIMING assumed                          # Slices flat on a quartz boat, into the tube
    RUN Oxidation920 DURATION 3600 TEMP 920->920 AMBIENT dry_O2 TIMING assumed VARY duration 1800..86400
    RUN ArgonAnneal DURATION 1800 TEMP 920->920 AMBIENT inert_Ar TIMING stated
    RUN Pull DURATION 3 TEMP 920->400 AMBIENT inert_Ar TIMING bound VARY T_end 25..700 VARY duration 1..3
    EVENT Strip KIND etch TIMING assumed                         # 50–100 Å of oxide removed in dilute HF, back oxide removed
    EVENT Metal KIND metallization TIMING assumed                # Aluminium field plates, 375 µm
    RUN MetalAnneal DURATION 210 TEMP 550->550 AMBIENT inert_N2 TIMING range VARY duration 120..300
    EVENT CV KIND measurement TIMING assumed                     # C-V at about 100 kc, 25 °C
}

(100), 1200 °C, standard fast pull

# (100), 1200 °C, standard fast pull
SAMPLE Slice_100_pull_3s {
    FAMILY: Si_Planar
    ORIENTATION: Si100
    CLEAN: not_stated
    DOPING: p_type_boron_1p4e16
}
CONTROL_TRAJECTORY History {
    EVENT Polish KIND clean TIMING assumed                       # Solvent clean and chemical polish
    EVENT Load KIND load TIMING assumed                          # Slices flat on a quartz boat, into the tube
    RUN Oxidation DURATION 3600 TEMP 1200->1200 AMBIENT dry_O2 TIMING stated
    RUN Pull DURATION 3 TEMP 1200->400 AMBIENT dry_O2 TIMING bound VARY T_end 25..700 VARY duration 1..3
    EVENT Strip KIND etch TIMING assumed                         # 50–100 Å of oxide removed in dilute HF, back oxide removed
    EVENT Metal KIND metallization TIMING assumed                # Aluminium field plates, 375 µm
    RUN MetalAnneal DURATION 210 TEMP 550->550 AMBIENT inert_N2 TIMING range VARY duration 120..300
    EVENT CV KIND measurement TIMING assumed                     # C-V at about 100 kc, 25 °C
}

(100), 1200 °C, then oxygen at 550 °C

# (100), 1200 °C, then oxygen at 550 °C
SAMPLE Slice_100_O2_550 {
    FAMILY: Si_Planar
    ORIENTATION: Si100
    CLEAN: not_stated
    DOPING: p_type_boron_1p4e16
}
CONTROL_TRAJECTORY History {
    EVENT Polish KIND clean TIMING assumed                       # Solvent clean and chemical polish
    EVENT Load KIND load TIMING assumed                          # Slices flat on a quartz boat, into the tube
    RUN Oxidation DURATION 3600 TEMP 1200->1200 AMBIENT dry_O2 TIMING stated
    RUN OxygenHold DURATION 5400 TEMP 550->550 AMBIENT dry_O2 TIMING stated
    RUN Pull DURATION 3 TEMP 550->400 AMBIENT dry_O2 TIMING bound VARY duration 1..3
    EVENT Strip KIND etch TIMING assumed                         # 50–100 Å of oxide removed in dilute HF, back oxide removed
    EVENT Metal KIND metallization TIMING assumed                # Aluminium field plates, 375 µm
    RUN MetalAnneal DURATION 210 TEMP 550->550 AMBIENT inert_N2 TIMING range VARY duration 120..300
    EVENT CV KIND measurement TIMING assumed                     # C-V at about 100 kc, 25 °C
}

(100), 920 °C, then argon at 920 °C

# (100), 920 °C, then argon at 920 °C
SAMPLE Slice_100_Ar_920 {
    FAMILY: Si_Planar
    ORIENTATION: Si100
    CLEAN: not_stated
    DOPING: p_type_boron_1p4e16
}
CONTROL_TRAJECTORY History {
    EVENT Polish KIND clean TIMING assumed                       # Solvent clean and chemical polish
    EVENT Load KIND load TIMING assumed                          # Slices flat on a quartz boat, into the tube
    RUN Oxidation920 DURATION 3600 TEMP 920->920 AMBIENT dry_O2 TIMING assumed VARY duration 1800..86400
    RUN ArgonAnneal DURATION 1800 TEMP 920->920 AMBIENT inert_Ar TIMING stated
    RUN Pull DURATION 3 TEMP 920->400 AMBIENT inert_Ar TIMING bound VARY T_end 25..700 VARY duration 1..3
    EVENT Strip KIND etch TIMING assumed                         # 50–100 Å of oxide removed in dilute HF, back oxide removed
    EVENT Metal KIND metallization TIMING assumed                # Aluminium field plates, 375 µm
    RUN MetalAnneal DURATION 210 TEMP 550->550 AMBIENT inert_N2 TIMING range VARY duration 120..300
    EVENT CV KIND measurement TIMING assumed                     # C-V at about 100 kc, 25 °C
}

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, experiments/deal_qss/two_equilibria.isl.template, as it is written. Every equation the simulation uses is in this text; the runtime holds no physics.

# ==============================================================================
# ISL MODEL: FIXED CHARGE WITH AN EQUILIBRIUM IN EACH GAS
#
# In oxygen the charge moves toward a steady value that falls with temperature (the
# line of Deal et al. 1967, unchanged, with the oxygen kinetics fitted there).
# In a gas without oxygen it moves toward a lower equilibrium that also falls with
# temperature, Qi_ref * exp(E_q / k_B * (1/T - 1/T_iref)), at a rate of its own.
#
# The inert clock and the (100) inert equilibrium are fitted to the argon time series
# of Akinwande, Ho and Plummer (1982). The (111) inert equilibrium is fitted to their
# cycling experiment, with the clock carried over from (100). The model is then
# tested, unchanged, on the Fairchild wafers of 1967 and 1980.
# Fields in {{braces}} are filled by scripts/run_fixed_charge_two_lines.py.
# ==============================================================================
SAMPLE Wafer_{tag} {{
    FAMILY: Si_Planar
    ORIENTATION: Si{orientation}
}}
# The wafer starts at the steady value for its oxidation temperature.
STATE Q_f {{ UNIT: cm^-2; INITIAL: Q_hot + slope * (T_hot - T_ox); MIN: 0; MAX: 1.0e14 }}
CONTROL T {{ UNIT: K }}
CONTROL p_O2 {{ UNIT: atm }}
PARAMETER Q_hot {{ VALUE: {Q_hot}; UNIT: cm^-2; STATUS: sourced; SOURCE: Deal et al. 1967 Table II, steady value after dry oxidation at 1200 C }}
PARAMETER slope {{ VALUE: {slope}; UNIT: cm^-2 K^-1; STATUS: sourced; SOURCE: Deal et al. 1967 Table II, line through the 1200 C and 920 C steady values }}
PARAMETER T_hot {{ VALUE: 1473.15; UNIT: K; STATUS: constant }}
PARAMETER T_ox {{ VALUE: {T_ox_K}; UNIT: K; STATUS: constant }}
# ---- fitted to the pull-rate series ------------------------------------------------
PARAMETER k0 {{ VALUE: 1.0e3; UNIT: s^-1; STATUS: fitted }}
PARAMETER E_a {{ VALUE: 1.0; UNIT: eV; STATUS: fitted }}
# ---- fitted to the argon anneals of Akinwande, Ho and Plummer (1982) -----------------
PARAMETER k_i0 {{ VALUE: 1.0e1; UNIT: s^-1; STATUS: fitted }}
PARAMETER E_i {{ VALUE: 0.9; UNIT: eV; STATUS: fitted }}
PARAMETER Qi_ref {{ VALUE: 2.5e10; UNIT: cm^-2; STATUS: fitted }}
PARAMETER E_q {{ VALUE: 0.4; UNIT: eV; STATUS: fitted }}
PARAMETER T_iref {{ VALUE: 1273.15; UNIT: K; STATUS: constant }}
PARAMETER p_ref {{ VALUE: 1.0; UNIT: atm; STATUS: constant }}
PARAMETER k_B {{ VALUE: 8.617333262e-5; UNIT: eV K^-1; STATUS: constant }}
# ---- where the exchange with oxygen stops as the wafer cools (hypothesis, added 10 November 2026) ----------------------
# The oxygen rate above was fitted with an activation energy at its lower bound (0.05 eV), so on its own it keeps moving
# charge at room temperature. Every history it was fitted and tested on ended its pull at 400 C, a cut-off that stood in for
# this. Reproducing Stanford 1982, Deal 1967 and Deal and Razouk 1980 with a wafer cooling to room temperature made the charge
# 3 to 5 times too high. The cut-off is now stated: the exchange is switched off over about 20 K around T_freeze. At 400 C it
# is 99% on, so every fitted and tested history is unchanged; how high the true freezing point is, is an open question
# (the Deal and Razouk alignment prefers pulls ending near 530 C).
PARAMETER T_freeze {{ VALUE: 623.15; UNIT: K; STATUS: hypothesis }}
PARAMETER w_freeze {{ VALUE: 10.0; UNIT: K; STATUS: hypothesis }}
QUANTITY rate {{ UNIT: s^-1; EQUATION: rate = k0 * exp(-E_a / (k_B * T)) / (1 + exp(-(T - T_freeze) / w_freeze)) }}
QUANTITY rate_inert {{ UNIT: s^-1; EQUATION: rate_inert = k_i0 * exp(-E_i / (k_B * T)) }}
QUANTITY Q_inert {{ UNIT: cm^-2; EQUATION: Q_inert = Qi_ref * exp((E_q / k_B) * (1 / T - 1 / T_iref)) }}
QUANTITY oxidizing {{ UNIT: 1; EQUATION: oxidizing = p_O2 / p_ref }}
QUANTITY Q_steady {{ UNIT: cm^-2; EQUATION: Q_steady = Q_hot + slope * (T_hot - T) }}
CONTROL_TRAJECTORY History_{tag} {{
{runs}
}}
# In oxygen the charge follows the temperature-dependent steady value.
OPERATOR F_OxidizingEquilibration : Relaxation {{
    EQUATION: d(Q_f)/dt = -rate * oxidizing * (Q_f - Q_steady)
}}
# Without oxygen it relaxes, at its own rate, toward an equilibrium of its own that falls as temperature rises.
# Akinwande, Ho and Plummer (1982) show the annealed charge cycling reversibly with temperature in argon.
OPERATOR F_InertRelaxation : Relaxation {{
    EQUATION: d(Q_f)/dt = -rate_inert * (1 - oxidizing) * (Q_f - Q_inert)
}}
OBSERVATION_MODEL Obs_Fixed_Charge {{ TARGET: Qss; UNIT: cm^-2; EQUATION: Qss = Q_f }}
EVALUATION_CONTRACT Contract_{tag} {{
    FROZEN: true
    DATASET: data/derived/deal_1967_qss.csv
    DATASET_DIGEST: sha256:{dataset_sha256}
    SPLIT: {split}
    TARGET: Qss = {target} +/- {tolerance} abs
}}

Our simulation against the paper

9 within, 4 near of 13 numbers. Tolerance is stated per row; nothing was fitted for this page.

✓9 within tolerance≈4 within twice the tolerance
simulation below the paper ← 0 → simulation above the paper-100%-50%0%+50%+100%(111), 1200 °C, standard fast pullfixed charge (Qss/q)ours 2.23×10¹¹ · paper 1.90×10¹¹ cm⁻²✓ within tolerance (+17%)(111), 1200 °C, pulled in 10 sfixed charge (Qss/q)ours 3.30×10¹¹ · paper 2.80×10¹¹ cm⁻²≈ within twice the tolerance (+18%)(111), 1200 °C, pulled in 30 sfixed charge (Qss/q)ours 5.41×10¹¹ · paper 5.60×10¹¹ cm⁻²✓ within tolerance (-3.5%)(111), 1200 °C, pulled in 1 minfixed charge (Qss/q)ours 7.09×10¹¹ · paper 7.30×10¹¹ cm⁻²✓ within tolerance (-2.8%)(111), 1200 °C, pulled in 2.8 minfixed charge (Qss/q)ours 8.95×10¹¹ · paper 8.90×10¹¹ cm⁻²✓ within tolerance (+0.5%)(111), 1200 °C, pulled in 34 minfixed charge (Qss/q)ours 1.01×10¹² · paper 9.80×10¹¹ cm⁻²✓ within tolerance (+3.6%)(111), 1200 °C, then oxygen at 900 °Cfixed charge (Qss/q)ours 5.23×10¹¹ · paper 4.60×10¹¹ cm⁻²≈ within twice the tolerance (+14%)(111), 1200 °C, then oxygen at 550 °Cfixed charge (Qss/q)ours 8.75×10¹¹ · paper 1.00×10¹² cm⁻²≈ within twice the tolerance (-13%)(111), 1200 °C, then nitrogen at 1200 °Cfixed charge (Qss/q)ours 9.74×10¹⁰ · paper 1.80×10¹¹ cm⁻²≈ within twice the tolerance (-46%)(111), 920 °C, then argon at 920 °Cfixed charge (Qss/q)ours 2.08×10¹¹ · paper 1.90×10¹¹ cm⁻²✓ within tolerance (+9.4%)(100), 1200 °C, standard fast pullfixed charge (Qss/q)+132% ▸ours 4.65×10¹⁰ · paper 2.00×10¹⁰ cm⁻²✓ within tolerance(100), 1200 °C, then oxygen at 550 °Cfixed charge (Qss/q)ours 3.72×10¹¹ · paper 4.20×10¹¹ cm⁻²✓ within tolerance (-11%)(100), 920 °C, then argon at 920 °Cfixed charge (Qss/q)ours 3.59×10¹⁰ · paper 7.00×10¹⁰ cm⁻²✓ within tolerance (-49%)
The pale green band is the tolerance. Bars past ±100% are cut and carry their value.
Sample and historyQuantityThe paperOur simulationDifferenceVerdictWhat the program's own evaluation saysWhere in the paper
(111), 1200 °C, standard fast pullfixed charge (Qss/q)1.90e+11 cm⁻²2.23e+11 cm⁻²+17%within (±26.3158%)supported within scopeTable I (Tables II–IV give 1.7)
(111), 1200 °C, pulled in 10 sfixed charge (Qss/q)2.80e+11 cm⁻²3.30e+11 cm⁻²+18%near (±17.8571%)supported within scopeTable I
(111), 1200 °C, pulled in 30 sfixed charge (Qss/q)5.60e+11 cm⁻²5.41e+11 cm⁻²-3%within (±10%)supported within scopeTable I
(111), 1200 °C, pulled in 1 minfixed charge (Qss/q)7.30e+11 cm⁻²7.09e+11 cm⁻²-3%within (±10%)supported within scopeTable I
(111), 1200 °C, pulled in 2.8 minfixed charge (Qss/q)8.90e+11 cm⁻²8.95e+11 cm⁻²+1%within (±10%)supported within scopeTable I
(111), 1200 °C, pulled in 34 minfixed charge (Qss/q)9.80e+11 cm⁻²1.02e+12 cm⁻²+4%within (±10%)supported within scopeTable I
(111), 1200 °C, then oxygen at 900 °Cfixed charge (Qss/q)4.60e+11 cm⁻²5.23e+11 cm⁻²+14%near (±10.8696%)supported within scopeTable III A
(111), 1200 °C, then oxygen at 550 °Cfixed charge (Qss/q)1.00e+12 cm⁻²8.75e+11 cm⁻²-13%near (±10%)supported within scopeTable III A
(111), 1200 °C, then nitrogen at 1200 °Cfixed charge (Qss/q)1.80e+11 cm⁻²9.74e+10 cm⁻²-46%near (±27.7778%)supported within scopeTable III B
(111), 920 °C, then argon at 920 °Cfixed charge (Qss/q)1.90e+11 cm⁻²2.08e+11 cm⁻²+9%within (±26.3158%)supported within scopeTable III B
(100), 1200 °C, standard fast pullfixed charge (Qss/q)2.00e+10 cm⁻²4.65e+10 cm⁻²+132%within (±250%)supported within scopeTable II
(100), 1200 °C, then oxygen at 550 °Cfixed charge (Qss/q)4.20e+11 cm⁻²3.72e+11 cm⁻²-11%within (±11.9048%)supported within scopeTable III A
(100), 920 °C, then argon at 920 °Cfixed charge (Qss/q)7.00e+10 cm⁻²3.59e+10 cm⁻²-49%within (±71.4286%)supported within scopeTable III B

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 111_pull_10s, 111_pull_168s, 111_pull_2040s, 111_pull_30s, 111_pull_3s, 111_pull_60s 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
Pull from the furnace, 3 s: T end“less than 3 sec” is a bound; 3 s used; the end temperature is not given and is searched from 25 to 700 °C25 to 700 °C400 °C250 °C5 of 6 within tolerance, median error 3.5%6 of 6 within tolerance, median error 7.5%
Pull from the furnace, 3 s: duration“less than 3 sec” is a bound; 3 s used; the end temperature is not given and is searched from 25 to 700 °C1 to 3 s3 s1 s (flat: the data do not constrain it)5 of 6 within tolerance, median error 3.5%5 of 6 within tolerance, median error 3.1%
Heat treatment after metal, 550 °C in nitrogen: duration“2-5 min”; 3.5 min used, searched from 2 to 5 min120 to 300 s210 s120 s5 of 6 within tolerance, median error 3.5%6 of 6 within tolerance, median error 3.5%

Together: Pull T end 400 °C (was 400); Pull duration 1 s (was 3); MetalAnneal duration 180 s (was 210).

As reproduced: 9 of 13 within tolerance, median error 12.5%. Aligned: 10 of 13 within tolerance, median error 9.3%. On the held-out samples only: 4 of 7 within tolerance, median error 13.6% as reproduced, 4 of 7 within tolerance, median error 13.1% aligned.

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

VariantAloneWith the aligned history
exponential pull toward 25 °C, TAU = pull time9 of 13 within tolerance, median error 12.5%9 of 13 within tolerance, median error 9.6%
exponential pull toward 25 °C, TAU = 0.3 × pull time9 of 13 within tolerance, median error 11.3%8 of 13 within tolerance, median error 12.0%
exponential pull toward 400 °C, TAU = 0.5 × pull time9 of 13 within tolerance, median error 12.5%9 of 13 within tolerance, median error 9.5%
then 20 s more cooling in oxygen (TAU 60 s)4 of 13 within tolerance, median error 42.6%3 of 13 within tolerance, median error 39.3%
then 10 min cooling to 25 °C in oxygen (TAU 60 s)4 of 13 within tolerance, median error 42.7%3 of 13 within tolerance, median error 39.3%
then 10 min cooling to 25 °C in air (TAU 60 s)7 of 13 within tolerance, median error 13.1%8 of 13 within tolerance, median error 13.1%
then 10 min cooling to 25 °C in nitrogen (TAU 60 s)9 of 13 within tolerance, median error 12.5%10 of 13 within tolerance, median error 9.3%

What was searched. Four things the paper leaves open: the temperature at which a pull ends (25 to 700 °C, one value for every pull that starts hot), the length of the standard fast pull (“less than 3 sec”: 1 to 3 s), the 550 °C nitrogen treatment after metal (“2-5 min”) and the 920 °C oxidation time (not given; 30 min to 24 h). They were chosen on Table I's six pulls only; the seven values of Tables II and III are the test.

The pull end temperature is pinned, and 400 °C stands. Scanned alone on Table I it passes 2 of 6 at 25 °C, 2 at 137 °C, 3 at 250 °C, 5 at 362 and 400 °C, 6 at 475 °C, 2 at 587 °C and 2 at 700 °C. The window that works is about 360 to 480 °C; outside it the six pulls cannot all be matched by any one end temperature. Combined with the other unknowns the search returned to 400 °C. This number is a fit: it was first chosen against Table I when the pull model was built, and it is chosen against Table I again here.

The other three unknowns barely matter. The fast-pull length moves the median error on Table I from 3.5% (3 s) to 3.1% (1 s) and changes no verdict. The 550 °C nitrogen treatment moves one Table I value across its tolerance (6 of 6 at 2 to 2.5 min, 5 of 6 at 3 to 5 min): the program's charge relaxes slightly without oxygen even at 550 °C. The 920 °C oxidation time changes nothing, because the charge program starts from its steady state and does not simulate the oxidation. Together: pull 1 s, metal treatment 2.5 min, pull end 400 °C, the 920 °C oxidation left at 60 min (its scan is flat).

On the held-out tables nothing improves. Tables II and III: 4 of 7 within tolerance as reproduced and 4 of 7 aligned, median error 13.6% and 13.1%. The (111) hold in oxygen at 900 °C moves inside its tolerance (5.02 against 4.6 × 10^11 cm^-2) and the (100) hold at 550 °C moves just outside (3.70 against 4.2). The nitrogen anneal at 1200 °C stays at about half the paper's value (0.97 against 1.8) and the (100) argon anneal at 920 °C stays at half (0.36 against 0.7): those are the program's equilibria without oxygen, which no timing unknown reaches.

The shape of the pull. An exponential fall toward 25 °C with a time constant equal to the pull time does as well as the straight fall to 400 °C (9 of 13, median 12.5%; 9.7% on the aligned history); it ends each pull at about 460 °C. So does an exponential fall toward 400 °C with a time constant of half the pull time (9 of 13). A faster exponential, time constant 0.3 × the pull time toward 25 °C, ends below 100 °C and fails (5 of 13, median 28.8%, simulation high). The data cannot tell a linear from an exponential pull; what they fix is that the charge must stop moving once the slice is somewhere around 400 to 480 °C.

Cooling to room temperature: a finding about the program, not the paper. The program's oxygen rate was fitted with an activation energy of 0.05 eV (k0 = 0.081 s^-1), so in oxygen its time constant is about 18 s at 1200 °C and still about 90 s at 25 °C, and the value it relaxes toward is the steady-state line extrapolated down in temperature: 14.3 × 10^11 cm^-2 on (111) and 6.5 × 10^11 on (100) at 25 °C. Twenty more seconds of cooling in oxygen after the pull takes the score from 9 of 13 to 2 of 13 (median 72%, every value high); ten minutes of cooling to 25 °C in oxygen gives 1 of 13 (median 210%), and in air 1 of 13 (median 172%). The same ten minutes in nitrogen changes nothing (9 of 13). A slice in 1967 did cool to room temperature, in oxygen or air, and kept 1.9 × 10^11. So the program reproduces Table I only because its histories stop at 400 °C: the end temperature of the pull is standing in for an activation energy the oxygen kinetics do not have.

✓4 within tolerance≈3 within twice the tolerance
simulation below the paper ← 0 → simulation above the paper-100%-50%0%+50%+100%(111), 1200 °C, then oxygen at 900 °Cfixed charge (Qss/q)ours 5.02×10¹¹ · paper 4.60×10¹¹ cm⁻²✓ within tolerance (+9.2%)(111), 1200 °C, then oxygen at 550 °Cfixed charge (Qss/q)ours 8.69×10¹¹ · paper 1.00×10¹² cm⁻²≈ within twice the tolerance (-13%)(111), 1200 °C, then nitrogen at 1200 °Cfixed charge (Qss/q)ours 9.68×10¹⁰ · paper 1.80×10¹¹ cm⁻²≈ within twice the tolerance (-46%)(111), 920 °C, then argon at 920 °Cfixed charge (Qss/q)ours 2.08×10¹¹ · paper 1.90×10¹¹ cm⁻²✓ within tolerance (+9.3%)(100), 1200 °C, standard fast pullfixed charge (Qss/q)ours 2.91×10¹⁰ · paper 2.00×10¹⁰ cm⁻²✓ within tolerance (+46%)(100), 1200 °C, then oxygen at 550 °Cfixed charge (Qss/q)ours 3.70×10¹¹ · paper 4.20×10¹¹ cm⁻²≈ within twice the tolerance (-12%)(100), 920 °C, then argon at 920 °Cfixed charge (Qss/q)ours 3.59×10¹⁰ · paper 7.00×10¹⁰ cm⁻²✓ within tolerance (-49%)
The pale green band is the tolerance. Bars past ±100% are cut and carry their value.

4 within, 3 near of 7 numbers with the aligned settings (the samples used to choose the unknowns are left out).

SampleQuantityThe paperAs reproduced aboveAlignedDifferenceVerdictHow
(111), 1200 °C, then oxygen at 900 °Cfixed charge (Qss/q)4.60e+11 cm⁻²5.23e+115.02e+11+9%within (±11%)test
(111), 1200 °C, then oxygen at 550 °Cfixed charge (Qss/q)1.00e+12 cm⁻²8.75e+118.69e+11-13%near (±10%)test
(111), 1200 °C, then nitrogen at 1200 °Cfixed charge (Qss/q)1.80e+11 cm⁻²9.74e+109.68e+10-46%near (±28%)test
(111), 920 °C, then argon at 920 °Cfixed charge (Qss/q)1.90e+11 cm⁻²2.08e+112.08e+11+9%within (±26%)test
(100), 1200 °C, standard fast pullfixed charge (Qss/q)2.00e+10 cm⁻²4.65e+102.91e+10+46%within (±250%)test
(100), 1200 °C, then oxygen at 550 °Cfixed charge (Qss/q)4.20e+11 cm⁻²3.72e+113.70e+11-12%near (±12%)test
(100), 920 °C, then argon at 920 °Cfixed charge (Qss/q)7.00e+10 cm⁻²3.59e+103.59e+10-49%within (±71%)test

Alignment cannot fix the oxygen kinetics. With a 0.05 eV activation energy the charge keeps following the extrapolated steady-state line at any temperature, which no measurement supports below about 550 °C (the lowest temperature in Table III). A freeze-out is needed: a rate with a real activation energy (refitted on Table I with histories that cool to room temperature), or a steady-state line that stops falling below some temperature. That is a change to a fitted program, which this page does not make.

Alignment cannot fix the anneals without oxygen either: nitrogen at 1200 °C and argon at 920 °C on (100) come out at about half the paper's values whatever the timing, because the inert equilibrium was fitted to another laboratory's wafers.

What our language and ontology cannot yet say

  • A pull as a motion through a furnace profile: PULL DISTANCE 54 cm DURATION t PROFILE <furnace axial temperature profile>, so that the wafer's temperature against time follows from the paper's own words (time and distance) instead of an end temperature and a shape we invent. The paper gives distance and time; we have to write a temperature ramp.
  • A history that ends at the measurement temperature by default (a final cooling to 25 °C written explicitly, with its gas). Our histories stop at the end of the last hot step, which is what hid the low-temperature behaviour of the charge program.
  • A way to search a PROFILE TAU as an unknown (VARY tau <lo>..<hi>, or VARY tau_factor relative to the duration). The exponential pull had to be tried as a handful of declared variants.
  • A tag for which samples were measured with a gold probe on bare oxide and which were metallized and given the 550 °C treatment: an optional step (EVENT … OPTIONAL, or two histories under one measured value), since the paper does not say which tabulated value is which.
  • An ambient for “the end of the tube”: where the slice sits after the pull (open tube, flowing oxygen, room air) is part of the history and has no word.

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)9 of 1312.5%
heat-up A (hot push), fast cooling7 of 1315.6%9 of 13 moved by more than 2%
heat-up A (hot push), slow cooling5 of 1345.8%10 of 13 moved by more than 2%
heat-up B (cold-furnace ramp), fast cooling7 of 1315.7%9 of 13 moved by more than 2%
heat-up B (cold-furnace ramp), slow cooling5 of 1345.6%10 of 13 moved by more than 2%

The paper's own conclusions

The paper statesWhat we find
A slower pull in oxygen raises the charge (Table I: 1.9 to 9.8 × 10^11 cm^-2)The six pull times are simulated abovesee the chart
An inert anneal lowers the charge to the value of a high-temperature oxidationSimulated for nitrogen at 1200 °C and argon at 920 °Csee the chart
The charge after an inert anneal does not depend on the anneal temperature (the triangle, Figure 5)Contradicted by other sources' measurements in the graph (123 matched pairs, 80% differ)not supported

What we would like Emily to check

  1. What does a slice's temperature do during and after a pull of this kind (a thin quartz boat, about 50 cm of tube)? A linear fall to 400 °C over the pull time is the weakest assumption on this page.
  2. Between the 1200 °C oxidation and a hold at 900 or 550 °C, was the practice of the time to move the boat to a second furnace?
  3. Does the 550 °C nitrogen treatment after aluminium change the fixed charge, in your experience, or only the interface traps?