Jspice3
jfet.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 /********** new in 3f2
8 Sydney University mods Copyright(c) 1989 Anthony E. Parker, David J. Skellern
9  Laboratory for Communication Science Engineering
10  Sydney University Department of Electrical Engineering, Australia
11 **********/
12 
13 #include "spice.h"
14 #include <stdio.h>
15 #include "jfetdefs.h"
16 #include "uflags.h"
17 
18 static IFparm JFETpTable[] = { /* device parameters */
19  IOPU( "area", JFET_AREA, IF_REAL, "Area factor"),
20  IOPAU("ic-vds", JFET_IC_VDS, IF_REAL, "Initial D-S voltage"),
21  IOPAU("ic-vgs", JFET_IC_VGS, IF_REAL, "Initial G-S volrage"),
22  IP( "ic", JFET_IC, IF_REALVEC,"Initial VDS,VGS vector"),
23  IOPU( "off", JFET_OFF, IF_FLAG, "Device initially off"),
24  IOPU( "temp", JFET_TEMP, IF_REAL, "Instance temperature"),
25  OPU( "drain-node", JFET_DRAINNODE, IF_INTEGER,"Number of drain node"),
26  OPU( "gate-node", JFET_GATENODE, IF_INTEGER,"Number of gate node"),
27  OPU( "source-node", JFET_SOURCENODE,IF_INTEGER,"Number of source node"),
28  OPU( "drain-prime-node", JFET_DRAINPRIMENODE, IF_INTEGER,
29  "Internal drain node"),
30  OPU( "source-prime-node",JFET_SOURCEPRIMENODE,IF_INTEGER,
31  "Internal source node"),
32  OP( "vgs", JFET_VGS, IF_REAL, "Voltage G-S"),
33  OP( "vgd", JFET_VGD, IF_REAL, "Voltage G-D"),
34  OP( "ig", JFET_CG, IF_REAL, "Current at gate node"),
35  OP( "id", JFET_CD, IF_REAL, "Current at drain node"),
36  OP( "igd", JFET_CGD, IF_REAL, "Current G-D"),
37  OP( "gm", JFET_GM, IF_REAL, "Transconductance"),
38  OP( "gds", JFET_GDS, IF_REAL, "Conductance D-S"),
39  OP( "ggs", JFET_GGS, IF_REAL, "Conductance G-S"),
40  OP( "ggd", JFET_GGD, IF_REAL, "Conductance G-D"),
41  OPU( "qgs", JFET_QGS, IF_REAL, "Charge storage G-S junction"),
42  OPU( "cqgs", JFET_CQGS, IF_REAL,
43  "Capacitance due to charge storage G-S junction"),
44  OPU( "qgd", JFET_QGD, IF_REAL, "Charge storage G-D junction"),
45  OPU( "cqgd", JFET_CQGD, IF_REAL,
46  "Capacitance due to charge storage G-D junction"),
47  OP( "is", JFET_CS, IF_REAL, "Source current"),
48  OPU( "p", JFET_POWER,IF_REAL, "Power dissipated by the JFET")
49 };
50 
51 static IFparm JFETmPTable[] = { /* model parameters */
52  IOP("vt0", JFET_MOD_VTO, IF_REAL,"Threshold voltage"),
53  IOPR("vto", JFET_MOD_VTO, IF_REAL,"Threshold voltage"),
54  IOP("beta", JFET_MOD_BETA, IF_REAL,"Transconductance parameter"),
55  IOP("lambda", JFET_MOD_LAMBDA,IF_REAL,"Channel length modulation param."),
56  IOP("rd", JFET_MOD_RD, IF_REAL,"Drain ohmic resistance"),
57  IOP("rs", JFET_MOD_RS, IF_REAL,"Source ohmic resistance"),
58  IOPA("cgs", JFET_MOD_CGS, IF_REAL,"G-S junction capactance"),
59  IOPA("cgd", JFET_MOD_CGD, IF_REAL,"G-D junction cap"),
60  IOP("pb", JFET_MOD_PB, IF_REAL,"Gate junction potential"),
61  IOP("is", JFET_MOD_IS, IF_REAL,"Gate junction saturation current"),
62  IOP("fc", JFET_MOD_FC, IF_REAL,"Forward bias junction fir parm."),
63  IP ("njf", JFET_MOD_NJF, IF_FLAG,"N type JFET model"),
64  IP ("pjf", JFET_MOD_PJF, IF_FLAG,"P type JFET model"),
65  IOPU("tnom", JFET_MOD_TNOM, IF_REAL,"parameter measurement temperature"),
66  IP("kf", JFET_MOD_KF, IF_REAL,"Flicker Noise Coefficient"),
67  IP("af", JFET_MOD_AF, IF_REAL,"Flicker Noise Exponent"),
68  IOP("b", JFET_MOD_B, IF_REAL,"Doping tail parameter"),
69  OPU("gd", JFET_MOD_DRAINCONDUCT, IF_REAL,"Drain conductance"),
70  OPU("gs", JFET_MOD_SOURCECONDUCT,IF_REAL,"Source conductance"),
71  OP("type", JFET_MOD_TYPE, IF_STRING, "N-type or P-type JFET model")
72 };
73 
74 
75 static char *JFETnames[] = {
76  "Drain",
77  "Gate",
78  "Source"
79 };
80 
81 static char *JFETmodNames[] = {
82  "njf",
83  "pjf",
84  NULL
85 };
86 
87 static IFkeys JFETkeys[] = {
88  { 'j', NUMELEMS(JFETnames), JFETnames, 0, 0 },
89 };
90 
91 
92 static int JFETkSize = NUMELEMS(JFETkeys);
93 static int JFETpTSize = NUMELEMS(JFETpTable);
94 static int JFETmPTSize = NUMELEMS(JFETmPTable);
95 static int JFETiSize = sizeof(JFETinstance);
96 static int JFETmSize = sizeof(JFETmodel);
97 
98 
100  {
101  "JFET",
102  "Junction Field effect transistor",
103 
104  &JFETkSize,
105  JFETkeys,
106  1,
107  JFETmodNames,
108  JFETparse,
109 
110  &JFETpTSize,
111  JFETpTable,
112 
113  &JFETmPTSize,
114  JFETmPTable,
115  },
116 
117  JFETparam,
118  JFETmParam,
119  JFETload,
120  JFETsetup,
121  JFETsetup,
122  JFETtemp,
123  JFETtrunc,
124  NULL,
125  JFETacLoad,
126  NULL,
127  GENdestroy,
128  GENmDelete,
129  GENdelete,
130  JFETgetic,
131  JFETask,
132  JFETmAsk,
133  JFETpzLoad,
134  NULL,
135  JFETdisto,
136  JFETnoise,
137 
138  &JFETiSize,
139  &JFETmSize
140 };
#define JFET_GGS
Definition: jfetdefs.h:267
int JFETdisto()
int JFETask()
int JFETsetup()
#define JFET_SOURCEPRIMENODE
Definition: jfetdefs.h:259
static IFkeys JFETkeys[]
Definition: jfet.c:87
#define JFET_MOD_AF
Definition: jfetdefs.h:248
#define JFET_MOD_DRAINCONDUCT
Definition: jfetdefs.h:277
#define JFET_IC_VDS
Definition: jfetdefs.h:227
int JFETmAsk()
#define JFET_AREA
Definition: jfetdefs.h:226
#define IOP(a, b, c, d)
Definition: devdefs.h:120
int JFETacLoad()
static int JFETiSize
Definition: jfet.c:95
#define JFET_MOD_CGD
Definition: jfetdefs.h:240
static int JFETkSize
Definition: jfet.c:92
#define OPU(a, b, c, d)
Definition: uflags.h:65
#define NUMELEMS(ARRAY)
Definition: spice.h:157
#define JFET_VGD
Definition: jfetdefs.h:261
struct sJFETmodel JFETmodel
#define JFET_MOD_PB
Definition: jfetdefs.h:241
#define IOPR(a, b, c, d)
Definition: uflags.h:57
#define JFET_MOD_BETA
Definition: jfetdefs.h:235
int JFETpzLoad()
#define JFET_CS
Definition: jfetdefs.h:273
void GENdestroy()
#define JFET_CQGD
Definition: jfetdefs.h:272
#define JFET_MOD_LAMBDA
Definition: jfetdefs.h:236
int JFETtemp()
#define JFET_MOD_VTO
Definition: jfetdefs.h:234
static char * JFETnames[]
Definition: jfet.c:75
#define JFET_IC_VGS
Definition: jfetdefs.h:228
#define JFET_MOD_RS
Definition: jfetdefs.h:238
#define JFET_MOD_KF
Definition: jfetdefs.h:247
int JFETparam()
#define JFET_CGD
Definition: jfetdefs.h:264
int JFETmParam()
#define NULL
Definition: spdefs.h:121
int JFETtrunc()
#define JFET_MOD_B
Definition: jfetdefs.h:250
#define JFET_CQGS
Definition: jfetdefs.h:270
#define JFET_OFF
Definition: jfetdefs.h:230
#define JFET_MOD_PJF
Definition: jfetdefs.h:245
#define JFET_POWER
Definition: jfetdefs.h:274
#define IF_INTEGER
Definition: ifsim.h:107
#define JFET_MOD_SOURCECONDUCT
Definition: jfetdefs.h:278
static int JFETmPTSize
Definition: jfet.c:94
#define JFET_MOD_IS
Definition: jfetdefs.h:242
SPICEdev JFETinfo
Definition: jfet.c:99
#define IOPA(a, b, c, d)
Definition: uflags.h:50
int JFETgetic()
#define JFET_VGS
Definition: jfetdefs.h:260
Definition: ifsim.h:54
Definition: ifsim.h:267
#define JFET_QGD
Definition: jfetdefs.h:271
static char * JFETmodNames[]
Definition: jfet.c:81
#define IF_REAL
Definition: ifsim.h:108
#define IP(a, b, c, d)
Definition: devdefs.h:118
#define JFET_MOD_NJF
Definition: jfetdefs.h:244
#define JFET_GATENODE
Definition: jfetdefs.h:256
#define JFET_GM
Definition: jfetdefs.h:265
#define JFET_IC
Definition: jfetdefs.h:229
#define IF_FLAG
Definition: ifsim.h:106
int GENmDelete()
#define IF_REALVEC
Definition: ifsim.h:125
int GENdelete()
#define JFET_SOURCENODE
Definition: jfetdefs.h:257
#define JFET_MOD_CGS
Definition: jfetdefs.h:239
#define JFET_QGS
Definition: jfetdefs.h:269
#define JFET_MOD_TNOM
Definition: jfetdefs.h:246
#define JFET_CG
Definition: jfetdefs.h:262
#define JFET_GDS
Definition: jfetdefs.h:266
#define IOPAU(a, b, c, d)
Definition: uflags.h:51
#define JFET_MOD_TYPE
Definition: jfetdefs.h:281
static IFparm JFETmPTable[]
Definition: jfet.c:51
int JFETnoise()
void JFETparse()
#define JFET_MOD_FC
Definition: jfetdefs.h:243
#define IF_STRING
Definition: ifsim.h:111
#define JFET_DRAINPRIMENODE
Definition: jfetdefs.h:258
#define OP(a, b, c, d)
Definition: devdefs.h:119
#define JFET_DRAINNODE
Definition: jfetdefs.h:255
int JFETload()
static IFparm JFETpTable[]
Definition: jfet.c:18
#define IOPU(a, b, c, d)
Definition: uflags.h:48
#define JFET_TEMP
Definition: jfetdefs.h:231
static int JFETmSize
Definition: jfet.c:96
static int JFETpTSize
Definition: jfet.c:93
#define JFET_GGD
Definition: jfetdefs.h:268
#define JFET_CD
Definition: jfetdefs.h:263
#define JFET_MOD_RD
Definition: jfetdefs.h:237
struct sJFETinstance JFETinstance