Helper for MOSFET_Finder.

Construct me with an instance of analysis.param.Specs that's been populated with attributes defining device-specific variables, the device's parameter-finding goals, and any known parameters.

Class Variable w Dict with default emphases for each setup ID, each entry's value scaling its target's weight by the square of that value. If no entry, default emphasis is 0.5, which works out to unity.
Class Variable s211_scale Extra weight (scaling) for highest Vgs curve, left end increasing to right end.
Method __init__ MOSFET_Helper(specs)
Method timeSetup Sets up TRAN simulation args for step, stop, and possibly stop time.
Method transform_v2rds Transform Ids (or Isd for P-channel) and V(drain) into Rds.
Method transform_v2nrds Transform Vds (or Vsd for P-channel) with constant known Ids into Rds, normalized to Rds at nominal Tj. Make sure that one of the swept Tj values is at or very close to nominal.
Method transform_vgs2nvgs Transform Vgs (or Vsg for P-channel) with constant known Ids into normalized with Vgs=1.0 at nominal Tj. Make sure that one of the swept Tj values is at or very close to nominal.
Method transform_i2q Transform current and time into charge with trapezoidal integration.
Method transform_ttrig Undocumented
Method weight_Ids_si Weighting of setups 211, 221, 222. For setup 223, unity weight because Ids isn't the vector of interest.
Method weight_Ids_wi Weighting of setup 242.
Method weight_Rds Weighting of setup 223 for Rds with controlled drain current.
Method weight_vdd Weighting of setups 241, 351, 361, and 371, for drain voltage after a resistor.
Method weight_tempsens Weighting of setups 261, 271, 272, for temperature sensitivity.
Method weight_gate Weighting of setup 321, for gate charge, and of setups 351, 361, and 371 for gate voltage.
Method weight_drain Weighting of setups 351, 361, 371, for drain voltage with controlled current.

Inherited from HelperBase:

Class Variable weightN Weight of number of steps column vs excess range column in prettyStep.
Method timeSetupCommon Call this from your subclass's override of timeSetup to get common stuff done.
Method get_rrParams Call this to get a 4-tuple with parameters V, I, dI, and dt for reverse recovery.
Method TRAN Adds an analysis.sim.TRAN analyzer to the supplied analyzerDict for the specified setup ID, with (name, value) tuples for any keywords supplied.
Method gcd_seq Returns the greatest common denominator of values in sequence X, or None if there is no GCD.
Method sss Returns a 3-list with the start, stop, and step values for doing a DC sweep of values in sequence X that lands exactly on all its values, or None if no such sweep is possible.
Method Tj_sa Returns the additional arguments for a secondary DC sweep of the junction temperature that best fits the 'tj' values for goals of the specified setup ID.
Static Method decimal Undocumented
Method prettyStep Finds a "pretty" step size to go from Zmin (or slightly below) to Zmax (or slightly above) in as close as possible (but not more than) Nmax steps with limited precision.
Static Method includesZero Undocumented
Method prettyRange Undocumented
Method mms Returns a suitable min, max, and step for a DC sweep of a vector.
Method warp Warps the values of x that are close to x0.
Method emphasis Returns the square of the emphasis for the specified setup ID, multiplied by the product of any arguments.
Method transform_bias Undocumented
Method transform_capacitance Undocumented
Method weight_capacitance Weighting of 'cap' tranformed value for setups 4xx.
Method _bc_fix Called by transform_bias and transform_capacitance to obtain a cleaned-up version of bias1 and cap1.
w =
Dict with default emphases for each setup ID, each entry's value scaling its target's weight by the square of that value. If no entry, default emphasis is 0.5, which works out to unity.
s211_scale =
Extra weight (scaling) for highest Vgs curve, left end increasing to right end.
def __init__(self, specs):

MOSFET_Helper(specs)

def timeSetup(self, s):

Sets up TRAN simulation args for step, stop, and possibly stop time.

def transform_v2rds(self, ID, Ids, drain):

Transform Ids (or Isd for P-channel) and V(drain) into Rds.

def transform_v2nrds(self, ID, Tj, Vds):

Transform Vds (or Vsd for P-channel) with constant known Ids into Rds, normalized to Rds at nominal Tj. Make sure that one of the swept Tj values is at or very close to nominal.

def transform_vgs2nvgs(self, ID, Tj, Vgs):

Transform Vgs (or Vsg for P-channel) with constant known Ids into normalized with Vgs=1.0 at nominal Tj. Make sure that one of the swept Tj values is at or very close to nominal.

def transform_i2q(self, ID, t, Vin, Vout):

Transform current and time into charge with trapezoidal integration.

def transform_ttrig(self, ID, t):
Undocumented
def weight_Ids_si(self, ID, x):

Weighting of setups 211, 221, 222. For setup 223, unity weight because Ids isn't the vector of interest.

For setup 211, the highest Ids at the highest Vgs curve is weighted more to help encourage the Ids vs Vds curve to bend downward.

def weight_Ids_wi(self, ID, x):

Weighting of setup 242.

def weight_Rds(self, ID, x):

Weighting of setup 223 for Rds with controlled drain current.

def weight_vdd(self, ID, x):

Weighting of setups 241, 351, 361, and 371, for drain voltage after a resistor.

For setups 351, 361, and 371, weight_drain and weight_gate also (and primarily) factor into the weighting.

def weight_tempsens(self, ID, x):

Weighting of setups 261, 271, 272, for temperature sensitivity.

High for setups 271, 272. Each one is just a single curve for a separate important aspect of the MOSFET operation, with fairly low SSE produced by significant departures from desired.

(Array) weight values are scaled by each expected value of x, and scaled down in aggregate by the cube of the mean expected value.

def weight_gate(self, ID, x):

Weighting of setup 321, for gate charge, and of setups 351, 361, and 371 for gate voltage.

High for setup 321 because the error figures are relatively small compared to IDs, and it's just one curve for an important aspect of the MOSFET operation.

For setups 351, 361, and 371, weight_vdd and (primarily) weight_drain also factor into the weighting.

def weight_drain(self, ID, x):

Weighting of setups 351, 361, 371, for drain voltage with controlled current.

Nominal, but higher around 7A for setup 351.

weight_vdd and weight_gate also factor into the weighting, secondarily.

API Documentation for pingspice, generated by pydoctor at 2021-09-18 08:41:11.