xq_poa_bilinear_full module
Extracts PoA parameters using bilinear scaling for a given quantity. Subclass this for easier PoA separations such as the classical one.
quantity_a -> area related quantitiy
quantity_l -> length related quantity
quantity_b -> width related quantity
quantity_corner -> corner related quantity
Author: Markus Müller | Markus.Mueller3@tu-dresden.de Author: Mario Krattenmacher | Mario.Krattenmacher@semimod.de
- class DMT.extraction.xq_poa_bilinear_full.XQPoaBilinearFull(name, mcard, lib, op_definition, quantity, quantity_scale, sweep_voltage, dut_type=<DMT.core.dut_type.DutTypeInt object>, scale_along='width', scale_at=None, legend_off=True, config=None, exclude=None, corner_rounding=False, use_exact_key=True, nfinger=None, **kwargs)[source]
Bases:
XStep
XPoa is the superclass for PoA analysis of electrical quantities. It implements a linear PoA analysis of a given quantity at multiple operating points using the QStep framework.
XPoaBilinearFull can perform a length and/or width related PoA separation for many operating point at the same time(1) quantity(op) = quantity_a(op) * area + quantity_l * length + quantity_b * width + quantity_cornerlength = length + delta_lengthwidth = width + delta_widthat different operating points, depending on the parameter that are passed to this object. The deltas are optimized globally.- Parameters:
- name
str
name of this XStep.
- mcard
DMT.core.McParameterCollection
Modelcard where the parameters dl and db are stored (they will be unique)
- lib
DMT.core.DutLib
Library object that stores all devices of interest for this XStep.
- op_definition{DMT.core.specifier:val}
Dict whose keys and values define the operating regions for this XStep. E.g. specifiers:TEMPERATURE:300 would only allow data at temperature 300K.
- quantity
DMT.core.specifier
The quantity to be scaled, e.g. specifiers.CAPACITANCE + ‘B’ + ‘E’.
- quantity_scale
float
The scaling factor to determine the unit of the quantity, e.g. 1e3 will cause the quantity to be plotted as milli.
- sweep_voltage
DMT.core.specifier
The voltage that is to be used for sweeping during PoA analysis.
- dut_type
DMT.core.DutType
The device type, e.g. DutType.npn.
- scale_along
str
Either ‘’width’, ‘length’ or ‘both’. If ‘width’ or ‘length’, only devices with different scale_along will be used for scaling at fixed other dimension specified by scale_at .
- scale_at
float
Only active if scale_along is ‘width’ or ‘length’. The other dimension is the fixed at scale_at .
- legend_offbool,
True
Turn the legend in the main_plot off or on.
- negativebool
If negative values are to be scaled, this will invert them to generate nicer plots.
- config
str
Configuration of the device. (Optional)
- corner_rounding
Boolean
,False
If True, use bilinear corner rounding equation.
- exclude
tuple
,None
A tuple whose first entry is the minimum length that is considered for scaling and the second entry the minimum width.
- name
- ensure_input_correct()[source]
Search for all required columns in the data frames. Check whether the scaling specifications make sense.
- filter_function(dut)[source]
This function returns true for duts that are suitable for scaling along scale_along at a fixed scale_at value.
- fit(line, paras_model)[source]
Set the y-values, using one quantity_a for each line and one quantity_p for all lines.
- 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_key(key, dut)[source]
Returns the original DuT key to write back results into a static persistant dataframe
- classmethod get_effective_area(lE0, bE0, dlE, dbE, gamma_l=None, gamma_b=None, gamma_c=None, **_kwargs)[source]
- classmethod get_effective_perimeter(lE0=None, bE0=None, dlE=None, dbE=None, gamma_l=None, gamma_b=None, gamma_c=None)[source]
- get_plot_along_dimension(along=None, delta=None, op=None, num=None)[source]
Return an array of the quantity along length or width, at width or length with an delta at an operating point and a fit line
- get_quantity(df, v_spot)[source]
Extract the base current from a given dataframe at a given voltage v_spot. Errors should have been cought in ensure_input_correct.
- get_tex()[source]
Return a tex Representation of the Model that is beeing fitted. This can then be displayed in the UI.
- plot_quantity_scaled_fit()[source]
Plot quantity as a function of operating point meas vs fit for multiple geometries for all analyzed duts
- plot_quantity_separated()[source]
Plot quantity as a function of operating point meas vs fit for multiple geometries for all analyzed duts
- quantity_poa(l_E0=None, b_E0=None, dle=None, dbe=None, quantity_per_area=None, quantity_per_length=0, quantity_per_width=0, quantity_corner=0)[source]
full bilinear scaling equation of a quantity
- Parameters:
- Returns:
- quantity_poa
np.ndarray
- quantity_poa
- quantity_poa_recr(l_E0=None, b_E0=None, recr=None, dle=None, dbe=None, quantity_per_area=None, quantity_per_length=0, quantity_per_width=0, quantity_corner=0)[source]
full bilinear scaling equation of a quantity with corner rounding
- Parameters:
- Returns:
- quantity_poa
np.ndarray
- quantity_poa
- set_initial_guess(data_reference)[source]
In contrast to XStep set_initial_guess, this method needs to set an initial guess for each line and init the parameter arrays.