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. If LogToStdOut, 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:

FET2DDeviceSetupParameters

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()

Example1.py

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()

Example2.py

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.

../../../_images/Analysis.png

Fig. 219 Example of the Analysis tab in the 2DFET Characteristics plugin.

See also General on FET2D.