You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
3.2 KiB
66 lines
3.2 KiB
/**********
|
|
Copyright 1990 Regents of the University of California. All rights reserved.
|
|
Author: 1985 Thomas L. Quarles
|
|
Modified: Apr 2000 - Paolo Nenzi
|
|
Modified: 2000 AlansFixes
|
|
**********/
|
|
|
|
#include "ngspice.h"
|
|
#include "resdefs.h"
|
|
#include "devdefs.h"
|
|
#include "ifsim.h"
|
|
|
|
IFparm RESpTable[] = { /* parameters */
|
|
IOPP( "resistance", RES_RESIST, IF_REAL, "Resistance"),
|
|
IOPAA( "ac", RES_ACRESIST, IF_REAL, "AC resistance value"),
|
|
IOPZU( "temp", RES_TEMP, IF_REAL, "Instance operating temperature"),
|
|
IOPZ( "dtemp", RES_DTEMP, IF_REAL,
|
|
"Instance temperature difference with the rest of the circuit"),
|
|
IOPQU( "l", RES_LENGTH, IF_REAL, "Length"),
|
|
IOPZU( "w", RES_WIDTH, IF_REAL, "Width"),
|
|
IOPU( "m", RES_M, IF_REAL, "Multiplication factor"),
|
|
IOPU( "tc", RES_TC1, IF_REAL, "First order temp. coefficient"),
|
|
IOPU( "tc1", RES_TC1, IF_REAL, "First order temp. coefficient"),
|
|
IOPU( "tc2", RES_TC2, IF_REAL, "Second order temp. coefficient"),
|
|
IOPU( "scale", RES_SCALE, IF_REAL, "Scale factor"),
|
|
IOP( "noisy", RES_NOISY, IF_INTEGER, "Resistor generate noise"),
|
|
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"),
|
|
IOPZ( "dw", RES_MOD_NARROW, IF_REAL,"Narrowing of resistor"),
|
|
IOPZ( "short", RES_MOD_SHORT, IF_REAL,"Shortening of resistor"),
|
|
IOPZ( "dlr", RES_MOD_SHORT, IF_REAL,"Shortening 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"),
|
|
IOPX( "w", RES_MOD_DEFWIDTH, IF_REAL,"Default device width"),
|
|
IOPQ( "kf", RES_MOD_KF, IF_REAL,"Flicker noise coefficient"),
|
|
IOPQ( "af", RES_MOD_AF, IF_REAL,"Flicker noise exponent"),
|
|
IOPXU( "tnom", RES_MOD_TNOM, IF_REAL,"Parameter measurement temperature"),
|
|
IP( "r", RES_MOD_R, IF_FLAG,"Device is a resistor model")
|
|
};
|
|
|
|
char *RESnames[] = {
|
|
"R+",
|
|
"R-"
|
|
};
|
|
|
|
int RESnSize = NUMELEMS(RESnames);
|
|
int RESpTSize = NUMELEMS(RESpTable);
|
|
int RESmPTSize = NUMELEMS(RESmPTable);
|
|
int RESiSize = sizeof(RESinstance);
|
|
int RESmSize = sizeof(RESmodel);
|