Jspice3
b1ask.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 "bsim1def.h"
12 #include "sperror.h"
13 #include "util.h"
14 
15 
16 /*ARGSUSED*/
17 int
18 B1ask(ckt,inst,which,value,select)
19 
20 CKTcircuit *ckt;
21 GENinstance *inst;
22 int which;
23 IFvalue *value;
24 IFvalue *select;
25 {
26  B1instance *here = (B1instance*)inst;
27 
28  switch (which) {
29 
30  case BSIM1_L:
31  value->rValue = here->B1l;
32  break;
33  case BSIM1_W:
34  value->rValue = here->B1w;
35  break;
36  case BSIM1_AS:
37  value->rValue = here->B1sourceArea;
38  break;
39  case BSIM1_AD:
40  value->rValue = here->B1drainArea;
41  break;
42  case BSIM1_PS:
43  value->rValue = here->B1sourcePerimeter;
44  break;
45  case BSIM1_PD:
46  value->rValue = here->B1drainPerimeter;
47  break;
48  case BSIM1_NRS:
49  value->rValue = here->B1sourceSquares;
50  break;
51  case BSIM1_NRD:
52  value->rValue = here->B1drainSquares;
53  break;
54  case BSIM1_OFF:
55  value->rValue = here->B1off;
56  break;
57  case BSIM1_IC_VBS:
58  value->rValue = here->B1icVBS;
59  break;
60  case BSIM1_IC_VDS:
61  value->rValue = here->B1icVDS;
62  break;
63  case BSIM1_IC_VGS:
64  value->rValue = here->B1icVGS;
65  break;
66  case BSIM1_DNODE:
67  value->iValue = here->B1dNode;
68  break;
69  case BSIM1_GNODE:
70  value->iValue = here->B1gNode;
71  break;
72  case BSIM1_SNODE:
73  value->iValue = here->B1sNode;
74  break;
75  case BSIM1_BNODE:
76  value->iValue = here->B1bNode;
77  break;
78  case BSIM1_DNODEPRIME:
79  value->iValue = here->B1dNodePrime;
80  break;
81  case BSIM1_SNODEPRIME:
82  value->iValue = here->B1sNodePrime;
83  break;
85  value->rValue = here->B1sourceConductance;
86  break;
87  case BSIM1_DRAINCONDUCT:
88  value->rValue = here->B1drainConductance;
89  break;
90  case BSIM1_VBD:
91  if (ckt->CKTstate0)
92  value->rValue = *(ckt->CKTstate0 + here->B1vbd);
93  break;
94  case BSIM1_VBS:
95  if (ckt->CKTstate0)
96  value->rValue = *(ckt->CKTstate0 + here->B1vbs);
97  break;
98  case BSIM1_VGS:
99  if (ckt->CKTstate0)
100  value->rValue = *(ckt->CKTstate0 + here->B1vgs);
101  break;
102  case BSIM1_VDS:
103  if (ckt->CKTstate0)
104  value->rValue = *(ckt->CKTstate0 + here->B1vds);
105  break;
106  case BSIM1_CD:
107  if (ckt->CKTstate0)
108  value->rValue = *(ckt->CKTstate0 + here->B1cd);
109  break;
110  case BSIM1_CBS:
111  if (ckt->CKTstate0)
112  value->rValue = *(ckt->CKTstate0 + here->B1cbs);
113  break;
114  case BSIM1_CBD:
115  if (ckt->CKTstate0)
116  value->rValue = *(ckt->CKTstate0 + here->B1cbd);
117  break;
118  case BSIM1_GM:
119  if (ckt->CKTstate0)
120  value->rValue = *(ckt->CKTstate0 + here->B1gm);
121  break;
122  case BSIM1_GDS:
123  if (ckt->CKTstate0)
124  value->rValue = *(ckt->CKTstate0 + here->B1gds);
125  break;
126  case BSIM1_GMBS:
127  if (ckt->CKTstate0)
128  value->rValue = *(ckt->CKTstate0 + here->B1gmbs);
129  break;
130  case BSIM1_GBD:
131  if (ckt->CKTstate0)
132  value->rValue = *(ckt->CKTstate0 + here->B1gbd);
133  break;
134  case BSIM1_GBS:
135  if (ckt->CKTstate0)
136  value->rValue = *(ckt->CKTstate0 + here->B1gbs);
137  break;
138  case BSIM1_QB:
139  if (ckt->CKTstate0)
140  value->rValue = *(ckt->CKTstate0 + here->B1qb);
141  break;
142  case BSIM1_CQB:
143  if (ckt->CKTstate0)
144  value->rValue = *(ckt->CKTstate0 + here->B1cqb);
145  break;
146  case BSIM1_QG:
147  if (ckt->CKTstate0)
148  value->rValue = *(ckt->CKTstate0 + here->B1qg);
149  break;
150  case BSIM1_CQG:
151  if (ckt->CKTstate0)
152  value->rValue = *(ckt->CKTstate0 + here->B1cqg);
153  break;
154  case BSIM1_QD:
155  if (ckt->CKTstate0)
156  value->rValue = *(ckt->CKTstate0 + here->B1qd);
157  break;
158  case BSIM1_CQD:
159  if (ckt->CKTstate0)
160  value->rValue = *(ckt->CKTstate0 + here->B1cqd);
161  break;
162  case BSIM1_CGG:
163  if (ckt->CKTstate0)
164  value->rValue = *(ckt->CKTstate0 + here->B1cggb);
165  break;
166  case BSIM1_CGD:
167  if (ckt->CKTstate0)
168  value->rValue = *(ckt->CKTstate0 + here->B1cgdb);
169  break;
170  case BSIM1_CGS:
171  if (ckt->CKTstate0)
172  value->rValue = *(ckt->CKTstate0 + here->B1cgsb);
173  break;
174  case BSIM1_CBG:
175  if (ckt->CKTstate0)
176  value->rValue = *(ckt->CKTstate0 + here->B1cbgb);
177  break;
178  case BSIM1_CAPBD:
179  if (ckt->CKTstate0)
180  value->rValue = *(ckt->CKTstate0 + here->B1capbd);
181  break;
182  case BSIM1_CQBD:
183  if (ckt->CKTstate0)
184  value->rValue = *(ckt->CKTstate0 + here->B1cqbd);
185  break;
186  case BSIM1_CAPBS:
187  if (ckt->CKTstate0)
188  value->rValue = *(ckt->CKTstate0 + here->B1capbs);
189  break;
190  case BSIM1_CQBS:
191  if (ckt->CKTstate0)
192  value->rValue = *(ckt->CKTstate0 + here->B1cqbs);
193  break;
194  case BSIM1_CDG:
195  if (ckt->CKTstate0)
196  value->rValue = *(ckt->CKTstate0 + here->B1cdgb);
197  break;
198  case BSIM1_CDD:
199  if (ckt->CKTstate0)
200  value->rValue = *(ckt->CKTstate0 + here->B1cddb);
201  break;
202  case BSIM1_CDS:
203  if (ckt->CKTstate0)
204  value->rValue = *(ckt->CKTstate0 + here->B1cdsb);
205  break;
206  case BSIM1_VON:
207  if (ckt->CKTstate0)
208  value->rValue = *(ckt->CKTstate0 + here->B1vono);
209  break;
210  case BSIM1_QBS:
211  if (ckt->CKTstate0)
212  value->rValue = *(ckt->CKTstate0 + here->B1qbs);
213  break;
214  case BSIM1_QBD:
215  if (ckt->CKTstate0)
216  value->rValue = *(ckt->CKTstate0 + here->B1qbd);
217  break;
218  default:
219  return (E_BADPARM);
220  }
221  return (OK);
222 }
223 
#define BSIM1_AS
Definition: bsim1def.h:480
#define BSIM1_QD
Definition: bsim1def.h:596
#define BSIM1_W
Definition: bsim1def.h:478
double B1icVBS
Definition: bsim1def.h:45
#define BSIM1_GDS
Definition: bsim1def.h:588
#define BSIM1_VON
Definition: bsim1def.h:609
#define BSIM1_DNODE
Definition: bsim1def.h:574
#define BSIM1_QB
Definition: bsim1def.h:592
#define BSIM1_CDS
Definition: bsim1def.h:608
#define BSIM1_CGG
Definition: bsim1def.h:598
#define BSIM1_DNODEPRIME
Definition: bsim1def.h:578
#define BSIM1_VBS
Definition: bsim1def.h:581
#define BSIM1_AD
Definition: bsim1def.h:481
#define BSIM1_CQB
Definition: bsim1def.h:593
#define BSIM1_QG
Definition: bsim1def.h:594
#define E_BADPARM
Definition: iferrmsg.h:26
int B1sNodePrime
Definition: bsim1def.h:32
#define BSIM1_GBD
Definition: bsim1def.h:590
#define BSIM1_SNODEPRIME
Definition: bsim1def.h:579
double B1sourceConductance
Definition: bsim1def.h:42
#define BSIM1_CBG
Definition: bsim1def.h:601
int iValue
Definition: ifsim.h:232
double rValue
Definition: ifsim.h:233
#define BSIM1_CGD
Definition: bsim1def.h:599
#define BSIM1_NRD
Definition: bsim1def.h:485
double B1drainConductance
Definition: bsim1def.h:43
#define BSIM1_CAPBD
Definition: bsim1def.h:602
#define OK
Definition: iferrmsg.h:17
double B1drainArea
Definition: bsim1def.h:36
#define BSIM1_OFF
Definition: bsim1def.h:486
double B1icVGS
Definition: bsim1def.h:47
double B1icVDS
Definition: bsim1def.h:46
#define BSIM1_CD
Definition: bsim1def.h:584
#define BSIM1_VDS
Definition: bsim1def.h:583
#define BSIM1_GBS
Definition: bsim1def.h:591
#define BSIM1_BNODE
Definition: bsim1def.h:577
#define BSIM1_IC_VGS
Definition: bsim1def.h:489
#define BSIM1_CBD
Definition: bsim1def.h:586
#define BSIM1_IC_VBS
Definition: bsim1def.h:487
#define BSIM1_DRAINCONDUCT
Definition: bsim1def.h:613
#define BSIM1_L
Definition: bsim1def.h:479
double B1sourceArea
Definition: bsim1def.h:37
double B1w
Definition: bsim1def.h:35
#define BSIM1_GNODE
Definition: bsim1def.h:575
#define BSIM1_QBS
Definition: bsim1def.h:610
#define BSIM1_PD
Definition: bsim1def.h:483
#define BSIM1_CAPBS
Definition: bsim1def.h:604
#define BSIM1_GMBS
Definition: bsim1def.h:589
#define BSIM1_CDG
Definition: bsim1def.h:606
double B1l
Definition: bsim1def.h:34
#define BSIM1_SNODE
Definition: bsim1def.h:576
#define BSIM1_CQG
Definition: bsim1def.h:595
#define BSIM1_SOURCECONDUCT
Definition: bsim1def.h:612
int B1ask(CKTcircuit *ckt, GENinstance *inst, int which, IFvalue *value, IFvalue *select)
Definition: b1ask.c:18
#define BSIM1_CDD
Definition: bsim1def.h:607
int B1dNodePrime
Definition: bsim1def.h:31
double B1drainSquares
Definition: bsim1def.h:38
#define BSIM1_CQBS
Definition: bsim1def.h:605
#define BSIM1_CQD
Definition: bsim1def.h:597
#define BSIM1_VGS
Definition: bsim1def.h:582
#define BSIM1_QBD
Definition: bsim1def.h:611
#define BSIM1_NRS
Definition: bsim1def.h:484
#define BSIM1_IC_VDS
Definition: bsim1def.h:488
#define BSIM1_PS
Definition: bsim1def.h:482
#define BSIM1_VBD
Definition: bsim1def.h:580
#define BSIM1_CBS
Definition: bsim1def.h:585
#define BSIM1_GM
Definition: bsim1def.h:587
double B1sourceSquares
Definition: bsim1def.h:39
double B1drainPerimeter
Definition: bsim1def.h:40
#define BSIM1_CGS
Definition: bsim1def.h:600
double B1sourcePerimeter
Definition: bsim1def.h:41
#define BSIM1_CQBD
Definition: bsim1def.h:603