Jspice3
b1acld.c File Reference
#include "spice.h"
#include <stdio.h>
#include "bsim1def.h"
#include "sperror.h"
Include dependency graph for b1acld.c:

Go to the source code of this file.

Functions

int B1acLoad (GENmodel *inModel, CKTcircuit *ckt)
 

Function Documentation

int B1acLoad ( GENmodel inModel,
CKTcircuit ckt 
)

Definition at line 15 of file b1acld.c.

18 {
19  register B1model *model = (B1model*)inModel;
20  register B1instance *here;
21  int xnrm;
22  int xrev;
23  double gdpr;
24  double gspr;
25  double gm;
26  double gds;
27  double gmbs;
28  double gbd;
29  double gbs;
30  double capbd;
31  double capbs;
32  double xcggb;
33  double xcgdb;
34  double xcgsb;
35  double xcbgb;
36  double xcbdb;
37  double xcbsb;
38  double xcddb;
39  double xcssb;
40  double xcdgb;
41  double xcsgb;
42  double xcdsb;
43  double xcsdb;
44  double cggb;
45  double cgdb;
46  double cgsb;
47  double cbgb;
48  double cbdb;
49  double cbsb;
50  double cddb;
51  double cdgb;
52  double cdsb;
53  double omega; /* angular fequency of the signal */
54 
55  omega = ckt->CKTomega;
56  for( ; model != NULL; model = model->B1nextModel) {
57  for(here = model->B1instances; here!= NULL;
58  here = here->B1nextInstance) {
59 
60  if (here->B1mode >= 0) {
61  xnrm=1;
62  xrev=0;
63  } else {
64  xnrm=0;
65  xrev=1;
66  }
67  gdpr=here->B1drainConductance;
68  gspr=here->B1sourceConductance;
69  gm= *(ckt->CKTstate0 + here->B1gm);
70  gds= *(ckt->CKTstate0 + here->B1gds);
71  gmbs= *(ckt->CKTstate0 + here->B1gmbs);
72  gbd= *(ckt->CKTstate0 + here->B1gbd);
73  gbs= *(ckt->CKTstate0 + here->B1gbs);
74  capbd= *(ckt->CKTstate0 + here->B1capbd);
75  capbs= *(ckt->CKTstate0 + here->B1capbs);
76  /*
77  * charge oriented model parameters
78  */
79 
80  cggb = *(ckt->CKTstate0 + here->B1cggb);
81  cgsb = *(ckt->CKTstate0 + here->B1cgsb);
82  cgdb = *(ckt->CKTstate0 + here->B1cgdb);
83 
84  cbgb = *(ckt->CKTstate0 + here->B1cbgb);
85  cbsb = *(ckt->CKTstate0 + here->B1cbsb);
86  cbdb = *(ckt->CKTstate0 + here->B1cbdb);
87 
88  cdgb = *(ckt->CKTstate0 + here->B1cdgb);
89  cdsb = *(ckt->CKTstate0 + here->B1cdsb);
90  cddb = *(ckt->CKTstate0 + here->B1cddb);
91 
92  xcdgb = (cdgb - here->B1GDoverlapCap) * omega;
93  xcddb = (cddb + capbd + here->B1GDoverlapCap) * omega;
94  xcdsb = cdsb * omega;
95  xcsgb = -(cggb + cbgb + cdgb + here->B1GSoverlapCap ) * omega;
96  xcsdb = -(cgdb + cbdb + cddb) * omega;
97  xcssb = (capbs + here->B1GSoverlapCap - (cgsb+cbsb+cdsb)) * omega;
98  xcggb = (cggb + here->B1GDoverlapCap + here->B1GSoverlapCap +
99  here->B1GBoverlapCap) * omega;
100  xcgdb = (cgdb - here->B1GDoverlapCap ) * omega;
101  xcgsb = (cgsb - here->B1GSoverlapCap) * omega;
102  xcbgb = (cbgb - here->B1GBoverlapCap) * omega;
103  xcbdb = (cbdb - capbd ) * omega;
104  xcbsb = (cbsb - capbs ) * omega;
105 
106 
107  *(here->B1GgPtr +1) += xcggb;
108  *(here->B1BbPtr +1) += -xcbgb-xcbdb-xcbsb;
109  *(here->B1DPdpPtr +1) += xcddb;
110  *(here->B1SPspPtr +1) += xcssb;
111  *(here->B1GbPtr +1) += -xcggb-xcgdb-xcgsb;
112  *(here->B1GdpPtr +1) += xcgdb;
113  *(here->B1GspPtr +1) += xcgsb;
114  *(here->B1BgPtr +1) += xcbgb;
115  *(here->B1BdpPtr +1) += xcbdb;
116  *(here->B1BspPtr +1) += xcbsb;
117  *(here->B1DPgPtr +1) += xcdgb;
118  *(here->B1DPbPtr +1) += -xcdgb-xcddb-xcdsb;
119  *(here->B1DPspPtr +1) += xcdsb;
120  *(here->B1SPgPtr +1) += xcsgb;
121  *(here->B1SPbPtr +1) += -xcsgb-xcsdb-xcssb;
122  *(here->B1SPdpPtr +1) += xcsdb;
123  *(here->B1DdPtr) += gdpr;
124  *(here->B1SsPtr) += gspr;
125  *(here->B1BbPtr) += gbd+gbs;
126  *(here->B1DPdpPtr) += gdpr+gds+gbd+xrev*(gm+gmbs);
127  *(here->B1SPspPtr) += gspr+gds+gbs+xnrm*(gm+gmbs);
128  *(here->B1DdpPtr) -= gdpr;
129  *(here->B1SspPtr) -= gspr;
130  *(here->B1BdpPtr) -= gbd;
131  *(here->B1BspPtr) -= gbs;
132  *(here->B1DPdPtr) -= gdpr;
133  *(here->B1DPgPtr) += (xnrm-xrev)*gm;
134  *(here->B1DPbPtr) += -gbd+(xnrm-xrev)*gmbs;
135  *(here->B1DPspPtr) += -gds-xnrm*(gm+gmbs);
136  *(here->B1SPgPtr) += -(xnrm-xrev)*gm;
137  *(here->B1SPsPtr) -= gspr;
138  *(here->B1SPbPtr) += -gbs-(xnrm-xrev)*gmbs;
139  *(here->B1SPdpPtr) += -gds-xrev*(gm+gmbs);
140 
141  }
142  }
143 return(OK);
144 }
double * B1SPbPtr
Definition: bsim1def.h:141
double * B1GbPtr
Definition: bsim1def.h:114
double * B1DdpPtr
Definition: bsim1def.h:112
double * B1BbPtr
Definition: bsim1def.h:106
double * B1DPdpPtr
Definition: bsim1def.h:108
double * B1DPdPtr
Definition: bsim1def.h:128
double * B1GdpPtr
Definition: bsim1def.h:116
double * B1BgPtr
Definition: bsim1def.h:130
double B1sourceConductance
Definition: bsim1def.h:42
double B1GBoverlapCap
Definition: bsim1def.h:75
double * B1GspPtr
Definition: bsim1def.h:118
double * B1SPdpPtr
Definition: bsim1def.h:143
double * B1DPspPtr
Definition: bsim1def.h:126
double B1drainConductance
Definition: bsim1def.h:43
#define OK
Definition: iferrmsg.h:17
double * B1BdpPtr
Definition: bsim1def.h:122
#define NULL
Definition: spdefs.h:121
B1instance * B1instances
Definition: bsim1def.h:303
double * B1BspPtr
Definition: bsim1def.h:124
double CKTomega
Definition: cktdefs.h:198
double * B1SPgPtr
Definition: bsim1def.h:135
double * B1DPbPtr
Definition: bsim1def.h:139
double * B1SPsPtr
Definition: bsim1def.h:137
double * B1SspPtr
Definition: bsim1def.h:120
double B1GSoverlapCap
Definition: bsim1def.h:74
double * B1GgPtr
Definition: bsim1def.h:102
static char model[32]
Definition: subckt.c:76
struct sBSIM1model * B1nextModel
Definition: bsim1def.h:301
struct sBSIM1instance * B1nextInstance
Definition: bsim1def.h:22
double * B1DPgPtr
Definition: bsim1def.h:132
double * B1SsPtr
Definition: bsim1def.h:104
double * B1DdPtr
Definition: bsim1def.h:100
double * B1SPspPtr
Definition: bsim1def.h:110
double B1GDoverlapCap
Definition: bsim1def.h:73