x_verify module

Additional verification plots are available in

XVerify Module Documentation

Step to verify the extracted model by simulating and plotting measurement data and simulation data. Also allows global fitting but it is not recommended to fit too many parameters at once.

Author: Mario Krattenmacher | Mario.Krattenmacher@semimod.de Author: Markus Müller | Markus.Mueller3@tu-dresden.de

class DMT.extraction.x_verify.XVerify(name, mcard, lib, op_definition, DutCircuitClass, model_deemb_method=None, verify_area_densities=False, required_specifiers=None, **kwargs)[source]

Bases: XStep

XVerify implements parameter extraction steps that require circuit simulation for MOS and BJT type devices. Typically these steps are the last part of a parameter extraction flow, this is why they are used for “verification and tuning”.

Parameters:
same as for XStep, and additionally:
verify_area_densitiesBool, False

If True, currents and charges are normalized to the DutView.area for BJT type devices and to the device width for MOS type devices. These attributes must be stored in the DutView objects supplied to this XStep.

fit_alongSpecifiers.Current or Specifiers.Voltage or Specifiers.Frequency, default=V_BE|FORCED

The inner quantity that shall be fitted along.

inner_sweep_voltage”: Specifiers.Current or Specifiers.Voltage, default=V_BE|FORCED

The inner sweep specifier (voltage or current) that shall be simulated.

outer_sweep_voltage”: Specifiers.Current or Specifiers.Voltage, default=V_BC|FORCED

The outer sweep specifier (voltage or current) that shall be simulated.

quantity_fit”: None

The electrical quantity that shall be fitted.

add_data_to_plot(plot_obj, x_col, y_col, area_x=False, area_y=False, omega=False)[source]

This method adds x and y-axis data from self.data_reference and self.line_model to the plot object “plot_obj”.

Parameters:
plot_objDMT.Plot

This is the plot to which the lines shall be added.

x_colstr or DMT.specifier

This is the key for the x-axis data in self.data_reference and self.data_model.

y_colstr or DMT.specifier

This is the key for the y-axis data in self.data_reference and self.data_model.

area_xBool, False

If True, the x-axis data is normalized to the device area (BJT) or device width (MOS).

area_yBool, False

If True, the y-axis data is normalized to the device area (BJT) or device width (MOS).

omegaBool, False

If True, the y-axis data is normalized to the angular frequency.

calc_all(*args, **kwargs)[source]

This method needs to start the calculation of the function to be optimized self.f_0 and its jacobian self.jac .

Calculating the jacobian here allows to use DMT’s parallel computing features, which might be relevant for circuit or TCAD simulations.

This function is called inside fit_function.

Parameters:
xdatanp.ndarray

The argument of the fit_function, scipy.curve_fit wants to calculate.

paras_modelMcParameterCollection

Parameters of the model to calculate. Can bei either a full modelcard or only a McParameterCollection.

jac{True, False}, optional

This boolean controls wheather or not the jacobian is computed.

reinitBoolean

What is this?

n_optimizeinteger

The number of parameters to optimize. Not really needed but for memoization in XVerify.

Returns:
self.data_modeldict{}

This is only returned in order to enable memoization. It is actually not really needed for anything else.

ensure_input_correct()[source]

Search for all required columns in the data frames.

ensure_input_correct_per_dataframe(dataframe, dut=None, key=None, **_kwargs)[source]
Parameters:
dataframeDMT.core.DataFrame

Dataframe to ensure columns

dutDutView, optional

The corresponding dut (if dut parameters are needed)

keystr, optional

The corresponding key (if ambient temperature is needed)

Raises:
KeyError

If a needed column is not in the frame.

fit(data_model, paras_model, dut=None)[source]

cite from XStep docs: | - Return the data_model’s y values for the x-values, if the x-step uses a dut+sweep combination. | In this cases, XStep already carried out dut+sweep simulations with the parameters before calling the function. Promised. | Reason: This allows to use DMT’s multithreading capabilities, speeding up the extraction significantly.

get_description()[source]

Return a tex description of this XStep. Used for generating the documentation. If not implemented, there is no description for this XStep in the documentation.

get_dut(line, paras_model)[source]

Overwritten from XStep. See doc in XStep.

get_plt_y(y_col, real=False)[source]

Generic method that generates a plot for the given y-Parameter y_col.

Parameters:
y_colDMT.core.SpecifierStr

A Specifier that should correspond to a Y-parameter.

realBool, False

If True, plot a real part, else an imaginary part.

get_tex()[source]

Return a tex Representation of the Model that is beeing fitted. This can then be displayed in the UI.

init_data_reference_per_dataframe(dataframe, t_meas, dut=None, key=None)[source]

Find the required data in the user supplied dataframe or database and write them into data_model attribute of XStep object.

main_plot()[source]

Overwrite main plot from parent class.

plot_T()[source]
plot_beta()[source]
plot_fmax()[source]
plot_ft()[source]
plot_gm()[source]
plot_gm_ic()[source]
plot_gm_norm_vs_log_jc()[source]
plot_go()[source]
plot_i1()[source]
plot_i2()[source]
plot_imy11()[source]
plot_imy12()[source]
plot_imy22()[source]
plot_magy21()[source]
plot_phasey21()[source]
plot_rey11()[source]
plot_rey12()[source]
plot_rey22()[source]
plot_tf()[source]
set_initial_guess(reference_data)[source]

This methods should set an initial guess for the optimization parameters from the available reference_data array. If no initial guess is set for a parameter, the value for the initial guess is taken form the modelcard. For steps which use a simulation of a DutCircuit, here the sweep should be defined, too.

staticMetaObject = PySide6.QtCore.QMetaObject("XVerify" inherits "XStep": )[source]