Jspice3
dio.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 "diodefs.h"
11 #include "uflags.h"
12 
13 static IFparm DIOpTable[] = { /* parameters */
14  IOPU( "area", DIO_AREA, IF_REAL, "Area factor"),
15  IOPAU("ic", DIO_IC, IF_REAL, "Initial device voltage"),
16  IOPU( "off", DIO_OFF, IF_FLAG, "Initially off"),
17  OP( "id", DIO_CURRENT,IF_REAL, "Diode current"),
18  OPR( "c", DIO_CURRENT,IF_REAL, "Diode current"),
19  OP( "vd", DIO_VOLTAGE,IF_REAL, "Diode voltage"),
20  OPR( "voltage", DIO_VOLTAGE,IF_REAL, "Diode voltage"),
21  OPU( "charge", DIO_CHARGE, IF_REAL, "Diode capacitor charge"),
22  OPU( "capcur", DIO_CAPCUR, IF_REAL, "Diode capacitor current"),
23  OP( "gd", DIO_CONDUCT,IF_REAL, "Diode conductance"),
24  OPU( "p", DIO_POWER, IF_REAL, "Diode power"),
25  IOPU( "temp", DIO_TEMP, IF_REAL, "Instance temperature"),
26  OP( "cd", DIO_CAP, IF_REAL, "Diode capacitance")
27 };
28 
29 static IFparm DIOmPTable[] = { /* model parameters */
30  IOP( "is", DIO_MOD_IS, IF_REAL, "Saturation current"),
31  IOP( "rs", DIO_MOD_RS, IF_REAL, "Ohmic resistance"),
32  IOP( "n", DIO_MOD_N, IF_REAL, "Emission Coefficient"),
33  IOPA("tt", DIO_MOD_TT, IF_REAL, "Transit Time"),
34  IOPA("cjo", DIO_MOD_CJO, IF_REAL, "Junction capacitance"),
35  IOPR("cj0", DIO_MOD_CJO, IF_REAL, "Junction capacitance"),
36  IOP( "vj", DIO_MOD_VJ, IF_REAL, "Junction potential"),
37  IOP( "m", DIO_MOD_M, IF_REAL, "Grading coefficient"),
38  IOP( "eg", DIO_MOD_EG, IF_REAL, "Activation energy"),
39  IOP( "xti", DIO_MOD_XTI, IF_REAL, "Saturation current temperature exp."),
40  IOP( "fc", DIO_MOD_FC, IF_REAL, "Forward bias junction fit parameter"),
41  IOP( "bv", DIO_MOD_BV, IF_REAL, "Reverse breakdown voltage"),
42  IOP( "ibv", DIO_MOD_IBV, IF_REAL, "Current at reverse breakdown voltage"),
43  OPU( "cond",DIO_MOD_COND,IF_REAL, "Ohmic conductance"),
44  IP( "d", DIO_MOD_D, IF_FLAG, "Diode model"),
45  IOPU("tnom",DIO_MOD_TNOM,IF_REAL, "Parameter measurement temperature"),
46  IP( "kf", DIO_MOD_KF, IF_REAL, "flicker noise coefficient"),
47  IP( "af", DIO_MOD_AF, IF_REAL, "flicker noise exponent")
48 };
49 
50 static char *DIOnames[] = {
51  "D+",
52  "D-"
53 };
54 
55 static char *DIOmodNames[] = {
56  "d",
57  NULL
58 };
59 
60 static IFkeys DIOkeys[] = {
61  { 'd', NUMELEMS(DIOnames), DIOnames, 0, 0 },
62 };
63 
64 
65 static int DIOkSize = NUMELEMS(DIOkeys);
66 static int DIOpTSize = NUMELEMS(DIOpTable);
67 static int DIOmPTSize = NUMELEMS(DIOmPTable);
68 static int DIOiSize = sizeof(DIOinstance);
69 static int DIOmSize = sizeof(DIOmodel);
70 
71 
73  {
74  "Diode",
75  "Junction Diode model",
76 
77  &DIOkSize,
78  DIOkeys,
79  1,
81  DIOparse,
82 
83  &DIOpTSize,
84  DIOpTable,
85 
86  &DIOmPTSize,
87  DIOmPTable,
88  },
89 
90  DIOparam,
91  DIOmParam,
92  DIOload,
93  DIOsetup,
94  DIOsetup,
95  DIOtemp,
96  DIOtrunc,
97  NULL,
98  DIOacLoad,
99  NULL,
100  GENdestroy,
101  GENmDelete,
102  GENdelete,
103  DIOgetic,
104  DIOask,
105  DIOmAsk,
106  DIOpzLoad,
107  DIOconvTest,
108  DIOdisto,
109  DIOnoise,
110 
111  &DIOiSize,
112  &DIOmSize
113 };
#define DIO_MOD_AF
Definition: diodefs.h:195
#define DIO_MOD_IBV
Definition: diodefs.h:190
#define DIO_VOLTAGE
Definition: diodefs.h:169
#define IOP(a, b, c, d)
Definition: devdefs.h:120
#define DIO_MOD_TNOM
Definition: diodefs.h:193
#define DIO_IC
Definition: diodefs.h:166
static char * DIOnames[]
Definition: dio.c:50
#define OPU(a, b, c, d)
Definition: uflags.h:65
#define NUMELEMS(ARRAY)
Definition: spice.h:157
#define DIO_MOD_VJ
Definition: diodefs.h:184
#define DIO_MOD_RS
Definition: diodefs.h:180
#define IOPR(a, b, c, d)
Definition: uflags.h:57
static IFparm DIOpTable[]
Definition: dio.c:13
#define DIO_CHARGE
Definition: diodefs.h:170
int DIOpzLoad()
void GENdestroy()
#define DIO_CAP
Definition: diodefs.h:175
int DIOconvTest()
int DIOnoise()
int DIOgetic()
#define DIO_MOD_D
Definition: diodefs.h:191
int DIOsetup()
#define DIO_CURRENT
Definition: diodefs.h:168
#define DIO_MOD_N
Definition: diodefs.h:181
static int DIOkSize
Definition: dio.c:65
int DIOmAsk()
static int DIOiSize
Definition: dio.c:68
SPICEdev DIOinfo
Definition: dio.c:72
#define NULL
Definition: spdefs.h:121
#define DIO_MOD_FC
Definition: diodefs.h:188
int DIOdisto()
#define DIO_MOD_EG
Definition: diodefs.h:186
#define OPR(a, b, c, d)
Definition: uflags.h:66
int DIOtrunc()
#define IOPA(a, b, c, d)
Definition: uflags.h:50
#define DIO_MOD_BV
Definition: diodefs.h:189
#define DIO_TEMP
Definition: diodefs.h:174
Definition: ifsim.h:54
Definition: ifsim.h:267
#define DIO_MOD_IS
Definition: diodefs.h:179
#define DIO_POWER
Definition: diodefs.h:173
#define IF_REAL
Definition: ifsim.h:108
static int DIOmSize
Definition: dio.c:69
struct sDIOinstance DIOinstance
#define IP(a, b, c, d)
Definition: devdefs.h:118
#define DIO_CAPCUR
Definition: diodefs.h:171
#define DIO_MOD_M
Definition: diodefs.h:185
#define IF_FLAG
Definition: ifsim.h:106
int DIOtemp()
static int DIOmPTSize
Definition: dio.c:67
int DIOmParam()
int GENmDelete()
static IFkeys DIOkeys[]
Definition: dio.c:60
#define DIO_CONDUCT
Definition: diodefs.h:172
#define DIO_MOD_CJO
Definition: diodefs.h:183
int GENdelete()
#define DIO_MOD_COND
Definition: diodefs.h:192
int DIOload()
int DIOask()
static int DIOpTSize
Definition: dio.c:66
#define DIO_AREA
Definition: diodefs.h:165
#define DIO_OFF
Definition: diodefs.h:167
#define IOPAU(a, b, c, d)
Definition: uflags.h:51
#define DIO_MOD_KF
Definition: diodefs.h:194
#define DIO_MOD_TT
Definition: diodefs.h:182
static IFparm DIOmPTable[]
Definition: dio.c:29
int DIOacLoad()
#define DIO_MOD_XTI
Definition: diodefs.h:187
#define OP(a, b, c, d)
Definition: devdefs.h:119
#define IOPU(a, b, c, d)
Definition: uflags.h:48
void DIOparse()
int DIOparam()
static char * DIOmodNames[]
Definition: dio.c:55
struct sDIOmodel DIOmodel