Generate virtual data

This module helps to generate virtual measurement data to test an extraction in an standardized manner.

generate virtual data module

Functions to generate virtual measurement data.

DMT.extraction.generate_virtual_data._get_sweep(name=None, v10=None, v12=None, v20=None, v30=0, i1=None, i0=None, ac=True, temp=300, freq=1000.0, dut_type=None, mode='lin')[source]

Return a a DMT.Sweep Definition suitable for three port device simulation. The contacts of a three port device considered by this routine are named port_1, port_2, port_3 and ground(0). Note that only TWO of the port voltages v10, v12, v20 and/or port currents i1, i0 and i2 (not yet implemented) can be defined, since two voltages or one voltage and one current unambiguously define all bias that can be forced for a two port.

The voltage v30 is special and defaults to zero (Emitter-Substrate short or Bulk-Source) short. If v30 is specified, it is added as the outermost voltage sweep. The voltage v30 is always interpreted as a list and never as a linear sweep.

Parameters:
v10, v12, v20, v30, i1, i0float64, np.array(), list, None

The sweep definition for the current or voltage at or between the respective port pin(s) 1, 2 and 0: (1) A constant value indicates a CONSTANT voltage/current. (2) A List and keyword “mode”=”lin”: Indicates a linear sweep for the voltage/current from the value of the [0]th array element to [1]th array element in [2]th array value equally spaced steps. (3) List and keyword “mode”=”list”: Value is swept according to the values specified in the list If the keyword mode ==”lin”, only one contact voltage or current can be swept!

acbool, optional, default=True

If True: return a sweep that contains an AC simulation definition for the specified frequency “freq”.

tempfloat,[float], optional, default=300

Temperature of the simulation in Kelvin. If a list of floats is given, the temperature is swept as the outermost sweep.

freqfloat64,[float], 1e3

The frequency for AC simulations at every DC operating point in Hertz. If single value: Simulation only at this frequency. If three element list: Log sweep from 10^freq[0] to 10^freq[1] in freq[2] logarithmically spaced steps.

dut_typeDutTypeInt or DutTypeFlag

Indicates if the sweep is targeted at a MOSFET or BJT type device.

modestr, “lin” or “list”

Parameter that controls how the primary sweep variable shall be interpreted.

Returns:
sweepSweep

DMT sweep definition

DMT.extraction.generate_virtual_data.generate_virtual_data(dut, sweeps, force=True, t_max=10000, n_core=4, rename=True, remove_simulations=True)[source]

Simulates a DuT for the specified sweeps and generates new keys in the DuT that represent the corresponding simulated data in its database.

Parameters:
dutDutView`

DuT for which the simulated data shall be generated.

sweeps[Sweep]

List of sweeps that shall be simulated. The sweeps must have a meaningful unique names as DMT’s hashing function is not used here.

renameTrue, Bool

If True, the sweep hases are removed from the keys in the database, which corresponds to typical measurements taken in a lab.

Returns:
run_simsbool

True, if any simulation was started. False if all simulations were read from hard disk.

DMT.extraction.generate_virtual_data.get_output_def(qs_analysis=False, additional_outputs=None)[source]

Generalized Sweep outputdef creation for the DEVICE TCAD simulator. TODO: Maybe add to DMT.Device instead of here.

Parameters:
qs_analysisbool, False

If True, add the required outputs for quasi-static simulation.

additional_output[], None

If not None, add this list of additional outputs to the outputdef.

DMT.extraction.generate_virtual_data.get_sweep_ac_vb(vbe=None, vce=None, freq=None, temperature=300, name='freq_vb_', **kwargs)[source]

Generate a forward Gummel sweep with inner Vbe sweep outer Vce sweep and additional small-signal AC analysis at a specific frequency for bipolar devices.

Parameters:
vbenp.ndarray, optional

List of vbe values to be simulated. Defaults to a linear sweep from 0.0 to 1.2 V in 0.1 Volt steps.

vcenp.ndarray, optional

The single value or list of vce values for which the vbe sweep is simulated. Defaults to a list from 0.0V to 3.0V in 16 equally spaced steps.

freqfloat

The frequency in Hertz at which the AC analysis shall be conducted.

temperaturefloat, 300, optional

The temperature at which the simulations shall be undertaken.

namestr, “freq_vb_”, optional

Should be a unique and useful name for the generated sweep.

Returns:
swpSweep

A DMT Sweep object that can be simulated with TCAD and circuit simulators.

DMT.extraction.generate_virtual_data.get_sweep_ac_vbc(vbe=None, vbc=None, freq=None, temperature=300, name='freq_vbc', **kwargs)[source]

Generate a forward Gummel sweep with inner Vbe sweep outer Vbc sweep and additional small-signal AC analysis at a specific frequency for bipolar devices.

Parameters:
vbenp.ndarray, optional

List of vbe values to be simulated. Defaults to a linear sweep from 0.0 to 1.2 V in 0.01 Volt steps.

vbcnp.ndarray, optional

The single value or list of vbc values for which the vbe sweep is simulated. Defaults to a list with [-3.0, -2.5, -2.0, -1.5, -1.0, -0.7, -0.5, -0.2, 0, 0.2, 0.5, 0.7].

freqfloat

The frequency in Hertz at which the AC analysis shall be conducted.

temperaturefloat, 300, optional

The temperature at which the simulations shall be undertaken.

namestr, “freq_vbc”, optional

Should be a unique and useful name for the generated sweep.

Returns:
swpSweep

A DMT Sweep object that can be simulated with TCAD and circuit simulators.

DMT.extraction.generate_virtual_data.get_sweep_ac_vc(vbe=None, vce=None, freq=None, temperature=300, name='freq_vc', **kwargs)[source]

Generate an output sweep with inner Vce sweep outer Vbe sweep and additional small-signal AC analysis at a specific frequency for bipolar devices.

Parameters:
vbenp.ndarray, optional

List of vbe values to be simulated. Defaults to a linear sweep from 0.0 to 1.2 V in 0.1 Volt steps.

vcenp.ndarray, optional

The single value or list of vce values for which the vbe sweep is simulated. Defaults to a list from -2.0V to 3.0V in 501 equally spaced steps.

freqfloat

The frequency in Hertz at which the AC analysis shall be conducted.

temperaturefloat, 300, optional

The temperature at which the simulations shall be undertaken.

namestr, “freq_vc”, optional

Should be a unique and useful name for the generated sweep.

Returns:
swpSweep

A DMT Sweep object that can be simulated with TCAD and circuit simulators.

DMT.extraction.generate_virtual_data.get_sweep_bjt(name=None, vbe=None, vbc=None, vce=None, vse=0, ib=None, ie=None, ac=True, temp=300, freq=1000.0, mode='lin')[source]

Wrapper for the method get_sweep, suitable for BJT type devices. See the documentation of the get_sweep method for details.

DMT.extraction.generate_virtual_data.get_sweep_fgummel(vbe=None, vbc=None, freq=None, temperature=300, name='fgummel_vbc', **kwargs)[source]

Generate a forward Gummel sweep for bipolar devices.

Parameters:
vbenp.ndarray, optional

List of vbe values to be simulated. Defaults to a linear sweep from 0 to 1.2 V in 0.01 Volt steps.

vbcnp.ndarray, optional

The single value or list of vbc values for which the vbe sweep is simulated. Defaults to a list with [-3.0, -2.5, -2.0, -1.5, -1.0, -0.7, -0.5, -0.2, 0, 0.2, 0.5, 0.7].

temperaturefloat, 300, optional

The temperature at which the simulations shall be undertaken.

namestr, “fgummel_vbc”, optional

Should be a unique and useful name for the generated sweep.

Returns:
swpSweep

A DMT Sweep object that can be simulated with TCAD and circuit simulators.

DMT.extraction.generate_virtual_data.get_sweep_foutput_ib(ib=None, vce=None, temperature=300, name='foutput_ib', **kwargs)[source]

Generate a forced Ib sweep with inner Vce sweep and inner Ib sweep.

Parameters:
ibnp.ndarray, optional

List of ib values to be simulated. Defaults to a linear sweep from 2 to 20 uA in 10 equally spaced steps.

vcenp.ndarray, optional

The single value or list of vce values for which the vbe sweep is simulated. Defaults to a list from 0.0V to 2.0V in 101 equally spaced steps.

temperaturefloat, 300, optional

The temperature at which the simulations shall be undertaken.

namestr, “foutput_ib”, optional

Should be a unique and useful name for the generated sweep.

Returns:
swpSweep

A DMT Sweep object that can be simulated with TCAD and circuit simulators.

DMT.extraction.generate_virtual_data.get_sweep_foutput_vb(vbe=None, vce=None, temperature=300, name='foutput_vb', freq=None, **kwargs)[source]

Get a forced base voltage forward output sweep.

Parameters:
vcenp.ndarray, optional

List of vbe values for which the vce sweep shall be simulated. Defaults to a linear sweep from 0.0 to 3.0 V in 0.05 Volt steps.

vbenp.ndarray, optional

The single value or list of vbe values for which the vce sweep is simulated. Defaults to a list from -1 to 1.2V in 0.01V.

temperaturefloat,300, optional

The temperature at which the simulations shall be undertaken.

namestr, “foutput_vb”, optional

Should be a unique and useful name for the generated sweep.

Returns:
swpSweep

A DMT Sweep object that can be simulated with TCAD and circuit simulators.

DMT.extraction.generate_virtual_data.get_sweep_mos(name=None, vgs=None, vgd=None, vds=None, vbs=0, ig=None, isource=None, ac=True, temp=300, freq=1000.0, mode='lin')[source]

Wrapper for the method get_sweep suitable for MOS type devices. See the documentation of the get_sweep method for details.