*/ #include "spice.h" #include <stdio.h> #include "devdefs.h" #include "ifsim.h" #include "ltradefs.h" #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("nrs", MOS1_NRS, IF_REAL , "Source squares"), IP("off", MOS1_OFF, IF_FLAG , "Device initially off"), IOPU("icvds", MOS1_IC_VDS, IF_REAL , "Initial D-S voltage"), IOPU("icvgs", MOS1_IC_VGS, IF_REAL , "Initial G-S voltage"), IOPU("icvbs", MOS1_IC_VBS, IF_REAL , "Initial B-S voltage"), IOPU("temp", MOS1_TEMP, IF_REAL, "Instance temperature"), IOPU("dtemp", MOS1_DTEMP, IF_REAL, "Instance temperature difference"), IP( "ic", MOS1_IC, IF_REALVEC, "Vector of D-S, G-S, B-S voltages"), IP( "sens_l", MOS1_L_SENS, IF_FLAG, "flag to request sensitivity WRT length"), IP( "sens_w", MOS1_W_SENS, IF_FLAG, "flag to request sensitivity WRT width"), OP( "id", MOS1_CD, IF_REAL, "Drain current"), OP( "is", MOS1_CS, IF_REAL, "Source current"), OP( "ig", MOS1_CG, IF_REAL, "Gate current "), OP( "ib", MOS1_CB, IF_REAL, "Bulk current "), OPU( "ibd", MOS1_CBD, IF_REAL, "B-D junction current"), OPU( "ibs", MOS1_CBS, IF_REAL, "B-S junction current"), OP( "vgs", MOS1_VGS, IF_REAL, "Gate-Source voltage"), OP( "vds", MOS1_VDS, IF_REAL, "Drain-Source voltage"), OP( "vbs", MOS1_VBS, IF_REAL, "Bulk-Source voltage"), OPU( "vbd", MOS1_VBD, IF_REAL, "Bulk-Drain voltage"), /* OP( "cgs", MOS1_CGS, IF_REAL , "Gate-Source capacitance"), OP( "cgd", MOS1_CGD, IF_REAL , "Gate-Drain capacitance"), */ OPU( "dnode", MOS1_DNODE, IF_INTEGER, "Number of the drain node "), OPU( "gnode", MOS1_GNODE, IF_INTEGER, "Number of the gate node "), OPU( "snode", MOS1_SNODE, IF_INTEGER, "Number of the source node "), OPU( "bnode", MOS1_BNODE, IF_INTEGER, "Number of the node "), OPU( "dnodeprime", MOS1_DNODEPRIME, IF_INTEGER, "Number of int. drain node"),
IOPU("w", MOS2_W, IF_REAL , "Width"), IOPU("ad", MOS2_AD, IF_REAL , "Drain area"), IOPU("as", MOS2_AS, IF_REAL , "Source area"), IOPU("pd", MOS2_PD, IF_REAL , "Drain perimeter"), IOPU("ps", MOS2_PS, IF_REAL , "Source perimeter"), OP( "id", MOS2_CD, IF_REAL,"Drain current"), OPR( "cd", MOS2_CD, IF_REAL,""), OP( "ibd", MOS2_CBD, IF_REAL, "B-D junction current"), OP( "ibs", MOS2_CBS, IF_REAL, "B-S junction current"), OP( "is", MOS2_CS, IF_REAL, "Source current "), OP( "ig", MOS2_CG, IF_REAL, "Gate current "), OP( "ib", MOS2_CB, IF_REAL, "Bulk current "), OP( "vgs", MOS2_VGS, IF_REAL, "Gate-Source voltage"), OP( "vds", MOS2_VDS, IF_REAL, "Drain-Source voltage"), OP( "vbs", MOS2_VBS, IF_REAL, "Bulk-Source voltage"), OPU( "vbd", MOS2_VBD, IF_REAL, "Bulk-Drain voltage"), IOPU("nrd", MOS2_NRD, IF_REAL , "Drain squares"), IOPU("nrs", MOS2_NRS, IF_REAL , "Source squares"), IP("off", MOS2_OFF, IF_FLAG , "Device initially off"), IOPAU("icvds", MOS2_IC_VDS,IF_REAL , "Initial D-S voltage"), IOPAU("icvgs", MOS2_IC_VGS,IF_REAL , "Initial G-S voltage"), IOPAU("icvbs", MOS2_IC_VBS,IF_REAL , "Initial B-S voltage"), IOPU("temp", MOS2_TEMP, IF_REAL , "Instance operating temperature"), IP( "ic", MOS2_IC, IF_REALVEC, "Vector of D-S, G-S, B-S voltages"), IP( "sens_l", MOS2_L_SENS,IF_FLAG, "flag to request sensitivity WRT length"), IP( "sens_w", MOS2_W_SENS,IF_FLAG, "flag to request sensitivity WRT width"), /* OP( "cgs", MOS2_CGS, IF_REAL , "Gate-Source capacitance"), OP( "cgd", MOS2_CGD, IF_REAL , "Gate-Drain capacitance"), */ OPU( "dnode", MOS2_DNODE, IF_INTEGER, "Number of drain node"),
/* Indepedent Current Source */ IFparm ISRCpTable[] = { /* parameters */ IOPP( "dc", ISRC_DC, IF_REAL ,"DC value of source"), IOPPA( "acmag", ISRC_AC_MAG, IF_REAL ,"AC magnitude"), IOPAAU( "acphase", ISRC_AC_PHASE, IF_REAL ,"AC phase"), IP ( "pulse", ISRC_PULSE, IF_REALVEC,"Pulse description"), IP ( "sine", ISRC_SINE, IF_REALVEC,"Sinusoidal source description"), IP ( "sin", ISRC_SINE, IF_REALVEC,"Sinusoidal source description"), IP ( "exp", ISRC_EXP, IF_REALVEC,"Exponential source description"), IP ( "pwl", ISRC_PWL, IF_REALVEC,"Piecewise linear description"), IP ( "sffm", ISRC_SFFM, IF_REALVEC,"single freq. FM description"), OPU ( "neg_node",ISRC_NEG_NODE, IF_INTEGER,"Negative node of source"), OPU ( "pos_node",ISRC_POS_NODE, IF_INTEGER,"Positive node of source"), OPU ( "acreal", ISRC_AC_REAL, IF_REAL ,"AC real part"), OPU ( "acimag", ISRC_AC_IMAG, IF_REAL ,"AC imaginary part"), OPU ( "function",ISRC_FCN_TYPE, IF_INTEGER,"Function of the source"), OPU ( "order", ISRC_FCN_ORDER, IF_INTEGER,"Order of the source function"), OPU ( "coeffs", ISRC_FCN_COEFFS,IF_REALVEC,"Coefficients of the source"), OP ( "v", ISRC_VOLTS, IF_REAL, "Voltage across the supply"), OP ( "p", ISRC_POWER, IF_REAL, "Power supplied by the source"), IP ( "ac", ISRC_AC, IF_REALVEC,"AC magnitude,phase vector"), IP ( "c", ISRC_DC, IF_REAL, "Current through current source"), IP ( "distof1", ISRC_D_F1, IF_REALVEC,"f1 input for distortion"), IP ( "distof2", ISRC_D_F2, IF_REALVEC,"f2 input for distortion") }; char *ISRCnames[] = {
#include "ngspice.h" #include "devdefs.h" #include "vbicdefs.h" #include "suffix.h" IFparm VBICpTable[] = { /* parameters */ IOPU("area", VBIC_AREA, IF_REAL, "Area factor"), IOPU("off", VBIC_OFF, IF_FLAG, "Device initially off"), IP("ic", VBIC_IC, IF_REALVEC, "Initial condition vector"), IOPAU("icvbe", VBIC_IC_VBE, IF_REAL, "Initial B-E voltage"), IOPAU("icvce", VBIC_IC_VCE, IF_REAL, "Initial C-E voltage"), IOPU("temp", VBIC_TEMP, IF_REAL, "Instance temperature"), IOPU("dtemp", VBIC_DTEMP, IF_REAL, "Instance delta temperature"), IOPU("m", VBIC_M, IF_REAL, "Multiplier"), OPU("collnode", VBIC_QUEST_COLLNODE, IF_INTEGER, "Number of collector node"), OPU("basenode", VBIC_QUEST_BASENODE, IF_INTEGER, "Number of base node"), OPU("emitnode", VBIC_QUEST_EMITNODE, IF_INTEGER, "Number of emitter node"), OPU("subsnode", VBIC_QUEST_SUBSNODE, IF_INTEGER, "Number of substrate node"), OPU("collCXnode",VBIC_QUEST_COLLCXNODE,IF_INTEGER, "Internal collector node"), OPU("collCInode",VBIC_QUEST_COLLCINODE,IF_INTEGER, "Internal collector node"), OPU("baseBXnode",VBIC_QUEST_BASEBXNODE,IF_INTEGER, "Internal base node"), OPU("baseBInode",VBIC_QUEST_BASEBINODE,IF_INTEGER, "Internal base node"), OPU("baseBPnode",VBIC_QUEST_BASEBPNODE,IF_INTEGER, "Internal base node"), OPU("emitEInode",VBIC_QUEST_EMITEINODE,IF_INTEGER, "Internal emitter node"), OPU("subsSInode",VBIC_QUEST_SUBSSINODE,IF_INTEGER, "Internal substrate node"), OP("vbe", VBIC_QUEST_VBE, IF_REAL, "B-E voltage"), OP("vbc", VBIC_QUEST_VBC, IF_REAL, "B-C voltage"), OP("ic", VBIC_QUEST_CC, IF_REAL, "Collector current"), OP("ib", VBIC_QUEST_CB, IF_REAL, "Base current"), OP("ie", VBIC_QUEST_CE, IF_REAL, "Emitter current"),
#include <stdio.h> #include "devdefs.h" #include "ifsim.h" #include "swdefs.h" #include "suffix.h" /* Model for switch */ IFparm SWpTable[] = { /* parameters */ IP("on", SW_IC_ON, IF_FLAG,"Switch initially closed"), IP("off", SW_IC_OFF, IF_FLAG,"Switch initially open"), IOPU("pos_node", SW_POS_NODE,IF_INTEGER,"Positive node of switch"), IOPU("neg_node", SW_NEG_NODE,IF_INTEGER,"Negative node of switch"), OPU("cont_p_node",SW_POS_CONT_NODE,IF_INTEGER, "Positive contr. node of switch"), OPU("cont_n_node",SW_NEG_CONT_NODE,IF_INTEGER, "Positive contr. node of switch"), OP("i", SW_CURRENT, IF_REAL, "Switch current"), OP("p", SW_POWER, IF_REAL, "Switch power") }; IFparm SWmPTable[] = { /* model parameters */ IOPU( "sw", SW_MOD_SW, IF_FLAG,"Switch model"), IOPU( "vt", SW_MOD_VTH, IF_REAL,"Threshold voltage"), IOPU( "vh", SW_MOD_VHYS, IF_REAL,"Hysteresis voltage"), IOPU( "ron", SW_MOD_RON, IF_REAL,"Resistance when closed"), OPU( "gon", SW_MOD_GON, IF_REAL,"Conductance when closed"), IOPU( "roff", SW_MOD_ROFF, IF_REAL,"Resistance when open"), OPU( "goff", SW_MOD_GOFF, IF_REAL,"Conductance when open") };
IFparm CAPpTable[] = { /* parameters */ IOPAP("capacitance", CAP_CAP, IF_REAL, "Device capacitance"), IOPAP("cap", CAP_CAP, IF_REAL, "Device capacitance"), IOPAP("c", CAP_CAP, IF_REAL, "Device capacitance"), IOPAU("ic", CAP_IC, IF_REAL, "Initial capacitor voltage"), IOPZU("temp", CAP_TEMP, IF_REAL, "Instance operating temperature"), IOPZ( "dtemp", CAP_DTEMP, IF_REAL, "Instance temperature difference from the rest of the circuit"), IOPAU("w", CAP_WIDTH, IF_REAL, "Device width"), IOPAU("l", CAP_LENGTH, IF_REAL, "Device length"), IOPU( "m", CAP_M, IF_REAL, "Parallel multiplier"), IOPU( "scale", CAP_SCALE, IF_REAL, "Scale factor"), IP( "sens_cap", CAP_CAP_SENS, IF_FLAG, "flag to request sens. WRT cap."), OP( "i", CAP_CURRENT, IF_REAL, "Device current"), OP( "p", CAP_POWER, IF_REAL, "Instantaneous device power"), OPU( "sens_dc", CAP_QUEST_SENS_DC, IF_REAL, "dc sensitivity "), OPU( "sens_real", CAP_QUEST_SENS_REAL, IF_REAL, "real part of ac sensitivity"), OPU( "sens_imag", CAP_QUEST_SENS_IMAG, IF_REAL, "dc sens. & imag part of ac sens."), OPU( "sens_mag", CAP_QUEST_SENS_MAG, IF_REAL, "sensitivity of ac magnitude"), OPU( "sens_ph", CAP_QUEST_SENS_PH, IF_REAL, "sensitivity of ac phase"), OPU( "sens_cplx", CAP_QUEST_SENS_CPLX, IF_COMPLEX, "ac sensitivity") }; IFparm CAPmPTable[] = { /* names of model parameters */ IOPA( "cap", CAP_MOD_CAP, IF_REAL, "Model capacitance"), IOPA( "cj", CAP_MOD_CJ, IF_REAL, "Bottom Capacitance per area"), IOPA( "cjsw", CAP_MOD_CJSW, IF_REAL, "Sidewall capacitance per meter"), IOPX( "defw", CAP_MOD_DEFWIDTH, IF_REAL, "Default width"), IOPX( "defl", CAP_MOD_DEFLENGTH,IF_REAL, "Default length"), IOPA( "narrow", CAP_MOD_NARROW, IF_REAL, "width correction factor"),
#include <stdio.h> #include "resdefs.h" #include "devdefs.h" #include "ifsim.h" #include "suffix.h" IFparm RESpTable[] = { /* parameters */ IOPP( "resistance", RES_RESIST, IF_REAL,"Resistance"), IOPZU( "temp", RES_TEMP, IF_REAL,"Instance operating temperature"), IOPQU( "l", RES_LENGTH, IF_REAL,"Length"), IOPZU( "w", RES_WIDTH, IF_REAL,"Width"), IP( "sens_resist", RES_RESIST_SENS, IF_FLAG, "flag to request sensitivity WRT resistance"), OP( "i", RES_CURRENT,IF_REAL,"Current"), OP( "p", RES_POWER, IF_REAL,"Power"), OPU( "sens_dc", RES_QUEST_SENS_DC, IF_REAL, "dc sensitivity "), OPU( "sens_real",RES_QUEST_SENS_REAL,IF_REAL, "dc sensitivity and real part of ac sensitivity"), OPU( "sens_imag",RES_QUEST_SENS_IMAG,IF_REAL, "dc sensitivity and imag part of ac sensitivity"), OPU( "sens_mag", RES_QUEST_SENS_MAG, IF_REAL, "ac sensitivity of magnitude"), OPU( "sens_ph", RES_QUEST_SENS_PH, IF_REAL, "ac sensitivity of phase"), OPU( "sens_cplx",RES_QUEST_SENS_CPLX,IF_COMPLEX, "ac sensitivity") } ; IFparm RESmPTable[] = { /* model parameters */ IOPQ( "rsh", RES_MOD_RSH, IF_REAL,"Sheet resistance"), IOPZ( "narrow", RES_MOD_NARROW, IF_REAL,"Narrowing of resistor"), IOPQ( "tc1", RES_MOD_TC1, IF_REAL,"First order temp. coefficient"), IOPQO( "tc2", RES_MOD_TC2, IF_REAL,"Second order temp. coefficient"), IOPX( "defw", RES_MOD_DEFWIDTH, IF_REAL,"Default device width"),
#include "ngspice/ngspice.h" #include "ngspice/ifsim.h" #include "ngspice/devdefs.h" #include "jfet2defs.h" #include "ngspice/suffix.h" IFparm JFET2pTable[] = { /* device parameters */ IOPU("off", JFET2_OFF, IF_FLAG, "Device initially off"), IOPAU("ic", JFET2_IC, IF_REALVEC,"Initial VDS,VGS vector"), IOPU("area", JFET2_AREA, IF_REAL, "Area factor"), IOPU("m", JFET2_M, IF_REAL, "Parallel Multiplier"), IOPAU("ic-vds", JFET2_IC_VDS, IF_REAL, "Initial D-S voltage"), IOPAU("ic-vgs", JFET2_IC_VGS, IF_REAL, "Initial G-S volrage"), IOPU("temp", JFET2_TEMP, IF_REAL, "Instance temperature"), IOPU("dtemp", JFET2_DTEMP, IF_REAL, "Instance temperature difference"), OPU("drain-node", JFET2_DRAINNODE, IF_INTEGER,"Number of drain node"), OPU("gate-node", JFET2_GATENODE, IF_INTEGER,"Number of gate node"), OPU("source-node", JFET2_SOURCENODE, IF_INTEGER,"Number of source node"), OPU("drain-prime-node", JFET2_DRAINPRIMENODE, IF_INTEGER,"Internal drain node"), OPU("source-prime-node",JFET2_SOURCEPRIMENODE,IF_INTEGER,"Internal source node"), OP("vgs", JFET2_VGS, IF_REAL, "Voltage G-S"), OP("vgd", JFET2_VGD, IF_REAL, "Voltage G-D"), OP("ig", JFET2_CG, IF_REAL, "Current at gate node"), OP("id", JFET2_CD, IF_REAL, "Current at drain node"), OP("is", JFET2_CS, IF_REAL, "Source current"), OP("igd", JFET2_CGD, IF_REAL, "Current G-D"), 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"),
#include "ngspice/ngspice.h" #include "ngspice/ifsim.h" #include "ngspice/devdefs.h" #include "jfetdefs.h" #include "ngspice/suffix.h" IFparm JFETpTable[] = { /* device parameters */ IOPU("off", JFET_OFF, IF_FLAG, "Device initially off"), IOPAU("ic", JFET_IC, IF_REALVEC,"Initial VDS,VGS vector"), IOPU("area", JFET_AREA, IF_REAL, "Area factor"), IOPU("m", JFET_M, IF_REAL, "Parallel multiplier"), IOPAU("ic-vds", JFET_IC_VDS, IF_REAL, "Initial D-S voltage"), IOPAU("ic-vgs", JFET_IC_VGS, IF_REAL, "Initial G-S volrage"), IOPU("temp", JFET_TEMP, IF_REAL, "Instance temperature"), IOPU("dtemp", JFET_DTEMP, IF_REAL, "Instance temperature difference"), OPU("drain-node", JFET_DRAINNODE, IF_INTEGER,"Number of drain node"), OPU("gate-node", JFET_GATENODE, IF_INTEGER,"Number of gate node"), OPU("source-node", JFET_SOURCENODE, IF_INTEGER,"Number of source node"), OPU("drain-prime-node", JFET_DRAINPRIMENODE, IF_INTEGER,"Internal drain node"), OPU("source-prime-node",JFET_SOURCEPRIMENODE,IF_INTEGER, "Internal source node"), OP("vgs", JFET_VGS, IF_REAL, "Voltage G-S"), OP("vgd", JFET_VGD, IF_REAL, "Voltage G-D"), OP("ig", JFET_CG, IF_REAL, "Current at gate node"), OP("id", JFET_CD, IF_REAL, "Current at drain node"), OP("is", JFET_CS, IF_REAL, "Source current"), OP("igd", JFET_CGD, IF_REAL, "Current G-D"), 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"),
**********/ #include "spice.h" #include <stdio.h> #include "devdefs.h" #include "urcdefs.h" #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[] = {
#include "inddefs.h" #include "suffix.h" IFparm INDpTable[] = { /* parameters */ IOPAP("inductance",IND_IND, IF_REAL,"Inductance of inductor"), IOPAU("ic", IND_IC, IF_REAL,"Initial current through inductor"), IP( "sens_ind", IND_IND_SENS,IF_FLAG, "flag to request sensitivity WRT inductance"), OP( "flux", IND_FLUX, IF_REAL,"Flux through inductor"), OP( "v", IND_VOLT, IF_REAL,"Terminal voltage of inductor"), OPR("volt", IND_VOLT, IF_REAL,""), OP( "i", IND_CURRENT,IF_REAL,"Current through the inductor"), OPR( "current", IND_CURRENT,IF_REAL,""), OP( "p", IND_POWER, IF_REAL, "instantaneous power dissipated by the inductor"), OPU( "sens_dc", IND_QUEST_SENS_DC, IF_REAL, "dc sensitivity sensitivity"), OPU( "sens_real", IND_QUEST_SENS_REAL, IF_REAL, "real part of ac sensitivity"), OPU( "sens_imag", IND_QUEST_SENS_IMAG, IF_REAL, "dc sensitivity and imag part of ac sensitivty"), OPU( "sens_mag", IND_QUEST_SENS_MAG, IF_REAL, "sensitivity of AC magnitude"), OPU( "sens_ph", IND_QUEST_SENS_PH, IF_REAL, "sensitivity of AC phase"), OPU( "sens_cplx", IND_QUEST_SENS_CPLX, IF_COMPLEX, "ac sensitivity") }; char *INDnames[] = { "L+", "L-" }; int INDnSize = NUMELEMS(INDnames);
static IFparm TRApTable[] = { /* parameters */ IOPU( "z0", TRA_Z0, IF_REAL, "Characteristic impedance"), IOPR( "zo", TRA_Z0, IF_REAL, "Characteristic impedance"), IOPAU( "f", TRA_FREQ, IF_REAL, "Frequency"), IOPAU( "td", TRA_TD, IF_REAL, "Transmission delay"), IOPAU( "nl", TRA_NL, IF_REAL, "Normalized length at frequency given"), IOPAU( "v1", TRA_V1, IF_REAL, "Initial voltage at end 1"), IOPAU( "v2", TRA_V2, IF_REAL, "Initial voltage at end 2"), IOPAU( "i1", TRA_I1, IF_REAL, "Initial current at end 1"), IOPAU( "i2", TRA_I2, IF_REAL, "Initial current at end 2"), IP( "ic", TRA_IC, IF_REALVEC,"Initial condition vector:v1,i1,v2,i2"), OP( "rel", TRA_RELTOL,IF_REAL, "Rel. rate of change of deriv. for bkpt"), OP( "abs", TRA_ABSTOL,IF_REAL, "Abs. rate of change of deriv. for bkpt"), OPU( "pos_node1", TRA_POS_NODE1, IF_INTEGER, "Positive node of end 1 of t. line"), OPU( "neg_node1", TRA_NEG_NODE1, IF_INTEGER, "Negative node of end 1 of t. line"), OPU( "pos_node2", TRA_POS_NODE2, IF_INTEGER, "Positive node of end 2 of t. line"), OPU( "neg_node2", TRA_NEG_NODE2, IF_INTEGER, "Negative node of end 2 of t. line"), OPU( "delays",TRA_DELAY, IF_REALVEC, "Delayed values of excitation") }; /* model parameters */ /* static IFparm TRAmPTable[] = { }; */ static char *TRAnames[] = { "P1+", "P1-",
* the next level(s) up the calling hierarchy */ IFparm NBJTpTable[] = { /* parameters */ IP("off", NBJT_OFF, IF_FLAG, "Device initially off"), IP("ic.file", NBJT_IC_FILE, IF_STRING, "Initial condition file"), IOP("area", NBJT_AREA, IF_REAL, "Area factor"), IP("save", NBJT_PRINT, IF_REAL, "Save Solutions"), IP("print", NBJT_PRINT, IF_REAL, "Print Solutions"), OP("g11", NBJT_G11, IF_REAL, "Conductance"), OP("c11", NBJT_C11, IF_REAL, "Capacitance"), OP("y11", NBJT_Y11, IF_COMPLEX, "Admittance"), OP("g12", NBJT_G12, IF_REAL, "Conductance"), OP("c12", NBJT_C12, IF_REAL, "Capacitance"), OP("y12", NBJT_Y12, IF_COMPLEX, "Admittance"), OPU("g13", NBJT_G13, IF_REAL, "Conductance"), OPU("c13", NBJT_C13, IF_REAL, "Capacitance"), OPU("y13", NBJT_Y13, IF_COMPLEX, "Admittance"), OP("g21", NBJT_G21, IF_REAL, "Conductance"), OP("c21", NBJT_C21, IF_REAL, "Capacitance"), OP("y21", NBJT_Y21, IF_COMPLEX, "Admittance"), OP("g22", NBJT_G22, IF_REAL, "Conductance"), OP("c22", NBJT_C22, IF_REAL, "Capacitance"), OP("y22", NBJT_Y22, IF_COMPLEX, "Admittance"), OPU("g23", NBJT_G23, IF_REAL, "Conductance"), OPU("c23", NBJT_C23, IF_REAL, "Capacitance"), OPU("y23", NBJT_Y23, IF_COMPLEX, "Admittance"), OPU("g31", NBJT_G31, IF_REAL, "Conductance"), OPU("c31", NBJT_C31, IF_REAL, "Capacitance"), OPU("y31", NBJT_Y31, IF_COMPLEX, "Admittance"), OPU("g32", NBJT_G32, IF_REAL, "Conductance"),
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"), OPU("y14", NUMOS_Y14, IF_COMPLEX, "Admittance"), OP("g21", NUMOS_G21, IF_REAL, "Conductance"), OP("c21", NUMOS_C21, IF_REAL, "Capacitance"), OP("y21", NUMOS_Y21, IF_COMPLEX, "Admittance"), OP("g22", NUMOS_G22, IF_REAL, "Conductance"), OP("c22", NUMOS_C22, IF_REAL, "Capacitance"), OP("y22", NUMOS_Y22, IF_COMPLEX, "Admittance"), OP("g23", NUMOS_G23, IF_REAL, "Conductance"), OP("c23", NUMOS_C23, IF_REAL, "Capacitance"), OP("y23", NUMOS_Y23, IF_COMPLEX, "Admittance"), OPU("g24", NUMOS_G24, IF_REAL, "Conductance"), OPU("c24", NUMOS_C24, IF_REAL, "Capacitance"), OPU("y24", NUMOS_Y24, IF_COMPLEX, "Admittance"), OP("g31", NUMOS_G31, IF_REAL, "Conductance"),
#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"), OPR("current", NUMD_ID, IF_REAL, "Current"), OPR("conductance", NUMD_G11, IF_REAL, "Conductance"), OPR("capacitance", NUMD_C11, IF_REAL, "Capacitance"), IOP("temp", NUMD_TEMP, IF_REAL, "Instance Temperature") };
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"), OPU("sens_cplx", VCCS_QUEST_SENS_CPLX, IF_COMPLEX, "ac sensitivity")
****************************************************************************/ #include "spice.h" #include <stdio.h> #include "diodefs.h" #include "uflags.h" static IFparm DIOpTable[] = { /* parameters */ IOPU( "area", DIO_AREA, IF_REAL, "Area factor"), 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"),