69 lines
3.6 KiB
C
69 lines
3.6 KiB
C
/**********
|
|
Copyright 1990 Regents of the University of California. All rights reserved.
|
|
Author: 1985 Thomas L. Quarles
|
|
Modified: September 2003 - Paolo Nenzi
|
|
**********/
|
|
|
|
#include "ngspice/ngspice.h"
|
|
#include "ngspice/devdefs.h"
|
|
#include "capdefs.h"
|
|
#include "ngspice/suffix.h"
|
|
|
|
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( "tc1", CAP_TC1, IF_REAL, "First order temp. coefficient"),
|
|
IOPU( "tc2", CAP_TC2, IF_REAL, "Second order temp. coefficient"),
|
|
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"),
|
|
IOPR( "cox", CAP_MOD_CJ, IF_REAL, "Bottom Capacitance per area"),
|
|
IOPA( "cjsw", CAP_MOD_CJSW, IF_REAL, "Sidewall capacitance per meter"),
|
|
IOPR( "capsw", CAP_MOD_CJSW, IF_REAL, "Sidewall capacitance per meter"),
|
|
IOPX( "defw", CAP_MOD_DEFWIDTH, IF_REAL, "Default width"),
|
|
IOPR( "w", CAP_MOD_DEFWIDTH, IF_REAL, "Default width"),
|
|
IOPX( "defl", CAP_MOD_DEFLENGTH,IF_REAL, "Default length"),
|
|
IOPR( "l", CAP_MOD_DEFLENGTH,IF_REAL, "Default length"),
|
|
IOPA( "narrow", CAP_MOD_NARROW, IF_REAL, "width correction factor"),
|
|
IOPA( "short", CAP_MOD_SHORT, IF_REAL, "length correction factor"),
|
|
IOPA( "tc1", CAP_MOD_TC1, IF_REAL, "First order temp. coefficient"),
|
|
IOPA( "tc2", CAP_MOD_TC2, IF_REAL, "Second order temp. coefficient"),
|
|
IOPXU("tnom", CAP_MOD_TNOM, IF_REAL, "Parameter measurement temperature"),
|
|
IOPA( "di", CAP_MOD_DI, IF_REAL, "Relative dielectric constant"),
|
|
IOPA( "thick", CAP_MOD_THICK, IF_REAL, "Insulator thickness"),
|
|
IP( "c", CAP_MOD_C, IF_FLAG, "Capacitor model")
|
|
};
|
|
|
|
char *CAPnames[] = {
|
|
"C+",
|
|
"C-"
|
|
};
|
|
|
|
|
|
int CAPnSize = NUMELEMS(CAPnames);
|
|
int CAPpTSize = NUMELEMS(CAPpTable);
|
|
int CAPmPTSize = NUMELEMS(CAPmPTable);
|
|
int CAPiSize = sizeof(CAPinstance);
|
|
int CAPmSize = sizeof(CAPmodel);
|