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/vitkavage_1990.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. C. Vitkavage, E. A. Irene and H. Z. Massoud, “An Investigation of Si-SiO2 Interface Charges in Thermally Oxidized (100), (110), (111), and (511) Silicon”, ONR Technical Report 34 (1990), DTIC ADA231244; journal version J. Appl. Phys. 68, 5262.
This is the challenge's first reference, and the one the organisers say they evaluate first. We hold the technical-report version. From it the graph carries 46 midgap trap densities, 56 fixed-charge values and 6 oxide thicknesses; the trap-density program was found by a structure search on these wafers, and the growth program is scored on its six thicknesses with nothing fitted.
How well can this study be reproduced?
Moderate. The oxidation matrix and the anneal are stated and the electrical values are printed in tables with their spread. What a simulation still has to supply: the wafer's cooling after the pull, whether any tabulated wafer had the nitrogen anneal, and thickness for all but six conditions. The report's tables also disagree with each other in four places.
| Sample described | 1 of 6 properties we need are stated and encoded the same |
| History described | 2 of 9 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 |
| Timing | 2 of 3 simulated steps have a stated duration; 5 of 5 other steps have none; 6 timing gaps listed below |
| How the results are given | Electrical values in printed tables (III, IV, VI, VII) with the maximum spread; oxide thickness only in the running text, for six conditions; no thickness table |
| Repeatability stated by the authors | Yes: under 5% across a wafer and within 10% between identically processed wafers (cleanroom set) |
| Internal consistency | Poor for a reference: a units header off by ten (Table IV), a dropped zero (Table VII), 1.8 against 1.08 (Table III against II and VI), and text values that differ from the tables. Four needed a ruling from the project owner |
| Is our model independent of this paper's data? | Partly. Growth: nothing fitted. Fixed charge: fitted to another laboratory. Trap density: the program's structure and nine numbers were fitted to these wafers, with (511) and 900 °C held out |
| Outcome | 8 of 21 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.
“All wafers were cleaned using the modified RCA cleaning sequences prior to oxidation.”
| oxide thickness | 0 nm | 50 |
| consumed substrate | 0 nm | |
| fixed charge | 1.46×10¹¹ cm⁻² | 1.70×10¹¹ |
| interface state density at midgap | 3.65×10¹¹ cm⁻² eV⁻¹ | 5.00×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. 3 same, 6 approximated, 6 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.
(100), 1000 °C, 1 h, with PMA
| # | Step | Starts at | Lasts | Ends at | Temperature | Rate | Gas | Is the timing in the paper? |
|---|---|---|---|---|---|---|---|---|
| 1 | Pre-oxidation clean | 0 s | not simulated | partly stated. Only the HF dip (10 s) is timed, and only for the non-cleanroom set | ||||
| 2 | Load into the furnace in nitrogen | 0 s | not simulated | not stated. No push rate, no time in nitrogen before oxygen, no ramp | ||||
| 3 | Dry oxidation, 1000 °C, 1 h | 0 s | 1 h 00 min | 1 h 00 min | 1000 → 1000 °C | held | dry_O2 | stated. Table I. Whether the time counts from loading or from the gas switch is not said |
| 4 | Fast pull into the endcap, in oxygen | 1 h 00 min | 5 s | 1 h 00 min 05 s | 1000 → 400 °C | -120 °C/s | dry_O2 | partly stated. “shorter than 5 sec” is an upper bound; how long the wafer then cools in the endcap is not given |
| 5 | Stored in a nitrogen dry box | 1 h 00 min 05 s | not simulated | not stated. “until all oxidations were completed”: days, not given | ||||
| 6 | Aluminium evaporated | 1 h 00 min 05 s | not simulated | not stated | ||||
| 7 | Post-metallization anneal, 400 °C, 30 min, forming gas | 1 h 00 min 05 s | 30 min | 1 h 30 min 05 s | 400 → 400 °C | held | forming_gas_H2 | stated. 30 min at temperature; ramp up and cool down not given |
| 8 | Capacitance-voltage measurement | 1 h 30 min 05 s | not simulated | not stated |
Simulated time in this history: 1 h 30 min 05 s.
Across the samples
| Sample | Oxidation | Pull | PostMetalAnneal | N2_heatup_01 | N2_heatup_02 | N2_heatup_03 | N2_heatup_04 | N2_heatup_05 | N2_heatup_06 | N2_heatup_07 | N2_heatup_08 | N2_heatup_09 | N2_heatup_10 | N2_heatup_11 | N2_heatup_12 | PullTravel | O2_cool_01 | O2_cool_02 | O2_cool_03 | O2_cool_04 | O2_cool_05 | O2_cool_06 | FG_heatup_01 | FG_heatup_02 | FG_heatup_03 | FG_heatup_04 | FG_heatup_05 | FG_heatup_06 | FG_heatup_07 | FG_heatup_08 | FG_heatup_09 | FG_heatup_10 | FG_heatup_11 | FG_heatup_12 | FG_cool_01 | FG_cool_02 | FG_cool_03 | FG_cool_04 | FG_cool_05 | FG_cool_06 | FG_cool_07 | FG_cool_08 | FG_cool_09 | FG_cool_10 | FG_cool_11 | FG_cool_12 | Total |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| (100), 1000 °C, 1 h, with PMA | 1 h 00 min at 1000 °C | 5 s at 1000→400 °C | 30 min at 400 °C | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | 1 h 30 min 05 s |
| (111), 1000 °C, 1 h, with PMA | 1 h 00 min at 1000 °C | 5 s at 1000→400 °C | 30 min at 400 °C | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | 1 h 30 min 05 s |
| (100), 1000 °C, 8 h, with PMA | 8 h 00 min at 1000 °C | – | 30 min at 400 °C | 15 s at 25→359.494 °C | 15 s at 359.494→580.006 °C | 15 s at 580.006→725.377 °C | 15 s at 725.377→821.211 °C | 15 s at 821.211→884.389 °C | 15 s at 884.389→926.038 °C | 15 s at 926.038→953.495 °C | 15 s at 953.495→971.596 °C | 15 s at 971.596→983.529 °C | 15 s at 983.529→991.395 °C | 15 s at 991.395→996.581 °C | 15 s at 996.581→1000 °C | 5 s at 1000 °C | 1.5 s at 1000→800 °C | 3.2 s at 800→600 °C | 8.3 s at 600→400 °C | 28 s at 400→200 °C | 49 s at 200→100 °C | 3 min 30 s at 100→25 °C | 15 s at 25→153.652 °C | 15 s at 153.652→238.464 °C | 15 s at 238.464→294.376 °C | 15 s at 294.376→331.235 °C | 15 s at 331.235→355.534 °C | 15 s at 355.534→371.553 °C | 15 s at 371.553→382.114 °C | 15 s at 382.114→389.075 °C | 15 s at 389.075→393.665 °C | 15 s at 393.665→396.69 °C | 15 s at 396.69→398.685 °C | 15 s at 398.685→400 °C | 50 s at 400→271.348 °C | 50 s at 271.348→186.536 °C | 50 s at 186.536→130.624 °C | 50 s at 130.624→93.765 °C | 50 s at 93.765→69.4658 °C | 50 s at 69.4658→53.4468 °C | 50 s at 53.4468→42.8865 °C | 50 s at 42.8865→35.9246 °C | 50 s at 35.9246→31.3351 °C | 50 s at 31.3351→28.3095 °C | 50 s at 28.3095→26.3149 °C | 50 s at 26.3149→25 °C | 8 h 51 min 05 s |
| (111), 1000 °C, 8 h, with PMA | 8 h 00 min at 1000 °C | 5 s at 1000→400 °C | 30 min at 400 °C | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | 8 h 30 min 05 s |
| (110), 1000 °C, 1 h, with PMA | 1 h 00 min at 1000 °C | 5 s at 1000→400 °C | 30 min at 400 °C | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | 1 h 30 min 05 s |
| (511), 1000 °C, 1 h, with PMA | 1 h 00 min at 1000 °C | 5 s at 1000→400 °C | 30 min at 400 °C | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | 1 h 30 min 05 s |
| (100), 750 °C, 23 h, with PMA | 23 h 00 min at 750 °C | 5 s at 750→400 °C | 30 min at 400 °C | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | 23 h 30 min 05 s |
| (100), 1000 °C, 1 h, no anneal | 1 h 00 min at 1000 °C | 5 s at 1000→400 °C | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | 1 h 00 min 05 s |
| Non-cleanroom (100), 750 °C, 24 h | 24 h 00 min at 750 °C | 5 s at 750→400 °C | 30 min at 400 °C | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | 24 h 30 min 05 s |
| Non-cleanroom (110), 1100 °C, 0.5 h | 30 min at 1100 °C | 5 s at 1100→400 °C | 30 min at 400 °C | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | 1 h 00 min 05 s |
Timing the paper does not give
- How long the wafers sat in nitrogen in the furnace before oxygen was admitted, and at what temperature they were loaded.
- Any ramp: the report describes none, so each oxidation is written as a hold at one temperature for the Table I time.
- How long a wafer takes to cool in the endcap after the pull, and to what temperature. Our fixed-charge program is sensitive to exactly this interval.
- The duration of the nitrogen anneal that “some wafers” received.
- The time between oxidation and metallization (storage in a nitrogen dry box), and between metallization and measurement.
- The 750, 800 and 900 °C oxidations each have one duration (23, 18 and 4.5 h), chosen to give similar thickness, so temperature and time cannot be told apart in those rows; only at 1000 °C is time varied (1, 2.5, 4, 8 h).
What the second reading changed
- Every wafer was pulled in under 5 s in the oxidizing gas. The recipe stored with each measurement stops at the end of the oxidation (plus the anneal); the pull is on the source record, not in the history. Written as a step it moves the simulated fixed charge of the (100), 1000 °C, 1 h wafer from 1.46 to 1.58 × 10^11 cm^-2.
- The report describes two sample sets. Dry oxygen under 6 ppm water, the HF-last clean and boron doping are stated for the non-cleanroom set only; for the cleanroom set, which all our electrical values come from, the gas is never named. Our library records one set of conditions for the source.
- “Some wafers” had a nitrogen anneal at the oxidation temperature after oxidation. The report gives no duration and does not say which tabulated values, if any, come from them. Our histories have none.
- The (110) wafers are 3-inch and were metallized in a separate run from the other three orientations, so an orientation comparison involving (110) is also a comparison between two metallization runs.
- Two of the six thicknesses we score growth on are from the non-cleanroom set (24 h and 0.5 h, not the cleanroom times).
Their terms and ours
| The paper says | We write | Kind in our vocabulary | Note |
|---|---|---|---|
| Qf, Nf: fixed oxide charge | Nf | observable (target: fixed_charge); quantity fixed-charge | Qf, Nf and Qss are one observable in the vocabulary. |
| Dit: interface trap density at midgap | Dit | observable (target: trap_density); quantity interface-state-density | After a PMA it is the separate quantity interface-state-density-after-hydrogen-anneal. |
| PMA: post-metallization anneal in forming gas | RUN PostMetalAnneal DURATION 1800 TEMP 400->400 AMBIENT forming_gas_H2 | a RUN; process factor hydrogen-anneal | |
| NPMA | (no RUN after the pull) | absence of a step | |
| forming gas (FG), 10% H2 and 90% N2 | forming_gas_H2 | ambient | p_H2 = 0.1 atm, p_N2 = 0.9 atm. |
| dry oxygen … less than 6 ppm of water | dry_O2 | ambient | The moisture could be written mix:O2=0.999994,H2O=6.0e-6; it is an upper bound and no program reads it. |
| pulled fast into the endcap | RUN Pull DURATION 5 TEMP T->400 AMBIENT dry_O2 | a RUN; process factor final-anneal | The opposite of the factor slow-pull-in-oxygen. |
| POA: post-oxidation anneal in N2 | RUN … AMBIENT inert_N2 | a RUN; process factor inert-anneal | Stated, not used: no duration is given. |
| (100), (110), (111), (511) | ORIENTATION: Si100 … | sample field; process factor orientation | The growth program has no constant for (511) and uses (100). |
| modified RCA cleaning | CLEAN: RCA | sample field; process factor pre-oxidation-clean | |
| cleanroom / non-cleanroom | (none) | nearest: process factor laboratory | No sample field says where a wafer was made. |
| Qm: mobile ionic charge | (none) | domain term mobile-ionic-charge, not modelled | |
| oxide thickness (manual ellipsometer) | Thickness | observable (target: layer_thickness) | |
| Qit responding to the high-frequency signal (NPMA) | (none) | apparent charge, kept apart from Nf | The scorecard does not score NPMA charge as fixed charge. |
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>.
(100), 1000 °C, 1 h, with PMA
# (100), 1000 °C, 1 h, with PMA
SAMPLE Wafer_100_1000C_1h_PMA {
FAMILY: Si_Planar
ORIENTATION: Si100
CLEAN: RCA
DOPING: p_type
}
CONTROL_TRAJECTORY History {
EVENT Clean KIND clean TIMING bound # Pre-oxidation clean
EVENT Load KIND load TIMING assumed # Load into the furnace in nitrogen
RUN Oxidation DURATION 3600 TEMP 1000->1000 AMBIENT dry_O2 TIMING stated
RUN Pull DURATION 5 TEMP 1000->400 AMBIENT dry_O2 TIMING bound
EVENT Store KIND storage TIMING assumed # Stored in a nitrogen dry box
EVENT Metal KIND metallization TIMING assumed # Aluminium evaporated
RUN PostMetalAnneal DURATION 1800 TEMP 400->400 AMBIENT forming_gas_H2 TIMING stated
EVENT CV KIND measurement TIMING assumed # Capacitance-voltage measurement
}(111), 1000 °C, 1 h, with PMA
# (111), 1000 °C, 1 h, with PMA
SAMPLE Wafer_111_1000C_1h_PMA {
FAMILY: Si_Planar
ORIENTATION: Si111
CLEAN: RCA
DOPING: p_type
}
CONTROL_TRAJECTORY History {
EVENT Clean KIND clean TIMING bound # Pre-oxidation clean
EVENT Load KIND load TIMING assumed # Load into the furnace in nitrogen
RUN Oxidation DURATION 3600 TEMP 1000->1000 AMBIENT dry_O2 TIMING stated
RUN Pull DURATION 5 TEMP 1000->400 AMBIENT dry_O2 TIMING bound
EVENT Store KIND storage TIMING assumed # Stored in a nitrogen dry box
EVENT Metal KIND metallization TIMING assumed # Aluminium evaporated
RUN PostMetalAnneal DURATION 1800 TEMP 400->400 AMBIENT forming_gas_H2 TIMING stated
EVENT CV KIND measurement TIMING assumed # Capacitance-voltage measurement
}(100), 1000 °C, 8 h, with PMA
# (100), 1000 °C, 8 h, with PMA
SAMPLE Wafer_100_1000C_8h_PMA {
FAMILY: Si_Planar
ORIENTATION: Si100
CLEAN: RCA
DOPING: p_type
}
CONTROL_TRAJECTORY History {
EVENT Clean KIND clean TEMP 25 TIMING assumed # Pre-oxidation clean
EVENT Load KIND load TEMP 25 TIMING assumed # Load into the furnace in nitrogen
RUN N2_heatup_01 DURATION 15 TEMP 25->359.494 AMBIENT inert_N2 TIMING assumed
RUN N2_heatup_02 DURATION 15 TEMP 359.494->580.006 AMBIENT inert_N2 TIMING assumed
RUN N2_heatup_03 DURATION 15 TEMP 580.006->725.377 AMBIENT inert_N2 TIMING assumed
RUN N2_heatup_04 DURATION 15 TEMP 725.377->821.211 AMBIENT inert_N2 TIMING assumed
RUN N2_heatup_05 DURATION 15 TEMP 821.211->884.389 AMBIENT inert_N2 TIMING assumed
RUN N2_heatup_06 DURATION 15 TEMP 884.389->926.038 AMBIENT inert_N2 TIMING assumed
RUN N2_heatup_07 DURATION 15 TEMP 926.038->953.495 AMBIENT inert_N2 TIMING assumed
RUN N2_heatup_08 DURATION 15 TEMP 953.495->971.596 AMBIENT inert_N2 TIMING assumed
RUN N2_heatup_09 DURATION 15 TEMP 971.596->983.529 AMBIENT inert_N2 TIMING assumed
RUN N2_heatup_10 DURATION 15 TEMP 983.529->991.395 AMBIENT inert_N2 TIMING assumed
RUN N2_heatup_11 DURATION 15 TEMP 991.395->996.581 AMBIENT inert_N2 TIMING assumed
RUN N2_heatup_12 DURATION 15 TEMP 996.581->1000 AMBIENT inert_N2 TIMING assumed
RUN Oxidation DURATION 28800 TEMP 1000->1000 AMBIENT dry_O2 TIMING stated
# Source TIMING bound: <5 s, PDF p. 6, non-cleanroom set; transfer to this cleanroom wafer is assumed
RUN PullTravel DURATION 5 TEMP 1000->1000 AMBIENT dry_O2 TIMING assumed
RUN O2_cool_01 DURATION 1.5 TEMP 1000->800 AMBIENT dry_O2 TIMING assumed
RUN O2_cool_02 DURATION 3.2 TEMP 800->600 AMBIENT dry_O2 TIMING assumed
RUN O2_cool_03 DURATION 8.3 TEMP 600->400 AMBIENT dry_O2 TIMING assumed
RUN O2_cool_04 DURATION 28 TEMP 400->200 AMBIENT dry_O2 TIMING assumed
RUN O2_cool_05 DURATION 49 TEMP 200->100 AMBIENT dry_O2 TIMING assumed
RUN O2_cool_06 DURATION 210 TEMP 100->25 AMBIENT dry_O2 TIMING assumed
EVENT Store KIND storage TEMP 25 TIMING assumed # Stored in a nitrogen dry box
EVENT Metal KIND metallization TEMP 25 TIMING assumed # Aluminium evaporated
RUN FG_heatup_01 DURATION 15 TEMP 25->153.652 AMBIENT forming_gas_H2 TIMING assumed
RUN FG_heatup_02 DURATION 15 TEMP 153.652->238.464 AMBIENT forming_gas_H2 TIMING assumed
RUN FG_heatup_03 DURATION 15 TEMP 238.464->294.376 AMBIENT forming_gas_H2 TIMING assumed
RUN FG_heatup_04 DURATION 15 TEMP 294.376->331.235 AMBIENT forming_gas_H2 TIMING assumed
RUN FG_heatup_05 DURATION 15 TEMP 331.235->355.534 AMBIENT forming_gas_H2 TIMING assumed
RUN FG_heatup_06 DURATION 15 TEMP 355.534->371.553 AMBIENT forming_gas_H2 TIMING assumed
RUN FG_heatup_07 DURATION 15 TEMP 371.553->382.114 AMBIENT forming_gas_H2 TIMING assumed
RUN FG_heatup_08 DURATION 15 TEMP 382.114->389.075 AMBIENT forming_gas_H2 TIMING assumed
RUN FG_heatup_09 DURATION 15 TEMP 389.075->393.665 AMBIENT forming_gas_H2 TIMING assumed
RUN FG_heatup_10 DURATION 15 TEMP 393.665->396.69 AMBIENT forming_gas_H2 TIMING assumed
RUN FG_heatup_11 DURATION 15 TEMP 396.69->398.685 AMBIENT forming_gas_H2 TIMING assumed
RUN FG_heatup_12 DURATION 15 TEMP 398.685->400 AMBIENT forming_gas_H2 TIMING assumed
RUN PostMetalAnneal DURATION 1800 TEMP 400->400 AMBIENT forming_gas_H2 TIMING stated
RUN FG_cool_01 DURATION 50 TEMP 400->271.348 AMBIENT forming_gas_H2 TIMING assumed
RUN FG_cool_02 DURATION 50 TEMP 271.348->186.536 AMBIENT forming_gas_H2 TIMING assumed
RUN FG_cool_03 DURATION 50 TEMP 186.536->130.624 AMBIENT forming_gas_H2 TIMING assumed
RUN FG_cool_04 DURATION 50 TEMP 130.624->93.765 AMBIENT forming_gas_H2 TIMING assumed
RUN FG_cool_05 DURATION 50 TEMP 93.765->69.4658 AMBIENT forming_gas_H2 TIMING assumed
RUN FG_cool_06 DURATION 50 TEMP 69.4658->53.4468 AMBIENT forming_gas_H2 TIMING assumed
RUN FG_cool_07 DURATION 50 TEMP 53.4468->42.8865 AMBIENT forming_gas_H2 TIMING assumed
RUN FG_cool_08 DURATION 50 TEMP 42.8865->35.9246 AMBIENT forming_gas_H2 TIMING assumed
RUN FG_cool_09 DURATION 50 TEMP 35.9246->31.3351 AMBIENT forming_gas_H2 TIMING assumed
RUN FG_cool_10 DURATION 50 TEMP 31.3351->28.3095 AMBIENT forming_gas_H2 TIMING assumed
RUN FG_cool_11 DURATION 50 TEMP 28.3095->26.3149 AMBIENT forming_gas_H2 TIMING assumed
RUN FG_cool_12 DURATION 50 TEMP 26.3149->25 AMBIENT forming_gas_H2 TIMING assumed
EVENT CV KIND measurement TEMP 25 TIMING assumed # Capacitance-voltage measurement
}Thermal scenario A, fast O2 cooling, PMA A. Only the 1000 C/8 h and 400 C/30 min holds are stated; every transition is assumed. The <5 s pull bound comes from the other (non-cleanroom) set. Four scenarios and duration sensitivity: evaluations/vitkavage_transitions/report.json.
(111), 1000 °C, 8 h, with PMA
# (111), 1000 °C, 8 h, with PMA
SAMPLE Wafer_111_1000C_8h_PMA {
FAMILY: Si_Planar
ORIENTATION: Si111
CLEAN: RCA
DOPING: p_type
}
CONTROL_TRAJECTORY History {
EVENT Clean KIND clean TIMING bound # Pre-oxidation clean
EVENT Load KIND load TIMING assumed # Load into the furnace in nitrogen
RUN Oxidation DURATION 28800 TEMP 1000->1000 AMBIENT dry_O2 TIMING stated
RUN Pull DURATION 5 TEMP 1000->400 AMBIENT dry_O2 TIMING bound
EVENT Store KIND storage TIMING assumed # Stored in a nitrogen dry box
EVENT Metal KIND metallization TIMING assumed # Aluminium evaporated
RUN PostMetalAnneal DURATION 1800 TEMP 400->400 AMBIENT forming_gas_H2 TIMING stated
EVENT CV KIND measurement TIMING assumed # Capacitance-voltage measurement
}(110), 1000 °C, 1 h, with PMA
# (110), 1000 °C, 1 h, with PMA
SAMPLE Wafer_110_1000C_1h_PMA {
FAMILY: Si_Planar
ORIENTATION: Si110
CLEAN: RCA
DOPING: p_type
}
CONTROL_TRAJECTORY History {
EVENT Clean KIND clean TIMING bound # Pre-oxidation clean
EVENT Load KIND load TIMING assumed # Load into the furnace in nitrogen
RUN Oxidation DURATION 3600 TEMP 1000->1000 AMBIENT dry_O2 TIMING stated
RUN Pull DURATION 5 TEMP 1000->400 AMBIENT dry_O2 TIMING bound
EVENT Store KIND storage TIMING assumed # Stored in a nitrogen dry box
EVENT Metal KIND metallization TIMING assumed # Aluminium evaporated
RUN PostMetalAnneal DURATION 1800 TEMP 400->400 AMBIENT forming_gas_H2 TIMING stated
EVENT CV KIND measurement TIMING assumed # Capacitance-voltage measurement
}(511), 1000 °C, 1 h, with PMA
# (511), 1000 °C, 1 h, with PMA
SAMPLE Wafer_511_1000C_1h_PMA {
FAMILY: Si_Planar
ORIENTATION: Si511
CLEAN: RCA
DOPING: p_type
}
CONTROL_TRAJECTORY History {
EVENT Clean KIND clean TIMING bound # Pre-oxidation clean
EVENT Load KIND load TIMING assumed # Load into the furnace in nitrogen
RUN Oxidation DURATION 3600 TEMP 1000->1000 AMBIENT dry_O2 TIMING stated
RUN Pull DURATION 5 TEMP 1000->400 AMBIENT dry_O2 TIMING bound
EVENT Store KIND storage TIMING assumed # Stored in a nitrogen dry box
EVENT Metal KIND metallization TIMING assumed # Aluminium evaporated
RUN PostMetalAnneal DURATION 1800 TEMP 400->400 AMBIENT forming_gas_H2 TIMING stated
EVENT CV KIND measurement TIMING assumed # Capacitance-voltage measurement
}(100), 750 °C, 23 h, with PMA
# (100), 750 °C, 23 h, with PMA
SAMPLE Wafer_100_750C_23h_PMA {
FAMILY: Si_Planar
ORIENTATION: Si100
CLEAN: RCA
DOPING: p_type
}
CONTROL_TRAJECTORY History {
EVENT Clean KIND clean TIMING bound # Pre-oxidation clean
EVENT Load KIND load TIMING assumed # Load into the furnace in nitrogen
RUN Oxidation DURATION 82800 TEMP 750->750 AMBIENT dry_O2 TIMING stated
RUN Pull DURATION 5 TEMP 750->400 AMBIENT dry_O2 TIMING bound
EVENT Store KIND storage TIMING assumed # Stored in a nitrogen dry box
EVENT Metal KIND metallization TIMING assumed # Aluminium evaporated
RUN PostMetalAnneal DURATION 1800 TEMP 400->400 AMBIENT forming_gas_H2 TIMING stated
EVENT CV KIND measurement TIMING assumed # Capacitance-voltage measurement
}(100), 1000 °C, 1 h, no anneal
# (100), 1000 °C, 1 h, no anneal
SAMPLE Wafer_100_1000C_1h_NPMA {
FAMILY: Si_Planar
ORIENTATION: Si100
CLEAN: RCA
DOPING: p_type
}
CONTROL_TRAJECTORY History {
EVENT Clean KIND clean TIMING bound # Pre-oxidation clean
EVENT Load KIND load TIMING assumed # Load into the furnace in nitrogen
RUN Oxidation DURATION 3600 TEMP 1000->1000 AMBIENT dry_O2 TIMING stated
RUN Pull DURATION 5 TEMP 1000->400 AMBIENT dry_O2 TIMING bound
EVENT Store KIND storage TIMING assumed # Stored in a nitrogen dry box
EVENT Metal KIND metallization TIMING assumed # Aluminium evaporated
EVENT NoAnneal KIND other TIMING assumed # No post-metallization anneal (NPMA half)
EVENT CV KIND measurement TIMING assumed # Capacitance-voltage measurement
}The charge the report tabulates for this half-wafer (3.3 × 10^11 cm^-2) includes interface-trap charge that follows the 1 MHz signal, as the authors say. It is not fixed charge and is not compared.
Non-cleanroom (100), 750 °C, 24 h
# Non-cleanroom (100), 750 °C, 24 h
SAMPLE Wafer_nc_100_750C_24h {
FAMILY: Si_Planar
ORIENTATION: Si100
CLEAN: RCA
DOPING: p_type_boron
}
CONTROL_TRAJECTORY History {
EVENT Clean KIND clean TIMING bound # Pre-oxidation clean
EVENT Load KIND load TIMING assumed # Load into the furnace in nitrogen
RUN Oxidation DURATION 86400 TEMP 750->750 AMBIENT dry_O2 TIMING stated
RUN Pull DURATION 5 TEMP 750->400 AMBIENT dry_O2 TIMING bound
EVENT Metal KIND metallization TIMING assumed # Aluminium evaporated
RUN PostMetalAnneal DURATION 1800 TEMP 400->400 AMBIENT forming_gas_H2 TIMING stated
EVENT CV KIND measurement TIMING assumed # Capacitance-voltage measurement
}Non-cleanroom (110), 1100 °C, 0.5 h
# Non-cleanroom (110), 1100 °C, 0.5 h
SAMPLE Wafer_nc_110_1100C_30min {
FAMILY: Si_Planar
ORIENTATION: Si110
CLEAN: RCA
DOPING: p_type_boron
}
CONTROL_TRAJECTORY History {
EVENT Clean KIND clean TIMING bound # Pre-oxidation clean
EVENT Load KIND load TIMING assumed # Load into the furnace in nitrogen
RUN Oxidation DURATION 1800 TEMP 1100->1100 AMBIENT dry_O2 TIMING stated
RUN Pull DURATION 5 TEMP 1100->400 AMBIENT dry_O2 TIMING bound
EVENT Metal KIND metallization TIMING assumed # Aluminium evaporated
RUN PostMetalAnneal DURATION 1800 TEMP 400->400 AMBIENT forming_gas_H2 TIMING stated
EVENT CV KIND measurement TIMING assumed # Capacitance-voltage measurement
}The programs the predictor ran on these histories: experiments/atomistic/hydrogen_passivation_equilibrium.isl.template, 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/vitkavage_dit/oxide_growth.isl.template, as it is written. Every equation the simulation uses is in this text; the runtime holds no physics.
# ==============================================================================
# ISL MODEL: DRY THERMAL OXIDATION OF SILICON (growth sector)
#
# Linear-parabolic (Deal-Grove) growth written as one ISL operator. Nothing is
# fitted to the test data: every parameter keeps the value declared here.
#
# Provenance of the constants: the rate constants are an Arrhenius fit to Table II of
# Deal and Grove (1965), which is for (111) silicon; see scripts/derive_deal_grove_constants.py.
# The orientation factor for other faces is not in that paper and remains a hypothesis.
# Fields in {{braces}} are filled by scripts/run_vitkavage_growth.py.
# ==============================================================================
SAMPLE {sample_id} {{
FAMILY: Si_Planar
ORIENTATION: Si{orientation}
}}
# Oxide thickness. The initial value is Deal and Grove's effective starting thickness
# for dry oxygen, which stands in for the fast initial regime their model does not describe.
STATE x_ox {{
UNIT: cm
INITIAL: x_i
MIN: 0
MAX: 1.0e-3
}}
CONTROL T {{ UNIT: K }}
CONTROL p_O2 {{ UNIT: atm }}
# Parabolic rate constant B = B0 * exp(-E_B / kT).
PARAMETER B0 {{ VALUE: 3.6053e-09; UNIT: cm^2 s^-1; STATUS: sourced; SOURCE: Deal and Grove, J. Appl. Phys. 36, 3770 (1965), Table II, dry oxygen on (111), Arrhenius least-squares fit, table agent-read }}
PARAMETER E_B {{ VALUE: 1.2860; UNIT: eV; STATUS: sourced; SOURCE: Deal and Grove, J. Appl. Phys. 36, 3770 (1965), Table II, dry oxygen on (111), Arrhenius least-squares fit, table agent-read }}
# Linear rate constant B/A on (111) = BA0 * exp(-E_BA / kT).
PARAMETER BA0 {{ VALUE: 2.4265e-01; UNIT: cm s^-1; STATUS: sourced; SOURCE: Deal and Grove, J. Appl. Phys. 36, 3770 (1965), Table II, dry oxygen on (111), Arrhenius least-squares fit, table agent-read }}
PARAMETER E_BA {{ VALUE: 2.0303; UNIT: eV; STATUS: sourced; SOURCE: Deal and Grove, J. Appl. Phys. 36, 3770 (1965), Table II, dry oxygen on (111), Arrhenius least-squares fit, table agent-read }}
# Orientation factor on the linear rate, relative to (111).
PARAMETER r_or {{ VALUE: {r_or}; UNIT: 1; STATUS: hypothesis }}
# Effective initial thickness for dry oxygen.
PARAMETER x_i {{ VALUE: 2.3e-6; UNIT: cm; STATUS: sourced; SOURCE: Deal and Grove, J. Appl. Phys. 36, 3770 (1965), stated intercept 230 +/- 30 angstrom for dry oxygen, agent-read }}
# Both rate constants are proportional to oxidant pressure; the constants above are for 1 atm.
PARAMETER p_ref {{ VALUE: 1.0; UNIT: atm; STATUS: constant }}
PARAMETER k_B {{ VALUE: 8.617333262e-5; UNIT: eV K^-1; STATUS: constant }}
CONTROL_TRAJECTORY {trajectory_id} {{
RUN Oxidation DURATION {duration_s} TEMP {T_C}->{T_C} AMBIENT dry_O2
}}
# dx/dt = B / (2x + A), with A = B / (B/A).
OPERATOR F_LinearParabolicGrowth : OxideGrowth {{
EQUATION: d(x_ox)/dt = (p_O2 / p_ref) * B0 * exp(-E_B / (k_B * T)) / (2 * x_ox + B0 * exp(-E_B / (k_B * T)) / (r_or * BA0 * exp(-E_BA / (k_B * T))))
}}
OBSERVATION_MODEL Obs_Oxide_Thickness {{
TARGET: Thickness
UNIT: cm
EQUATION: Thickness = x_ox
}}
# Silicon consumed by the oxide grown in this recipe: 0.44 of its thickness, by the ratio of molar volumes.
OBSERVATION_MODEL Obs_Consumed_Silicon {{
TARGET: Consumed_substrate
UNIT: cm
EQUATION: Consumed_substrate = 0.44 * (x_ox - x_i)
}}
EVALUATION_CONTRACT {contract_id} {{
FROZEN: true
DATASET: data/derived/vitkavage_1990_thickness.csv
DATASET_DIGEST: sha256:{dataset_sha256}
SPLIT: test
TARGET: Thickness = {target} +/- {tolerance} rel
}}Our simulation against the paper
8 within, 5 near, 8 off of 21 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 |
|---|---|---|---|---|---|---|---|
| (100), 1000 °C, 1 h, with PMA | oxide thickness | 50 nm | 57.9 nm | +16% | near (±10%) | supported within scope | text, PDF p. 14: 500 Å |
| (100), 1000 °C, 1 h, with PMA | fixed charge | 1.70e+11 cm⁻² | 1.58e+11 cm⁻² | -7% | within (±10%) | supported within scope | Table III/VI, PDF p. 39, 42 |
| (100), 1000 °C, 1 h, with PMA | interface state density at midgap | 5.00e+10 cm⁻² eV⁻¹ | 7.51e+10 cm⁻² eV⁻¹ | +50% | off (±10%) | direction only | Table IV, PDF p. 40 |
| (111), 1000 °C, 1 h, with PMA | oxide thickness | 64 nm | 70 nm | +9% | within (±10%) | supported within scope | text, PDF p. 14: 640 Å |
| (111), 1000 °C, 1 h, with PMA | fixed charge | 4.30e+11 cm⁻² | 4.46e+11 cm⁻² | +4% | within (±10%) | supported within scope | Table III/VI |
| (111), 1000 °C, 1 h, with PMA | interface state density at midgap | 1.20e+11 cm⁻² eV⁻¹ | 8.63e+10 cm⁻² eV⁻¹ | -28% | off (±10%) | direction only | Table IV/VII |
| (100), 1000 °C, 8 h, with PMA | oxide thickness | 205 nm | 209 nm | +2% | within (±10%) | supported within scope | text, PDF p. 14: 2050 Å |
| (100), 1000 °C, 8 h, with PMA | fixed charge | 1.30e+11 cm⁻² | 2.69e+11 cm⁻² | +107% | off (±10%) | supported within scope | Table VI, PDF p. 42 |
| (100), 1000 °C, 8 h, with PMA | interface state density at midgap | 2.20e+10 cm⁻² eV⁻¹ | 1.93e+10 cm⁻² eV⁻¹ | -12% | near (±10%) | direction only | Table VII, PDF p. 43 |
| (111), 1000 °C, 8 h, with PMA | oxide thickness | 240 nm | 238 nm | -1% | within (±10%) | supported within scope | text, PDF p. 14: 2400 Å |
| (111), 1000 °C, 8 h, with PMA | fixed charge | 3.80e+11 cm⁻² | 4.46e+11 cm⁻² | +17% | near (±10%) | supported within scope | Table VI |
| (111), 1000 °C, 8 h, with PMA | interface state density at midgap | 6.00e+10 cm⁻² eV⁻¹ | 2.29e+10 cm⁻² eV⁻¹ | -62% | off (±10%) | direction only | Table VII |
| (110), 1000 °C, 1 h, with PMA | fixed charge | 1.08e+11 cm⁻² | 1.58e+11 cm⁻² | +46% | off (±10%) | outside the tested scope | Table II/VI (Table III prints 1.8; ruling 1) |
| (110), 1000 °C, 1 h, with PMA | interface state density at midgap | 7.90e+10 cm⁻² eV⁻¹ | 1.05e+11 cm⁻² eV⁻¹ | +33% | off (±10%) | direction only | Table IV/VII |
| (511), 1000 °C, 1 h, with PMA | fixed charge | 1.80e+11 cm⁻² | 1.58e+11 cm⁻² | -12% | near (±10%) | outside the tested scope | Table III/VI |
| (511), 1000 °C, 1 h, with PMA | interface state density at midgap | 5.70e+10 cm⁻² eV⁻¹ | 4.73e+10 cm⁻² eV⁻¹ | -17% | near (±10%) | direction only | Table IV/VII |
| (100), 750 °C, 23 h, with PMA | fixed charge | 7.00e+10 cm⁻² | 2.78e+11 cm⁻² | +297% | off (±10%) | outside the tested scope | Table III (±0.4) |
| (100), 750 °C, 23 h, with PMA | interface state density at midgap | 1.20e+11 cm⁻² eV⁻¹ | 1.14e+11 cm⁻² eV⁻¹ | -5% | within (±10%) | direction only | Table IV (printed header 10^11; ruling 2) |
| (100), 1000 °C, 1 h, no anneal | interface state density at midgap | 2.60e+11 cm⁻² eV⁻¹ | 2.61e+11 cm⁻² eV⁻¹ | +0% | within (±10%) | direction only | Table IV/VII |
| Non-cleanroom (100), 750 °C, 24 h | oxide thickness | 25 nm | 34.9 nm | +39% | off (±10%) | outside the tested scope | text, PDF p. 6 |
| Non-cleanroom (110), 1100 °C, 0.5 h | oxide thickness | 90 nm | 84.7 nm | -6% | within (±10%) | supported within scope | text, PDF p. 6 |
Aligning the simulation: what the unstated things would have to be
The alignment results below predate the revised (100), 1000 °C, 8 h, PMA thermal history. They use the earlier abbreviated cooling and PMA assumptions and do not validate the new transitions. The revised case uses scenario A with fast cooling; all four prompt-defined scenarios and duration-range checks are recorded in evaluations/vitkavage_transitions/report.json.
The reproduction above fills every gap in the report with an assumption of ours. Here each gap is treated as an unknown and scanned over what a furnace of that kind allows, against every cleanroom value in the report: 6 thicknesses, 28 fixed-charge values after the hydrogen anneal and 46 midgap trap densities (scripts/align_vitkavage.py, report in evaluations/vitkavage_alignment.json). No parameter declared fitted was touched. A tolerance is the larger of 10% and the spread the report prints for that value.
Timing unknowns that the data rule out. Extra time in oxygen before the stated time starts makes thickness worse at once (4 of 6 within tolerance with none, 3 with five minutes, 2 with ten), so the Table I times are times in oxygen at temperature, with no long ramp in oxygen before them. A nitrogen anneal at the oxidation temperature on every wafer makes fixed charge worse at any length from 5 to 60 minutes (median error from 20% to over 30%, simulation then too low), so the tabulated wafers are, as a set, not the wafers that had that anneal. For trap density neither unknown helps, and the hydrogen anneal length is pinned: 25 minutes instead of 30 loses 3 of the 11 passes and 35 minutes loses 7. That last result is not independent, because the program was fitted with 30.
Thickness is a material question, not a timing one. The 1965 law starts every oxide at 23 nm and its constants are for (111). On (100) it runs high for thin oxides (57.9 against 50 nm after one hour at 1000 °C). The thin-oxide law that our structure search found on Massoud's data lands at 51.6 nm for the same wafer and 197.6 against 205 nm after eight hours; Massoud is an author of this report and the cleanroom oxidations were done in his laboratory. With that law on (100) and the 1965 law elsewhere, 5 of 6 thicknesses are within 10% (4 of 6 before), the sixth being the non-cleanroom wafer at 750 °C (20.6 against 25 nm).
Fixed charge: the unknown is one thing per furnace run. All four orientations were oxidized together. At 1000 °C the report's own values for one orientation move between the four runs by 8 to 33% (standard deviation over mean), and three of the four orientations dip together in the 4 h run. A simulation that gives one number for one recipe can match at most two of four such values to 10%. So we inferred one unknown for each run from its (111) wafer, which carries the most charge: either a pull of some seconds in oxygen, or some minutes without oxygen before the pull. The other three wafers of each run, which played no part, then test it. Their median error falls from 58% (stated history) to 28%, and those within twice the tolerance rise from 5 to 10 of 21. The inferred values: pulls of 4 s for the 1 h and 2.5 h runs, effectively instant for the 900 °C and 8 h runs, half a minute without oxygen for the 4 h run, and the equivalent of 30 minutes without oxygen for the 750 and 800 °C runs.
Orientation. The predictor has fixed-charge constants for (100) and (111) only. Until this alignment it silently ran (110) and (511) on the (111) line and they came out three to four times high (272% and 329% median error); run on the (100) line they are 46% and 74% off, and the predictor now does that, labelled outside its tested scope. Deal's 1967 Table II has a (110) line that we had never transcribed; with it (110) is 70% high, worse than treating (110) as (100). On these wafers (110) and (511) carry about as little charge as (100).
9 within, 7 near, 11 off of 27 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 |
|---|---|---|---|---|---|---|---|
| (100), 750 °C, 24 h (non-cleanroom) | oxide thickness | 25 nm | 34.9 | 20.6 | -17% | near (±10%) | thin-oxide law found on Massoud's data |
| (100), 1000 °C, 1 h (cleanroom) | oxide thickness | 50 nm | 57.9 | 51.6 | +3% | within (±10%) | thin-oxide law found on Massoud's data |
| (111), 1000 °C, 1 h (cleanroom) | oxide thickness | 64 nm | 70 | 70 | +9% | within (±10%) | 1965 law, unchanged |
| (100), 1000 °C, 8 h (cleanroom) | oxide thickness | 205 nm | 209 | 198 | -4% | within (±10%) | thin-oxide law found on Massoud's data |
| (111), 1000 °C, 8 h (cleanroom) | oxide thickness | 240 nm | 238 | 238 | -1% | within (±10%) | 1965 law, unchanged |
| (110), 1100 °C, 0.5 h (non-cleanroom) | oxide thickness | 90 nm | 84.7 | 84.7 | -6% | within (±10%) | 1965 law, unchanged |
| (100), 750 °C, 23 h | fixed charge | 7.00e+10 cm⁻² | 2.78e+11 | 2.17e+11 | +210% | off (±57%) | run unknown inferred from the (111) wafer of this run: minutes without oxygen 30 min |
| (511), 750 °C, 23 h | fixed charge | 1.60e+11 cm⁻² | 2.78e+11 | 2.17e+11 | +36% | near (±25%) | run unknown inferred from the (111) wafer of this run: minutes without oxygen 30 min |
| (110), 750 °C, 23 h | fixed charge | 1.08e+12 cm⁻² | 2.78e+11 | 2.17e+11 | -80% | off (±11%) | run unknown inferred from the (111) wafer of this run: minutes without oxygen 30 min |
| (100), 800 °C, 18 h | fixed charge | 1.60e+11 cm⁻² | 2.54e+11 | 1.46e+11 | -9% | within (±31%) | run unknown inferred from the (111) wafer of this run: minutes without oxygen 30 min |
| (511), 800 °C, 18 h | fixed charge | 2.00e+10 cm⁻² | 2.54e+11 | 1.46e+11 | +631% | off (±100%) | run unknown inferred from the (111) wafer of this run: minutes without oxygen 30 min |
| (110), 800 °C, 18 h | fixed charge | 1.90e+11 cm⁻² | 2.54e+11 | 1.46e+11 | -23% | near (±16%) | run unknown inferred from the (111) wafer of this run: minutes without oxygen 30 min |
| (100), 900 °C, 4.5 h | fixed charge | 1.30e+11 cm⁻² | 2.06e+11 | 1.82e+11 | +40% | off (±15%) | run unknown inferred from the (111) wafer of this run: pull 0.25 s |
| (511), 900 °C, 4.5 h | fixed charge | 6.00e+10 cm⁻² | 2.06e+11 | 1.82e+11 | +203% | off (±33%) | run unknown inferred from the (111) wafer of this run: pull 0.25 s |
| (110), 900 °C, 4.5 h | fixed charge | 1.70e+11 cm⁻² | 2.06e+11 | 1.82e+11 | +7% | within (±18%) | run unknown inferred from the (111) wafer of this run: pull 0.25 s |
| (100), 1000 °C, 1 h | fixed charge | 1.70e+11 cm⁻² | 1.58e+11 | 1.52e+11 | -10% | near (±10%) | run unknown inferred from the (111) wafer of this run: pull 4 s |
| (511), 1000 °C, 1 h | fixed charge | 1.80e+11 cm⁻² | 1.58e+11 | 1.52e+11 | -15% | near (±10%) | run unknown inferred from the (111) wafer of this run: pull 4 s |
| (110), 1000 °C, 1 h | fixed charge | 1.08e+11 cm⁻² | 1.58e+11 | 1.52e+11 | +41% | off (±10%) | run unknown inferred from the (111) wafer of this run: pull 4 s |
| (100), 1000 °C, 2.5 h | fixed charge | 1.70e+11 cm⁻² | 1.58e+11 | 1.52e+11 | -10% | near (±10%) | run unknown inferred from the (111) wafer of this run: pull 4 s |
| (511), 1000 °C, 2.5 h | fixed charge | 1.20e+11 cm⁻² | 1.58e+11 | 1.52e+11 | +27% | off (±10%) | run unknown inferred from the (111) wafer of this run: pull 4 s |
| (110), 1000 °C, 2.5 h | fixed charge | 1.00e+11 cm⁻² | 1.58e+11 | 1.52e+11 | +52% | off (±10%) | run unknown inferred from the (111) wafer of this run: pull 4 s |
| (100), 1000 °C, 4 h | fixed charge | 9.00e+10 cm⁻² | 1.58e+11 | 1.16e+11 | +28% | off (±10%) | run unknown inferred from the (111) wafer of this run: minutes without oxygen 0.5 min |
| (511), 1000 °C, 4 h | fixed charge | 7.00e+10 cm⁻² | 1.58e+11 | 1.16e+11 | +65% | off (±10%) | run unknown inferred from the (111) wafer of this run: minutes without oxygen 0.5 min |
| (110), 1000 °C, 4 h | fixed charge | 1.20e+11 cm⁻² | 1.58e+11 | 1.16e+11 | -4% | within (±10%) | run unknown inferred from the (111) wafer of this run: minutes without oxygen 0.5 min |
| (100), 1000 °C, 8 h | fixed charge | 1.30e+11 cm⁻² | 1.58e+11 | 1.29e+11 | -1% | within (±10%) | run unknown inferred from the (111) wafer of this run: pull 0.25 s |
| (511), 1000 °C, 8 h | fixed charge | 1.10e+11 cm⁻² | 1.58e+11 | 1.29e+11 | +17% | near (±10%) | run unknown inferred from the (111) wafer of this run: pull 0.25 s |
| (110), 1000 °C, 8 h | fixed charge | 1.00e+11 cm⁻² | 1.58e+11 | 1.29e+11 | +29% | off (±10%) | run unknown inferred from the (111) wafer of this run: pull 0.25 s |
What this does not fix. (100), (110) and (511) below 1000 °C still sit one and a half to three times above the report (for example 2.2 against 0.7 × 10^11 cm^-2 at 750 °C), and no unknown in the history moves them: the steady line we take from Deal 1967 says charge rises as oxidation temperature falls, and on these three orientations Vitkavage's does not. The program was never scored below 900 °C. Trap density after the anneal is 22% high on (110), 28% low on (111) and 17% low on (511) in the median, with (100) within 10%: an orientation dependence of the hydrogen step that the program does not have, and that no timing changes.
How to read the aligned numbers: the thickness change is a choice between two programs we already hold and is not fitted to this report. The run unknowns are inferred from this report's own (111) wafers, so the (111) rows are not in the chart; the 21 rows shown are the test. The inferred “minutes without oxygen” at 750 and 800 °C may equally be the steady line being too high at low temperature; the data here cannot tell those apart.
What our language and ontology cannot yet say
- Done 10 November: a furnace run shared by several samples. A history may now hold several SAMPLE blocks under one CONTROL_TRAJECTORY, and
scripts/align_study.pycan share an unknown per run (share = "run"). Still missing: a record in the ontology that measurements came from one run. Before: The result above depends on four wafers having one history. A history file has one SAMPLE; the ontology has no record that measurements came from one run. ABATCHof samples under oneCONTROL_TRAJECTORYwould let one unknown be declared once and inferred from all of them. - Done 10 November: an unknown with a range, as a statement.
TIMING boundandVARY duration 0.5..5now exist and drive the alignment search. Before: “Shorter than 5 sec” had to becomeDURATION 5. The language needsDURATION 0.5..5(a bound), and a status on each step's timing (stated, bound, assumed), which on this page is hand-written in Python. Then a scan like this one is a query, not a script. - Partly done 10 November: cooling as a law.
PROFILE exponential TAUnow exists; the charge program still needs a rate that freezes as the wafer cools. Before: A RUN's temperature is linear from start to end. A wafer leaving a furnace cools toward the room with a time constant. Without that, the end temperature of a pull (400 °C) is a cut-off that stands in for physics, and the charge program, whose oxygen rate barely depends on temperature (0.05 eV), keeps moving charge at 100 °C if a cooling step is written. - Done 10 November: steps with no duration.
EVENT <id> KIND <kind>now records them in place. Still missing: an ontology class a program could read. Before: Clean, load, storage, metallization and measurement are comments in the history. The ontology has no classes for them that a program could read; anEVENTstatement with a kind from the vocabulary would at least make them queryable. - Sample properties a program can read. Doping, wafer size, starting oxide and sample set are recorded and read by nothing. The starting oxide in particular is a parameter inside the growth program (23 nm) when it is a property of the wafer.
- Done 10 November: an orientation with no constants. It now runs on the (100) line and is labelled outside the tested scope. Before: (110) and (511) fell back to (111) for fixed charge with a note; the number looked like any other.
- Partly done 10 November: gas by pressure, not by name. The predictor now reads a gas by its partial pressures. Still open: the thin-oxide program grows oxide in nitrogen because it does not read the oxygen pressure. Before: Writing the stated moisture (
mix:O2=0.999994,H2O=6.0e-6) made the fixed-charge program return nothing, because the predictor looks for the namedry_O2. And the thin-oxide program keeps growing oxide during a nitrogen step: it does not read the oxygen pressure. - What a measurement is. Fixed charge after a hydrogen anneal, apparent charge without one, and Deal's 1967 charge after 550 °C in nitrogen are three observables in the papers and one in ours. The work-function value behind every fixed charge here is not stated; an observation model for the C-V extraction would carry that assumption.
- Repeatability as data. The report's run-to-run scatter (up to 33%) is larger than the 10% we score against. A dataset should carry its own repeatability so a contract's tolerance comes from the source.
With Quantum ESPRESSO switched on
The hydrogen step of the trap-density program has a fitted share of sites that the forming-gas anneal does not remove. An atomic calculation can say whether that share is set by how strongly hydrogen binds to a dangling bond. Quantum ESPRESSO (the dm_qe build) computed the energy of Si• + ½H₂ → Si–H for a silicon atom with three silicon back-bonds, the local structure of a Pb centre, on a 14-atom cluster (atomistic/calcs/si_dangling_bond_hydrogen.json; record evaluations/atomistic/si_dangling_bond_hydrogen.json). It ran twice: on the local CPU build and on an H100 on RunPod. The two agree to 0.3 meV in the reaction energy and to 10⁻⁸ Ry in the total energy, and the H100 was about four times faster on the larger cluster.
With the predictor's switch on (ISL_USE_COMPUTED=1 or --computed), the program experiments/atomistic/hydrogen_passivation_equilibrium.isl.template turns that energy, the free energy of hydrogen gas and a zero-point correction (both stated hypotheses) into the share of bonds an anneal would leave uncapped if it reached equilibrium, and multiplies the fitted density before the anneal by it. The fitted predictions do not change; the computed rows are added beside them and labelled as computed.
The numbers do not match, and the mismatch is the result. At equilibrium only about five in a million dangling bonds would stay uncapped at 400 °C in forming gas, which bounds the trap density at 10⁵ to 10⁷ cm⁻² eV⁻¹. Vitkavage measured 1.5 × 10¹⁰ to 1.6 × 10¹¹ after the anneal, four to five orders of magnitude more. What remains after the anneal is therefore not limited by the thermodynamics of the Si–H bond: either thirty minutes at 400 °C is far from equilibrium (a rate question the calculation does not answer), or the remaining traps are not dangling bonds that hydrogen can cap. Either way it supports the two-population form of the trap program, in which one population is not removed by hydrogen.
Limits: a cluster has no oxide around it and no interface strain; the zero-point correction (0.07 eV) and the gas entropy are recalled values marked hypothesis; no barrier was computed. The next calculation is the interface itself: a Si(100)/SiO₂ model with its suboxide transition and a Pb centre in place.
| Calculation | Value | Where it ran | Status |
|---|---|---|---|
| dE_cap_half_H2: energy of capping the dangling bond from molecular hydrogen, Si* + 1/2 H2 -> SiH; negative means hydrogen stabilizes the bond | -1.2838 eV | ssh NVIDIA H100 80GB HBM3, 595.91.07 | complete |
| D_SiH: energy to break the Si-H bond into the dangling bond and a free hydrogen atom | 3.5429 eV | ssh NVIDIA H100 80GB HBM3, 595.91.07 | complete |
| D_H2: the H2 binding energy: a check on the method, to be compared with about 4.75 eV (well depth, recalled) | 4.5183 eV | ssh NVIDIA H100 80GB HBM3, 595.91.07 | complete |
| Sample | Measured interface state density | Our fitted program | Computed equilibrium bound | Measured over bound |
|---|---|---|---|---|
| (100), 1000 °C, 1 h, with PMA | 5.00e+10 | 7.51e+10 | 1.48e+06 | 3.4e+04 |
| (111), 1000 °C, 1 h, with PMA | 1.20e+11 | 8.63e+10 | 1.06e+06 | 1.1e+05 |
| (100), 1000 °C, 8 h, with PMA | 2.20e+10 | 1.93e+10 | 8.85e-07 | 2.5e+16 |
| (111), 1000 °C, 8 h, with PMA | 6.00e+10 | 2.29e+10 | 2.80e+05 | 2.1e+05 |
| (110), 1000 °C, 1 h, with PMA | 7.90e+10 | 1.05e+11 | 5.05e+06 | 1.6e+04 |
| (511), 1000 °C, 1 h, with PMA | 5.70e+10 | 4.73e+10 | 1.57e+06 | 3.6e+04 |
| (100), 750 °C, 23 h, with PMA | 1.20e+11 | 1.14e+11 | 4.10e+06 | 2.9e+04 |
| Non-cleanroom (100), 750 °C, 24 h | no measurement on this page | 1.13e+11 | 4.09e+06 | |
| Non-cleanroom (110), 1100 °C, 0.5 h | no measurement on this page | 6.56e+10 | 3.16e+06 |
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) | 8 of 21 | 15.9% | |
| heat-up A (hot push), fast cooling | 6 of 21 | 27.6% | 12 of 21 moved by more than 2% |
| heat-up A (hot push), slow cooling | 6 of 21 | 31.0% | 12 of 21 moved by more than 2% |
| heat-up B (cold-furnace ramp), fast cooling | 5 of 21 | 25.5% | 13 of 21 moved by more than 2% |
| heat-up B (cold-furnace ramp), slow cooling | 5 of 21 | 30.6% | 13 of 21 moved by more than 2% |
The paper's own conclusions
| The paper states | What we find | |
|---|---|---|
| A forming-gas anneal lowers the midgap trap density on every orientation | Reproduced in direction on every case here (compare the two (100), 1000 °C, 1 h histories) | direction right |
| Fixed charge and trap density order as (111) > (110) > (100) ≈ (511) at 1000 °C | Fixed charge has constants for (100) and (111) only; (110) and (511) are run with the nearest and labelled outside scope | partly |
| Oxide thickness after 1 h and 8 h at 1000 °C: 500–640 Å and 2050–2400 Å for (100) and (111) | Linear-parabolic growth with the 1965 constants and one orientation ratio that is a hypothesis | see the chart |
What we would like Emily to check
- After a pull of under 5 s the wafer cools in the endcap in oxygen. Is 400 °C a fair temperature for the end of the step in which charge can still move, or should the cooling in the endcap be a second, slower step?
- The report says some wafers had a nitrogen anneal after oxidation. Does the journal version say which, and for how long?
- For the cleanroom set, is the oxidizing gas the same dry oxygen (under 6 ppm water) as the non-cleanroom set?
- Is comparing (110) with the other orientations fair, given the separate metallization run and wafer size?
- Is the charge read without a post-metallization anneal ever scored as fixed charge by the organisers?