Jspice3
res.c
Go to the documentation of this file.
1 /***************************************************************************
2 JSPICE3 adaptation of Spice3f2 - Copyright (c) Stephen R. Whiteley 1992
3 Copyright 1990 Regents of the University of California. All rights reserved.
4 Authors: 1985 Thomas L. Quarles
5  1993 Stephen R. Whiteley
6 ****************************************************************************/
7 
8 #include "spice.h"
9 #include <stdio.h>
10 #include "resdefs.h"
11 #include "uflags.h"
12 
13 static IFparm RESpTable[] = { /* parameters */
14  IOPP( "resistance", RES_RESIST, IF_REAL,"Resistance"),
15  IOPZU("temp", RES_TEMP, IF_REAL,"Instance operating temperature"),
16  IOPQU("w", RES_WIDTH, IF_REAL,"Width"),
17  IOPZU("l", RES_LENGTH, IF_REAL,"Length"),
18  OP( "c", RES_CURRENT,IF_REAL,"Current"),
19  OP( "p", RES_POWER, IF_REAL,"Power"),
20 } ;
21 
22 static IFparm RESmPTable[] = { /* model parameters */
23  IOPQ( "rsh", RES_MOD_RSH, IF_REAL,"Sheet resistance"),
24  IOPZ( "narrow", RES_MOD_NARROW, IF_REAL,"Narrowing of resistor"),
25  IOPQ( "tc1", RES_MOD_TC1, IF_REAL,"First order temp. coefficient"),
26  IOPQO("tc2", RES_MOD_TC2, IF_REAL,"Second order temp. coefficient"),
27  IOPX( "defw", RES_MOD_DEFWIDTH, IF_REAL,"Default device width"),
28  IOPXU("tnom", RES_MOD_TNOM, IF_REAL,"Parameter measurement temperature"),
29  IP( "r", RES_MOD_R, IF_FLAG,"Device is a resistor model"),
30 };
31 
32 static char *RESnames[] = {
33  "R+",
34  "R-"
35 };
36 
37 static char *RESmodNames[] = {
38  "r",
39  NULL
40 };
41 
42 static IFkeys RESkeys[] = {
43  { 'r', NUMELEMS(RESnames), RESnames, 0, 0 },
44 };
45 
46 
47 static int RESkSize = NUMELEMS(RESkeys);
48 static int RESpTSize = NUMELEMS(RESpTable);
49 static int RESmPTSize = NUMELEMS(RESmPTable);
50 static int RESiSize = sizeof(RESinstance);
51 static int RESmSize = sizeof(RESmodel);
52 
53 
55  {
56  "Resistor",
57  "Simple linear resistor",
58 
59  &RESkSize,
60  RESkeys,
61  1,
63  RESparse,
64 
65  &RESpTSize,
66  RESpTable,
67 
68  &RESmPTSize,
69  RESmPTable,
70  },
71 
72  RESparam,
73  RESmParam,
74  NULL, /* values cached in matrix imag part */
75  RESsetup,
76  RESsetup,
77  REStemp,
78  NULL,
79  NULL,
80  RESacLoad,
81  NULL,
82  GENdestroy,
83  GENmDelete,
84  GENdelete,
85  NULL,
86  RESask,
87  RESmAsk,
88  RESpzLoad,
89  NULL,
90  NULL, /* Disto */
91  RESnoise,
92 
93  &RESiSize,
94  &RESmSize
95 };
static IFparm RESmPTable[]
Definition: res.c:22
#define IOPQ(a, b, c, d)
Definition: uflags.h:60
int REStemp()
struct sRESinstance RESinstance
static char * RESnames[]
Definition: res.c:32
#define IOPZU(a, b, c, d)
Definition: uflags.h:63
int RESask()
#define NUMELEMS(ARRAY)
Definition: spice.h:157
int RESparam()
#define RES_MOD_TC1
Definition: resdefs.h:88
static int RESiSize
Definition: res.c:50
#define RES_MOD_RSH
Definition: resdefs.h:90
void GENdestroy()
static int RESkSize
Definition: res.c:47
#define IOPQO(a, b, c, d)
Definition: uflags.h:64
int RESacLoad()
void RESparse()
int RESmParam()
static IFkeys RESkeys[]
Definition: res.c:42
#define RES_MOD_R
Definition: resdefs.h:93
#define IOPQU(a, b, c, d)
Definition: uflags.h:61
#define IOPZ(a, b, c, d)
Definition: uflags.h:62
#define RES_RESIST
Definition: resdefs.h:79
static int RESmPTSize
Definition: res.c:49
int RESpzLoad()
#define NULL
Definition: spdefs.h:121
#define RES_MOD_DEFWIDTH
Definition: resdefs.h:91
#define RES_TEMP
Definition: resdefs.h:85
#define RES_POWER
Definition: resdefs.h:84
struct sRESmodel RESmodel
Definition: ifsim.h:54
Definition: ifsim.h:267
int RESsetup()
#define IF_REAL
Definition: ifsim.h:108
#define IP(a, b, c, d)
Definition: devdefs.h:118
#define RES_MOD_TC2
Definition: resdefs.h:89
#define IF_FLAG
Definition: ifsim.h:106
#define RES_WIDTH
Definition: resdefs.h:80
static int RESmSize
Definition: res.c:51
int GENmDelete()
int GENdelete()
SPICEdev RESinfo
Definition: res.c:54
#define RES_LENGTH
Definition: resdefs.h:81
#define IOPXU(a, b, c, d)
Definition: uflags.h:59
#define RES_CURRENT
Definition: resdefs.h:83
int RESmAsk()
#define RES_MOD_TNOM
Definition: resdefs.h:94
#define OP(a, b, c, d)
Definition: devdefs.h:119
#define IOPX(a, b, c, d)
Definition: uflags.h:58
int RESnoise()
static int RESpTSize
Definition: res.c:48
#define IOPP(a, b, c, d)
Definition: uflags.h:49
static IFparm RESpTable[]
Definition: res.c:13
static char * RESmodNames[]
Definition: res.c:37
#define RES_MOD_NARROW
Definition: resdefs.h:92