Jspice3
mes.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 "mesdefs.h"
11 #include "uflags.h"
12 
13 
14 static IFparm MESpTable[] = { /* parameters */
15  IOPU( "area", MES_AREA, IF_REAL, "Area factor"),
16  IOPAU("icvds", MES_IC_VDS, IF_REAL, "Initial D-S voltage"),
17  IOPAU("icvgs", MES_IC_VGS, IF_REAL, "Initial G-S voltage"),
18  IP( "ic", MES_IC, IF_REALVEC,"Initial VDS,VGS vector"),
19  OPU( "off", MES_OFF, IF_FLAG, "Device initially off"),
20  OP( "cs", MES_CS, IF_REAL, "Source current"),
21  OP( "p", MES_POWER, IF_REAL, "Power dissipated by the mesfet"),
22  OPU( "dnode", MES_DRAINNODE, IF_INTEGER,"Number of drain node"),
23  OPU( "gnode", MES_GATENODE, IF_INTEGER,"Number of gate node"),
24  OPU( "snode", MES_SOURCENODE,IF_INTEGER,"Number of source node"),
25  OPU( "dprimenode",MES_DRAINPRIMENODE, IF_INTEGER,
26  "Number of internal drain node"),
27  OPU( "sprimenode",MES_SOURCEPRIMENODE,IF_INTEGER,
28  "Number of internal source node"),
29  OP( "vgs", MES_VGS, IF_REAL, "Gate-Source voltage"),
30  OP( "vgd", MES_VGD, IF_REAL, "Gate-Drain voltage"),
31  OP( "cg", MES_CG, IF_REAL, "Gate capacitance"),
32  OP( "cd", MES_CD, IF_REAL, "Drain capacitance"),
33  OP( "cgd", MES_CGD, IF_REAL, "Gate_Drain capacitance"),
34  OP( "gm", MES_GM, IF_REAL, "Transconductance"),
35  OP( "gds", MES_GDS, IF_REAL, "Drain-Source conductance"),
36  OP( "ggs", MES_GGS, IF_REAL, "Gate-Source conductance"),
37  OP( "ggd", MES_GGD, IF_REAL, "Gate-Drain conductance"),
38  OPU( "qgs", MES_QGS, IF_REAL, "Gate-Source charge storage"),
39  OP( "cqgs", MES_CQGS, IF_REAL,
40  "Capacitance due to gate-source charge storage"),
41  OPU( "qgd", MES_QGD, IF_REAL, "Gate-Drain charge storage"),
42  OP( "cqgd", MES_CQGD, IF_REAL,
43  "Capacitance due to gate-drain charge storage"),
44 };
45 
46 static IFparm MESmPTable[] = { /* model parameters */
47  IOP( "vt0", MES_MOD_VTO, IF_REAL, "Pinch-off voltage"),
48  IOPR("vto", MES_MOD_VTO, IF_REAL, "Pinch-off voltage"),
49  IOP( "alpha", MES_MOD_ALPHA, IF_REAL, "Saturation voltage parameter"),
50  IOP( "beta", MES_MOD_BETA, IF_REAL, "Transconductance parameter"),
51  IOP( "lambda", MES_MOD_LAMBDA,IF_REAL, "Channel length modulation parm."),
52  IOP( "b", MES_MOD_B, IF_REAL, "Doping tail extending parameter"),
53  IOP( "rd", MES_MOD_RD, IF_REAL, "Drain ohmic resistance"),
54  IOP( "rs", MES_MOD_RS, IF_REAL, "Source ohmic resistance"),
55  IOPA("cgs", MES_MOD_CGS, IF_REAL, "G-S junction capacitance"),
56  IOPA("cgd", MES_MOD_CGD, IF_REAL, "G-D junction capacitance"),
57  IOP( "pb", MES_MOD_PB, IF_REAL, "Gate junction potential"),
58  IOP( "is", MES_MOD_IS, IF_REAL, "Junction saturation current"),
59  IOP( "fc", MES_MOD_FC, IF_REAL, "Forward biad junction fit parm."),
60  IP( "nmf", MES_MOD_NMF, IF_FLAG, "N type MESfet model"),
61  IP( "pmf", MES_MOD_PMF, IF_FLAG, "P type MESfet model"),
62  IP( "kf", MES_MOD_KF, IF_REAL, "Flicker noise coefficient"),
63  IP( "af", MES_MOD_AF, IF_REAL, "Flicker noise exponent"),
64  OPU( "gd", MES_MOD_DRAINCONDUCT, IF_REAL, "Drain conductance"),
65  OPU( "gs", MES_MOD_SOURCECONDUCT, IF_REAL, "Source conductance"),
66  OP( "depl_cap",MES_MOD_DEPLETIONCAP, IF_REAL, "Depletion capacitance"),
67  OP( "vcrit", MES_MOD_VCRIT, IF_REAL, "Critical voltage"),
68  OP( "type", MES_MOD_TYPE, IF_FLAG, "N-type or P-type MESfet model")
69 };
70 
71 static char *MESnames[] = {
72  "Drain",
73  "Gate",
74  "Source"
75 };
76 
77 static char *MESmodNames[] = {
78  "nmf",
79  "pmf",
80  NULL
81 };
82 
83 static IFkeys MESkeys[] = {
84  { 'z', NUMELEMS(MESnames), MESnames, 0, 0 },
85 };
86 
87 
88 static int MESkSize = NUMELEMS(MESkeys);
89 static int MESpTSize = NUMELEMS(MESpTable);
90 static int MESmPTSize = NUMELEMS(MESmPTable);
91 static int MESiSize = sizeof(MESinstance);
92 static int MESmSize = sizeof(MESmodel);
93 
94 
96  {
97  "MES",
98  "GaAs MESFET model",
99 
100  &MESkSize,
101  MESkeys,
102  1,
103  MESmodNames,
104  MESparse,
105 
106  &MESpTSize,
107  MESpTable,
108 
109  &MESmPTSize,
110  MESmPTable,
111  },
112  MESparam,
113  MESmParam,
114  MESload,
115  MESsetup,
116  MESsetup,
117  MEStemp,
118  MEStrunc,
119  NULL,
120  MESacLoad,
121  NULL,
122  GENdestroy,
123  GENmDelete,
124  GENdelete,
125  MESgetic,
126  MESask,
127  MESmAsk,
128  MESpzLoad,
129  NULL,
130  MESdisto,
131  MESnoise,
132 
133  &MESiSize,
134  &MESmSize
135 };
#define MES_OFF
Definition: mesdefs.h:221
#define MES_MOD_PMF
Definition: mesdefs.h:239
static IFkeys MESkeys[]
Definition: mes.c:83
static int MESmSize
Definition: mes.c:92
#define MES_MOD_IS
Definition: mesdefs.h:236
#define IOP(a, b, c, d)
Definition: devdefs.h:120
#define MES_CQGS
Definition: mesdefs.h:260
#define MES_AREA
Definition: mesdefs.h:217
#define OPU(a, b, c, d)
Definition: uflags.h:65
#define NUMELEMS(ARRAY)
Definition: spice.h:157
struct sMESmodel MESmodel
#define MES_MOD_AF
Definition: mesdefs.h:241
#define IOPR(a, b, c, d)
Definition: uflags.h:57
#define MES_VGS
Definition: mesdefs.h:250
static IFparm MESmPTable[]
Definition: mes.c:46
struct sMESinstance MESinstance
#define MES_GATENODE
Definition: mesdefs.h:246
int MESsetup()
void GENdestroy()
int MESmParam()
void MESparse()
int MEStrunc()
#define MES_IC_VGS
Definition: mesdefs.h:219
#define MES_CS
Definition: mesdefs.h:222
#define MES_VGD
Definition: mesdefs.h:251
#define MES_GGS
Definition: mesdefs.h:257
int MESpzLoad()
#define MES_MOD_ALPHA
Definition: mesdefs.h:227
#define MES_MOD_LAMBDA
Definition: mesdefs.h:229
#define MES_CD
Definition: mesdefs.h:253
#define MES_MOD_RD
Definition: mesdefs.h:231
#define MES_MOD_DEPLETIONCAP
Definition: mesdefs.h:268
static char * MESnames[]
Definition: mes.c:71
static int MESmPTSize
Definition: mes.c:90
int MESgetic()
#define MES_SOURCENODE
Definition: mesdefs.h:247
#define MES_MOD_BETA
Definition: mesdefs.h:228
#define MES_IC
Definition: mesdefs.h:220
static IFparm MESpTable[]
Definition: mes.c:14
#define NULL
Definition: spdefs.h:121
#define MES_MOD_DRAINCONDUCT
Definition: mesdefs.h:266
#define MES_MOD_PB
Definition: mesdefs.h:235
int MESload()
#define MES_GGD
Definition: mesdefs.h:258
#define MES_MOD_VCRIT
Definition: mesdefs.h:269
#define IF_INTEGER
Definition: ifsim.h:107
static int MESpTSize
Definition: mes.c:89
#define MES_CGD
Definition: mesdefs.h:254
int MESask()
#define IOPA(a, b, c, d)
Definition: uflags.h:50
#define MES_DRAINPRIMENODE
Definition: mesdefs.h:248
#define MES_IC_VDS
Definition: mesdefs.h:218
#define MES_MOD_RS
Definition: mesdefs.h:232
#define MES_MOD_TYPE
Definition: mesdefs.h:270
Definition: ifsim.h:54
Definition: ifsim.h:267
#define IF_REAL
Definition: ifsim.h:108
static int MESkSize
Definition: mes.c:88
#define MES_DRAINNODE
Definition: mesdefs.h:245
#define IP(a, b, c, d)
Definition: devdefs.h:118
#define MES_GM
Definition: mesdefs.h:255
#define MES_QGD
Definition: mesdefs.h:261
#define MES_MOD_B
Definition: mesdefs.h:230
#define MES_GDS
Definition: mesdefs.h:256
int MESnoise()
#define IF_FLAG
Definition: ifsim.h:106
#define MES_CQGD
Definition: mesdefs.h:262
#define MES_QGS
Definition: mesdefs.h:259
int GENmDelete()
#define IF_REALVEC
Definition: ifsim.h:125
int GENdelete()
int MEStemp()
static char * MESmodNames[]
Definition: mes.c:77
#define MES_CG
Definition: mesdefs.h:252
int MESdisto()
#define MES_MOD_FC
Definition: mesdefs.h:237
SPICEdev MESinfo
Definition: mes.c:95
int MESparam()
int MESacLoad()
#define MES_MOD_KF
Definition: mesdefs.h:240
static int MESiSize
Definition: mes.c:91
#define IOPAU(a, b, c, d)
Definition: uflags.h:51
#define MES_MOD_SOURCECONDUCT
Definition: mesdefs.h:267
#define OP(a, b, c, d)
Definition: devdefs.h:119
#define MES_MOD_VTO
Definition: mesdefs.h:226
#define MES_MOD_CGS
Definition: mesdefs.h:233
#define MES_MOD_CGD
Definition: mesdefs.h:234
#define IOPU(a, b, c, d)
Definition: uflags.h:48
int MESmAsk()
#define MES_POWER
Definition: mesdefs.h:223
#define MES_SOURCEPRIMENODE
Definition: mesdefs.h:249
#define MES_MOD_NMF
Definition: mesdefs.h:238