correctec model author line in HICUML2 buil-in model
This commit is contained in:
parent
9fe87c68e8
commit
53d94d81b5
|
|
@ -1,304 +1,304 @@
|
|||
/**********
|
||||
License : 3-clause BSD
|
||||
Spice3 Implementation: 2019-2020 Dietmar Warning, Markus Müller, Mario Krattenmacher
|
||||
Model Author : 1990 Michael Schröter TU Dresden
|
||||
**********/
|
||||
|
||||
/*
|
||||
* This file defines the HICUM data structures that are
|
||||
* available to the next level(s) up the calling hierarchy
|
||||
*/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/devdefs.h"
|
||||
#include "hicum2defs.h"
|
||||
#include "ngspice/suffix.h"
|
||||
|
||||
IFparm HICUMpTable[] = { /* parameters */
|
||||
IOPU("area", HICUM_AREA, IF_REAL, "Area factor"),
|
||||
IOPU("off", HICUM_OFF, IF_FLAG, "Device initially off"),
|
||||
IP("ic", HICUM_IC, IF_REALVEC, "Initial condition vector"),
|
||||
|
||||
// these are left here for future. Sometimes it is advantageous for debugging if one can set the initial node voltages of all nodes.
|
||||
// OP("icvb", HICUM_IC_VB, IF_REAL, "Initial B potential"),
|
||||
// OP("icvc", HICUM_IC_VC, IF_REAL, "Initial C potential"),
|
||||
// OP("icve", HICUM_IC_VE, IF_REAL, "Initial E potential"),
|
||||
// OP("icvbi", HICUM_IC_VBi, IF_REAL, "Initial Bi potential"),
|
||||
// OP("icvbp", HICUM_IC_VBp, IF_REAL, "Initial Bp potential"),
|
||||
// OP("icvci", HICUM_IC_VCi, IF_REAL, "Initial Ci potential"),
|
||||
// OP("icvt", HICUM_IC_Vt, IF_REAL, "Initial T potential"),
|
||||
// OP("icvei", HICUM_IC_VEi, IF_REAL, "Initial Ei potential"),
|
||||
|
||||
IOPU("m", HICUM_M, IF_REAL, "Multiplier"),
|
||||
IOPU("temp", HICUM_TEMP, IF_REAL, "Instance temperature"),
|
||||
IP("dt", HICUM_DTEMP, IF_REAL, "Instance delta temperature"),
|
||||
IOPU("tk", HICUM_QUEST_TK, IF_REAL, "Actual device temperature"),
|
||||
IOPU("dtsh", HICUM_QUEST_DTSH, IF_REAL, "Temperature increase due to self-heating"),
|
||||
IOPU("it", HICUM_QUEST_IT, IF_REAL, "transfer current"),
|
||||
|
||||
OPU("collnode", HICUM_QUEST_COLLNODE, IF_INTEGER, "Number of collector node"),
|
||||
OPU("basenode", HICUM_QUEST_BASENODE, IF_INTEGER, "Number of base node"),
|
||||
OPU("emitnode", HICUM_QUEST_EMITNODE, IF_INTEGER, "Number of emitter node"),
|
||||
OPU("subsnode", HICUM_QUEST_SUBSNODE, IF_INTEGER, "Number of substrate node"),
|
||||
OPU("tempnode", HICUM_QUEST_TEMPNODE, IF_INTEGER, "Number of temperature node"),
|
||||
OPU("collCInode", HICUM_QUEST_COLLCINODE, IF_INTEGER, "Internal collector node"),
|
||||
OPU("baseBPnode", HICUM_QUEST_BASEBPNODE, IF_INTEGER, "External base node"),
|
||||
OPU("baseBInode", HICUM_QUEST_BASEBINODE, IF_INTEGER, "Internal base node"),
|
||||
OPU("emitEInode", HICUM_QUEST_EMITEINODE, IF_INTEGER, "Internal emitter node"),
|
||||
OPU("subsSInode", HICUM_QUEST_SUBSSINODE, IF_INTEGER, "Internal substrate node"),
|
||||
OPU("xfnode", HICUM_QUEST_XFNODE, IF_INTEGER, "Internal phase node xf"),
|
||||
OPU("xf1node", HICUM_QUEST_XF1NODE, IF_INTEGER, "Internal phase node xf1"),
|
||||
OPU("xf2node", HICUM_QUEST_XF2NODE, IF_INTEGER, "Internal phase node xf2"),
|
||||
/* voltages */
|
||||
OP("vbe", HICUM_QUEST_VBE, IF_REAL, "External BE voltage"),
|
||||
OP("vbbp", HICUM_QUEST_VBBP, IF_REAL, "BBP voltage"),
|
||||
OP("vbc", HICUM_QUEST_VBC, IF_REAL, "External BC voltage"),
|
||||
OP("vce", HICUM_QUEST_VCE, IF_REAL, "External CE voltage"),
|
||||
OP("vsc", HICUM_QUEST_VSC, IF_REAL, "External SC voltage"),
|
||||
OP("vbiei", HICUM_QUEST_VBIEI, IF_REAL, "Internal BE voltage"),
|
||||
OP("vbpbi", HICUM_QUEST_VBPBI, IF_REAL, "Peripheral Base to internal Base voltage"),
|
||||
OP("vbici", HICUM_QUEST_VBICI, IF_REAL, "Internal BC voltage"),
|
||||
OP("vciei", HICUM_QUEST_VCIEI, IF_REAL, "Internal CE voltage"),
|
||||
/* currents */
|
||||
OP("ic", HICUM_QUEST_CC, IF_REAL, "Collector current"),
|
||||
OP("iavl", HICUM_QUEST_CAVL, IF_REAL, "Avalanche current"),
|
||||
OP("ib", HICUM_QUEST_CB, IF_REAL, "Base current"),
|
||||
OP("ibei", HICUM_QUEST_CBEI, IF_REAL, "Intenral Base Emitter current"),
|
||||
OP("ibci", HICUM_QUEST_CBCI, IF_REAL, "Internal Base Collector current"),
|
||||
OP("ie", HICUM_QUEST_CE, IF_REAL, "Emitter current"),
|
||||
OP("is", HICUM_QUEST_CS, IF_REAL, "Substrate current"),
|
||||
/* resistances */
|
||||
OP("rcx_t", HICUM_QUEST_RCX_T, IF_REAL, "External (saturated) collector series resistance"),
|
||||
OP("re_t", HICUM_QUEST_RE_T, IF_REAL, "Emitter series resistance"),
|
||||
OP("rbi", HICUM_QUEST_RBI, IF_REAL, "Internal base resistance as calculated in the model"),
|
||||
OP("rb", HICUM_QUEST_RB, IF_REAL, "Total base resistance as calculated in the model"),
|
||||
|
||||
/* transconductances and capacitances */
|
||||
OP("betadc", HICUM_QUEST_BETADC, IF_REAL, "Common emitter forward current gain"),
|
||||
OP("gmi", HICUM_QUEST_GMI, IF_REAL, "Internal transconductance"),
|
||||
OP("gms", HICUM_QUEST_GMS, IF_REAL, "Transconductance of the parasitic substrate PNP"),
|
||||
OP("rpii", HICUM_QUEST_RPII, IF_REAL, "Internal base-emitter (input) resistance"),
|
||||
OP("rpix", HICUM_QUEST_RPIX, IF_REAL, "External base-emitter (input) resistance"),
|
||||
OP("rmui", HICUM_QUEST_RMUI, IF_REAL, "Internal feedback resistance"),
|
||||
OP("rmux", HICUM_QUEST_RMUX, IF_REAL, "External feedback resistance"),
|
||||
OP("roi", HICUM_QUEST_ROI, IF_REAL, "Output resistance"),
|
||||
OP("cpii", HICUM_QUEST_CPII, IF_REAL, "Total internal BE capacitance"),
|
||||
OP("cpix", HICUM_QUEST_CPIX, IF_REAL, "Total external BE capacitance"),
|
||||
OP("cmui", HICUM_QUEST_CMUI, IF_REAL, "Total internal BC capacitance"),
|
||||
OP("cmux", HICUM_QUEST_CMUX, IF_REAL, "Total external BC capacitance"),
|
||||
OP("ccs", HICUM_QUEST_CCS, IF_REAL, "CS junction capacitance"),
|
||||
OP("betaac", HICUM_QUEST_BETAAC, IF_REAL, "Small signal current gain"),
|
||||
OP("crbi", HICUM_QUEST_CRBI, IF_REAL, "Shunt capacitance across RBI as calculated in the model"),
|
||||
/* transit time */
|
||||
OP("tf", HICUM_QUEST_TF, IF_REAL, "Forward transit time"),
|
||||
OP("ft", HICUM_QUEST_FT, IF_REAL, "Transit frequency"),
|
||||
OP("ick", HICUM_QUEST_ICK, IF_REAL, "Transit frequency"),
|
||||
/* power */
|
||||
OP("p", HICUM_QUEST_POWER, IF_REAL, "Power dissipation")
|
||||
};
|
||||
|
||||
IFparm HICUMmPTable[] = { /* model parameters */
|
||||
//Circuit simulator specific parameters
|
||||
IOP("type", HICUM_MOD_TYPE, IF_STRING, "For transistor type NPN(+1) or PNP (-1)"),
|
||||
IOPU("npn", HICUM_MOD_NPN, IF_FLAG, "NPN type device"),
|
||||
IOPU("pnp", HICUM_MOD_PNP, IF_FLAG, "PNP type device"),
|
||||
IOP("tnom", HICUM_MOD_TNOM, IF_REAL, "Temperature at which parameters are specified"),
|
||||
IOPR("tref", HICUM_MOD_TNOM, IF_REAL, "Temperature at which parameters are specified"),
|
||||
IOP("version", HICUM_MOD_VERSION, IF_STRING, " parameter for model version"),
|
||||
|
||||
//Transfer current
|
||||
IOP("c10", HICUM_MOD_C10 , IF_REAL, "GICCR constant"),
|
||||
IOP("qp0", HICUM_MOD_QP0 , IF_REAL, "Zero-bias hole charge"),
|
||||
IOP("ich", HICUM_MOD_ICH , IF_REAL, "High-current correction for 2D and 3D effects"), //`0' signifies infinity
|
||||
IOP("hf0", HICUM_MOD_HF0 , IF_REAL, "Weight factor for the low current minority charge"),
|
||||
IOP("hfe", HICUM_MOD_HFE , IF_REAL, "Emitter minority charge weighting factor in HBTs"),
|
||||
IOP("hfc", HICUM_MOD_HFC , IF_REAL, "Collector minority charge weighting factor in HBTs"),
|
||||
IOP("hjei", HICUM_MOD_HJEI , IF_REAL, "B-E depletion charge weighting factor in HBTs"),
|
||||
IOP("ahjei", HICUM_MOD_AHJEI, IF_REAL, "Parameter describing the slope of hjEi(VBE)"),
|
||||
IOP("rhjei", HICUM_MOD_RHJEI, IF_REAL, "Smoothing parameter for hjEi(VBE) at high voltage"),
|
||||
IOP("hjci", HICUM_MOD_HJCI , IF_REAL, "B-C depletion charge weighting factor in HBTs"),
|
||||
|
||||
//Base-Emitter diode currents
|
||||
IOP("ibeis", HICUM_MOD_IBEIS, IF_REAL, "Internal B-E saturation current"),
|
||||
IOP("mbei", HICUM_MOD_MBEI , IF_REAL, "Internal B-E current ideality factor"),
|
||||
IOP("ireis", HICUM_MOD_IREIS, IF_REAL, "Internal B-E recombination saturation current"),
|
||||
IOP("mrei", HICUM_MOD_MREI , IF_REAL, "Internal B-E recombination current ideality factor"),
|
||||
IOP("ibeps", HICUM_MOD_IBEPS, IF_REAL, "Peripheral B-E saturation current"),
|
||||
IOP("mbep", HICUM_MOD_MBEP , IF_REAL, "Peripheral B-E current ideality factor"),
|
||||
IOP("ireps", HICUM_MOD_IREPS, IF_REAL, "Peripheral B-E recombination saturation current"),
|
||||
IOP("mrep", HICUM_MOD_MREP , IF_REAL, "Peripheral B-E recombination current ideality factor"),
|
||||
IOP("mcf", HICUM_MOD_MCF , IF_REAL, "Non-ideality factor for III-V HBTs"),
|
||||
|
||||
//Transit time for excess recombination current at b-c barrier
|
||||
IOP("tbhrec", HICUM_MOD_TBHREC, IF_REAL, "Base current recombination time constant at B-C barrier for high forward injection"),
|
||||
|
||||
//Base-Collector diode currents
|
||||
IOP("ibcis", HICUM_MOD_IBCIS, IF_REAL, "Internal B-C saturation current"),
|
||||
IOP("mbci", HICUM_MOD_MBCI , IF_REAL, "Internal B-C current ideality factor"),
|
||||
IOP("ibcxs", HICUM_MOD_IBCXS, IF_REAL, "External B-C saturation current"),
|
||||
IOP("mbcx", HICUM_MOD_MBCX , IF_REAL, "External B-C current ideality factor"),
|
||||
|
||||
//Base-Emitter tunneling current
|
||||
IOP("ibets", HICUM_MOD_IBETS, IF_REAL, "B-E tunneling saturation current"),
|
||||
IOP("abet", HICUM_MOD_ABET, IF_REAL, "Exponent factor for tunneling current"),
|
||||
IOP("tunode",HICUM_MOD_TUNODE, IF_INTEGER, "Specifies the base node connection for the tunneling current"), // =1 signifies perimeter node
|
||||
|
||||
//Base-Collector avalanche current
|
||||
IOP("favl", HICUM_MOD_FAVL , IF_REAL, "Avalanche current factor"),
|
||||
IOP("qavl", HICUM_MOD_QAVL , IF_REAL, "Exponent factor for avalanche current"),
|
||||
IOP("kavl", HICUM_MOD_KAVL , IF_REAL, "Flag/factor for turning strong avalanche on"),
|
||||
IOP("alfav", HICUM_MOD_ALFAV, IF_REAL, "Relative TC for FAVL"),
|
||||
IOP("alqav", HICUM_MOD_ALQAV, IF_REAL, "Relative TC for QAVL"),
|
||||
IOP("alkav", HICUM_MOD_ALKAV, IF_REAL, "Relative TC for KAVL"),
|
||||
|
||||
//Series resistances
|
||||
IOP("rbi0", HICUM_MOD_RBI0 , IF_REAL, "Zero bias internal base resistance"),
|
||||
IOP("rbx", HICUM_MOD_RBX , IF_REAL, "External base series resistance"),
|
||||
IOP("fgeo", HICUM_MOD_FGEO , IF_REAL, "Factor for geometry dependence of emitter current crowding"),
|
||||
IOP("fdqr0", HICUM_MOD_FDQR0, IF_REAL, "Correction factor for modulation by B-E and B-C space charge layer"),
|
||||
IOP("fcrbi", HICUM_MOD_FCRBI, IF_REAL, "Ratio of HF shunt to total internal capacitance (lateral NQS effect)"),
|
||||
IOP("fqi", HICUM_MOD_FQI , IF_REAL, "Ration of internal to total minority charge"),
|
||||
IOP("re", HICUM_MOD_RE , IF_REAL, "Emitter series resistance"),
|
||||
IOP("rcx", HICUM_MOD_RCX , IF_REAL, "External collector series resistance"),
|
||||
|
||||
//Substrate transistor
|
||||
IOP("itss", HICUM_MOD_ITSS, IF_REAL, "Substrate transistor transfer saturation current"),
|
||||
IOP("msf", HICUM_MOD_MSF , IF_REAL, "Forward ideality factor of substrate transfer current"),
|
||||
IOP("iscs", HICUM_MOD_ISCS, IF_REAL, "C-S diode saturation current"),
|
||||
IOP("msc", HICUM_MOD_MSC , IF_REAL, "Ideality factor of C-S diode current"),
|
||||
IOP("tsf", HICUM_MOD_TSF , IF_REAL, "Transit time for forward operation of substrate transistor"),
|
||||
|
||||
//Intra-device substrate coupling
|
||||
IOP("rsu", HICUM_MOD_RSU, IF_REAL, "Substrate series resistance"),
|
||||
IOP("csu", HICUM_MOD_CSU, IF_REAL, "Substrate shunt capacitance"),
|
||||
|
||||
//Depletion Capacitances
|
||||
IOP("cjei0", HICUM_MOD_CJEI0 , IF_REAL, "Internal B-E zero-bias depletion capacitance"),
|
||||
IOP("vdei", HICUM_MOD_VDEI , IF_REAL, "Internal B-E built-in potential"),
|
||||
IOP("zei", HICUM_MOD_ZEI , IF_REAL, "Internal B-E grading coefficient"),
|
||||
IOP("ajei", HICUM_MOD_AJEI , IF_REAL, "Ratio of maximum to zero-bias value of internal B-E capacitance"),
|
||||
IOPR("aljei", HICUM_MOD_AJEI , IF_REAL, "Ratio of maximum to zero-bias value of internal B-E capacitance"),
|
||||
IOP("cjep0", HICUM_MOD_CJEP0 , IF_REAL, "Peripheral B-E zero-bias depletion capacitance"),
|
||||
IOP("vdep", HICUM_MOD_VDEP , IF_REAL, "Peripheral B-E built-in potential"),
|
||||
IOP("zep", HICUM_MOD_ZEP , IF_REAL, "Peripheral B-E grading coefficient"),
|
||||
IOP("ajep", HICUM_MOD_AJEP , IF_REAL, "Ratio of maximum to zero-bias value of peripheral B-E capacitance"),
|
||||
IOPR("aljep", HICUM_MOD_AJEP , IF_REAL, "Ratio of maximum to zero-bias value of peripheral B-E capacitance"),
|
||||
IOP("cjci0", HICUM_MOD_CJCI0 , IF_REAL, "Internal B-C zero-bias depletion capacitance"),
|
||||
IOP("vdci", HICUM_MOD_VDCI , IF_REAL, "Internal B-C built-in potential"),
|
||||
IOP("zci", HICUM_MOD_ZCI , IF_REAL, "Internal B-C grading coefficient"),
|
||||
IOP("vptci", HICUM_MOD_VPTCI , IF_REAL, "Internal B-C punch-through voltage"),
|
||||
IOP("cjcx0", HICUM_MOD_CJCX0 , IF_REAL, "External B-C zero-bias depletion capacitance"),
|
||||
IOP("vdcx", HICUM_MOD_VDCX , IF_REAL, "External B-C built-in potential"),
|
||||
IOP("zcx", HICUM_MOD_ZCX , IF_REAL, "External B-C grading coefficient"),
|
||||
IOP("vptcx", HICUM_MOD_VPTCX , IF_REAL, "External B-C punch-through voltage"),
|
||||
IOP("fbcpar", HICUM_MOD_FBCPAR, IF_REAL, "Partitioning factor of parasitic B-C cap"),
|
||||
IOPR("fbc", HICUM_MOD_FBCPAR, IF_REAL, "Partitioning factor of parasitic B-C cap"),
|
||||
IOP("fbepar", HICUM_MOD_FBEPAR, IF_REAL, "Partitioning factor of parasitic B-E cap"),
|
||||
IOPR("fbe", HICUM_MOD_FBEPAR, IF_REAL, "Partitioning factor of parasitic B-E cap"),
|
||||
IOP("cjs0", HICUM_MOD_CJS0 , IF_REAL, "C-S zero-bias depletion capacitance"),
|
||||
IOP("vds", HICUM_MOD_VDS , IF_REAL, "C-S built-in potential"),
|
||||
IOP("zs", HICUM_MOD_ZS , IF_REAL, "C-S grading coefficient"),
|
||||
IOP("vpts", HICUM_MOD_VPTS , IF_REAL, "C-S punch-through voltage"),
|
||||
IOP("cscp0", HICUM_MOD_CSCP0 , IF_REAL, "Perimeter S-C zero-bias depletion capacitance"),
|
||||
IOP("vdsp", HICUM_MOD_VDSP , IF_REAL, "Perimeter S-C built-in potential"),
|
||||
IOP("zsp", HICUM_MOD_ZSP , IF_REAL, "Perimeter S-C grading coefficient"),
|
||||
IOP("vptsp", HICUM_MOD_VPTSP , IF_REAL, "Perimeter S-C punch-through voltage"),
|
||||
|
||||
//Diffusion Capacitances
|
||||
IOP("t0", HICUM_MOD_T0 , IF_REAL, "Low current forward transit time at VBC=0V"),
|
||||
IOP("dt0h", HICUM_MOD_DT0H , IF_REAL, "Time constant for base and B-C space charge layer width modulation"),
|
||||
IOP("tbvl", HICUM_MOD_TBVL , IF_REAL, "Time constant for modeling carrier jam at low VCE"),
|
||||
IOP("tef0", HICUM_MOD_TEF0 , IF_REAL, "Neutral emitter storage time"),
|
||||
IOP("gtfe", HICUM_MOD_GTFE , IF_REAL, "Exponent factor for current dependence of neutral emitter storage time"),
|
||||
IOP("thcs", HICUM_MOD_THCS , IF_REAL, "Saturation time constant at high current densities"),
|
||||
IOP("ahc", HICUM_MOD_AHC , IF_REAL, "Smoothing factor for current dependence of base and collector transit time"),
|
||||
IOPR("alhc", HICUM_MOD_AHC , IF_REAL, "Smoothing factor for current dependence of base and collector transit time"),
|
||||
IOP("fthc", HICUM_MOD_FTHC , IF_REAL, "Partitioning factor for base and collector portion"),
|
||||
IOP("rci0", HICUM_MOD_RCI0 , IF_REAL, "Internal collector resistance at low electric field"),
|
||||
IOP("vlim", HICUM_MOD_VLIM , IF_REAL, "Voltage separating ohmic and saturation velocity regime"),
|
||||
IOP("vces", HICUM_MOD_VCES , IF_REAL, "Internal C-E saturation voltage"),
|
||||
IOP("vpt", HICUM_MOD_VPT , IF_REAL, "Collector punch-through voltage"), // `0' signifies infinity
|
||||
IOP("aick", HICUM_MOD_AICK , IF_REAL, "Smoothing term for ICK"),
|
||||
IOP("delck", HICUM_MOD_DELCK, IF_REAL, "Fitting factor for critical current"),
|
||||
IOP("tr", HICUM_MOD_TR , IF_REAL, "Storage time for inverse operation"),
|
||||
IOP("vcbar", HICUM_MOD_VCBAR, IF_REAL, "Barrier voltage"),
|
||||
IOP("icbar", HICUM_MOD_ICBAR, IF_REAL, "Normalization parameter"),
|
||||
IOP("acbar", HICUM_MOD_ACBAR, IF_REAL, "Smoothing parameter for barrier voltage"),
|
||||
|
||||
//Isolation Capacitances
|
||||
IOP("cbepar", HICUM_MOD_CBEPAR, IF_REAL, "Total parasitic B-E capacitance"),
|
||||
IOPR("ceox", HICUM_MOD_CBEPAR, IF_REAL, "Total parasitic B-E capacitance"),
|
||||
IOP("cbcpar", HICUM_MOD_CBCPAR, IF_REAL, "Total parasitic B-C capacitance"),
|
||||
IOPR("ccox", HICUM_MOD_CBCPAR, IF_REAL, "Total parasitic B-C capacitance"),
|
||||
|
||||
//Non-quasi-static Effect
|
||||
IOP("alqf", HICUM_MOD_ALQF, IF_REAL, "Factor for additional delay time of minority charge"),
|
||||
IOP("alit", HICUM_MOD_ALIT, IF_REAL, "Factor for additional delay time of transfer current"),
|
||||
IOP("flnqs", HICUM_MOD_FLNQS, IF_INTEGER, "Flag for turning on and off of vertical NQS effect"),
|
||||
|
||||
//Noise
|
||||
IOP("kf", HICUM_MOD_KF , IF_REAL, "Flicker noise coefficient"),
|
||||
IOP("af", HICUM_MOD_AF , IF_REAL, "Flicker noise exponent factor"),
|
||||
IOP("cfbe", HICUM_MOD_CFBE , IF_INTEGER, "Flag for determining where to tag the flicker noise source"),
|
||||
IOP("flcono", HICUM_MOD_FLCONO, IF_INTEGER, "Flag for turning on and off of correlated noise implementation"),
|
||||
IOP("kfre", HICUM_MOD_KFRE , IF_REAL, "Emitter resistance flicker noise coefficient"),
|
||||
IOP("afre", HICUM_MOD_AFRE , IF_REAL, "Emitter resistance flicker noise exponent factor"),
|
||||
|
||||
//Lateral Geometry Scaling (at high current densities)
|
||||
IOP("latb", HICUM_MOD_LATB, IF_REAL, "Scaling factor for collector minority charge in direction of emitter width"),
|
||||
IOP("latl", HICUM_MOD_LATL, IF_REAL, "Scaling factor for collector minority charge in direction of emitter length"),
|
||||
|
||||
//Temperature dependence
|
||||
IOP("vgb", HICUM_MOD_VGB , IF_REAL, "Bandgap voltage extrapolated to 0 K"),
|
||||
IOP("alt0", HICUM_MOD_ALT0 , IF_REAL, "First order relative TC of parameter T0"),
|
||||
IOP("kt0", HICUM_MOD_KT0 , IF_REAL, "Second order relative TC of parameter T0"),
|
||||
IOP("zetaci", HICUM_MOD_ZETACI , IF_REAL, "Temperature exponent for RCI0"),
|
||||
IOP("alvs", HICUM_MOD_ALVS , IF_REAL, "Relative TC of saturation drift velocity"),
|
||||
IOP("alces", HICUM_MOD_ALCES , IF_REAL, "Relative TC of VCES"),
|
||||
IOP("zetarbi", HICUM_MOD_ZETARBI , IF_REAL, "Temperature exponent of internal base resistance"),
|
||||
IOP("zetarbx", HICUM_MOD_ZETARBX , IF_REAL, "Temperature exponent of external base resistance"),
|
||||
IOP("zetarcx", HICUM_MOD_ZETARCX , IF_REAL, "Temperature exponent of external collector resistance"),
|
||||
IOP("zetare", HICUM_MOD_ZETARE , IF_REAL, "Temperature exponent of emitter resistance"),
|
||||
IOP("zetacx", HICUM_MOD_ZETACX , IF_REAL, "Temperature exponent of mobility in substrate transistor transit time"),
|
||||
IOP("vge", HICUM_MOD_VGE , IF_REAL, "Effective emitter bandgap voltage"),
|
||||
IOP("vgc", HICUM_MOD_VGC , IF_REAL, "Effective collector bandgap voltage"),
|
||||
IOP("vgs", HICUM_MOD_VGS , IF_REAL, "Effective substrate bandgap voltage"),
|
||||
IOP("f1vg", HICUM_MOD_F1VG , IF_REAL, "Coefficient K1 in T-dependent band-gap equation"),
|
||||
IOP("f2vg", HICUM_MOD_F2VG , IF_REAL, "Coefficient K2 in T-dependent band-gap equation"),
|
||||
IOP("zetact", HICUM_MOD_ZETACT , IF_REAL, "Exponent coefficient in transfer current temperature dependence"),
|
||||
IOP("zetabet", HICUM_MOD_ZETABET , IF_REAL, "Exponent coefficient in B-E junction current temperature dependence"),
|
||||
IOP("alb", HICUM_MOD_ALB , IF_REAL, "Relative TC of forward current gain for V2.1 model"),
|
||||
IOP("dvgbe", HICUM_MOD_DVGBE , IF_REAL, "Bandgap difference between B and B-E junction used for hjEi0 and hf0"),
|
||||
IOP("zetahjei", HICUM_MOD_ZETAHJEI, IF_REAL, "Temperature coefficient for ahjEi"),
|
||||
IOP("zetavgbe", HICUM_MOD_ZETAVGBE, IF_REAL, "Temperature coefficient for hjEi0"),
|
||||
|
||||
//Self-Heating
|
||||
IOP("flsh", HICUM_MOD_FLSH , IF_INTEGER, "Flag for turning on and off self-heating effect"),
|
||||
IOP("rth", HICUM_MOD_RTH , IF_REAL, "Thermal resistance"),
|
||||
IOP("zetarth", HICUM_MOD_ZETARTH, IF_REAL, "Temperature coefficient for Rth"),
|
||||
IOP("alrth", HICUM_MOD_ALRTH , IF_REAL, "First order relative TC of parameter Rth"),
|
||||
IOP("cth", HICUM_MOD_CTH , IF_REAL, "Thermal capacitance"),
|
||||
|
||||
//Compatibility with V2.1
|
||||
IOP("flcomp", HICUM_MOD_FLCOMP, IF_REAL, "Flag for compatibility with v2.1 model (0=v2.1)"),
|
||||
|
||||
IOP("vbe_max", HICUM_MOD_VBE_MAX, IF_REAL, "maximum voltage B-E junction"),
|
||||
IOP("vbc_max", HICUM_MOD_VBC_MAX, IF_REAL, "maximum voltage B-C junction"),
|
||||
IOP("vce_max", HICUM_MOD_VCE_MAX, IF_REAL, "maximum voltage C-E branch")
|
||||
|
||||
};
|
||||
|
||||
char *HICUMnames[] = {
|
||||
"collector",
|
||||
"base",
|
||||
"emitter",
|
||||
"substrate",
|
||||
"temp"
|
||||
};
|
||||
|
||||
|
||||
int HICUMnSize = NUMELEMS(HICUMnames);
|
||||
int HICUMpTSize = NUMELEMS(HICUMpTable);
|
||||
int HICUMmPTSize = NUMELEMS(HICUMmPTable);
|
||||
int HICUMiSize = sizeof(HICUMinstance);
|
||||
int HICUMmSize = sizeof(HICUMmodel);
|
||||
/**********
|
||||
License : 3-clause BSD
|
||||
Spice3 Implementation: 2019-2020 Dietmar Warning, Markus Müller, Mario Krattenmacher
|
||||
Model Author : (Copyright 1993-2024) Michael Schroter
|
||||
**********/
|
||||
|
||||
/*
|
||||
* This file defines the HICUM data structures that are
|
||||
* available to the next level(s) up the calling hierarchy
|
||||
*/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/devdefs.h"
|
||||
#include "hicum2defs.h"
|
||||
#include "ngspice/suffix.h"
|
||||
|
||||
IFparm HICUMpTable[] = { /* parameters */
|
||||
IOPU("area", HICUM_AREA, IF_REAL, "Area factor"),
|
||||
IOPU("off", HICUM_OFF, IF_FLAG, "Device initially off"),
|
||||
IP("ic", HICUM_IC, IF_REALVEC, "Initial condition vector"),
|
||||
|
||||
// these are left here for future. Sometimes it is advantageous for debugging if one can set the initial node voltages of all nodes.
|
||||
// OP("icvb", HICUM_IC_VB, IF_REAL, "Initial B potential"),
|
||||
// OP("icvc", HICUM_IC_VC, IF_REAL, "Initial C potential"),
|
||||
// OP("icve", HICUM_IC_VE, IF_REAL, "Initial E potential"),
|
||||
// OP("icvbi", HICUM_IC_VBi, IF_REAL, "Initial Bi potential"),
|
||||
// OP("icvbp", HICUM_IC_VBp, IF_REAL, "Initial Bp potential"),
|
||||
// OP("icvci", HICUM_IC_VCi, IF_REAL, "Initial Ci potential"),
|
||||
// OP("icvt", HICUM_IC_Vt, IF_REAL, "Initial T potential"),
|
||||
// OP("icvei", HICUM_IC_VEi, IF_REAL, "Initial Ei potential"),
|
||||
|
||||
IOPU("m", HICUM_M, IF_REAL, "Multiplier"),
|
||||
IOPU("temp", HICUM_TEMP, IF_REAL, "Instance temperature"),
|
||||
IP("dt", HICUM_DTEMP, IF_REAL, "Instance delta temperature"),
|
||||
IOPU("tk", HICUM_QUEST_TK, IF_REAL, "Actual device temperature"),
|
||||
IOPU("dtsh", HICUM_QUEST_DTSH, IF_REAL, "Temperature increase due to self-heating"),
|
||||
IOPU("it", HICUM_QUEST_IT, IF_REAL, "transfer current"),
|
||||
|
||||
OPU("collnode", HICUM_QUEST_COLLNODE, IF_INTEGER, "Number of collector node"),
|
||||
OPU("basenode", HICUM_QUEST_BASENODE, IF_INTEGER, "Number of base node"),
|
||||
OPU("emitnode", HICUM_QUEST_EMITNODE, IF_INTEGER, "Number of emitter node"),
|
||||
OPU("subsnode", HICUM_QUEST_SUBSNODE, IF_INTEGER, "Number of substrate node"),
|
||||
OPU("tempnode", HICUM_QUEST_TEMPNODE, IF_INTEGER, "Number of temperature node"),
|
||||
OPU("collCInode", HICUM_QUEST_COLLCINODE, IF_INTEGER, "Internal collector node"),
|
||||
OPU("baseBPnode", HICUM_QUEST_BASEBPNODE, IF_INTEGER, "External base node"),
|
||||
OPU("baseBInode", HICUM_QUEST_BASEBINODE, IF_INTEGER, "Internal base node"),
|
||||
OPU("emitEInode", HICUM_QUEST_EMITEINODE, IF_INTEGER, "Internal emitter node"),
|
||||
OPU("subsSInode", HICUM_QUEST_SUBSSINODE, IF_INTEGER, "Internal substrate node"),
|
||||
OPU("xfnode", HICUM_QUEST_XFNODE, IF_INTEGER, "Internal phase node xf"),
|
||||
OPU("xf1node", HICUM_QUEST_XF1NODE, IF_INTEGER, "Internal phase node xf1"),
|
||||
OPU("xf2node", HICUM_QUEST_XF2NODE, IF_INTEGER, "Internal phase node xf2"),
|
||||
/* voltages */
|
||||
OP("vbe", HICUM_QUEST_VBE, IF_REAL, "External BE voltage"),
|
||||
OP("vbbp", HICUM_QUEST_VBBP, IF_REAL, "BBP voltage"),
|
||||
OP("vbc", HICUM_QUEST_VBC, IF_REAL, "External BC voltage"),
|
||||
OP("vce", HICUM_QUEST_VCE, IF_REAL, "External CE voltage"),
|
||||
OP("vsc", HICUM_QUEST_VSC, IF_REAL, "External SC voltage"),
|
||||
OP("vbiei", HICUM_QUEST_VBIEI, IF_REAL, "Internal BE voltage"),
|
||||
OP("vbpbi", HICUM_QUEST_VBPBI, IF_REAL, "Peripheral Base to internal Base voltage"),
|
||||
OP("vbici", HICUM_QUEST_VBICI, IF_REAL, "Internal BC voltage"),
|
||||
OP("vciei", HICUM_QUEST_VCIEI, IF_REAL, "Internal CE voltage"),
|
||||
/* currents */
|
||||
OP("ic", HICUM_QUEST_CC, IF_REAL, "Collector current"),
|
||||
OP("iavl", HICUM_QUEST_CAVL, IF_REAL, "Avalanche current"),
|
||||
OP("ib", HICUM_QUEST_CB, IF_REAL, "Base current"),
|
||||
OP("ibei", HICUM_QUEST_CBEI, IF_REAL, "Intenral Base Emitter current"),
|
||||
OP("ibci", HICUM_QUEST_CBCI, IF_REAL, "Internal Base Collector current"),
|
||||
OP("ie", HICUM_QUEST_CE, IF_REAL, "Emitter current"),
|
||||
OP("is", HICUM_QUEST_CS, IF_REAL, "Substrate current"),
|
||||
/* resistances */
|
||||
OP("rcx_t", HICUM_QUEST_RCX_T, IF_REAL, "External (saturated) collector series resistance"),
|
||||
OP("re_t", HICUM_QUEST_RE_T, IF_REAL, "Emitter series resistance"),
|
||||
OP("rbi", HICUM_QUEST_RBI, IF_REAL, "Internal base resistance as calculated in the model"),
|
||||
OP("rb", HICUM_QUEST_RB, IF_REAL, "Total base resistance as calculated in the model"),
|
||||
|
||||
/* transconductances and capacitances */
|
||||
OP("betadc", HICUM_QUEST_BETADC, IF_REAL, "Common emitter forward current gain"),
|
||||
OP("gmi", HICUM_QUEST_GMI, IF_REAL, "Internal transconductance"),
|
||||
OP("gms", HICUM_QUEST_GMS, IF_REAL, "Transconductance of the parasitic substrate PNP"),
|
||||
OP("rpii", HICUM_QUEST_RPII, IF_REAL, "Internal base-emitter (input) resistance"),
|
||||
OP("rpix", HICUM_QUEST_RPIX, IF_REAL, "External base-emitter (input) resistance"),
|
||||
OP("rmui", HICUM_QUEST_RMUI, IF_REAL, "Internal feedback resistance"),
|
||||
OP("rmux", HICUM_QUEST_RMUX, IF_REAL, "External feedback resistance"),
|
||||
OP("roi", HICUM_QUEST_ROI, IF_REAL, "Output resistance"),
|
||||
OP("cpii", HICUM_QUEST_CPII, IF_REAL, "Total internal BE capacitance"),
|
||||
OP("cpix", HICUM_QUEST_CPIX, IF_REAL, "Total external BE capacitance"),
|
||||
OP("cmui", HICUM_QUEST_CMUI, IF_REAL, "Total internal BC capacitance"),
|
||||
OP("cmux", HICUM_QUEST_CMUX, IF_REAL, "Total external BC capacitance"),
|
||||
OP("ccs", HICUM_QUEST_CCS, IF_REAL, "CS junction capacitance"),
|
||||
OP("betaac", HICUM_QUEST_BETAAC, IF_REAL, "Small signal current gain"),
|
||||
OP("crbi", HICUM_QUEST_CRBI, IF_REAL, "Shunt capacitance across RBI as calculated in the model"),
|
||||
/* transit time */
|
||||
OP("tf", HICUM_QUEST_TF, IF_REAL, "Forward transit time"),
|
||||
OP("ft", HICUM_QUEST_FT, IF_REAL, "Transit frequency"),
|
||||
OP("ick", HICUM_QUEST_ICK, IF_REAL, "Transit frequency"),
|
||||
/* power */
|
||||
OP("p", HICUM_QUEST_POWER, IF_REAL, "Power dissipation")
|
||||
};
|
||||
|
||||
IFparm HICUMmPTable[] = { /* model parameters */
|
||||
//Circuit simulator specific parameters
|
||||
IOP("type", HICUM_MOD_TYPE, IF_STRING, "For transistor type NPN(+1) or PNP (-1)"),
|
||||
IOPU("npn", HICUM_MOD_NPN, IF_FLAG, "NPN type device"),
|
||||
IOPU("pnp", HICUM_MOD_PNP, IF_FLAG, "PNP type device"),
|
||||
IOP("tnom", HICUM_MOD_TNOM, IF_REAL, "Temperature at which parameters are specified"),
|
||||
IOPR("tref", HICUM_MOD_TNOM, IF_REAL, "Temperature at which parameters are specified"),
|
||||
IOP("version", HICUM_MOD_VERSION, IF_STRING, " parameter for model version"),
|
||||
|
||||
//Transfer current
|
||||
IOP("c10", HICUM_MOD_C10 , IF_REAL, "GICCR constant"),
|
||||
IOP("qp0", HICUM_MOD_QP0 , IF_REAL, "Zero-bias hole charge"),
|
||||
IOP("ich", HICUM_MOD_ICH , IF_REAL, "High-current correction for 2D and 3D effects"), //`0' signifies infinity
|
||||
IOP("hf0", HICUM_MOD_HF0 , IF_REAL, "Weight factor for the low current minority charge"),
|
||||
IOP("hfe", HICUM_MOD_HFE , IF_REAL, "Emitter minority charge weighting factor in HBTs"),
|
||||
IOP("hfc", HICUM_MOD_HFC , IF_REAL, "Collector minority charge weighting factor in HBTs"),
|
||||
IOP("hjei", HICUM_MOD_HJEI , IF_REAL, "B-E depletion charge weighting factor in HBTs"),
|
||||
IOP("ahjei", HICUM_MOD_AHJEI, IF_REAL, "Parameter describing the slope of hjEi(VBE)"),
|
||||
IOP("rhjei", HICUM_MOD_RHJEI, IF_REAL, "Smoothing parameter for hjEi(VBE) at high voltage"),
|
||||
IOP("hjci", HICUM_MOD_HJCI , IF_REAL, "B-C depletion charge weighting factor in HBTs"),
|
||||
|
||||
//Base-Emitter diode currents
|
||||
IOP("ibeis", HICUM_MOD_IBEIS, IF_REAL, "Internal B-E saturation current"),
|
||||
IOP("mbei", HICUM_MOD_MBEI , IF_REAL, "Internal B-E current ideality factor"),
|
||||
IOP("ireis", HICUM_MOD_IREIS, IF_REAL, "Internal B-E recombination saturation current"),
|
||||
IOP("mrei", HICUM_MOD_MREI , IF_REAL, "Internal B-E recombination current ideality factor"),
|
||||
IOP("ibeps", HICUM_MOD_IBEPS, IF_REAL, "Peripheral B-E saturation current"),
|
||||
IOP("mbep", HICUM_MOD_MBEP , IF_REAL, "Peripheral B-E current ideality factor"),
|
||||
IOP("ireps", HICUM_MOD_IREPS, IF_REAL, "Peripheral B-E recombination saturation current"),
|
||||
IOP("mrep", HICUM_MOD_MREP , IF_REAL, "Peripheral B-E recombination current ideality factor"),
|
||||
IOP("mcf", HICUM_MOD_MCF , IF_REAL, "Non-ideality factor for III-V HBTs"),
|
||||
|
||||
//Transit time for excess recombination current at b-c barrier
|
||||
IOP("tbhrec", HICUM_MOD_TBHREC, IF_REAL, "Base current recombination time constant at B-C barrier for high forward injection"),
|
||||
|
||||
//Base-Collector diode currents
|
||||
IOP("ibcis", HICUM_MOD_IBCIS, IF_REAL, "Internal B-C saturation current"),
|
||||
IOP("mbci", HICUM_MOD_MBCI , IF_REAL, "Internal B-C current ideality factor"),
|
||||
IOP("ibcxs", HICUM_MOD_IBCXS, IF_REAL, "External B-C saturation current"),
|
||||
IOP("mbcx", HICUM_MOD_MBCX , IF_REAL, "External B-C current ideality factor"),
|
||||
|
||||
//Base-Emitter tunneling current
|
||||
IOP("ibets", HICUM_MOD_IBETS, IF_REAL, "B-E tunneling saturation current"),
|
||||
IOP("abet", HICUM_MOD_ABET, IF_REAL, "Exponent factor for tunneling current"),
|
||||
IOP("tunode",HICUM_MOD_TUNODE, IF_INTEGER, "Specifies the base node connection for the tunneling current"), // =1 signifies perimeter node
|
||||
|
||||
//Base-Collector avalanche current
|
||||
IOP("favl", HICUM_MOD_FAVL , IF_REAL, "Avalanche current factor"),
|
||||
IOP("qavl", HICUM_MOD_QAVL , IF_REAL, "Exponent factor for avalanche current"),
|
||||
IOP("kavl", HICUM_MOD_KAVL , IF_REAL, "Flag/factor for turning strong avalanche on"),
|
||||
IOP("alfav", HICUM_MOD_ALFAV, IF_REAL, "Relative TC for FAVL"),
|
||||
IOP("alqav", HICUM_MOD_ALQAV, IF_REAL, "Relative TC for QAVL"),
|
||||
IOP("alkav", HICUM_MOD_ALKAV, IF_REAL, "Relative TC for KAVL"),
|
||||
|
||||
//Series resistances
|
||||
IOP("rbi0", HICUM_MOD_RBI0 , IF_REAL, "Zero bias internal base resistance"),
|
||||
IOP("rbx", HICUM_MOD_RBX , IF_REAL, "External base series resistance"),
|
||||
IOP("fgeo", HICUM_MOD_FGEO , IF_REAL, "Factor for geometry dependence of emitter current crowding"),
|
||||
IOP("fdqr0", HICUM_MOD_FDQR0, IF_REAL, "Correction factor for modulation by B-E and B-C space charge layer"),
|
||||
IOP("fcrbi", HICUM_MOD_FCRBI, IF_REAL, "Ratio of HF shunt to total internal capacitance (lateral NQS effect)"),
|
||||
IOP("fqi", HICUM_MOD_FQI , IF_REAL, "Ration of internal to total minority charge"),
|
||||
IOP("re", HICUM_MOD_RE , IF_REAL, "Emitter series resistance"),
|
||||
IOP("rcx", HICUM_MOD_RCX , IF_REAL, "External collector series resistance"),
|
||||
|
||||
//Substrate transistor
|
||||
IOP("itss", HICUM_MOD_ITSS, IF_REAL, "Substrate transistor transfer saturation current"),
|
||||
IOP("msf", HICUM_MOD_MSF , IF_REAL, "Forward ideality factor of substrate transfer current"),
|
||||
IOP("iscs", HICUM_MOD_ISCS, IF_REAL, "C-S diode saturation current"),
|
||||
IOP("msc", HICUM_MOD_MSC , IF_REAL, "Ideality factor of C-S diode current"),
|
||||
IOP("tsf", HICUM_MOD_TSF , IF_REAL, "Transit time for forward operation of substrate transistor"),
|
||||
|
||||
//Intra-device substrate coupling
|
||||
IOP("rsu", HICUM_MOD_RSU, IF_REAL, "Substrate series resistance"),
|
||||
IOP("csu", HICUM_MOD_CSU, IF_REAL, "Substrate shunt capacitance"),
|
||||
|
||||
//Depletion Capacitances
|
||||
IOP("cjei0", HICUM_MOD_CJEI0 , IF_REAL, "Internal B-E zero-bias depletion capacitance"),
|
||||
IOP("vdei", HICUM_MOD_VDEI , IF_REAL, "Internal B-E built-in potential"),
|
||||
IOP("zei", HICUM_MOD_ZEI , IF_REAL, "Internal B-E grading coefficient"),
|
||||
IOP("ajei", HICUM_MOD_AJEI , IF_REAL, "Ratio of maximum to zero-bias value of internal B-E capacitance"),
|
||||
IOPR("aljei", HICUM_MOD_AJEI , IF_REAL, "Ratio of maximum to zero-bias value of internal B-E capacitance"),
|
||||
IOP("cjep0", HICUM_MOD_CJEP0 , IF_REAL, "Peripheral B-E zero-bias depletion capacitance"),
|
||||
IOP("vdep", HICUM_MOD_VDEP , IF_REAL, "Peripheral B-E built-in potential"),
|
||||
IOP("zep", HICUM_MOD_ZEP , IF_REAL, "Peripheral B-E grading coefficient"),
|
||||
IOP("ajep", HICUM_MOD_AJEP , IF_REAL, "Ratio of maximum to zero-bias value of peripheral B-E capacitance"),
|
||||
IOPR("aljep", HICUM_MOD_AJEP , IF_REAL, "Ratio of maximum to zero-bias value of peripheral B-E capacitance"),
|
||||
IOP("cjci0", HICUM_MOD_CJCI0 , IF_REAL, "Internal B-C zero-bias depletion capacitance"),
|
||||
IOP("vdci", HICUM_MOD_VDCI , IF_REAL, "Internal B-C built-in potential"),
|
||||
IOP("zci", HICUM_MOD_ZCI , IF_REAL, "Internal B-C grading coefficient"),
|
||||
IOP("vptci", HICUM_MOD_VPTCI , IF_REAL, "Internal B-C punch-through voltage"),
|
||||
IOP("cjcx0", HICUM_MOD_CJCX0 , IF_REAL, "External B-C zero-bias depletion capacitance"),
|
||||
IOP("vdcx", HICUM_MOD_VDCX , IF_REAL, "External B-C built-in potential"),
|
||||
IOP("zcx", HICUM_MOD_ZCX , IF_REAL, "External B-C grading coefficient"),
|
||||
IOP("vptcx", HICUM_MOD_VPTCX , IF_REAL, "External B-C punch-through voltage"),
|
||||
IOP("fbcpar", HICUM_MOD_FBCPAR, IF_REAL, "Partitioning factor of parasitic B-C cap"),
|
||||
IOPR("fbc", HICUM_MOD_FBCPAR, IF_REAL, "Partitioning factor of parasitic B-C cap"),
|
||||
IOP("fbepar", HICUM_MOD_FBEPAR, IF_REAL, "Partitioning factor of parasitic B-E cap"),
|
||||
IOPR("fbe", HICUM_MOD_FBEPAR, IF_REAL, "Partitioning factor of parasitic B-E cap"),
|
||||
IOP("cjs0", HICUM_MOD_CJS0 , IF_REAL, "C-S zero-bias depletion capacitance"),
|
||||
IOP("vds", HICUM_MOD_VDS , IF_REAL, "C-S built-in potential"),
|
||||
IOP("zs", HICUM_MOD_ZS , IF_REAL, "C-S grading coefficient"),
|
||||
IOP("vpts", HICUM_MOD_VPTS , IF_REAL, "C-S punch-through voltage"),
|
||||
IOP("cscp0", HICUM_MOD_CSCP0 , IF_REAL, "Perimeter S-C zero-bias depletion capacitance"),
|
||||
IOP("vdsp", HICUM_MOD_VDSP , IF_REAL, "Perimeter S-C built-in potential"),
|
||||
IOP("zsp", HICUM_MOD_ZSP , IF_REAL, "Perimeter S-C grading coefficient"),
|
||||
IOP("vptsp", HICUM_MOD_VPTSP , IF_REAL, "Perimeter S-C punch-through voltage"),
|
||||
|
||||
//Diffusion Capacitances
|
||||
IOP("t0", HICUM_MOD_T0 , IF_REAL, "Low current forward transit time at VBC=0V"),
|
||||
IOP("dt0h", HICUM_MOD_DT0H , IF_REAL, "Time constant for base and B-C space charge layer width modulation"),
|
||||
IOP("tbvl", HICUM_MOD_TBVL , IF_REAL, "Time constant for modeling carrier jam at low VCE"),
|
||||
IOP("tef0", HICUM_MOD_TEF0 , IF_REAL, "Neutral emitter storage time"),
|
||||
IOP("gtfe", HICUM_MOD_GTFE , IF_REAL, "Exponent factor for current dependence of neutral emitter storage time"),
|
||||
IOP("thcs", HICUM_MOD_THCS , IF_REAL, "Saturation time constant at high current densities"),
|
||||
IOP("ahc", HICUM_MOD_AHC , IF_REAL, "Smoothing factor for current dependence of base and collector transit time"),
|
||||
IOPR("alhc", HICUM_MOD_AHC , IF_REAL, "Smoothing factor for current dependence of base and collector transit time"),
|
||||
IOP("fthc", HICUM_MOD_FTHC , IF_REAL, "Partitioning factor for base and collector portion"),
|
||||
IOP("rci0", HICUM_MOD_RCI0 , IF_REAL, "Internal collector resistance at low electric field"),
|
||||
IOP("vlim", HICUM_MOD_VLIM , IF_REAL, "Voltage separating ohmic and saturation velocity regime"),
|
||||
IOP("vces", HICUM_MOD_VCES , IF_REAL, "Internal C-E saturation voltage"),
|
||||
IOP("vpt", HICUM_MOD_VPT , IF_REAL, "Collector punch-through voltage"), // `0' signifies infinity
|
||||
IOP("aick", HICUM_MOD_AICK , IF_REAL, "Smoothing term for ICK"),
|
||||
IOP("delck", HICUM_MOD_DELCK, IF_REAL, "Fitting factor for critical current"),
|
||||
IOP("tr", HICUM_MOD_TR , IF_REAL, "Storage time for inverse operation"),
|
||||
IOP("vcbar", HICUM_MOD_VCBAR, IF_REAL, "Barrier voltage"),
|
||||
IOP("icbar", HICUM_MOD_ICBAR, IF_REAL, "Normalization parameter"),
|
||||
IOP("acbar", HICUM_MOD_ACBAR, IF_REAL, "Smoothing parameter for barrier voltage"),
|
||||
|
||||
//Isolation Capacitances
|
||||
IOP("cbepar", HICUM_MOD_CBEPAR, IF_REAL, "Total parasitic B-E capacitance"),
|
||||
IOPR("ceox", HICUM_MOD_CBEPAR, IF_REAL, "Total parasitic B-E capacitance"),
|
||||
IOP("cbcpar", HICUM_MOD_CBCPAR, IF_REAL, "Total parasitic B-C capacitance"),
|
||||
IOPR("ccox", HICUM_MOD_CBCPAR, IF_REAL, "Total parasitic B-C capacitance"),
|
||||
|
||||
//Non-quasi-static Effect
|
||||
IOP("alqf", HICUM_MOD_ALQF, IF_REAL, "Factor for additional delay time of minority charge"),
|
||||
IOP("alit", HICUM_MOD_ALIT, IF_REAL, "Factor for additional delay time of transfer current"),
|
||||
IOP("flnqs", HICUM_MOD_FLNQS, IF_INTEGER, "Flag for turning on and off of vertical NQS effect"),
|
||||
|
||||
//Noise
|
||||
IOP("kf", HICUM_MOD_KF , IF_REAL, "Flicker noise coefficient"),
|
||||
IOP("af", HICUM_MOD_AF , IF_REAL, "Flicker noise exponent factor"),
|
||||
IOP("cfbe", HICUM_MOD_CFBE , IF_INTEGER, "Flag for determining where to tag the flicker noise source"),
|
||||
IOP("flcono", HICUM_MOD_FLCONO, IF_INTEGER, "Flag for turning on and off of correlated noise implementation"),
|
||||
IOP("kfre", HICUM_MOD_KFRE , IF_REAL, "Emitter resistance flicker noise coefficient"),
|
||||
IOP("afre", HICUM_MOD_AFRE , IF_REAL, "Emitter resistance flicker noise exponent factor"),
|
||||
|
||||
//Lateral Geometry Scaling (at high current densities)
|
||||
IOP("latb", HICUM_MOD_LATB, IF_REAL, "Scaling factor for collector minority charge in direction of emitter width"),
|
||||
IOP("latl", HICUM_MOD_LATL, IF_REAL, "Scaling factor for collector minority charge in direction of emitter length"),
|
||||
|
||||
//Temperature dependence
|
||||
IOP("vgb", HICUM_MOD_VGB , IF_REAL, "Bandgap voltage extrapolated to 0 K"),
|
||||
IOP("alt0", HICUM_MOD_ALT0 , IF_REAL, "First order relative TC of parameter T0"),
|
||||
IOP("kt0", HICUM_MOD_KT0 , IF_REAL, "Second order relative TC of parameter T0"),
|
||||
IOP("zetaci", HICUM_MOD_ZETACI , IF_REAL, "Temperature exponent for RCI0"),
|
||||
IOP("alvs", HICUM_MOD_ALVS , IF_REAL, "Relative TC of saturation drift velocity"),
|
||||
IOP("alces", HICUM_MOD_ALCES , IF_REAL, "Relative TC of VCES"),
|
||||
IOP("zetarbi", HICUM_MOD_ZETARBI , IF_REAL, "Temperature exponent of internal base resistance"),
|
||||
IOP("zetarbx", HICUM_MOD_ZETARBX , IF_REAL, "Temperature exponent of external base resistance"),
|
||||
IOP("zetarcx", HICUM_MOD_ZETARCX , IF_REAL, "Temperature exponent of external collector resistance"),
|
||||
IOP("zetare", HICUM_MOD_ZETARE , IF_REAL, "Temperature exponent of emitter resistance"),
|
||||
IOP("zetacx", HICUM_MOD_ZETACX , IF_REAL, "Temperature exponent of mobility in substrate transistor transit time"),
|
||||
IOP("vge", HICUM_MOD_VGE , IF_REAL, "Effective emitter bandgap voltage"),
|
||||
IOP("vgc", HICUM_MOD_VGC , IF_REAL, "Effective collector bandgap voltage"),
|
||||
IOP("vgs", HICUM_MOD_VGS , IF_REAL, "Effective substrate bandgap voltage"),
|
||||
IOP("f1vg", HICUM_MOD_F1VG , IF_REAL, "Coefficient K1 in T-dependent band-gap equation"),
|
||||
IOP("f2vg", HICUM_MOD_F2VG , IF_REAL, "Coefficient K2 in T-dependent band-gap equation"),
|
||||
IOP("zetact", HICUM_MOD_ZETACT , IF_REAL, "Exponent coefficient in transfer current temperature dependence"),
|
||||
IOP("zetabet", HICUM_MOD_ZETABET , IF_REAL, "Exponent coefficient in B-E junction current temperature dependence"),
|
||||
IOP("alb", HICUM_MOD_ALB , IF_REAL, "Relative TC of forward current gain for V2.1 model"),
|
||||
IOP("dvgbe", HICUM_MOD_DVGBE , IF_REAL, "Bandgap difference between B and B-E junction used for hjEi0 and hf0"),
|
||||
IOP("zetahjei", HICUM_MOD_ZETAHJEI, IF_REAL, "Temperature coefficient for ahjEi"),
|
||||
IOP("zetavgbe", HICUM_MOD_ZETAVGBE, IF_REAL, "Temperature coefficient for hjEi0"),
|
||||
|
||||
//Self-Heating
|
||||
IOP("flsh", HICUM_MOD_FLSH , IF_INTEGER, "Flag for turning on and off self-heating effect"),
|
||||
IOP("rth", HICUM_MOD_RTH , IF_REAL, "Thermal resistance"),
|
||||
IOP("zetarth", HICUM_MOD_ZETARTH, IF_REAL, "Temperature coefficient for Rth"),
|
||||
IOP("alrth", HICUM_MOD_ALRTH , IF_REAL, "First order relative TC of parameter Rth"),
|
||||
IOP("cth", HICUM_MOD_CTH , IF_REAL, "Thermal capacitance"),
|
||||
|
||||
//Compatibility with V2.1
|
||||
IOP("flcomp", HICUM_MOD_FLCOMP, IF_REAL, "Flag for compatibility with v2.1 model (0=v2.1)"),
|
||||
|
||||
IOP("vbe_max", HICUM_MOD_VBE_MAX, IF_REAL, "maximum voltage B-E junction"),
|
||||
IOP("vbc_max", HICUM_MOD_VBC_MAX, IF_REAL, "maximum voltage B-C junction"),
|
||||
IOP("vce_max", HICUM_MOD_VCE_MAX, IF_REAL, "maximum voltage C-E branch")
|
||||
|
||||
};
|
||||
|
||||
char *HICUMnames[] = {
|
||||
"collector",
|
||||
"base",
|
||||
"emitter",
|
||||
"substrate",
|
||||
"temp"
|
||||
};
|
||||
|
||||
|
||||
int HICUMnSize = NUMELEMS(HICUMnames);
|
||||
int HICUMpTSize = NUMELEMS(HICUMpTable);
|
||||
int HICUMmPTSize = NUMELEMS(HICUMmPTable);
|
||||
int HICUMiSize = sizeof(HICUMinstance);
|
||||
int HICUMmSize = sizeof(HICUMmodel);
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,253 +1,253 @@
|
|||
/**********
|
||||
License : 3-clause BSD
|
||||
Spice3 Implementation: 2019-2020 Dietmar Warning, Markus Müller, Mario Krattenmacher
|
||||
Model Author : 1990 Michael Schröter TU Dresden
|
||||
**********/
|
||||
|
||||
/*
|
||||
* This routine gives access to the internal device
|
||||
* parameters for HICUMs
|
||||
*/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/const.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "hicum2defs.h"
|
||||
#include "ngspice/ifsim.h"
|
||||
#include "ngspice/sperror.h"
|
||||
#include "ngspice/suffix.h"
|
||||
|
||||
/*ARGSUSED*/
|
||||
int
|
||||
HICUMask(CKTcircuit *ckt, GENinstance *instPtr, int which, IFvalue *value, IFvalue *select)
|
||||
{
|
||||
HICUMinstance *here = (HICUMinstance*)instPtr;
|
||||
|
||||
NG_IGNORE(select);
|
||||
double g_be;
|
||||
IFvalue IC, IB, RPIi, RPIx, GMi;
|
||||
IFvalue CPIi, CPIx, CMUi, CMUx;
|
||||
IFvalue rcx_t, re_t, rb, BETAAC;
|
||||
|
||||
switch(which) {
|
||||
case HICUM_AREA:
|
||||
value->rValue = here->HICUMarea;
|
||||
return(OK);
|
||||
case HICUM_OFF:
|
||||
value->iValue = here->HICUMoff;
|
||||
return(OK);
|
||||
case HICUM_TEMP:
|
||||
value->rValue = here->HICUMtemp - CONSTCtoK;
|
||||
return(OK);
|
||||
case HICUM_M:
|
||||
value->rValue = here->HICUMm;
|
||||
return(OK);
|
||||
case HICUM_QUEST_COLLNODE:
|
||||
value->iValue = here->HICUMcollNode;
|
||||
return(OK);
|
||||
case HICUM_QUEST_BASENODE:
|
||||
value->iValue = here->HICUMbaseNode;
|
||||
return(OK);
|
||||
case HICUM_QUEST_EMITNODE:
|
||||
value->iValue = here->HICUMemitNode;
|
||||
return(OK);
|
||||
case HICUM_QUEST_SUBSNODE:
|
||||
value->iValue = here->HICUMsubsNode;
|
||||
return(OK);
|
||||
case HICUM_QUEST_COLLCINODE:
|
||||
value->iValue = here->HICUMcollCINode;
|
||||
return(OK);
|
||||
case HICUM_QUEST_BASEBPNODE:
|
||||
value->iValue = here->HICUMbaseBPNode;
|
||||
return(OK);
|
||||
case HICUM_QUEST_BASEBINODE:
|
||||
value->iValue = here->HICUMbaseBINode;
|
||||
return(OK);
|
||||
case HICUM_QUEST_EMITEINODE:
|
||||
value->iValue = here->HICUMemitEINode;
|
||||
return(OK);
|
||||
case HICUM_QUEST_SUBSSINODE:
|
||||
value->iValue = here->HICUMsubsSINode;
|
||||
return(OK);
|
||||
/* voltages */
|
||||
case HICUM_QUEST_VBE:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMbaseNode)-*(ckt->CKTstate0 + here->HICUMemitNode);
|
||||
return(OK);
|
||||
case HICUM_QUEST_VBBP:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMbaseNode)-*(ckt->CKTstate0 + here->HICUMbaseBPNode);
|
||||
return(OK);
|
||||
case HICUM_QUEST_VBC:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMbaseNode)-*(ckt->CKTstate0 + here->HICUMcollNode);
|
||||
return(OK);
|
||||
case HICUM_QUEST_VCE:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMcollNode)-*(ckt->CKTstate0 + here->HICUMemitNode);
|
||||
return(OK);
|
||||
case HICUM_QUEST_VSC:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMcollNode)-*(ckt->CKTstate0 + here->HICUMsubsNode);
|
||||
return(OK);
|
||||
case HICUM_QUEST_VBIEI:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMvbiei);
|
||||
return(OK);
|
||||
case HICUM_QUEST_VBPBI:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMvbpbi);
|
||||
return(OK);
|
||||
case HICUM_QUEST_VBICI:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMvbici);
|
||||
return(OK);
|
||||
case HICUM_QUEST_VCIEI:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMvbiei) - *(ckt->CKTstate0 + here->HICUMvbici);
|
||||
return(OK);
|
||||
/* currents */
|
||||
case HICUM_QUEST_CC:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMiciei) -
|
||||
*(ckt->CKTstate0 + here->HICUMibici) -
|
||||
*(ckt->CKTstate0 + here->HICUMibpci) -
|
||||
*(ckt->CKTstate0 + here->HICUMisici);
|
||||
value->rValue *= HICUMmodPtr(here)->HICUMtype;
|
||||
return(OK);
|
||||
case HICUM_QUEST_CB:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMibiei) +
|
||||
*(ckt->CKTstate0 + here->HICUMibici) +
|
||||
*(ckt->CKTstate0 + here->HICUMibpci) +
|
||||
*(ckt->CKTstate0 + here->HICUMibpsi);
|
||||
value->rValue *= HICUMmodPtr(here)->HICUMtype;
|
||||
return(OK);
|
||||
case HICUM_QUEST_CE:
|
||||
value->rValue = - *(ckt->CKTstate0 + here->HICUMibiei) -
|
||||
*(ckt->CKTstate0 + here->HICUMibpei) -
|
||||
*(ckt->CKTstate0 + here->HICUMiciei);
|
||||
value->rValue *= HICUMmodPtr(here)->HICUMtype;
|
||||
return(OK);
|
||||
case HICUM_QUEST_CS:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMisici) -
|
||||
*(ckt->CKTstate0 + here->HICUMibpsi);
|
||||
value->rValue *= HICUMmodPtr(here)->HICUMtype;
|
||||
return(OK);
|
||||
case HICUM_QUEST_CAVL:
|
||||
value->rValue = here->HICUMiavl;
|
||||
return(OK);
|
||||
case HICUM_QUEST_CBEI:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMibiei);
|
||||
return(OK);
|
||||
case HICUM_QUEST_CBCI:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMibici);
|
||||
return(OK);
|
||||
/* resistances */
|
||||
case HICUM_QUEST_RCX_T:
|
||||
value->rValue = here->HICUMrcx_t.rpart;
|
||||
return(OK);
|
||||
case HICUM_QUEST_RE_T:
|
||||
value->rValue = here->HICUMre_t.rpart;
|
||||
return(OK);
|
||||
case HICUM_QUEST_IT:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMiciei);
|
||||
return(OK);
|
||||
case HICUM_QUEST_RBI:
|
||||
value->rValue = here->HICUMrbi;
|
||||
return(OK);
|
||||
case HICUM_QUEST_RB:
|
||||
value->rValue = here->HICUMrbi + here->HICUMrbx_t.rpart;
|
||||
return(OK);
|
||||
/* transconductances and capacitances */
|
||||
case HICUM_QUEST_BETADC:
|
||||
HICUMask(ckt, instPtr, HICUM_QUEST_CC, &IC, select);
|
||||
HICUMask(ckt, instPtr, HICUM_QUEST_CB, &IB, select);
|
||||
if (IB.rValue != 0.0) {
|
||||
value->rValue = IC.rValue/IB.rValue;
|
||||
} else {
|
||||
value->rValue = 0.0;
|
||||
}
|
||||
return(OK);
|
||||
case HICUM_QUEST_GMI:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMiciei_Vbiei);
|
||||
return(OK);
|
||||
case HICUM_QUEST_GMS:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMibpsi_Vbpci);
|
||||
return(OK);
|
||||
case HICUM_QUEST_RPII:
|
||||
value->rValue = 1/( *(ckt->CKTstate0 + here->HICUMibiei_Vbiei) );
|
||||
return(OK);
|
||||
case HICUM_QUEST_RPIX:
|
||||
value->rValue = 1/( *(ckt->CKTstate0 + here->HICUMibpei_Vbpei) );
|
||||
return(OK);
|
||||
case HICUM_QUEST_RMUI:
|
||||
value->rValue = 1/( *(ckt->CKTstate0 + here->HICUMibici_Vbici) + ckt->CKTgmin);
|
||||
return(OK);
|
||||
case HICUM_QUEST_RMUX:
|
||||
value->rValue = 1/( *(ckt->CKTstate0 + here->HICUMibpci_Vbpci) + ckt->CKTgmin);
|
||||
return(OK);
|
||||
case HICUM_QUEST_ROI:
|
||||
value->rValue = 1/( *(ckt->CKTstate0 + here->HICUMiciei_Vbiei) + ckt->CKTgmin);
|
||||
return(OK);
|
||||
case HICUM_QUEST_CPII:
|
||||
value->rValue = here->HICUMcapjei + here->HICUMcapdeix;
|
||||
return(OK);
|
||||
case HICUM_QUEST_CPIX:
|
||||
value->rValue = here->HICUMcapjep + here->HICUMcbepar_scaled;
|
||||
return(OK);
|
||||
case HICUM_QUEST_CMUI:
|
||||
value->rValue = here->HICUMcapjci + here->HICUMcapdci;
|
||||
return(OK);
|
||||
case HICUM_QUEST_CMUX:
|
||||
value->rValue = here->HICUMcapjcx_t_i + here->HICUMcapjcx_t_ii + here->HICUMcbcpar_scaled + here->HICUMcapdsu;
|
||||
return(OK);
|
||||
case HICUM_QUEST_CCS:
|
||||
value->rValue = here->HICUMcapjs + here->HICUMcapscp;
|
||||
return(OK);
|
||||
case HICUM_QUEST_CRBI:
|
||||
value->rValue = here->HICUMcaprbi;
|
||||
return(OK);
|
||||
case HICUM_QUEST_BETAAC:
|
||||
HICUMask(ckt, instPtr, HICUM_QUEST_RPII, &RPIi, select);
|
||||
HICUMask(ckt, instPtr, HICUM_QUEST_RPIX, &RPIx, select);
|
||||
HICUMask(ckt, instPtr, HICUM_QUEST_GMI, &GMi, select);
|
||||
g_be = 1/(RPIi.rValue + RPIx.rValue);
|
||||
if (g_be > 0.0) {
|
||||
value->rValue = GMi.rValue/g_be;
|
||||
} else {
|
||||
value->rValue = 0.0;
|
||||
}
|
||||
return(OK);
|
||||
/* transit time */
|
||||
case HICUM_QUEST_TF:
|
||||
value->rValue = here->HICUMtf;
|
||||
return(OK);
|
||||
case HICUM_QUEST_FT:
|
||||
// FT = GMi/(2*`M_PI*(CPIi+CPIx+CMUi+CMUx+(rcx_t+re_t+(re_t+rb)/BETAAC)*GMi*(CMUi+CMUx)));
|
||||
HICUMask(ckt, instPtr, HICUM_QUEST_GMI, &GMi, select);
|
||||
HICUMask(ckt, instPtr, HICUM_QUEST_CPII, &CPIi, select);
|
||||
HICUMask(ckt, instPtr, HICUM_QUEST_CPIX, &CPIx, select);
|
||||
HICUMask(ckt, instPtr, HICUM_QUEST_CMUI, &CMUi, select);
|
||||
HICUMask(ckt, instPtr, HICUM_QUEST_CMUX, &CMUx, select);
|
||||
HICUMask(ckt, instPtr, HICUM_QUEST_RCX_T, &rcx_t, select);
|
||||
HICUMask(ckt, instPtr, HICUM_QUEST_RE_T, &re_t, select);
|
||||
HICUMask(ckt, instPtr, HICUM_QUEST_RB, &rb, select);
|
||||
HICUMask(ckt, instPtr, HICUM_QUEST_BETAAC, &BETAAC, select);
|
||||
|
||||
value->rValue = GMi.rValue/(
|
||||
2 * M_PI * (
|
||||
CPIi.rValue + CPIx.rValue +
|
||||
CMUi.rValue + CMUx.rValue +
|
||||
(rcx_t.rValue + re_t.rValue + (re_t.rValue + rb.rValue)/BETAAC.rValue)
|
||||
) * GMi.rValue * (
|
||||
CMUi.rValue + CMUx.rValue
|
||||
)
|
||||
);
|
||||
return(OK);
|
||||
case HICUM_QUEST_ICK:
|
||||
value->rValue = here->HICUMick;
|
||||
return(OK);
|
||||
case HICUM_QUEST_POWER:
|
||||
value->rValue = here->HICUMpterm;
|
||||
return(OK);
|
||||
case HICUM_QUEST_TK:
|
||||
value->rValue = here->HICUMtemp;
|
||||
return(OK);
|
||||
case HICUM_QUEST_DTSH:
|
||||
value->rValue = here->HICUMdtemp_sh;
|
||||
return(OK);
|
||||
default:
|
||||
return(E_BADPARM);
|
||||
}
|
||||
/* NOTREACHED */
|
||||
}
|
||||
/**********
|
||||
License : 3-clause BSD
|
||||
Spice3 Implementation: 2019-2020 Dietmar Warning, Markus Müller, Mario Krattenmacher
|
||||
Model Author : (Copyright 1993-2024) Michael Schroter
|
||||
**********/
|
||||
|
||||
/*
|
||||
* This routine gives access to the internal device
|
||||
* parameters for HICUMs
|
||||
*/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/const.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "hicum2defs.h"
|
||||
#include "ngspice/ifsim.h"
|
||||
#include "ngspice/sperror.h"
|
||||
#include "ngspice/suffix.h"
|
||||
|
||||
/*ARGSUSED*/
|
||||
int
|
||||
HICUMask(CKTcircuit *ckt, GENinstance *instPtr, int which, IFvalue *value, IFvalue *select)
|
||||
{
|
||||
HICUMinstance *here = (HICUMinstance*)instPtr;
|
||||
|
||||
NG_IGNORE(select);
|
||||
double g_be;
|
||||
IFvalue IC, IB, RPIi, RPIx, GMi;
|
||||
IFvalue CPIi, CPIx, CMUi, CMUx;
|
||||
IFvalue rcx_t, re_t, rb, BETAAC;
|
||||
|
||||
switch(which) {
|
||||
case HICUM_AREA:
|
||||
value->rValue = here->HICUMarea;
|
||||
return(OK);
|
||||
case HICUM_OFF:
|
||||
value->iValue = here->HICUMoff;
|
||||
return(OK);
|
||||
case HICUM_TEMP:
|
||||
value->rValue = here->HICUMtemp - CONSTCtoK;
|
||||
return(OK);
|
||||
case HICUM_M:
|
||||
value->rValue = here->HICUMm;
|
||||
return(OK);
|
||||
case HICUM_QUEST_COLLNODE:
|
||||
value->iValue = here->HICUMcollNode;
|
||||
return(OK);
|
||||
case HICUM_QUEST_BASENODE:
|
||||
value->iValue = here->HICUMbaseNode;
|
||||
return(OK);
|
||||
case HICUM_QUEST_EMITNODE:
|
||||
value->iValue = here->HICUMemitNode;
|
||||
return(OK);
|
||||
case HICUM_QUEST_SUBSNODE:
|
||||
value->iValue = here->HICUMsubsNode;
|
||||
return(OK);
|
||||
case HICUM_QUEST_COLLCINODE:
|
||||
value->iValue = here->HICUMcollCINode;
|
||||
return(OK);
|
||||
case HICUM_QUEST_BASEBPNODE:
|
||||
value->iValue = here->HICUMbaseBPNode;
|
||||
return(OK);
|
||||
case HICUM_QUEST_BASEBINODE:
|
||||
value->iValue = here->HICUMbaseBINode;
|
||||
return(OK);
|
||||
case HICUM_QUEST_EMITEINODE:
|
||||
value->iValue = here->HICUMemitEINode;
|
||||
return(OK);
|
||||
case HICUM_QUEST_SUBSSINODE:
|
||||
value->iValue = here->HICUMsubsSINode;
|
||||
return(OK);
|
||||
/* voltages */
|
||||
case HICUM_QUEST_VBE:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMbaseNode)-*(ckt->CKTstate0 + here->HICUMemitNode);
|
||||
return(OK);
|
||||
case HICUM_QUEST_VBBP:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMbaseNode)-*(ckt->CKTstate0 + here->HICUMbaseBPNode);
|
||||
return(OK);
|
||||
case HICUM_QUEST_VBC:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMbaseNode)-*(ckt->CKTstate0 + here->HICUMcollNode);
|
||||
return(OK);
|
||||
case HICUM_QUEST_VCE:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMcollNode)-*(ckt->CKTstate0 + here->HICUMemitNode);
|
||||
return(OK);
|
||||
case HICUM_QUEST_VSC:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMcollNode)-*(ckt->CKTstate0 + here->HICUMsubsNode);
|
||||
return(OK);
|
||||
case HICUM_QUEST_VBIEI:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMvbiei);
|
||||
return(OK);
|
||||
case HICUM_QUEST_VBPBI:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMvbpbi);
|
||||
return(OK);
|
||||
case HICUM_QUEST_VBICI:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMvbici);
|
||||
return(OK);
|
||||
case HICUM_QUEST_VCIEI:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMvbiei) - *(ckt->CKTstate0 + here->HICUMvbici);
|
||||
return(OK);
|
||||
/* currents */
|
||||
case HICUM_QUEST_CC:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMiciei) -
|
||||
*(ckt->CKTstate0 + here->HICUMibici) -
|
||||
*(ckt->CKTstate0 + here->HICUMibpci) -
|
||||
*(ckt->CKTstate0 + here->HICUMisici);
|
||||
value->rValue *= HICUMmodPtr(here)->HICUMtype;
|
||||
return(OK);
|
||||
case HICUM_QUEST_CB:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMibiei) +
|
||||
*(ckt->CKTstate0 + here->HICUMibici) +
|
||||
*(ckt->CKTstate0 + here->HICUMibpci) +
|
||||
*(ckt->CKTstate0 + here->HICUMibpsi);
|
||||
value->rValue *= HICUMmodPtr(here)->HICUMtype;
|
||||
return(OK);
|
||||
case HICUM_QUEST_CE:
|
||||
value->rValue = - *(ckt->CKTstate0 + here->HICUMibiei) -
|
||||
*(ckt->CKTstate0 + here->HICUMibpei) -
|
||||
*(ckt->CKTstate0 + here->HICUMiciei);
|
||||
value->rValue *= HICUMmodPtr(here)->HICUMtype;
|
||||
return(OK);
|
||||
case HICUM_QUEST_CS:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMisici) -
|
||||
*(ckt->CKTstate0 + here->HICUMibpsi);
|
||||
value->rValue *= HICUMmodPtr(here)->HICUMtype;
|
||||
return(OK);
|
||||
case HICUM_QUEST_CAVL:
|
||||
value->rValue = here->HICUMiavl;
|
||||
return(OK);
|
||||
case HICUM_QUEST_CBEI:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMibiei);
|
||||
return(OK);
|
||||
case HICUM_QUEST_CBCI:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMibici);
|
||||
return(OK);
|
||||
/* resistances */
|
||||
case HICUM_QUEST_RCX_T:
|
||||
value->rValue = here->HICUMrcx_t.rpart;
|
||||
return(OK);
|
||||
case HICUM_QUEST_RE_T:
|
||||
value->rValue = here->HICUMre_t.rpart;
|
||||
return(OK);
|
||||
case HICUM_QUEST_IT:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMiciei);
|
||||
return(OK);
|
||||
case HICUM_QUEST_RBI:
|
||||
value->rValue = here->HICUMrbi;
|
||||
return(OK);
|
||||
case HICUM_QUEST_RB:
|
||||
value->rValue = here->HICUMrbi + here->HICUMrbx_t.rpart;
|
||||
return(OK);
|
||||
/* transconductances and capacitances */
|
||||
case HICUM_QUEST_BETADC:
|
||||
HICUMask(ckt, instPtr, HICUM_QUEST_CC, &IC, select);
|
||||
HICUMask(ckt, instPtr, HICUM_QUEST_CB, &IB, select);
|
||||
if (IB.rValue != 0.0) {
|
||||
value->rValue = IC.rValue/IB.rValue;
|
||||
} else {
|
||||
value->rValue = 0.0;
|
||||
}
|
||||
return(OK);
|
||||
case HICUM_QUEST_GMI:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMiciei_Vbiei);
|
||||
return(OK);
|
||||
case HICUM_QUEST_GMS:
|
||||
value->rValue = *(ckt->CKTstate0 + here->HICUMibpsi_Vbpci);
|
||||
return(OK);
|
||||
case HICUM_QUEST_RPII:
|
||||
value->rValue = 1/( *(ckt->CKTstate0 + here->HICUMibiei_Vbiei) );
|
||||
return(OK);
|
||||
case HICUM_QUEST_RPIX:
|
||||
value->rValue = 1/( *(ckt->CKTstate0 + here->HICUMibpei_Vbpei) );
|
||||
return(OK);
|
||||
case HICUM_QUEST_RMUI:
|
||||
value->rValue = 1/( *(ckt->CKTstate0 + here->HICUMibici_Vbici) + ckt->CKTgmin);
|
||||
return(OK);
|
||||
case HICUM_QUEST_RMUX:
|
||||
value->rValue = 1/( *(ckt->CKTstate0 + here->HICUMibpci_Vbpci) + ckt->CKTgmin);
|
||||
return(OK);
|
||||
case HICUM_QUEST_ROI:
|
||||
value->rValue = 1/( *(ckt->CKTstate0 + here->HICUMiciei_Vbiei) + ckt->CKTgmin);
|
||||
return(OK);
|
||||
case HICUM_QUEST_CPII:
|
||||
value->rValue = here->HICUMcapjei + here->HICUMcapdeix;
|
||||
return(OK);
|
||||
case HICUM_QUEST_CPIX:
|
||||
value->rValue = here->HICUMcapjep + here->HICUMcbepar_scaled;
|
||||
return(OK);
|
||||
case HICUM_QUEST_CMUI:
|
||||
value->rValue = here->HICUMcapjci + here->HICUMcapdci;
|
||||
return(OK);
|
||||
case HICUM_QUEST_CMUX:
|
||||
value->rValue = here->HICUMcapjcx_t_i + here->HICUMcapjcx_t_ii + here->HICUMcbcpar_scaled + here->HICUMcapdsu;
|
||||
return(OK);
|
||||
case HICUM_QUEST_CCS:
|
||||
value->rValue = here->HICUMcapjs + here->HICUMcapscp;
|
||||
return(OK);
|
||||
case HICUM_QUEST_CRBI:
|
||||
value->rValue = here->HICUMcaprbi;
|
||||
return(OK);
|
||||
case HICUM_QUEST_BETAAC:
|
||||
HICUMask(ckt, instPtr, HICUM_QUEST_RPII, &RPIi, select);
|
||||
HICUMask(ckt, instPtr, HICUM_QUEST_RPIX, &RPIx, select);
|
||||
HICUMask(ckt, instPtr, HICUM_QUEST_GMI, &GMi, select);
|
||||
g_be = 1/(RPIi.rValue + RPIx.rValue);
|
||||
if (g_be > 0.0) {
|
||||
value->rValue = GMi.rValue/g_be;
|
||||
} else {
|
||||
value->rValue = 0.0;
|
||||
}
|
||||
return(OK);
|
||||
/* transit time */
|
||||
case HICUM_QUEST_TF:
|
||||
value->rValue = here->HICUMtf;
|
||||
return(OK);
|
||||
case HICUM_QUEST_FT:
|
||||
// FT = GMi/(2*`M_PI*(CPIi+CPIx+CMUi+CMUx+(rcx_t+re_t+(re_t+rb)/BETAAC)*GMi*(CMUi+CMUx)));
|
||||
HICUMask(ckt, instPtr, HICUM_QUEST_GMI, &GMi, select);
|
||||
HICUMask(ckt, instPtr, HICUM_QUEST_CPII, &CPIi, select);
|
||||
HICUMask(ckt, instPtr, HICUM_QUEST_CPIX, &CPIx, select);
|
||||
HICUMask(ckt, instPtr, HICUM_QUEST_CMUI, &CMUi, select);
|
||||
HICUMask(ckt, instPtr, HICUM_QUEST_CMUX, &CMUx, select);
|
||||
HICUMask(ckt, instPtr, HICUM_QUEST_RCX_T, &rcx_t, select);
|
||||
HICUMask(ckt, instPtr, HICUM_QUEST_RE_T, &re_t, select);
|
||||
HICUMask(ckt, instPtr, HICUM_QUEST_RB, &rb, select);
|
||||
HICUMask(ckt, instPtr, HICUM_QUEST_BETAAC, &BETAAC, select);
|
||||
|
||||
value->rValue = GMi.rValue/(
|
||||
2 * M_PI * (
|
||||
CPIi.rValue + CPIx.rValue +
|
||||
CMUi.rValue + CMUx.rValue +
|
||||
(rcx_t.rValue + re_t.rValue + (re_t.rValue + rb.rValue)/BETAAC.rValue)
|
||||
) * GMi.rValue * (
|
||||
CMUi.rValue + CMUx.rValue
|
||||
)
|
||||
);
|
||||
return(OK);
|
||||
case HICUM_QUEST_ICK:
|
||||
value->rValue = here->HICUMick;
|
||||
return(OK);
|
||||
case HICUM_QUEST_POWER:
|
||||
value->rValue = here->HICUMpterm;
|
||||
return(OK);
|
||||
case HICUM_QUEST_TK:
|
||||
value->rValue = here->HICUMtemp;
|
||||
return(OK);
|
||||
case HICUM_QUEST_DTSH:
|
||||
value->rValue = here->HICUMdtemp_sh;
|
||||
return(OK);
|
||||
default:
|
||||
return(E_BADPARM);
|
||||
}
|
||||
/* NOTREACHED */
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/**********
|
||||
License : 3-clause BSD
|
||||
Spice3 Implementation: 2019-2020 Dietmar Warning, Markus Müller, Mario Krattenmacher
|
||||
Model Author : 1990 Michael Schröter TU Dresden
|
||||
Model Author : (Copyright 1993-2024) Michael Schroter
|
||||
**********/
|
||||
|
||||
/*
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,33 +1,33 @@
|
|||
/**********
|
||||
License : 3-clause BSD
|
||||
Spice3 Implementation: 2019-2020 Dietmar Warning, Markus Müller, Mario Krattenmacher
|
||||
Model Author : 1990 Michael Schröter TU Dresden
|
||||
**********/
|
||||
#ifndef __HICUMEXT_H
|
||||
#define __HICUMEXT_H
|
||||
|
||||
|
||||
extern int HICUMacLoad(GENmodel *,CKTcircuit*);
|
||||
extern int HICUMask(CKTcircuit *,GENinstance*,int,IFvalue*,IFvalue*);
|
||||
extern int HICUMconvTest(GENmodel*,CKTcircuit*);
|
||||
extern int HICUMmDelete(GENmodel*);
|
||||
extern int HICUMgetic(GENmodel*,CKTcircuit*);
|
||||
//extern int HICUMload(GENmodel*,CKTcircuit*);//moved to hicumL2.hpp
|
||||
extern int HICUMmAsk(CKTcircuit*,GENmodel*,int,IFvalue*);
|
||||
extern int HICUMmParam(int,IFvalue*,GENmodel*);
|
||||
extern int HICUMparam(int,IFvalue*,GENinstance*,IFvalue*);
|
||||
extern int HICUMpzLoad(GENmodel*, CKTcircuit*, SPcomplex*);
|
||||
extern int HICUMsetup(SMPmatrix*,GENmodel*,CKTcircuit*,int*);
|
||||
extern int HICUMunsetup(GENmodel*,CKTcircuit*);
|
||||
// extern int HICUMtemp(GENmodel*,CKTcircuit*); // moved to hicum2temp.hpp
|
||||
extern int HICUMtrunc(GENmodel*,CKTcircuit*,double*);
|
||||
extern int HICUMnoise(int,int,GENmodel*,CKTcircuit*,Ndata*,double*);
|
||||
extern int HICUMsoaCheck(CKTcircuit *, GENmodel *);
|
||||
|
||||
#ifdef KLU
|
||||
extern int HICUMbindCSC (GENmodel*, CKTcircuit*) ;
|
||||
extern int HICUMbindCSCComplex (GENmodel*, CKTcircuit*) ;
|
||||
extern int HICUMbindCSCComplexToReal (GENmodel*, CKTcircuit*) ;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
/**********
|
||||
License : 3-clause BSD
|
||||
Spice3 Implementation: 2019-2020 Dietmar Warning, Markus Müller, Mario Krattenmacher
|
||||
Model Author : (Copyright 1993-2024) Michael Schroter
|
||||
**********/
|
||||
#ifndef __HICUMEXT_H
|
||||
#define __HICUMEXT_H
|
||||
|
||||
|
||||
extern int HICUMacLoad(GENmodel *,CKTcircuit*);
|
||||
extern int HICUMask(CKTcircuit *,GENinstance*,int,IFvalue*,IFvalue*);
|
||||
extern int HICUMconvTest(GENmodel*,CKTcircuit*);
|
||||
extern int HICUMmDelete(GENmodel*);
|
||||
extern int HICUMgetic(GENmodel*,CKTcircuit*);
|
||||
//extern int HICUMload(GENmodel*,CKTcircuit*);//moved to hicumL2.hpp
|
||||
extern int HICUMmAsk(CKTcircuit*,GENmodel*,int,IFvalue*);
|
||||
extern int HICUMmParam(int,IFvalue*,GENmodel*);
|
||||
extern int HICUMparam(int,IFvalue*,GENinstance*,IFvalue*);
|
||||
extern int HICUMpzLoad(GENmodel*, CKTcircuit*, SPcomplex*);
|
||||
extern int HICUMsetup(SMPmatrix*,GENmodel*,CKTcircuit*,int*);
|
||||
extern int HICUMunsetup(GENmodel*,CKTcircuit*);
|
||||
// extern int HICUMtemp(GENmodel*,CKTcircuit*); // moved to hicum2temp.hpp
|
||||
extern int HICUMtrunc(GENmodel*,CKTcircuit*,double*);
|
||||
extern int HICUMnoise(int,int,GENmodel*,CKTcircuit*,Ndata*,double*);
|
||||
extern int HICUMsoaCheck(CKTcircuit *, GENmodel *);
|
||||
|
||||
#ifdef KLU
|
||||
extern int HICUMbindCSC (GENmodel*, CKTcircuit*) ;
|
||||
extern int HICUMbindCSCComplex (GENmodel*, CKTcircuit*) ;
|
||||
extern int HICUMbindCSCComplexToReal (GENmodel*, CKTcircuit*) ;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/**********
|
||||
License : 3-clause BSD
|
||||
Spice3 Implementation: 2019-2020 Dietmar Warning, Markus Müller, Mario Krattenmacher
|
||||
Model Author : 1990 Michael Schröter TU Dresden
|
||||
Model Author : (Copyright 1993-2024) Michael Schroter
|
||||
**********/
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -1,91 +1,91 @@
|
|||
/**********
|
||||
License : 3-clause BSD
|
||||
Spice3 Implementation: 2019-2020 Dietmar Warning, Markus Müller, Mario Krattenmacher
|
||||
Model Author : 1990 Michael Schröter TU Dresden
|
||||
**********/
|
||||
|
||||
|
||||
#include "ngspice/config.h"
|
||||
|
||||
#include "ngspice/devdefs.h"
|
||||
|
||||
#include "hicum2itf.h"
|
||||
#include "hicum2ext.h"
|
||||
#include "hicum2init.h"
|
||||
#include "hicumL2.hpp"
|
||||
#include "hicumL2temp.hpp"
|
||||
|
||||
|
||||
SPICEdev HICUMinfo = {
|
||||
.DEVpublic = {
|
||||
.name = "hicum2",
|
||||
.description = "High Current Model for BJT",
|
||||
.terms = &HICUMnSize,
|
||||
.numNames = &HICUMnSize,
|
||||
.termNames = HICUMnames,
|
||||
.numInstanceParms = &HICUMpTSize,
|
||||
.instanceParms = HICUMpTable,
|
||||
.numModelParms = &HICUMmPTSize,
|
||||
.modelParms = HICUMmPTable,
|
||||
.flags = DEV_DEFAULT,
|
||||
|
||||
#ifdef XSPICE
|
||||
.cm_func = NULL,
|
||||
.num_conn = 0,
|
||||
.conn = NULL,
|
||||
.num_param = 0,
|
||||
.param = NULL,
|
||||
.num_inst_var = 0,
|
||||
.inst_var = NULL,
|
||||
#endif
|
||||
},
|
||||
|
||||
.DEVparam = HICUMparam,
|
||||
.DEVmodParam = HICUMmParam,
|
||||
.DEVload = HICUMload,
|
||||
.DEVsetup = HICUMsetup,
|
||||
.DEVunsetup = HICUMunsetup,
|
||||
.DEVpzSetup = HICUMsetup,
|
||||
.DEVtemperature = HICUMtemp,
|
||||
.DEVtrunc = HICUMtrunc,
|
||||
.DEVfindBranch = NULL,
|
||||
.DEVacLoad = HICUMacLoad,
|
||||
.DEVaccept = NULL,
|
||||
.DEVdestroy = NULL,
|
||||
.DEVmodDelete = HICUMmDelete,
|
||||
.DEVdelete = NULL,
|
||||
.DEVsetic = HICUMgetic,
|
||||
.DEVask = HICUMask,
|
||||
.DEVmodAsk = HICUMmAsk,
|
||||
.DEVpzLoad = HICUMpzLoad,
|
||||
.DEVconvTest = HICUMconvTest,
|
||||
.DEVsenSetup = NULL,
|
||||
.DEVsenLoad = NULL,
|
||||
.DEVsenUpdate = NULL,
|
||||
.DEVsenAcLoad = NULL,
|
||||
.DEVsenPrint = NULL,
|
||||
.DEVsenTrunc = NULL,
|
||||
.DEVdisto = NULL,
|
||||
.DEVnoise = HICUMnoise,
|
||||
.DEVsoaCheck = HICUMsoaCheck,
|
||||
.DEVinstSize = &HICUMiSize,
|
||||
.DEVmodSize = &HICUMmSize,
|
||||
|
||||
#ifdef CIDER
|
||||
.DEVdump = NULL,
|
||||
.DEVacct = NULL,
|
||||
#endif
|
||||
|
||||
#ifdef KLU
|
||||
.DEVbindCSC = HICUMbindCSC,
|
||||
.DEVbindCSCComplex = HICUMbindCSCComplex,
|
||||
.DEVbindCSCComplexToReal = HICUMbindCSCComplexToReal,
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
SPICEdev *
|
||||
get_hicum_info(void)
|
||||
{
|
||||
return &HICUMinfo;
|
||||
}
|
||||
/**********
|
||||
License : 3-clause BSD
|
||||
Spice3 Implementation: 2019-2020 Dietmar Warning, Markus Müller, Mario Krattenmacher
|
||||
Model Author : (Copyright 1993-2024) Michael Schroter
|
||||
**********/
|
||||
|
||||
|
||||
#include "ngspice/config.h"
|
||||
|
||||
#include "ngspice/devdefs.h"
|
||||
|
||||
#include "hicum2itf.h"
|
||||
#include "hicum2ext.h"
|
||||
#include "hicum2init.h"
|
||||
#include "hicumL2.hpp"
|
||||
#include "hicumL2temp.hpp"
|
||||
|
||||
|
||||
SPICEdev HICUMinfo = {
|
||||
.DEVpublic = {
|
||||
.name = "hicum2",
|
||||
.description = "High Current Model for BJT",
|
||||
.terms = &HICUMnSize,
|
||||
.numNames = &HICUMnSize,
|
||||
.termNames = HICUMnames,
|
||||
.numInstanceParms = &HICUMpTSize,
|
||||
.instanceParms = HICUMpTable,
|
||||
.numModelParms = &HICUMmPTSize,
|
||||
.modelParms = HICUMmPTable,
|
||||
.flags = DEV_DEFAULT,
|
||||
|
||||
#ifdef XSPICE
|
||||
.cm_func = NULL,
|
||||
.num_conn = 0,
|
||||
.conn = NULL,
|
||||
.num_param = 0,
|
||||
.param = NULL,
|
||||
.num_inst_var = 0,
|
||||
.inst_var = NULL,
|
||||
#endif
|
||||
},
|
||||
|
||||
.DEVparam = HICUMparam,
|
||||
.DEVmodParam = HICUMmParam,
|
||||
.DEVload = HICUMload,
|
||||
.DEVsetup = HICUMsetup,
|
||||
.DEVunsetup = HICUMunsetup,
|
||||
.DEVpzSetup = HICUMsetup,
|
||||
.DEVtemperature = HICUMtemp,
|
||||
.DEVtrunc = HICUMtrunc,
|
||||
.DEVfindBranch = NULL,
|
||||
.DEVacLoad = HICUMacLoad,
|
||||
.DEVaccept = NULL,
|
||||
.DEVdestroy = NULL,
|
||||
.DEVmodDelete = HICUMmDelete,
|
||||
.DEVdelete = NULL,
|
||||
.DEVsetic = HICUMgetic,
|
||||
.DEVask = HICUMask,
|
||||
.DEVmodAsk = HICUMmAsk,
|
||||
.DEVpzLoad = HICUMpzLoad,
|
||||
.DEVconvTest = HICUMconvTest,
|
||||
.DEVsenSetup = NULL,
|
||||
.DEVsenLoad = NULL,
|
||||
.DEVsenUpdate = NULL,
|
||||
.DEVsenAcLoad = NULL,
|
||||
.DEVsenPrint = NULL,
|
||||
.DEVsenTrunc = NULL,
|
||||
.DEVdisto = NULL,
|
||||
.DEVnoise = HICUMnoise,
|
||||
.DEVsoaCheck = HICUMsoaCheck,
|
||||
.DEVinstSize = &HICUMiSize,
|
||||
.DEVmodSize = &HICUMmSize,
|
||||
|
||||
#ifdef CIDER
|
||||
.DEVdump = NULL,
|
||||
.DEVacct = NULL,
|
||||
#endif
|
||||
|
||||
#ifdef KLU
|
||||
.DEVbindCSC = HICUMbindCSC,
|
||||
.DEVbindCSCComplex = HICUMbindCSCComplex,
|
||||
.DEVbindCSCComplexToReal = HICUMbindCSCComplexToReal,
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
SPICEdev *
|
||||
get_hicum_info(void)
|
||||
{
|
||||
return &HICUMinfo;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/**********
|
||||
License : 3-clause BSD
|
||||
Spice3 Implementation: 2019-2020 Dietmar Warning, Markus Müller, Mario Krattenmacher
|
||||
Model Author : 1990 Michael Schröter TU Dresden
|
||||
Model Author : (Copyright 1993-2024) Michael Schroter
|
||||
**********/
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/**********
|
||||
License : 3-clause BSD
|
||||
Spice3 Implementation: 2019-2020 Dietmar Warning, Markus Müller, Mario Krattenmacher
|
||||
Model Author : 1990 Michael Schröter TU Dresden
|
||||
Model Author : (Copyright 1993-2024) Michael Schroter
|
||||
**********/
|
||||
#ifndef DEV_HICUM
|
||||
#define DEV_HICUM
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/**********
|
||||
License : 3-clause BSD
|
||||
Spice3 Implementation: 2019-2020 Dietmar Warning, Markus Müller, Mario Krattenmacher
|
||||
Model Author : 1990 Michael Schröter TU Dresden
|
||||
Model Author : (Copyright 1993-2024) Michael Schroter
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/**********
|
||||
License : 3-clause BSD
|
||||
Spice3 Implementation: 2019-2020 Dietmar Warning, Markus Müller, Mario Krattenmacher
|
||||
Model Author : 1990 Michael Schröter TU Dresden
|
||||
Model Author : (Copyright 1993-2024) Michael Schroter
|
||||
**********/
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/**********
|
||||
License : 3-clause BSD
|
||||
Spice3 Implementation: 2019-2020 Dietmar Warning, Markus Müller, Mario Krattenmacher
|
||||
Model Author : 1990 Michael Schröter TU Dresden
|
||||
Model Author : (Copyright 1993-2024) Michael Schroter
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/**********
|
||||
License : 3-clause BSD
|
||||
Spice3 Implementation: 2019-2020 Dietmar Warning, Markus Müller, Mario Krattenmacher
|
||||
Model Author : 1990 Michael Schröter TU Dresden
|
||||
Model Author : (Copyright 1993-2024) Michael Schroter
|
||||
**********/
|
||||
|
||||
/*
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -1,7 +1,7 @@
|
|||
/**********
|
||||
License : 3-clause BSD
|
||||
Spice3 Implementation: 2019-2020 Dietmar Warning, Markus Müller, Mario Krattenmacher
|
||||
Model Author : 1990 Michael Schröter TU Dresden
|
||||
Model Author : (Copyright 1993-2024) Michael Schroter
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/**********
|
||||
License : 3-clause BSD
|
||||
Spice3 Implementation: 2019-2020 Dietmar Warning, Markus Müller, Mario Krattenmacher
|
||||
Model Author : 1990 Michael Schröter TU Dresden
|
||||
Model Author : (Copyright 1993-2024) Michael Schroter
|
||||
**********/
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/**********
|
||||
License : 3-clause BSD
|
||||
Spice3 Implementation: 2019-2020 Dietmar Warning, Markus Müller, Mario Krattenmacher
|
||||
Model Author : 1990 Michael Schröter TU Dresden
|
||||
Model Author : (Copyright 1993-2024) Michael Schroter
|
||||
**********/
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/**********
|
||||
License : 3-clause BSD
|
||||
Spice3 Implementation: 2019-2020 Dietmar Warning, Markus Müller, Mario Krattenmacher
|
||||
Model Author : 1990 Michael Schröter TU Dresden
|
||||
Model Author : (Copyright 1993-2024) Michael Schroter
|
||||
**********/
|
||||
#ifndef hicumL2_H
|
||||
#define hicumL2_H
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,7 +1,7 @@
|
|||
/**********
|
||||
License : 3-clause BSD
|
||||
Spice3 Implementation: 2019-2020 Dietmar Warning, Markus Müller, Mario Krattenmacher
|
||||
Model Author : 1990 Michael Schröter TU Dresden
|
||||
Model Author : (Copyright 1993-2024) Michael Schroter
|
||||
**********/
|
||||
#ifndef hicumL2_temp
|
||||
#define hicumL2_temp
|
||||
|
|
|
|||
Loading…
Reference in New Issue