Jspice3
b2ask.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: 1988 Hong J. Park
5  1993 Stephen R. Whiteley
6 ****************************************************************************/
7 
8 #include "spice.h"
9 #include <stdio.h>
10 #include <math.h>
11 #include "bsim2def.h"
12 #include "sperror.h"
13 #include "util.h"
14 
15 
16 /*ARGSUSED*/
17 int
18 B2ask(ckt,inst,which,value,select)
19 
20 CKTcircuit *ckt;
21 GENinstance *inst;
22 int which;
23 IFvalue *value;
24 IFvalue *select;
25 {
26  B2instance *here = (B2instance*)inst;
27 
28  switch (which) {
29 
30  case BSIM2_L:
31  value->rValue = here->B2l;
32  break;
33  case BSIM2_W:
34  value->rValue = here->B2w;
35  break;
36  case BSIM2_AS:
37  value->rValue = here->B2sourceArea;
38  break;
39  case BSIM2_AD:
40  value->rValue = here->B2drainArea;
41  break;
42  case BSIM2_PS:
43  value->rValue = here->B2sourcePerimeter;
44  break;
45  case BSIM2_PD:
46  value->rValue = here->B2drainPerimeter;
47  break;
48  case BSIM2_NRS:
49  value->rValue = here->B2sourceSquares;
50  break;
51  case BSIM2_NRD:
52  value->rValue = here->B2drainSquares;
53  break;
54  case BSIM2_OFF:
55  value->rValue = here->B2off;
56  break;
57  case BSIM2_IC_VBS:
58  value->rValue = here->B2icVBS;
59  break;
60  case BSIM2_IC_VDS:
61  value->rValue = here->B2icVDS;
62  break;
63  case BSIM2_IC_VGS:
64  value->rValue = here->B2icVGS;
65  break;
66  case BSIM2_DNODE:
67  value->iValue = here->B2dNode;
68  break;
69  case BSIM2_GNODE:
70  value->iValue = here->B2gNode;
71  break;
72  case BSIM2_SNODE:
73  value->iValue = here->B2sNode;
74  break;
75  case BSIM2_BNODE:
76  value->iValue = here->B2bNode;
77  break;
78  case BSIM2_DNODEPRIME:
79  value->iValue = here->B2dNodePrime;
80  break;
81  case BSIM2_SNODEPRIME:
82  value->iValue = here->B2sNodePrime;
83  break;
85  value->rValue = here->B2sourceConductance;
86  break;
87  case BSIM2_DRAINCONDUCT:
88  value->rValue = here->B2drainConductance;
89  break;
90  case BSIM2_VBD:
91  if (ckt->CKTstate0)
92  value->rValue = *(ckt->CKTstate0 + here->B2vbd);
93  break;
94  case BSIM2_VBS:
95  if (ckt->CKTstate0)
96  value->rValue = *(ckt->CKTstate0 + here->B2vbs);
97  break;
98  case BSIM2_VGS:
99  if (ckt->CKTstate0)
100  value->rValue = *(ckt->CKTstate0 + here->B2vgs);
101  break;
102  case BSIM2_VDS:
103  if (ckt->CKTstate0)
104  value->rValue = *(ckt->CKTstate0 + here->B2vds);
105  break;
106  case BSIM2_CD:
107  if (ckt->CKTstate0)
108  value->rValue = *(ckt->CKTstate0 + here->B2cd);
109  break;
110  case BSIM2_CBS:
111  if (ckt->CKTstate0)
112  value->rValue = *(ckt->CKTstate0 + here->B2cbs);
113  break;
114  case BSIM2_CBD:
115  if (ckt->CKTstate0)
116  value->rValue = *(ckt->CKTstate0 + here->B2cbd);
117  break;
118  case BSIM2_GM:
119  if (ckt->CKTstate0)
120  value->rValue = *(ckt->CKTstate0 + here->B2gm);
121  break;
122  case BSIM2_GDS:
123  if (ckt->CKTstate0)
124  value->rValue = *(ckt->CKTstate0 + here->B2gds);
125  break;
126  case BSIM2_GMBS:
127  if (ckt->CKTstate0)
128  value->rValue = *(ckt->CKTstate0 + here->B2gmbs);
129  break;
130  case BSIM2_GBD:
131  if (ckt->CKTstate0)
132  value->rValue = *(ckt->CKTstate0 + here->B2gbd);
133  break;
134  case BSIM2_GBS:
135  if (ckt->CKTstate0)
136  value->rValue = *(ckt->CKTstate0 + here->B2gbs);
137  break;
138  case BSIM2_QB:
139  if (ckt->CKTstate0)
140  value->rValue = *(ckt->CKTstate0 + here->B2qb);
141  break;
142  case BSIM2_CQB:
143  if (ckt->CKTstate0)
144  value->rValue = *(ckt->CKTstate0 + here->B2cqb);
145  break;
146  case BSIM2_QG:
147  if (ckt->CKTstate0)
148  value->rValue = *(ckt->CKTstate0 + here->B2qg);
149  break;
150  case BSIM2_CQG:
151  if (ckt->CKTstate0)
152  value->rValue = *(ckt->CKTstate0 + here->B2cqg);
153  break;
154  case BSIM2_QD:
155  if (ckt->CKTstate0)
156  value->rValue = *(ckt->CKTstate0 + here->B2qd);
157  break;
158  case BSIM2_CQD:
159  if (ckt->CKTstate0)
160  value->rValue = *(ckt->CKTstate0 + here->B2cqd);
161  break;
162  case BSIM2_CGG:
163  if (ckt->CKTstate0)
164  value->rValue = *(ckt->CKTstate0 + here->B2cggb);
165  break;
166  case BSIM2_CGD:
167  if (ckt->CKTstate0)
168  value->rValue = *(ckt->CKTstate0 + here->B2cgdb);
169  break;
170  case BSIM2_CGS:
171  if (ckt->CKTstate0)
172  value->rValue = *(ckt->CKTstate0 + here->B2cgsb);
173  break;
174  case BSIM2_CBG:
175  if (ckt->CKTstate0)
176  value->rValue = *(ckt->CKTstate0 + here->B2cbgb);
177  break;
178  case BSIM2_CAPBD:
179  if (ckt->CKTstate0)
180  value->rValue = *(ckt->CKTstate0 + here->B2capbd);
181  break;
182  case BSIM2_CQBD:
183  if (ckt->CKTstate0)
184  value->rValue = *(ckt->CKTstate0 + here->B2cqbd);
185  break;
186  case BSIM2_CAPBS:
187  if (ckt->CKTstate0)
188  value->rValue = *(ckt->CKTstate0 + here->B2capbs);
189  break;
190  case BSIM2_CQBS:
191  if (ckt->CKTstate0)
192  value->rValue = *(ckt->CKTstate0 + here->B2cqbs);
193  break;
194  case BSIM2_CDG:
195  if (ckt->CKTstate0)
196  value->rValue = *(ckt->CKTstate0 + here->B2cdgb);
197  break;
198  case BSIM2_CDD:
199  if (ckt->CKTstate0)
200  value->rValue = *(ckt->CKTstate0 + here->B2cddb);
201  break;
202  case BSIM2_CDS:
203  if (ckt->CKTstate0)
204  value->rValue = *(ckt->CKTstate0 + here->B2cdsb);
205  break;
206  case BSIM2_VON:
207  if (ckt->CKTstate0)
208  value->rValue = *(ckt->CKTstate0 + here->B2vono);
209  break;
210  case BSIM2_QBS:
211  if (ckt->CKTstate0)
212  value->rValue = *(ckt->CKTstate0 + here->B2qbs);
213  break;
214  case BSIM2_QBD:
215  if (ckt->CKTstate0)
216  value->rValue = *(ckt->CKTstate0 + here->B2qbd);
217  break;
218  default:
219  return (E_BADPARM);
220  }
221  return (OK);
222 }
223 
224 
int B2ask(CKTcircuit *ckt, GENinstance *inst, int which, IFvalue *value, IFvalue *select)
Definition: b2ask.c:18
double B2drainPerimeter
Definition: bsim2def.h:37
double B2sourceArea
Definition: bsim2def.h:34
#define BSIM2_AS
Definition: bsim2def.h:522
#define BSIM2_QD
Definition: bsim2def.h:694
#define BSIM2_CQBD
Definition: bsim2def.h:701
#define BSIM2_NRS
Definition: bsim2def.h:526
#define BSIM2_W
Definition: bsim2def.h:520
double B2sourcePerimeter
Definition: bsim2def.h:38
#define BSIM2_NRD
Definition: bsim2def.h:527
#define BSIM2_GMBS
Definition: bsim2def.h:687
#define BSIM2_VDS
Definition: bsim2def.h:681
#define BSIM2_CBG
Definition: bsim2def.h:699
double B2icVBS
Definition: bsim2def.h:42
double B2icVGS
Definition: bsim2def.h:44
#define BSIM2_CDS
Definition: bsim2def.h:706
#define BSIM2_GDS
Definition: bsim2def.h:686
#define BSIM2_CDD
Definition: bsim2def.h:705
double B2sourceSquares
Definition: bsim2def.h:36
#define BSIM2_CGS
Definition: bsim2def.h:698
#define BSIM2_GNODE
Definition: bsim2def.h:673
#define BSIM2_CAPBD
Definition: bsim2def.h:700
#define BSIM2_IC_VBS
Definition: bsim2def.h:529
#define BSIM2_GBS
Definition: bsim2def.h:689
#define E_BADPARM
Definition: iferrmsg.h:26
#define BSIM2_DNODE
Definition: bsim2def.h:672
#define BSIM2_CDG
Definition: bsim2def.h:704
int iValue
Definition: ifsim.h:232
double B2drainArea
Definition: bsim2def.h:33
double rValue
Definition: ifsim.h:233
double B2l
Definition: bsim2def.h:31
#define BSIM2_IC_VDS
Definition: bsim2def.h:530
#define OK
Definition: iferrmsg.h:17
double B2drainSquares
Definition: bsim2def.h:35
#define BSIM2_CQB
Definition: bsim2def.h:691
#define BSIM2_VBD
Definition: bsim2def.h:678
#define BSIM2_VON
Definition: bsim2def.h:707
double B2icVDS
Definition: bsim2def.h:43
#define BSIM2_DNODEPRIME
Definition: bsim2def.h:676
double B2sourceConductance
Definition: bsim2def.h:39
#define BSIM2_VGS
Definition: bsim2def.h:680
#define BSIM2_QG
Definition: bsim2def.h:692
#define BSIM2_SOURCECONDUCT
Definition: bsim2def.h:710
#define BSIM2_PD
Definition: bsim2def.h:525
double B2w
Definition: bsim2def.h:32
#define BSIM2_OFF
Definition: bsim2def.h:528
#define BSIM2_DRAINCONDUCT
Definition: bsim2def.h:711
#define BSIM2_CAPBS
Definition: bsim2def.h:702
#define BSIM2_IC_VGS
Definition: bsim2def.h:531
#define BSIM2_L
Definition: bsim2def.h:521
#define BSIM2_VBS
Definition: bsim2def.h:679
#define BSIM2_CD
Definition: bsim2def.h:682
#define BSIM2_SNODEPRIME
Definition: bsim2def.h:677
#define BSIM2_BNODE
Definition: bsim2def.h:675
#define BSIM2_GBD
Definition: bsim2def.h:688
#define BSIM2_CBS
Definition: bsim2def.h:683
double B2drainConductance
Definition: bsim2def.h:40
#define BSIM2_CBD
Definition: bsim2def.h:684
#define BSIM2_CGD
Definition: bsim2def.h:697
#define BSIM2_QBD
Definition: bsim2def.h:709
#define BSIM2_CQG
Definition: bsim2def.h:693
#define BSIM2_CQBS
Definition: bsim2def.h:703
#define BSIM2_AD
Definition: bsim2def.h:523
#define BSIM2_GM
Definition: bsim2def.h:685
#define BSIM2_SNODE
Definition: bsim2def.h:674
#define BSIM2_QB
Definition: bsim2def.h:690
#define BSIM2_PS
Definition: bsim2def.h:524
int B2sNodePrime
Definition: bsim2def.h:29
#define BSIM2_QBS
Definition: bsim2def.h:708
#define BSIM2_CGG
Definition: bsim2def.h:696
int B2dNodePrime
Definition: bsim2def.h:28
#define BSIM2_CQD
Definition: bsim2def.h:695