FET2DSentaurusDeviceCharacteristics¶
- class FET2DSentaurusDeviceCharacteristics(filename, object_id, device_setup, model_calibration_results, workfunction=None, number_of_processes_per_task=None, log_filename_prefix=None)¶
Executes device characteristics task.
- Parameters:
filename (str) – The full or relative filename path the study object should be saved to.
object_id (str) – The name of the study that the study object should be saved to within the file. This needs to be a unique name in this file.
device_setup (
FET2DDeviceSetupParameters
) – The device setup.model_calibration_results (dict) – The output of a FET2DSentaurusModelCalibration.extractionResults() call.
workfunction (PhysicalQuantity of type energy) – The effective work function of the gate/backgate in the device.
number_of_processes_per_task (int | None |
ProcessesPerNode
) – The number of processes that will be used to execute each task. If the total number of process does not divide evenly into the tasks, some tasks may have less than this number of processes. If None, all available processes execute each task collaboratively.log_filename_prefix (str |
LogToStdOut
) – Filename prefix for the logging output of the study. IfLogToStdOut
, all logging will instead be sent to standard output.
- channelMaterialName()¶
- Returns:
The name of the channel material.
- Return type:
str
- channelThickness()¶
- Returns:
The thickness of the channel in monolayers.
- Return type:
int
- contactMaterialName()¶
- Returns:
The name of the contact material.
- Return type:
str
- contactOrientation()¶
- Returns:
The Miller indices for the contact surface towards the channel.
- Return type:
sequence of int
- cv()¶
Getter for cv
- dependentStudies()¶
- Returns:
The list of dependent studies.
- Return type:
list of
Study
- deviceSetup()¶
- Returns:
The device setup.
- Return type:
- extractionResults()¶
- Returns:
All results excluding NL objects.
- Return type:
dict
- filename()¶
- Returns:
The filename where the study object is stored.
- Return type:
str
- idvd_0()¶
Getter for idvd_0
- idvd_1()¶
Getter for idvd_1
- idvd_2()¶
Getter for idvd_2
- idvd_3()¶
Getter for idvd_3
- idvg()¶
Getter for idvg
- idvgVariables()¶
- Returns:
The Id-Vg variables.
- Return type:
dict
- logFilenamePrefix()¶
- Returns:
The filename prefix for the logging output of the study.
- Return type:
str |
LogToStdOut
- maxE()¶
- Returns:
The upper energy limit for valley detection.
- Return type:
PhysicalQuantity of type energy
- metatext()¶
- Returns:
The metatext of the object or None if no metatext is present.
- Return type:
str | None
- nlinfo()¶
Get only the printable results from the extraction results - plain text.
- Returns:
The study information.
- Return type:
dict
- nlinfoHtml()¶
Get only the printable results from the extraction results.
- Returns:
The study information.
- Return type:
dict
- nlprint(stream=None)¶
Print a string containing an ASCII table useful for plotting the Study object.
- Parameters:
stream (python stream) – The stream the table should be written to. Default:
NLPrintLogger()
- numberOfProcessesPerTask()¶
- Returns:
The number of processes to be used to execute each task. If None, all available processes execute each task collaboratively.
- Return type:
int | None |
ProcessesPerNode
- numberOfProcessesPerTaskResolved()¶
- Returns:
The number of processes to be used to execute each task. Default values are resolved based on the current execution settings.
- Return type:
int
- objectId()¶
- Returns:
The name of the study object in the file.
- Return type:
str
- processVariables()¶
- Returns:
The process variables.
- Return type:
dict
- resultsToTransfer()¶
- Returns:
A copy of the relevant results from model calibration calculation.
- Return type:
dict
- saveToFileAfterUpdate()¶
- Returns:
Whether the study is automatically saved after it is updated.
- Return type:
bool
- setMetatext(metatext)¶
Set a given metatext string on the object.
- Parameters:
metatext (str | None) – The metatext string that should be set. A value of “None” can be given to remove the current metatext.
- uniqueString()¶
Return a unique string representing the state of the object.
- update()¶
Run the calculations for the study object.
- workfunction()¶
Getter for workfunction
Note
Study objects behave differently from analysis objects. See the Study object overview for more details.
Usage Examples¶
Example 1. Perform device characterization based on manually defined model calibration results.
from QuantumATK import *
from AddOns.FET2D.Study.FET2DDeviceSetupParameters import FET2DDeviceSetupParameters
from AddOns.FET2D.Study.FET2DSentaurusDeviceCharacteristics import FET2DSentaurusDeviceCharacteristics
# Define previous model calibration results.
model_calibration_results = {
'channel_material_name': 'MoS2',
'contact_material_name': 'Gold',
'channel_thickness': 1,
'maxE': 1.1 * eV,
'contact_orientation': (0, 0, 1),
'NBands': 8,
'chi': 4.25 * eV,
'eps': 3.38,
'H': 0.0006516 * um,
'BG': 1.699 * eV,
'PhiSB': 0.276 * eV,
'WF': 4.5 * eV,
'NPparLEV': '1.215:1.215',
'UpperEnergyValley': 'valley0:valley1:valley2:valley3:valley6:valley7',
'EMparUEV': '0.801:0.801:0.801:0.801:1.311:1.311',
'g_cal': '0.210575',
'LowerEnergyValley': 'valley4:valley5',
'Eshift': '0.139',
'EMperpUEV': '1.081:1.081:1.081:1.081:0.714:0.714',
'V0f_cal': '1',
'NUpBands': '6',
'EMperpLEV': '0.484:0.484',
'EMparLEV': '0.484:0.484',
'NLowBands': '2',
'Bf_cal': '0.987581',
'NPparUEV': '1.773:1.773:0.433:0.433:1.155:1.155',
'Tf_cal': '1.75296',
'k_cal': '17.7495',
}
# Define the device setup parameters.
device_setup = FET2DDeviceSetupParameters(
gate_type=GATE_TYPES.SINGLE_GATE,
lgate=0.008 * um,
gate_material_name='Gold',
ttox=0.0025 * um,
oxide_material_name='SiO2',
til=0.002 * um,
lcontact=0.015 * um,
lspacer=0.008 * um,
lbackgate=0.034 * um,
back_gate_material_name='Gold',
tbox=0.0025 * um,
ch_dop=0.0 * cm**-3,
sd_dop=0.0 * cm**-3,
nit=0.0 * cm**-3,
nit_bg=0.0 * cm**-3,
mumax=50.0 * cm**2 / V / s,
)
# Define the Device Characteristics Study Object.
device_characteristics = FET2DSentaurusDeviceCharacteristics(
filename='fet2d_device_characterization_1642515686.31.hdf5',
object_id='FET2DSentaurusDeviceCharacteristics_0',
device_setup=device_setup,
model_calibration_results=model_calibration_results,
log_filename_prefix_default='fet2d_device_characterization_',
)
# Start the calculations.
device_characteristics.update()
# Extract the results.
device_characteristics_results = device_characteristics.extractionResults()
If a FET2DSentaurusModelCalibration
is available, the model calibration results can be defined as
model_calibration_results = model_calibration.extractionResults()
where model_calibration
is an instance of FET2DSentaurusModelCalibration
that has completed all of its calculations.
Example 2. Perform a chained model calibration and device characterization study based on manually defined parameter extraction results.
from QuantumATK import *
from AddOns.FET2D.Study.FET2DDeviceSetupParameters import FET2DDeviceSetupParameters
from AddOns.FET2D.Study.FET2DSentaurusDeviceCharacteristics import FET2DSentaurusDeviceCharacteristics
from AddOns.FET2D.Study.FET2DSentaurusModelCalibration import FET2DSentaurusModelCalibration
# Define previous parameter extraction results.
parameter_extraction_results = {
'channel_material_name': 'MoS2',
'contact_material_name': 'Gold',
'channel_thickness': 1,
'maxE': 1.1 * eV,
'contact_orientation': (0, 0, 1),
'NBands': 8,
'chi': 4.25 * eV,
'eps': 3.38,
'H': 0.0006516 * um,
'BG': 1.699 * eV,
'qatk_bands': '0.367\n1.081\n1.923\n0.989\n0.346\n0.801\n1.773\n0.989\n0.254\n1.081\n0.618\n0.989\n0.346\n0.801\n1.773\n0.989\n0.367\n1.081\n1.923\n0.989\n0.344\n0.801\n0.433\n0.989\n0.254\n1.081\n0.618\n0.989\n0.344\n0.801\n0.433\n0.989\n0.452\n0.484\n0.911\n0.85\n0.485\n0.484\n1.215\n0.85\n0.527\n0.484\n1.589\n0.85\n0.485\n0.484\n1.215\n0.85\n0.312\n0.714\n0.542\n0.989\n0.204\n1.311\n1.155\n0.989\n0.713\n0.714\n1.153\n0.989\n0.204\n1.311\n1.155\n0.989',
'PhiSB': 0.276 * eV,
}
# Define the Model Calibration Study Object.
model_calibration = FET2DSentaurusModelCalibration(
filename='fet2d_model_calibration_1642515594.46.hdf5',
object_id='FET2DSentaurusModelCalibration_0',
workfunction=7.835 * eV,
parameter_extraction_results=parameter_extraction_results,
log_filename_prefix_default='fet2d_model_calibration_',
)
# Start the calculations.
model_calibration.update()
# Extract the results.
model_calibration_results = model_calibration.extractionResults()
# Define the device setup parameters.
device_setup = FET2DDeviceSetupParameters(
gate_type=GATE_TYPES.SINGLE_GATE,
lgate=0.008 * um,
gate_material_name='Gold',
ttox=0.0025 * um,
oxide_material_name='SiO2',
til=0.002 * um,
lcontact=0.015 * um,
lspacer=0.008 * um,
lbackgate=0.034 * um,
back_gate_material_name='Gold',
tbox=0.0025 * um,
ch_dop=0.0 * cm**-3,
sd_dop=0.0 * cm**-3,
nit=0.0 * cm**-3,
nit_bg=0.0 * cm**-3,
mumax=50.0 * cm**2 / V / s,
)
# Define the Device Characteristics Study Object.
device_characteristics = FET2DSentaurusDeviceCharacteristics(
filename='fet2d_device_characterization_1642515596.36.hdf5',
object_id='FET2DSentaurusDeviceCharacteristics_0',
device_setup=device_setup,
model_calibration_results=model_calibration_results,
log_filename_prefix_default='fet2d_device_characterization_',
)
# Start the calculations.
device_characteristics.update()
# Extract the results.
device_characteristics_results = device_characteristics.extractionResults()
If a FET2DAtomisticParameterExtraction
is available, the parameter extraction results can be defined as
parameter_extraction_results = parameter_extraction.extractionResults()
where parameter_extraction
is an instance of FET2DAtomisticParameterExtraction
that has completed all of its calculations.
Analysis¶
The results of a device characterization can be summarized in Nanolab using the 2DFET Characteristics plugin. The summary includes plots of the drain current to gate voltage (\(I_D-V_G\)) relation in both logarithmic and linear scale, the drain current to drain voltage (\(I_D-V_D\)) relation at four different gate voltages and the gate capacitance to gate voltage (\(C_G-V_G\)) relation. Using the plotting framework, these plots can be stored, edited or combined across different calculation runs. Additional calculation results from the Sentaurus Workbench calculation, such as .plt files and the actual Sentaurus Workbench project, will also be available at the end of a calculation, but are not handled by QuantumATK or Nanolab.

Fig. 219 Example of the Analysis tab in the 2DFET Characteristics plugin.¶
See also General on FET2D.