Rapid Thermal Processing (RTP)¶
Rapid Thermal Processing provides fast heating and cooling for annealing, oxidation, nitridation, and other thermal treatments. RTP is essential for activating dopants, improving crystallinity, and modifying material properties without extended high-temperature exposure.
Overview¶
This schema package defines:
- DtuRTP - A rapid thermal processing step with temperature profiles, atmosphere control, and timing
The RTP process extends NOMAD's Process and Activity base classes, providing:
- Links to input samples/libraries and output (modified) samples
- Temperature profiles (ramp rates, hold times, cooling rates)
- Atmosphere control (gas composition, pressure)
- Multi-step thermal cycles
- Automated workflow integration
Typical Usage¶
- Select samples: Reference samples or libraries to be processed
- Define thermal profile: Set ramp-up rate, peak temperature, hold time, cooling rate
- Set atmosphere: Choose gas environment (Ar, O₂, N₂, forming gas, vacuum)
- Document equipment: Reference the RTP instrument used
- Link output: Updated sample properties (crystallinity, oxidation state, etc.)
Key Parameters¶
- Temperature profile: Ramp rate, peak temperature, hold time, cooling rate
- Atmosphere: Gas type, flow rate, pressure
- Sample positioning: Multiple samples, temperature uniformity considerations
- Cycle steps: Multi-step profiles for complex treatments
Common RTP Applications¶
- Crystallization: Improving as-deposited amorphous or poorly crystalline films
- Annealing: Stress relief, grain growth, defect reduction
- Oxidation/Nitridation: Forming oxide or nitride layers
- Dopant activation: Activating implanted or incorporated dopants
- Interface engineering: Promoting reactions at interfaces
Why Document RTP Details?¶
Thermal history critically affects material properties:
- Temperature affects: Phase transitions, grain size, crystallinity
- Ramp/cooling rates affect: Stress, defect density, phase stability
- Atmosphere affects: Oxidation state, composition, surface chemistry
- Time affects: Diffusion, grain growth, decomposition
Detailed records enable:
- Optimizing thermal treatments
- Understanding structure-property relationships
- Reproducing successful conditions
- Avoiding destructive over-processing
Parsing Workflow¶
The RTP parser automatically processes thermal treatment log files and extracts relevant process information through a multi-step workflow:
Data Logging¶
The logging of RTP-related signals includes thermal properties, process gases, and pressure data collection. This is achieved by combining the native software of the RTP tool (CX-Thermo) and the sputtering tool (Lesker Eklipse). Relevant logged quantities include:
- Gas flow rates
- Chamber pressure
- Chamber temperature
- Power applied to the lamps
Process Step Identification¶
The data is uploaded to the RTP entry in the form of two distinct log files and automatically processed using the developed parser. Similar to the sputtering data parser, the logic consists of unambiguously identifying the different steps of the annealing process.
The steps belong to one of three categories:
- Heating: Initial setpoint temperature is lower than final setpoint temperature
- Annealing plateau: Initial and final setpoint temperatures are identical
- Cooling: Initial setpoint temperature is higher than final setpoint temperature
These setpoints are timestamped, along with all other signals from both log files, making correlation possible. The timestamped setpoint temperature serves as the basis for the parser logic.
This approach remains valid even when experimentalists use multiple steps of one type (e.g., two heating steps with different ramps, or two heating steps separated by an intermediate annealing plateau), showcasing the high degree of adaptability to real laboratory workflows.
Parameter Extraction¶
From an experimental perspective, useful information not obtained directly from the log files is automatically extracted, including:
- Partial pressure of each gas present in the RTP chamber during annealing
- Heating and cooling rates
- Other derived parameters calculated from identified process events
Schema Population¶
Derived parameters are mapped to their corresponding fields in the RTP schema, similar to the sputtering workflow. This enables users to access process details organized:
- By individual step
- As an overview of the entire process
Visualization¶
Similar to the sputtering workflow, the annealing process benefits from automatic plot generation, enabling quick visualization of key aspects:
- Temperature profiles and setpoints as a function of time
- Atmosphere composition during annealing
- Pressure stability during annealing
This organized access to critical parameters makes it easier to identify trends or anomalies that might otherwise go unnoticed, reinforcing the FAIR-by-design principle.
Input Sample Handling¶
A key difference between sputtering and RTP processes:
- Sputtering: Uses bare substrates as input
- RTP: Uses previously deposited combinatorial libraries as input
Input samples can be:
- Whole combinatorial libraries from the sputtering process
- Child libraries created by cleaving a parent library
The user provides information about which input samples were introduced in the RTP chamber. By processing this information, output combinatorial libraries are automatically created and named according to established conventions.
Example: If four child combinatorial libraries are mounted horizontally on the sample holder, four independent output combinatorial libraries are created following the naming convention (by user, by iteration number, and position on holder) and referencing:
- The RTP process that generated them
- The corresponding parent combinatorial libraries each was cleaved from
Related Schemas¶
- Input entities: Samples and Libraries
- Atmosphere: Gas Supplies
- Instrument: DTUInstrument (RTP furnace)
- Preceded by: Sputtering, Thermal Evaporation
- Followed by: Characterization measurements
Schema Documentation¶
DtuRTPInputSampleMounting¶
description: Section containing information about the mounting of the combinatiorial libraries (input samples) on the susceptor.
inherits from: nomad.datamodel.data.ArchiveSection
properties:
| name | type | |
|---|---|---|
| name | str |
The name of the input sample. |
| input_combi_lib | nomad_dtu_nanolab_plugin.schema_packages.sample.DTUCombinatorialLibrary |
The input sample (combinatorial library) that is used. |
| relative_position | str |
The relative position of the input sample on the susceptor. |
| position_x | float64 |
The center x-coordinate of the input sample on the susceptor. unit= meter |
| position_y | float64 |
The center y-coordinate of the input sample on the susceptor. unit= meter |
| rotation | float64 |
MANUAL INPUT. The angle between the initial position in the "mother" sample and the position on the susceptor. unit= radian |
normalization:
The normalizer for the DtuRTPInputSampleMounting class.
Args: archive (EntryArchive): The archive containing the section that is being normalized. logger (BoundLogger): A structlog logger.
RTPOverview¶
description: Section containing a human readable overview of the RTP process.
inherits from: nomad.datamodel.data.ArchiveSection
properties:
| name | type | |
|---|---|---|
| material_space | str |
The elements present in your film before and/or after the RTP process. |
| no_dwell_steps | int |
Number of dwell steps (plateaus) in the RTP process. |
| annealing_pressure | float64 |
Pressure (average) in the RTP chamber during the annealing plateau unit= pascal |
| annealing_time | float64 |
Time spent at the annealing plateau of the RTP process. unit= second |
| annealing_temperature | float64 |
Temperature (average) during the annealing plateau of the RTP process. unit= kelvin |
| annealing_ar_flow | float64 |
Argon flow (average) used during the annealing plateau of the RTP process. The unit "cm^3/minute" is used and equal to sccm. unit= meter ** 3 / second |
| annealing_n2_flow | float64 |
Nitrogen flow (average) used during the annealing plateau of the RTP process. The unit "cm^3/minute" is used and equal to sccm. unit= meter ** 3 / second |
| annealing_ph3_in_ar_flow | float64 |
Phosphine flow (average) used during the annealing plateau of the RTP process. The unit "cm^3/minute" is used and equal to sccm. unit= meter ** 3 / second |
| annealing_nh3_in_ar_flow | float64 |
Ammonia flow (average) used during the annealing plateau of the RTP process. The unit "cm^3/minute" is used and equal to sccm. unit= meter ** 3 / second |
| annealing_h2s_in_ar_flow | float64 |
H2S flow (average) used during the annealing plateau of the RTP process. The unit "cm^3/minute" is used and equal to sccm. unit= meter ** 3 / second |
| total_heating_time | float64 |
Total time spent until maximum temperature (main annealing plateau) is reached. unit= second |
| total_cooling_time | float64 |
Total time spent between the end of the main annealing plateau until the samples are cooled down to room temperature. unit= second |
| end_of_process_temperature | float64 |
Temperature during the cooling phase of the RTP process at which gas flows are shut off and the final pump-purge procedure is initiated before removing the samples from the chamber. unit= kelvin |
| annealing_ph3_partial_pressure | float64 |
Partial pressure of PH3 (average) during the annealing plateau of the RTP process. unit= pascal |
| annealing_nh3_partial_pressure | float64 |
Partial pressure of NH3 (average) during the annealing plateau of the RTP process. unit= pascal |
| annealing_h2s_partial_pressure | float64 |
Partial pressure of H2S (average) during the annealing plateau of the RTP process. unit= pascal |
| annealing_n2_partial_pressure | float64 |
Partial pressure of N2 (average) during the annealing plateau of the RTP process. unit= pascal |
| annealing_ar_partial_pressure | float64 |
Partial pressure of Ar (average) during the annealing plateau of the RTP process. unit= pascal |
normalization:
The normalizer for the RTPOverview class.
Args: archive (EntryArchive): The archive containing the section that is being normalized. logger (BoundLogger): A structlog logger.
RTPStepOverview¶
description: Section containing a human readable overview of a certain step of the RTP process.
inherits from: nomad.datamodel.data.ArchiveSection
properties:
| name | type | |
|---|---|---|
| duration | float64 |
Duration of the step. unit= second |
| pressure | float64 |
Pressure (average) in the RTP chamber during the step. unit= pascal |
| step_ar_flow | float64 |
Argon flow rate (average) used during the step.The unit "cm^3/minute" is used and equal to sccm. unit= meter ** 3 / second |
| step_n2_flow | float64 |
Nitrogen flow rate (average) used during the step. The unit "cm^3/minute" is used and equal to sccm. unit= meter ** 3 / second |
| step_ph3_in_ar_flow | float64 |
Phosphine flow rate (average) used during the step.The unit "cm^3/minute" is used and equal to sccm. unit= meter ** 3 / second |
| step_nh3_in_ar_flow | float64 |
Ammonia flow rate (average) used during the step.The unit "cm^3/minute" is used and equal to sccm. unit= meter ** 3 / second |
| step_h2s_in_ar_flow | float64 |
H2S flow rate (average) used during the step.The unit "cm^3/minute" is used andequal to sccm. unit= meter ** 3 / second |
| initial_temperature | float64 |
Temperature at the start of the step. unit= kelvin |
| final_temperature | float64 |
Temperature at the end of the step. unit= kelvin |
| temperature_ramp | float64 |
Rate of temperature increase/decrease during the step. unit= kelvin / second |
| step_ph3_partial_pressure | float64 |
Partial pressure (average) of PH3 during the annealing plateau of the RTP process. unit= pascal |
| step_nh3_partial_pressure | float64 |
Partial pressure (average) of NH3 during the annealing plateau of the RTP process. unit= pascal |
| step_h2s_partial_pressure | float64 |
Partial pressure (average) of H2S during the annealing plateau of the RTP process. unit= pascal |
| step_n2_partial_pressure | float64 |
Partial pressure (average) of N2 during the annealing plateau of the RTP process. unit= pascal |
| step_ar_partial_pressure | float64 |
Partial pressure (average) of Ar during the annealing plateau of the RTP process. unit= pascal |
normalization:
The normalizer for the DTUSteps class.
Args: archive (EntryArchive): The archive containing the section that is being normalized. logger (BoundLogger): A structlog logger.
DtuRTPSources¶
description: Information regarding the sources (gases) used in the RTP process.
inherits from: nomad_material_processing.vapor_deposition.cvd.general.CVDSource, nomad.datamodel.data.ArchiveSection
properties:
| name | type | |
|---|---|---|
| sources | str |
Automatically generated list of used sources (gases) during this step. shape= ['*'] |
normalization without further documentation
DTURTPSteps¶
description: Class representing each step in the RTP process.
inherits from: nomad_material_processing.vapor_deposition.cvd.general.CVDStep, nomad.datamodel.data.ArchiveSection
properties:
| name | type | |
|---|---|---|
| step_overview | RTPStepOverview |
sub-section |
| sources | DtuRTPSources |
sub-section, repeats |
normalization:
The normalizer for the DTURTPSteps class.
Note: per-step source syncing is intentionally NOT duplicated here.
The parent DtuRTP.normalize() already syncs step sources from
used_gases in a single explicit pass
(_sync_step_sources_from_used_gases), so this method only handles
derived step_overview quantities (ramps and partial pressures).
Args: archive (EntryArchive): The archive containing the section that is being normalized. logger (BoundLogger): A structlog logger.
DtuRTP¶
description: A synthesis method where a rapidly heated substrate is exposed to one or more volatile precursors, which react or decompose on the surface to produce a deposit. [database_cross_reference: https://orcid.org/0000-0002-0640-0422]
Synonyms: - rapid thermal chemical vapor deposition - rapid thermal CVD - RTCVD
inherits from: nomad_material_processing.vapor_deposition.cvd.general.ChemicalVaporDeposition, nomad.datamodel.metainfo.plot.PlotSection, nomad.datamodel.data.EntryData
links: http://purl.obolibrary.org/obo/CHMO_0001328
properties:
| name | type | |
|---|---|---|
| lab_id | str |
The ID of the run. Format: user_number_RTP. |
| location | str |
location of the experiment. default= DTU; IDOL Lab |
| log_file_eklipse | str |
MANUAL INPUT. Cell to upload the gas/pressure log file obtained with Eklipse. |
| log_files_CXThermoDiagnostics | str |
MANUAL INPUT. Temperature log files obtained with CX-Thermo. If one file is provided, it is used directly. If multiple files are provided, they are stacked by timestamp before merging with pressure data. shape= ['*'] |
| process_log_files | bool |
MANUAL INPUT. Boolean to indicate if the RTP log files should be processed. default= True |
| overwrite_existing_data | bool |
MANUAL INPUT. Boolean to indicate if the data present in the entry should be overwritten by data incoming from the log files. default= True |
| samples_susceptor_before | str |
MANUAL INPUT. Cell to upload the image of the samples on susceptor before the RTP process. |
| samples_susceptor_after | str |
MANUAL INPUT. Cell to upload the image of the samples on susceptor after the RTP process. |
| used_gases | str |
Gases used in the RTP process. shape= ['*'] |
| base_pressure | float64 |
RTP chamber base pressure when ballast is OFF. unit= pascal |
| base_pressure_ballast | float64 |
RTP chamber base pressure when ballast is ON. unit= pascal |
| rate_of_rise | float64 |
Rate of rise of the pressure in the RTP chamber during static vacuum conditions. unit= pascal / second |
| chiller_flow | float64 |
MANUAL INPUT. Chiller flow rate during the RTP process. unit= meter ** 3 / second |
| input_samples | DtuRTPInputSampleMounting |
sub-section, repeats |
| overview | RTPOverview |
sub-section |
| steps | DTURTPSteps |
The steps of the deposition process. sub-section, repeats |
normalization:
The normalizer for the RTP class.
Order of operations, and why: 1. Parse log files first - everything else (steps, overview fields, timeseries arrays) is derived from this. 2. Generic schema normalization (base-class bookkeeping). 3. Explicitly normalize subsections that NOMAD's base normalize() does not reliably cascade into: steps (ramps + partial pressures) and overview (annealing partial pressures). These are grouped together since they're the same kind of operation. 4. lab_id default. 5. Phase segments + temperature array fallback - these depend on steps already being parsed/normalized above (step 1 and 3). 6. RTP-specific derived state: step source syncing, material space autofill, library creation. 7. Plotting - depends on phase segments, temperature/gas/pressure arrays, and overview.end_of_process_temperature all being settled by this point. 8. Results population for periodic-table filtering.
Args: archive (EntryArchive): The archive containing the section that is being normalized. logger (BoundLogger): A structlog logger.