Modified by Paolo Nenzi 2002 File: b3soifd.c 98/5/01 **********/ /* * Revision 2.1 99/9/27 Pin Su * BSIMFD2.1 release */ #include "ngspice/ngspice.h" #include "ngspice/devdefs.h" #include "b3soifddef.h" #include "ngspice/suffix.h" IFparm B3SOIFDpTable[] = { /* parameters */ IOP( "l", B3SOIFD_L, IF_REAL , "Length"), IOP( "w", B3SOIFD_W, IF_REAL , "Width"), IOP( "m", B3SOIFD_M, IF_REAL , "Parallel Multiplier"), IOP( "ad", B3SOIFD_AD, IF_REAL , "Drain area"), IOP( "as", B3SOIFD_AS, IF_REAL , "Source area"), IOP( "pd", B3SOIFD_PD, IF_REAL , "Drain perimeter"), IOP( "ps", B3SOIFD_PS, IF_REAL , "Source perimeter"), IOP( "nrd", B3SOIFD_NRD, IF_REAL , "Number of squares in drain"), IOP( "nrs", B3SOIFD_NRS, IF_REAL , "Number of squares in source"), IOP( "off", B3SOIFD_OFF, IF_FLAG , "Device is initially off"), IP( "ic", B3SOIFD_IC, IF_REALVEC , "Vector of DS,GS,BS initial voltages"), OP( "gmbs", B3SOIFD_GMBS, IF_REAL, "Gmb"), OP( "gm", B3SOIFD_GM, IF_REAL, "Gm"), OP( "gm/ids", B3SOIFD_GMID, IF_REAL, "Gm/Ids"), OP( "gds", B3SOIFD_GDS, IF_REAL, "Gds"), OP( "vdsat", B3SOIFD_VDSAT, IF_REAL, "Vdsat"),
OPU("cqbc", VBIC_QUEST_CQBC, IF_REAL, "Cap. due to charge storage in B-C jct."), OPU("qbx", VBIC_QUEST_QBX, IF_REAL, "Charge storage B-X junction"), OPU("cqbx", VBIC_QUEST_CQBX, IF_REAL, "Cap. due to charge storage in B-X jct."), OPU("sens_dc", VBIC_QUEST_SENS_DC, IF_REAL, "DC sensitivity "), OPU("sens_real",VBIC_QUEST_SENS_REAL, IF_REAL, "Real part of AC sensitivity"), OPU("sens_imag",VBIC_QUEST_SENS_IMAG,IF_REAL, "DC sens. & imag part of AC sens."), OPU("sens_mag", VBIC_QUEST_SENS_MAG, IF_REAL, "Sensitivity of AC magnitude"), OPU("sens_ph", VBIC_QUEST_SENS_PH, IF_REAL, "Sensitivity of AC phase"), OPU("sens_cplx",VBIC_QUEST_SENS_CPLX, IF_COMPLEX, "AC sensitivity") }; IFparm VBICmPTable[] = { /* model parameters */ OP("type", VBIC_MOD_TYPE, IF_STRING, "NPN or PNP"), IOPU("npn", VBIC_MOD_NPN, IF_FLAG, "NPN type device"), IOPU("pnp", VBIC_MOD_PNP, IF_FLAG, "PNP type device"), IOP("tnom", VBIC_MOD_TNOM, IF_REAL, "Parameter measurement temperature"), IOP("rcx", VBIC_MOD_RCX, IF_REAL, "Extrinsic coll resistance"), IOP("rci", VBIC_MOD_RCI, IF_REAL, "Intrinsic coll resistance"), IOP("vo", VBIC_MOD_VO, IF_REAL, "Epi drift saturation voltage"), IOP("gamm", VBIC_MOD_GAMM, IF_REAL, "Epi doping parameter"), IOP("hrcf", VBIC_MOD_HRCF, IF_REAL, "High current RC factor"), IOP("rbx", VBIC_MOD_RBX, IF_REAL, "Extrinsic base resistance"), IOP("rbi", VBIC_MOD_RBI, IF_REAL, "Intrinsic base resistance"), IOP("re", VBIC_MOD_RE, IF_REAL, "Intrinsic emitter resistance"), IOP("rs", VBIC_MOD_RS, IF_REAL, "Intrinsic substrate resistance"), IOP("rbp", VBIC_MOD_RBP, IF_REAL, "Parasitic base resistance"), IOP("is", VBIC_MOD_IS, IF_REAL, "Transport saturation current"), IOP("nf", VBIC_MOD_NF, IF_REAL, "Forward emission coefficient"), IOP("nr", VBIC_MOD_NR, IF_REAL, "Reverse emission coefficient"), IOP("fc", VBIC_MOD_FC, IF_REAL, "Fwd bias depletion capacitance limit"), IOP("cbeo", VBIC_MOD_CBEO, IF_REAL, "Extrinsic B-E overlap capacitance"),
OPU( "sens_l_cplx", MOS1_L_SENS_CPLX,IF_COMPLEX, "ac sensitivity wrt length"), OPU( "sens_w_dc", MOS1_W_SENS_DC, IF_REAL, "dc sensitivity wrt width"), OPU( "sens_w_real", MOS1_W_SENS_REAL,IF_REAL, "real part of ac sensitivity wrt width"), OPU( "sens_w_imag", MOS1_W_SENS_IMAG,IF_REAL, "imag part of ac sensitivity wrt width"), OPU( "sens_w_mag", MOS1_W_SENS_MAG, IF_REAL, "sensitivity wrt w of ac magnitude"), OPU( "sens_w_ph", MOS1_W_SENS_PH, IF_REAL, "sensitivity wrt w of ac phase"), OPU( "sens_w_cplx", MOS1_W_SENS_CPLX,IF_COMPLEX, "ac sensitivity wrt width") }; IFparm MOS1mPTable[] = { /* model parameters */ OP("type", MOS1_MOD_TYPE, IF_STRING, "N-channel or P-channel MOS"), IOP("vto", MOS1_MOD_VTO, IF_REAL ,"Threshold voltage"), IOPR("vt0", MOS1_MOD_VTO, IF_REAL ,"Threshold voltage"), IOP("kp", MOS1_MOD_KP, IF_REAL ,"Transconductance parameter"), IOP("gamma", MOS1_MOD_GAMMA, IF_REAL ,"Bulk threshold parameter"), IOP("phi", MOS1_MOD_PHI, IF_REAL ,"Surface potential"), IOP("lambda",MOS1_MOD_LAMBDA,IF_REAL ,"Channel length modulation"), IOP("rd", MOS1_MOD_RD, IF_REAL ,"Drain ohmic resistance"), IOP("rs", MOS1_MOD_RS, IF_REAL ,"Source ohmic resistance"), IOPA("cbd", MOS1_MOD_CBD, IF_REAL ,"B-D junction capacitance"), IOPA("cbs", MOS1_MOD_CBS, IF_REAL ,"B-S junction capacitance"), IOP("is", MOS1_MOD_IS, IF_REAL ,"Bulk junction sat. current"), IOP("pb", MOS1_MOD_PB, IF_REAL ,"Bulk junction potential"), IOPA("cgso", MOS1_MOD_CGSO, IF_REAL ,"Gate-source overlap cap."), IOPA("cgdo", MOS1_MOD_CGDO, IF_REAL ,"Gate-drain overlap cap."), IOPA("cgbo", MOS1_MOD_CGBO, IF_REAL ,"Gate-bulk overlap cap."), IOP("rsh", MOS1_MOD_RSH, IF_REAL ,"Sheet resistance"),
IOPAU("ic", DIO_IC, IF_REAL, "Initial device voltage"), IOPU( "off", DIO_OFF, IF_FLAG, "Initially off"), OP( "id", DIO_CURRENT,IF_REAL, "Diode current"), OPR( "c", DIO_CURRENT,IF_REAL, "Diode current"), OP( "vd", DIO_VOLTAGE,IF_REAL, "Diode voltage"), OPR( "voltage", DIO_VOLTAGE,IF_REAL, "Diode voltage"), OPU( "charge", DIO_CHARGE, IF_REAL, "Diode capacitor charge"), OPU( "capcur", DIO_CAPCUR, IF_REAL, "Diode capacitor current"), OP( "gd", DIO_CONDUCT,IF_REAL, "Diode conductance"), OPU( "p", DIO_POWER, IF_REAL, "Diode power"), IOPU( "temp", DIO_TEMP, IF_REAL, "Instance temperature"), OP( "cd", DIO_CAP, IF_REAL, "Diode capacitance") }; static IFparm DIOmPTable[] = { /* model parameters */ IOP( "is", DIO_MOD_IS, IF_REAL, "Saturation current"), IOP( "rs", DIO_MOD_RS, IF_REAL, "Ohmic resistance"), IOP( "n", DIO_MOD_N, IF_REAL, "Emission Coefficient"), IOPA("tt", DIO_MOD_TT, IF_REAL, "Transit Time"), IOPA("cjo", DIO_MOD_CJO, IF_REAL, "Junction capacitance"), IOPR("cj0", DIO_MOD_CJO, IF_REAL, "Junction capacitance"), IOP( "vj", DIO_MOD_VJ, IF_REAL, "Junction potential"), IOP( "m", DIO_MOD_M, IF_REAL, "Grading coefficient"), IOP( "eg", DIO_MOD_EG, IF_REAL, "Activation energy"), IOP( "xti", DIO_MOD_XTI, IF_REAL, "Saturation current temperature exp."), IOP( "fc", DIO_MOD_FC, IF_REAL, "Forward bias junction fit parameter"), IOP( "bv", DIO_MOD_BV, IF_REAL, "Reverse breakdown voltage"), IOP( "ibv", DIO_MOD_IBV, IF_REAL, "Current at reverse breakdown voltage"), OPU( "cond",DIO_MOD_COND,IF_REAL, "Ohmic conductance"), IP( "d", DIO_MOD_D, IF_FLAG, "Diode model"), IOPU("tnom",DIO_MOD_TNOM,IF_REAL, "Parameter measurement temperature"),
/********** Copyright 1990 Regents of the University of California. All rights reserved. Author: 1995 Min-Chie Jeng and Mansun Chan. Modified by Paolo Nenzi 2002 File: b3v1s.c **********/ #include "ngspice.h" #include "devdefs.h" #include "bsim3v1sdef.h" #include "suffix.h" IFparm BSIM3v1SpTable[] = { /* parameters */ IOP( "l", BSIM3v1S_L, IF_REAL , "Length"), IOP( "w", BSIM3v1S_W, IF_REAL , "Width"), IOP( "ad", BSIM3v1S_AD, IF_REAL , "Drain area"), IOP( "as", BSIM3v1S_AS, IF_REAL , "Source area"), IOP( "pd", BSIM3v1S_PD, IF_REAL , "Drain perimeter"), IOP( "ps", BSIM3v1S_PS, IF_REAL , "Source perimeter"), IOP( "nrd", BSIM3v1S_NRD, IF_REAL , "Number of squares in drain"), IOP( "nrs", BSIM3v1S_NRS, IF_REAL , "Number of squares in source"), IOP( "off", BSIM3v1S_OFF, IF_FLAG , "Device is initially off"), IOP( "nqsmod", BSIM3v1S_NQSMOD, IF_INTEGER, "Non-quasi-static model selector"), IP( "ic", BSIM3v1S_IC, IF_REALVEC , "Vector of DS,GS,BS initial voltages"), OP( "gmbs", BSIM3v1S_GMBS, IF_REAL, "Gmb"), OP( "gm", BSIM3v1S_GM, IF_REAL, "Gm"), OP( "gds", BSIM3v1S_GDS, IF_REAL, "Gds"), OP( "vdsat", BSIM3v1S_VDSAT, IF_REAL, "Vdsat"), OP( "vth", BSIM3v1S_VON, IF_REAL, "Vth"), OP( "id", BSIM3v1S_CD, IF_REAL, "Ids"), OP( "vbs", BSIM3v1S_VBS, IF_REAL, "Vbs"),
#include "suffix.h" IFparm LTRApTable[] = { /* parameters */ IOPAU( "v1", LTRA_V1, IF_REAL , "Initial voltage at end 1"), IOPAU( "v2", LTRA_V2, IF_REAL , "Initial voltage at end 2"), IOPAU( "i1", LTRA_I1, IF_REAL , "Initial current at end 1"), IOPAU( "i2", LTRA_I2, IF_REAL , "Initial current at end 2"), IP("ic", LTRA_IC, IF_REALVEC,"Initial condition vector:v1,i1,v2,i2"), OPU("pos_node1", LTRA_POS_NODE1,IF_INTEGER,"Positive node of end 1 of t-line"), OPU("neg_node1", LTRA_NEG_NODE1,IF_INTEGER,"Negative node of end 1 of t.line"), OPU("pos_node2", LTRA_POS_NODE2,IF_INTEGER,"Positive node of end 2 of t-line"), OPU("neg_node2", LTRA_NEG_NODE2,IF_INTEGER,"Negative node of end 2 of t-line") }; IFparm LTRAmPTable[] = { /* model parameters */ IOP( "ltra", LTRA_MOD_LTRA, IF_FLAG, "LTRA model"), IOPU( "r", LTRA_MOD_R, IF_REAL , "Resistance per metre"), IOPAU( "l", LTRA_MOD_L, IF_REAL , "Inductance per metre"), IOPR( "g", LTRA_MOD_G, IF_REAL , "Conductance per metre"), IOPAU( "c", LTRA_MOD_C, IF_REAL , "Capacitance per metre"), IOPU( "len", LTRA_MOD_LEN, IF_REAL , "length of line"), OP( "rel", LTRA_MOD_RELTOL, IF_REAL, "Rel. rate of change of deriv. for bkpt"), OP( "abs", LTRA_MOD_ABSTOL, IF_REAL, "Abs. rate of change of deriv. for bkpt"), IOPU("nocontrol", LTRA_MOD_NOCONTROL, IF_FLAG, "No timestep control"), IOPU( "steplimit", LTRA_MOD_STEPLIMIT, IF_FLAG, "always limit timestep to 0.8*(delay of line)"), IOPU( "nosteplimit", LTRA_MOD_NOSTEPLIMIT, IF_FLAG, "don't always limit timestep to 0.8*(delay of line)"), IOPU( "lininterp", LTRA_MOD_LININTERP, IF_FLAG, "use linear interpolation"), IOPU("quadinterp", LTRA_MOD_QUADINTERP, IF_FLAG, "use quadratic interpolation"),
/********** Copyright 1990 Regents of the University of California. All rights reserved. Author: 1987 Thomas L. Quarles **********/ #include "ngspice/ngspice.h" #include "ngspice/devdefs.h" #include "ngspice/ifsim.h" #include "vccsdefs.h" #include "ngspice/suffix.h" IFparm VCCSpTable[] = { /* parameters */ IOPU("gain", VCCS_TRANS, IF_REAL, "Transconductance of source (gain)"), IOP ( "m", VCCS_M, IF_REAL , "Parallel multiplier"), IP("sens_trans", VCCS_TRANS_SENS,IF_FLAG, "flag to request sensitivity WRT transconductance"), OPU("pos_node", VCCS_POS_NODE, IF_INTEGER, "Positive node of source"), OPU("neg_node", VCCS_NEG_NODE, IF_INTEGER, "Negative node of source"), OPU("cont_p_node",VCCS_CONT_P_NODE,IF_INTEGER, "Positive node of contr. source"), OPU("cont_n_node",VCCS_CONT_N_NODE,IF_INTEGER, "Negative node of contr. source"), IP("ic", VCCS_IC, IF_REAL, "Initial condition of controlling source"), OP("i", VCCS_CURRENT,IF_REAL, "Output current"), OP("v", VCCS_VOLTS,IF_REAL, "Voltage across output"), OP("p", VCCS_POWER, IF_REAL, "Power"), OPU("sens_dc", VCCS_QUEST_SENS_DC, IF_REAL, "dc sensitivity "), OPU("sens_real", VCCS_QUEST_SENS_REAL, IF_REAL, "real part of ac sensitivity"), OPU("sens_imag", VCCS_QUEST_SENS_IMAG, IF_REAL, "imag part of ac sensitivity"), OPU("sens_mag", VCCS_QUEST_SENS_MAG, IF_REAL, "sensitivity of ac magnitude"), OPU("sens_ph", VCCS_QUEST_SENS_PH, IF_REAL, "sensitivity of ac phase"),
OP("ggs", JFET_GGS, IF_REAL, "Conductance G-S"), OP("ggd", JFET_GGD, IF_REAL, "Conductance G-D"), OPU("qgs", JFET_QGS, IF_REAL,"Charge storage G-S junction"), OPU("qgd", JFET_QGD, IF_REAL,"Charge storage G-D junction"), OPU("cqgs",JFET_CQGS, IF_REAL, "Capacitance due to charge storage G-S junction"), OPU("cqgd",JFET_CQGD, IF_REAL, "Capacitance due to charge storage G-D junction"), OPU("p", JFET_POWER,IF_REAL,"Power dissipated by the JFET"), }; IFparm JFETmPTable[] = { /* model parameters */ OP("type", JFET_MOD_TYPE, IF_STRING, "N-type or P-type JFET model"), IP("njf", JFET_MOD_NJF, IF_FLAG,"N type JFET model"), IP("pjf", JFET_MOD_PJF, IF_FLAG,"P type JFET model"), IOP("vt0", JFET_MOD_VTO, IF_REAL,"Threshold voltage"), IOPR("vto", JFET_MOD_VTO, IF_REAL,"Threshold voltage"), IOP("beta", JFET_MOD_BETA, IF_REAL,"Transconductance parameter"), IOP("lambda", JFET_MOD_LAMBDA, IF_REAL,"Channel length modulation param."), IOP("rd", JFET_MOD_RD, IF_REAL,"Drain ohmic resistance"), OPU("gd", JFET_MOD_DRAINCONDUCT, IF_REAL,"Drain conductance"), IOP("rs", JFET_MOD_RS, IF_REAL,"Source ohmic resistance"), OPU("gs",JFET_MOD_SOURCECONDUCT,IF_REAL,"Source conductance"), IOPA("cgs", JFET_MOD_CGS, IF_REAL,"G-S junction capactance"), IOPA("cgd", JFET_MOD_CGD, IF_REAL,"G-D junction cap"), IOP("pb", JFET_MOD_PB, IF_REAL,"Gate junction potential"), IOP("is", JFET_MOD_IS, IF_REAL,"Gate junction saturation current"), IOP("fc", JFET_MOD_FC, IF_REAL,"Forward bias junction fit parm."), /* Modification for Sydney University JFET model */ IOP("b", JFET_MOD_B, IF_REAL,"Doping tail parameter"), /* end Sydney University mod. */
#include "suffix.h" /* Model for uniform RC line */ IFparm URCpTable[] = { /* parameters */ IOPU( "l", URC_LEN, IF_REAL, "Length of transmission line"), IOPU( "n", URC_LUMPS, IF_REAL, "Number of lumps"), OPU( "pos_node",URC_POS_NODE,IF_INTEGER,"Positive node of URC"), OPU( "neg_node",URC_NEG_NODE,IF_INTEGER,"Negative node of URC"), OPU( "gnd", URC_GND_NODE,IF_INTEGER,"Ground node of URC") }; IFparm URCmPTable[] = { /* model parameters */ IOP( "k", URC_MOD_K, IF_REAL, "Propagation constant"), IOPA( "fmax", URC_MOD_FMAX, IF_REAL, "Maximum frequency of interest"), IOP( "rperl", URC_MOD_RPERL, IF_REAL, "Resistance per unit length"), IOPA( "cperl", URC_MOD_CPERL, IF_REAL, "Capacitance per unit length"), IOP( "isperl", URC_MOD_ISPERL, IF_REAL, "Saturation current per length"), IOP( "rsperl", URC_MOD_RSPERL, IF_REAL, "Diode resistance per length"), IP( "urc", URC_MOD_URC, IF_FLAG, "Uniform R.C. line model") }; char *URCnames[] = { "P1", "P2", "Ref" }; int URCnSize = NUMELEMS(URCnames);
#include "suffix.h" IFparm LTRApTable[] = { /* parameters */ IOPAU("v1", LTRA_V1, IF_REAL, "Initial voltage at end 1"), IOPAU("v2", LTRA_V2, IF_REAL, "Initial voltage at end 2"), IOPAU("i1", LTRA_I1, IF_REAL, "Initial current at end 1"), IOPAU("i2", LTRA_I2, IF_REAL, "Initial current at end 2"), IP("ic", LTRA_IC, IF_REALVEC, "Initial condition vector:v1,i1,v2,i2"), OPU("pos_node1", LTRA_POS_NODE1, IF_INTEGER, "Positive node of end 1 of t-line"), OPU("neg_node1", LTRA_NEG_NODE1, IF_INTEGER, "Negative node of end 1 of t.line"), OPU("pos_node2", LTRA_POS_NODE2, IF_INTEGER, "Positive node of end 2 of t-line"), OPU("neg_node2", LTRA_NEG_NODE2, IF_INTEGER, "Negative node of end 2 of t-line") }; IFparm LTRAmPTable[] = { /* model parameters */ IOP("ltra", LTRA_MOD_LTRA, IF_FLAG, "LTRA model"), IOPU("r", LTRA_MOD_R, IF_REAL, "Resistance per metre"), IOPAU("l", LTRA_MOD_L, IF_REAL, "Inductance per metre"), IOPR("g", LTRA_MOD_G, IF_REAL, "Conductance per metre"), IOPAU("c", LTRA_MOD_C, IF_REAL, "Capacitance per metre"), IOPU("len", LTRA_MOD_LEN, IF_REAL, "length of line"), OP("rel", LTRA_MOD_RELTOL, IF_REAL, "Rel. rate of change of deriv. for bkpt"), OP("abs", LTRA_MOD_ABSTOL, IF_REAL, "Abs. rate of change of deriv. for bkpt"), IOPU("nocontrol", LTRA_MOD_NOCONTROL, IF_FLAG, "No timestep control"), IOPU("steplimit", LTRA_MOD_STEPLIMIT, IF_FLAG, "always limit timestep to 0.8*(delay of line)"), IOPU("nosteplimit", LTRA_MOD_NOSTEPLIMIT, IF_FLAG, "don't always limit timestep to 0.8*(delay of line)"), IOPU("lininterp", LTRA_MOD_LININTERP, IF_FLAG, "use linear interpolation"), IOPU("quadinterp", LTRA_MOD_QUADINTERP, IF_FLAG, "use quadratic interpolation"),
OPU("sens_w_dc", MOS3_W_SENS_DC, IF_REAL, "dc sensitivity wrt width"), OPU("sens_w_real",MOS3_W_SENS_REAL, IF_REAL, "real part of ac sensitivity wrt width"), OPU("sens_w_imag",MOS3_W_SENS_IMAG, IF_REAL, "imag part of ac sensitivity wrt width"), OPU("sens_w_mag", MOS3_W_SENS_MAG, IF_REAL, "sensitivity wrt w of ac magnitude"), OPU("sens_w_ph", MOS3_W_SENS_PH, IF_REAL, "sensitivity wrt w of ac phase"), OPU("sens_w_cplx",MOS3_W_SENS_CPLX, IF_COMPLEX, "ac sensitivity wrt width") }; IFparm MOS3mPTable[] = { /* model parameters */ OP("type", MOS3_MOD_TYPE, IF_STRING ,"N-channel or P-channel MOS"), IP("nmos", MOS3_MOD_NMOS, IF_FLAG ,"N type MOSfet model"), IP("pmos", MOS3_MOD_PMOS, IF_FLAG ,"P type MOSfet model"), IOP("vto", MOS3_MOD_VTO, IF_REAL ,"Threshold voltage"), IOPR("vt0", MOS3_MOD_VTO, IF_REAL ,"Threshold voltage"), IOP("kp", MOS3_MOD_KP, IF_REAL ,"Transconductance parameter"), IOP("gamma", MOS3_MOD_GAMMA, IF_REAL ,"Bulk threshold parameter"), IOP("phi", MOS3_MOD_PHI, IF_REAL ,"Surface potential"), IOP("rd", MOS3_MOD_RD, IF_REAL ,"Drain ohmic resistance"), IOP("rs", MOS3_MOD_RS, IF_REAL ,"Source ohmic resistance"), IOPA("cbd", MOS3_MOD_CBD, IF_REAL ,"B-D junction capacitance"), IOPA("cbs", MOS3_MOD_CBS, IF_REAL ,"B-S junction capacitance"), IOP("is", MOS3_MOD_IS, IF_REAL ,"Bulk junction sat. current"), IOP("pb", MOS3_MOD_PB, IF_REAL ,"Bulk junction potential"), IOPA("cgso", MOS3_MOD_CGSO, IF_REAL ,"Gate-source overlap cap."), IOPA("cgdo", MOS3_MOD_CGDO, IF_REAL ,"Gate-drain overlap cap."), IOPA("cgbo", MOS3_MOD_CGBO, IF_REAL ,"Gate-bulk overlap cap."), IOP("rsh", MOS3_MOD_RSH, IF_REAL ,"Sheet resistance"), IOPA("cj", MOS3_MOD_CJ, IF_REAL ,"Bottom junction cap per area"),
* Copyright 2000 Regents of the University of California. All rights reserved. * File: b4.c of BSIM4.2.0. * Authors: Weidong Liu, Xuemei Xi, Kanyu M. Cao, Xiaodong Jin, Chenming Hu. * Project Director: Prof. Chenming Hu. * * Modified by Xuemei Xi, 04/06/2001. **********/ #include "spice.h" #include <stdio.h> #include "devdefs.h" #include "bsim4def.h" #include "suffix.h" IFparm BSIM4pTable[] = { /* parameters */ IOP( "l", BSIM4_L, IF_REAL , "Length"), IOP( "w", BSIM4_W, IF_REAL , "Width"), IOP( "nf", BSIM4_NF, IF_REAL , "Number of fingers"), IOP( "min", BSIM4_MIN, IF_INTEGER , "Minimize either D or S"), IOP( "ad", BSIM4_AD, IF_REAL , "Drain area"), IOP( "as", BSIM4_AS, IF_REAL , "Source area"), IOP( "pd", BSIM4_PD, IF_REAL , "Drain perimeter"), IOP( "ps", BSIM4_PS, IF_REAL , "Source perimeter"), IOP( "nrd", BSIM4_NRD, IF_REAL , "Number of squares in drain"), IOP( "nrs", BSIM4_NRS, IF_REAL , "Number of squares in source"), IOP( "off", BSIM4_OFF, IF_FLAG , "Device is initially off"), IOP( "rbdb", BSIM4_RBDB, IF_REAL , "Body resistance"), IOP( "rbsb", BSIM4_RBSB, IF_REAL , "Body resistance"), IOP( "rbpb", BSIM4_RBPB, IF_REAL , "Body resistance"), IOP( "rbps", BSIM4_RBPS, IF_REAL , "Body resistance"), IOP( "rbpd", BSIM4_RBPD, IF_REAL , "Body resistance"),
/********** Imported from MacSpice3f4 - Antony Wilson Modified: Paolo Nenzi **********/ #include "ngspice/ngspice.h" #include "ngspice/ifsim.h" #include "ngspice/devdefs.h" #include "hfetdefs.h" #include "ngspice/suffix.h" IFparm HFETApTable[] = { /* parameters */ OP("off", HFETA_OFF, IF_FLAG ,"Device initially off"), IOP("l", HFETA_LENGTH, IF_REAL ,"Length of device"), IOP("w", HFETA_WIDTH, IF_REAL ,"Width of device"), IOP("m", HFETA_M, IF_REAL ,"Parallel Multiplier"), IOP("icvds", HFETA_IC_VDS, IF_REAL ,"Initial D-S voltage"), IOP("icvgs", HFETA_IC_VGS, IF_REAL ,"Initial G-S voltage"), IOP("temp", HFETA_TEMP, IF_REAL ,"Instance temperature"), IOP("dtemp", HFETA_DTEMP, IF_REAL ,"Instance temperature difference"), OP("dnode", HFETA_DRAINNODE, IF_INTEGER,"Number of drain node"), OP("gnode", HFETA_GATENODE, IF_INTEGER,"Number of gate node"), OP("snode", HFETA_SOURCENODE, IF_INTEGER,"Number of source node"), OP("dprimenode",HFETA_DRAINPRIMENODE, IF_INTEGER,"Number of internal drain node"), OP("sprimenode",HFETA_SOURCEPRIMENODE,IF_INTEGER,"Number of internal source node"), OP("vgs", HFETA_VGS, IF_REAL,"Gate-Source voltage"), OP("vgd", HFETA_VGD, IF_REAL,"Gate-Drain voltage"), OP("cg", HFETA_CG, IF_REAL,"Gate capacitance"), OP("cd", HFETA_CD, IF_REAL,"Drain capacitance"), OP("cgd", HFETA_CGD, IF_REAL,"Gate_Drain capacitance"),
OP("gm", JFET_GM, IF_REAL, "Transconductance"), OP("gds", JFET_GDS, IF_REAL, "Conductance D-S"), OP("ggs", JFET_GGS, IF_REAL, "Conductance G-S"), OP("ggd", JFET_GGD, IF_REAL, "Conductance G-D"), OPU("qgs", JFET_QGS, IF_REAL,"Charge storage G-S junction"), OPU("qgd", JFET_QGD, IF_REAL,"Charge storage G-D junction"), OPU("cqgs",JFET_CQGS, IF_REAL, "Capacitance due to charge storage G-S junction"), OPU("cqgd",JFET_CQGD, IF_REAL, "Capacitance due to charge storage G-D junction"), OPU("p", JFET_POWER,IF_REAL,"Power dissipated by the JFET"), }; IFparm JFETmPTable[] = { /* model parameters */ OP("type", JFET_MOD_TYPE, IF_STRING, "N-type or P-type JFET model"), IOP("njf", JFET_MOD_NJF, IF_FLAG,"N type JFET model"), IOP("pjf", JFET_MOD_PJF, IF_FLAG,"P type JFET model"), IOP("vt0", JFET_MOD_VTO, IF_REAL,"Threshold voltage"), IOPR("vto", JFET_MOD_VTO, IF_REAL,"Threshold voltage"), IOP("beta", JFET_MOD_BETA, IF_REAL,"Transconductance parameter"), IOP("lambda", JFET_MOD_LAMBDA, IF_REAL,"Channel length modulation param."), IOP("rd", JFET_MOD_RD, IF_REAL,"Drain ohmic resistance"), OPU("gd", JFET_MOD_DRAINCONDUCT, IF_REAL,"Drain conductance"), IOP("rs", JFET_MOD_RS, IF_REAL,"Source ohmic resistance"), OPU("gs",JFET_MOD_SOURCECONDUCT,IF_REAL,"Source conductance"), IOPA("cgs", JFET_MOD_CGS, IF_REAL,"G-S junction capactance"), IOPA("cgd", JFET_MOD_CGD, IF_REAL,"G-D junction cap"), IOP("pb", JFET_MOD_PB, IF_REAL,"Gate junction potential"), IOP("is", JFET_MOD_IS, IF_REAL,"Gate junction saturation current"), IOP("fc", JFET_MOD_FC, IF_REAL,"Forward bias junction fit parm."), /* Modification for Sydney University JFET model */
"dc sensitivity wrt width"), OPU( "sens_w_real", MOS2_W_SENS_REAL, IF_REAL, "dc sensitivity and real part of ac sensitivity wrt width"), OPU( "sens_w_imag", MOS2_W_SENS_IMAG, IF_REAL, "imag part of ac sensitivity wrt width"), OPU( "sens_w_mag", MOS2_W_SENS_MAG, IF_REAL, "sensitivity wrt w of ac magnitude"), OPU( "sens_w_ph", MOS2_W_SENS_PH, IF_REAL, "sensitivity wrt w of ac phase"), OPU( "sens_w_cplx", MOS2_W_SENS_CPLX, IF_COMPLEX, "ac sensitivity wrt width") }; IFparm MOS2mPTable[] = { /* model parameters */ OP("type", MOS2_MOD_TYPE, IF_STRING ,"N-channel or P-channel MOS"), IOP("vto", MOS2_MOD_VTO, IF_REAL ,"Threshold voltage"), IOPR("vt0", MOS2_MOD_VTO, IF_REAL ,"Threshold voltage"), IOP("kp", MOS2_MOD_KP, IF_REAL ,"Transconductance parameter"), IOP("gamma", MOS2_MOD_GAMMA, IF_REAL ,"Bulk threshold parameter"), IOP("phi", MOS2_MOD_PHI, IF_REAL ,"Surface potential"), IOP("lambda",MOS2_MOD_LAMBDA,IF_REAL ,"Channel length modulation"), IOP("rd", MOS2_MOD_RD, IF_REAL ,"Drain ohmic resistance"), IOP("rs", MOS2_MOD_RS, IF_REAL ,"Source ohmic resistance"), IOP("cbd", MOS2_MOD_CBD, IF_REAL ,"B-D junction capacitance"), IOP("cbs", MOS2_MOD_CBS, IF_REAL ,"B-S junction capacitance"), IOP("is", MOS2_MOD_IS, IF_REAL ,"Bulk junction sat. current"), IOP("pb", MOS2_MOD_PB, IF_REAL ,"Bulk junction potential"), IOPA("cgso", MOS2_MOD_CGSO, IF_REAL ,"Gate-source overlap cap."), IOPA("cgdo", MOS2_MOD_CGDO, IF_REAL ,"Gate-drain overlap cap."), IOPA("cgbo", MOS2_MOD_CGBO, IF_REAL ,"Gate-bulk overlap cap."), IOP("rsh", MOS2_MOD_RSH, IF_REAL ,"Sheet resistance"),
HiSIM (Hiroshima University STARC IGFET Model) Copyright (C) 2003 STARC VERSION : HiSIM 1.2.0 FILE : hsm1.c of HiSIM 1.2.0 April 9, 2003 : released by STARC Physical Design Group ***********************************************************************/ #include "ngspice.h" #include "devdefs.h" #include "hsm1def.h" #include "suffix.h" IFparm HSM1pTable[] = { /* parameters */ IOP( "l", HSM1_L, IF_REAL , "Length"), IOP( "w", HSM1_W, IF_REAL , "Width"), IOP( "ad", HSM1_AD, IF_REAL , "Drain area"), IOP( "as", HSM1_AS, IF_REAL , "Source area"), IOP( "pd", HSM1_PD, IF_REAL , "Drain perimeter"), IOP( "ps", HSM1_PS, IF_REAL , "Source perimeter"), IOP( "nrd", HSM1_NRD, IF_REAL , "Number of squares in drain"), IOP( "nrs", HSM1_NRS, IF_REAL , "Number of squares in source"), IOP( "temp", HSM1_TEMP, IF_REAL , "Lattice temperature"), IOP( "dtemp", HSM1_DTEMP,IF_REAL , ""), IOP( "off", HSM1_OFF, IF_FLAG , "Device is initially off"), IP ( "ic", HSM1_IC, IF_REALVEC , "Vector of DS,GS,BS initial voltages"), IOP( "m", HSM1_M, IF_REAL , "Parallel multiplier") }; IFparm HSM1mPTable[] = { /* model parameters */
NULL, INDpzLoad, NULL, NULL, /* DISTO */ NULL, /* NOISE */ &INDiSize, &INDmSize }; #ifdef MUTUAL static IFparm MUTpTable[] = { /* parameters */ IOPAP("k", MUT_COEFF,IF_REAL, "Mutual inductance"), IOPR( "coefficient",MUT_COEFF,IF_REAL, "Mutual inductance"), IOP( "inductor1", MUT_IND1, IF_INSTANCE, "First coupled inductor"), IOP( "inductor2", MUT_IND2, IF_INSTANCE, "Second coupled inductor"), }; /* model parameters */ /* static IFparm MUTmPTable[] = { }; */ static IFkeys MUTkeys[] = { { 'k', 0, NULL, 0, 2 }, }; static int MUTkSize = NUMELEMS(MUTkeys); static int MUTpTSize = NUMELEMS(MUTpTable); static int MUTmPTSize = 0; static int MUTiSize = sizeof(MUTinstance);
OP("gm", JFET2_GM, IF_REAL, "Transconductance"), OP("gds", JFET2_GDS, IF_REAL, "Conductance D-S"), OP("ggs", JFET2_GGS, IF_REAL, "Conductance G-S"), OP("ggd", JFET2_GGD, IF_REAL, "Conductance G-D"), OPU("qgs", JFET2_QGS, IF_REAL, "Charge storage G-S junction"), OPU("qgd", JFET2_QGD, IF_REAL, "Charge storage G-D junction"), OPU("cqgs", JFET2_CQGS, IF_REAL, "Capacitance due to charge storage G-S junction"), OPU("cqgd", JFET2_CQGD, IF_REAL, "Capacitance due to charge storage G-D junction"), OPU("p", JFET2_POWER,IF_REAL, "Power dissipated by the JFET2"), OPU("vtrap",JFET2_VTRAP,IF_REAL, "Quiescent drain feedback potential"), OPU("vpave",JFET2_PAVE, IF_REAL, "Quiescent power dissipation"), }; IFparm JFET2mPTable[] = { /* model parameters */ OP("type", JFET2_MOD_TYPE, IF_STRING, "N-type or P-type JFET2 model"), IOP("njf", JFET2_MOD_NJF, IF_FLAG,"N type JFET2 model"), IOP("pjf", JFET2_MOD_PJF, IF_FLAG,"P type JFET2 model"), #define PARAM(code,id,flag,ref,default,descrip) IOP(code,id,IF_REAL,descrip), #define PARAMR(code,id,flag,ref,default,descrip) IOPR(code,id,IF_REAL,descrip), #define PARAMA(code,id,flag,ref,default,descrip) IOPA(code,id,IF_REAL,descrip), #include "jfet2parm.h" OPU("gd", JFET2_MOD_DRAINCONDUCT, IF_REAL,"Drain conductance"), OPU("gs", JFET2_MOD_SOURCECONDUCT,IF_REAL,"Source conductance"), IOPU("tnom", JFET2_MOD_TNOM, IF_REAL,"parameter measurement temperature"), }; char *JFET2names[] = { "Drain", "Gate",
**********/ #include "ngspice/ngspice.h" #include "ngspice/devdefs.h" #include "numosdef.h" #include "ngspice/suffix.h" /* * This file defines the 2d Numerical MOSFET data structures that are * available to the next level(s) up the calling hierarchy */ IFparm NUMOSpTable[] = { /* parameters */ IP("off", NUMOS_OFF, IF_FLAG, "Device initially off"), IP("ic.file", NUMOS_IC_FILE, IF_STRING, "Initial condition file"), IOP("area", NUMOS_AREA, IF_REAL, "Area factor"), IOP("w", NUMOS_WIDTH, IF_REAL, "Width factor"), IOP("l", NUMOS_LENGTH, IF_REAL, "Length factor"), IP("save", NUMOS_PRINT, IF_INTEGER, "Save solutions"), IP("print", NUMOS_PRINT, IF_INTEGER, "Print solutions"), OP("g11", NUMOS_G11, IF_REAL, "Conductance"), OP("c11", NUMOS_C11, IF_REAL, "Capacitance"), OP("y11", NUMOS_Y11, IF_COMPLEX, "Admittance"), OP("g12", NUMOS_G12, IF_REAL, "Conductance"), OP("c12", NUMOS_C12, IF_REAL, "Capacitance"), OP("y12", NUMOS_Y12, IF_COMPLEX, "Admittance"), OP("g13", NUMOS_G13, IF_REAL, "Conductance"), OP("c13", NUMOS_C13, IF_REAL, "Capacitance"), OP("y13", NUMOS_Y13, IF_COMPLEX, "Admittance"), OPU("g14", NUMOS_G14, IF_REAL, "Conductance"), OPU("c14", NUMOS_C14, IF_REAL, "Capacitance"),
/********** Copyright 1992 Regents of the University of California. All rights reserved. Author: 1987 Kartikeya Mayaram, U. C. Berkeley CAD Group **********/ #include "ngspice.h" #include "devdefs.h" #include "numddefs.h" #include "suffix.h" IFparm NUMDpTable[] = { /* parameters */ IP("off", NUMD_OFF, IF_FLAG, "Initially off"), IP("ic.file", NUMD_IC_FILE, IF_REAL, "Initial conditions file"), IOP("area", NUMD_AREA, IF_REAL, "Area factor"), IP("save", NUMD_PRINT, IF_REAL, "Save Solutions"), IP("print", NUMD_PRINT, IF_REAL, "Print Solutions"), OP("vd", NUMD_VD, IF_REAL, "Voltage"), OP("id", NUMD_ID, IF_REAL, "Current"), OP("g11", NUMD_G11, IF_REAL, "Conductance"), OP("c11", NUMD_C11, IF_REAL, "Capacitance"), OP("y11", NUMD_Y11, IF_COMPLEX, "Admittance"), OPU("g12", NUMD_G12, IF_REAL, "Conductance"), OPU("c12", NUMD_C12, IF_REAL, "Capacitance"), OPU("y12", NUMD_Y12, IF_COMPLEX, "Admittance"), OPU("g21", NUMD_G21, IF_REAL, "Conductance"), OPU("c21", NUMD_C21, IF_REAL, "Capacitance"), OPU("y21", NUMD_Y21, IF_COMPLEX, "Admittance"), OPU("g22", NUMD_G22, IF_REAL, "Conductance"), OPU("c22", NUMD_C22, IF_REAL, "Capacitance"), OPU("y22", NUMD_Y22, IF_COMPLEX, "Admittance"), OPR("voltage", NUMD_VD, IF_REAL, "Voltage"),
/*** *** Interface: ads2002 2.2.0.0 *** created by: admsXml-2.3.0 - Tue, 13 Apr 2010 13:45:17 ***/ #include "ngspice.h" #include "devdefs.h" #include "mextramdefs.h" #include "suffix.h" IFparm mextrampTable[] = { }; IFparm mextrammPTable[] = { IOP("pnp",mextram_model_pnp,IF_INTEGER,"pnp"), IOP("npn",mextram_model_npn,IF_INTEGER,"npn"), IOP("level",mextram_model_LEVEL,IF_INTEGER,"LEVEL"), IOP("tref",mextram_model_TREF,IF_REAL,"TREF"), IOP("dta",mextram_model_DTA,IF_REAL,"DTA"), IOP("exmod",mextram_model_EXMOD,IF_INTEGER,"EXMOD"), IOP("exphi",mextram_model_EXPHI,IF_INTEGER,"EXPHI"), IOP("exavl",mextram_model_EXAVL,IF_INTEGER,"EXAVL"), IOP("is",mextram_model_IS,IF_REAL,"IS"), IOP("ik",mextram_model_IK,IF_REAL,"IK"), IOP("ver",mextram_model_VER,IF_REAL,"VER"), IOP("vef",mextram_model_VEF,IF_REAL,"VEF"), IOP("bf",mextram_model_BF,IF_REAL,"BF"), IOP("ibf",mextram_model_IBF,IF_REAL,"IBF"), IOP("mlf",mextram_model_MLF,IF_REAL,"MLF"), IOP("xibi",mextram_model_XIBI,IF_REAL,"XIBI"), IOP("bri",mextram_model_BRI,IF_REAL,"BRI"), IOP("ibr",mextram_model_IBR,IF_REAL,"IBR"),
/*** *** Interface: ads2002 2.2.0.0 *** created by: admsXml-2.3.0 - Tue, 13 Apr 2010 14:29:51 ***/ #include "ngspice.h" #include "devdefs.h" #include "hicum2defs.h" #include "suffix.h" IFparm hicum2pTable[] = { }; IFparm hicum2mPTable[] = { IOP("pnp",hicum2_model_pnp,IF_INTEGER,"pnp"), IOP("npn",hicum2_model_npn,IF_INTEGER,"npn"), IOP("c10",hicum2_model_c10,IF_REAL,"c10"), IOP("qp0",hicum2_model_qp0,IF_REAL,"qp0"), IOP("ich",hicum2_model_ich,IF_REAL,"ich"), IOP("hfe",hicum2_model_hfe,IF_REAL,"hfe"), IOP("hfc",hicum2_model_hfc,IF_REAL,"hfc"), IOP("hjei",hicum2_model_hjei,IF_REAL,"hjei"), IOP("hjci",hicum2_model_hjci,IF_REAL,"hjci"), IOP("ibeis",hicum2_model_ibeis,IF_REAL,"ibeis"), IOP("mbei",hicum2_model_mbei,IF_REAL,"mbei"), IOP("ireis",hicum2_model_ireis,IF_REAL,"ireis"), IOP("mrei",hicum2_model_mrei,IF_REAL,"mrei"), IOP("ibeps",hicum2_model_ibeps,IF_REAL,"ibeps"), IOP("mbep",hicum2_model_mbep,IF_REAL,"mbep"), IOP("ireps",hicum2_model_ireps,IF_REAL,"ireps"), IOP("mrep",hicum2_model_mrep,IF_REAL,"mrep"), IOP("mcf",hicum2_model_mcf,IF_REAL,"mcf"),