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

Go to the source code of this file.

Functions

int B2pzLoad (GENmodel *inModel, CKTcircuit *ckt, SPcomplex *s)
 

Function Documentation

int B2pzLoad ( GENmodel inModel,
CKTcircuit ckt,
SPcomplex s 
)

Definition at line 15 of file b2pzld.c.

19 {
20  register B2model *model = (B2model*)inModel;
21  register B2instance *here;
22  int xnrm;
23  int xrev;
24  double gdpr;
25  double gspr;
26  double gm;
27  double gds;
28  double gmbs;
29  double gbd;
30  double gbs;
31  double capbd;
32  double capbs;
33  double xcggb;
34  double xcgdb;
35  double xcgsb;
36  double xcbgb;
37  double xcbdb;
38  double xcbsb;
39  double xcddb;
40  double xcssb;
41  double xcdgb;
42  double xcsgb;
43  double xcdsb;
44  double xcsdb;
45  double cggb;
46  double cgdb;
47  double cgsb;
48  double cbgb;
49  double cbdb;
50  double cbsb;
51  double cddb;
52  double cdgb;
53  double cdsb;
54 
55  for( ; model != NULL; model = model->B2nextModel) {
56  for(here = model->B2instances; here!= NULL;
57  here = here->B2nextInstance) {
58 
59  if (here->B2mode >= 0) {
60  xnrm=1;
61  xrev=0;
62  } else {
63  xnrm=0;
64  xrev=1;
65  }
66  gdpr=here->B2drainConductance;
67  gspr=here->B2sourceConductance;
68  gm= *(ckt->CKTstate0 + here->B2gm);
69  gds= *(ckt->CKTstate0 + here->B2gds);
70  gmbs= *(ckt->CKTstate0 + here->B2gmbs);
71  gbd= *(ckt->CKTstate0 + here->B2gbd);
72  gbs= *(ckt->CKTstate0 + here->B2gbs);
73  capbd= *(ckt->CKTstate0 + here->B2capbd);
74  capbs= *(ckt->CKTstate0 + here->B2capbs);
75  /*
76  * charge oriented model parameters
77  */
78 
79  cggb = *(ckt->CKTstate0 + here->B2cggb);
80  cgsb = *(ckt->CKTstate0 + here->B2cgsb);
81  cgdb = *(ckt->CKTstate0 + here->B2cgdb);
82 
83  cbgb = *(ckt->CKTstate0 + here->B2cbgb);
84  cbsb = *(ckt->CKTstate0 + here->B2cbsb);
85  cbdb = *(ckt->CKTstate0 + here->B2cbdb);
86 
87  cdgb = *(ckt->CKTstate0 + here->B2cdgb);
88  cdsb = *(ckt->CKTstate0 + here->B2cdsb);
89  cddb = *(ckt->CKTstate0 + here->B2cddb);
90 
91  xcdgb = (cdgb - here->pParam->B2GDoverlapCap) ;
92  xcddb = (cddb + capbd + here->pParam->B2GDoverlapCap) ;
93  xcdsb = cdsb ;
94  xcsgb = -(cggb + cbgb + cdgb + here->pParam->B2GSoverlapCap ) ;
95  xcsdb = -(cgdb + cbdb + cddb) ;
96  xcssb = (capbs + here->pParam->B2GSoverlapCap - (cgsb+cbsb+cdsb)) ;
97  xcggb = (cggb + here->pParam->B2GDoverlapCap
98  + here->pParam->B2GSoverlapCap
99  + here->pParam->B2GBoverlapCap) ;
100  xcgdb = (cgdb - here->pParam->B2GDoverlapCap ) ;
101  xcgsb = (cgsb - here->pParam->B2GSoverlapCap) ;
102  xcbgb = (cbgb - here->pParam->B2GBoverlapCap) ;
103  xcbdb = (cbdb - capbd ) ;
104  xcbsb = (cbsb - capbs ) ;
105 
106 
107  *(here->B2GgPtr ) += xcggb * s->real;
108  *(here->B2GgPtr +1) += xcggb * s->imag;
109  *(here->B2BbPtr ) += (-xcbgb-xcbdb-xcbsb) * s->real;
110  *(here->B2BbPtr +1) += (-xcbgb-xcbdb-xcbsb) * s->imag;
111  *(here->B2DPdpPtr ) += xcddb * s->real;
112  *(here->B2DPdpPtr +1) += xcddb * s->imag;
113  *(here->B2SPspPtr ) += xcssb * s->real;
114  *(here->B2SPspPtr +1) += xcssb * s->imag;
115  *(here->B2GbPtr ) += (-xcggb-xcgdb-xcgsb) * s->real;
116  *(here->B2GbPtr +1) += (-xcggb-xcgdb-xcgsb) * s->imag;
117  *(here->B2GdpPtr ) += xcgdb * s->real;
118  *(here->B2GdpPtr +1) += xcgdb * s->imag;
119  *(here->B2GspPtr ) += xcgsb * s->real;
120  *(here->B2GspPtr +1) += xcgsb * s->imag;
121  *(here->B2BgPtr ) += xcbgb * s->real;
122  *(here->B2BgPtr +1) += xcbgb * s->imag;
123  *(here->B2BdpPtr ) += xcbdb * s->real;
124  *(here->B2BdpPtr +1) += xcbdb * s->imag;
125  *(here->B2BspPtr ) += xcbsb * s->real;
126  *(here->B2BspPtr +1) += xcbsb * s->imag;
127  *(here->B2DPgPtr ) += xcdgb * s->real;
128  *(here->B2DPgPtr +1) += xcdgb * s->imag;
129  *(here->B2DPbPtr ) += (-xcdgb-xcddb-xcdsb) * s->real;
130  *(here->B2DPbPtr +1) += (-xcdgb-xcddb-xcdsb) * s->imag;
131  *(here->B2DPspPtr ) += xcdsb * s->real;
132  *(here->B2DPspPtr +1) += xcdsb * s->imag;
133  *(here->B2SPgPtr ) += xcsgb * s->real;
134  *(here->B2SPgPtr +1) += xcsgb * s->imag;
135  *(here->B2SPbPtr ) += (-xcsgb-xcsdb-xcssb) * s->real;
136  *(here->B2SPbPtr +1) += (-xcsgb-xcsdb-xcssb) * s->imag;
137  *(here->B2SPdpPtr ) += xcsdb * s->real;
138  *(here->B2SPdpPtr +1) += xcsdb * s->imag;
139  *(here->B2DdPtr) += gdpr;
140  *(here->B2SsPtr) += gspr;
141  *(here->B2BbPtr) += gbd+gbs;
142  *(here->B2DPdpPtr) += gdpr+gds+gbd+xrev*(gm+gmbs);
143  *(here->B2SPspPtr) += gspr+gds+gbs+xnrm*(gm+gmbs);
144  *(here->B2DdpPtr) -= gdpr;
145  *(here->B2SspPtr) -= gspr;
146  *(here->B2BdpPtr) -= gbd;
147  *(here->B2BspPtr) -= gbs;
148  *(here->B2DPdPtr) -= gdpr;
149  *(here->B2DPgPtr) += (xnrm-xrev)*gm;
150  *(here->B2DPbPtr) += -gbd+(xnrm-xrev)*gmbs;
151  *(here->B2DPspPtr) += -gds-xnrm*(gm+gmbs);
152  *(here->B2SPgPtr) += -(xnrm-xrev)*gm;
153  *(here->B2SPsPtr) -= gspr;
154  *(here->B2SPbPtr) += -gbs-(xnrm-xrev)*gmbs;
155  *(here->B2SPdpPtr) += -gds-xrev*(gm+gmbs);
156 
157  }
158  }
159  return(OK);
160 }
double * B2GbPtr
Definition: bsim2def.h:84
B2instance * B2instances
Definition: bsim2def.h:226
struct sBSIM2instance * B2nextInstance
Definition: bsim2def.h:19
double * B2GspPtr
Definition: bsim2def.h:88
double * B2DPgPtr
Definition: bsim2def.h:102
double * B2DPbPtr
Definition: bsim2def.h:109
double real
Definition: complex.h:13
double * B2SPdpPtr
Definition: bsim2def.h:113
double * B2SsPtr
Definition: bsim2def.h:74
#define OK
Definition: iferrmsg.h:17
double * B2SPbPtr
Definition: bsim2def.h:111
double * B2DdpPtr
Definition: bsim2def.h:82
double * B2BspPtr
Definition: bsim2def.h:94
#define NULL
Definition: spdefs.h:121
double B2sourceConductance
Definition: bsim2def.h:39
double * B2DPspPtr
Definition: bsim2def.h:96
double * B2SspPtr
Definition: bsim2def.h:90
double * B2SPgPtr
Definition: bsim2def.h:105
double * B2GdpPtr
Definition: bsim2def.h:86
double * B2SPsPtr
Definition: bsim2def.h:107
double * B2DPdpPtr
Definition: bsim2def.h:78
double * B2SPspPtr
Definition: bsim2def.h:80
double * B2DPdPtr
Definition: bsim2def.h:98
static char model[32]
Definition: subckt.c:76
struct sBSIM2model * B2nextModel
Definition: bsim2def.h:224
double * B2GgPtr
Definition: bsim2def.h:72
struct bsim2SizeDependParam * pParam
Definition: bsim2def.h:50
double imag
Definition: complex.h:14
double B2drainConductance
Definition: bsim2def.h:40
double * B2BgPtr
Definition: bsim2def.h:100
double * B2BdpPtr
Definition: bsim2def.h:92
double * B2DdPtr
Definition: bsim2def.h:70
double * B2BbPtr
Definition: bsim2def.h:76