Jspice3
b1moscap.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 Hong J. Park, Thomas L. Quarles
5  1993 Stephen R. Whiteley
6 ****************************************************************************/
7 
8 #include "spice.h"
9 #include <stdio.h>
10 #include <math.h>
11 #include "bsim1def.h"
12 
13 
14 /* routine to calculate equivalent conductance and total terminal
15  * charges
16  */
17 
18 void
19 B1mosCap(ckt,vgd,vgs,vgb,
20  args,
21  /*
22  GateDrainOverlapCap,GateSourceOverlapCap, GateBulkOverlapCap,
23  capbd,capbs,
24  cggb,cgdb,cgsb,
25  */
26  cbgb,cbdb,cbsb,cdgb,cddb,cdsb,
27  gcggbPointer,gcgdbPointer,gcgsbPointer,gcbgbPointer,gcbdbPointer,
28  gcbsbPointer,gcdgbPointer,gcddbPointer,gcdsbPointer,
29  gcsgbPointer,gcsdbPointer,gcssbPointer,qGatePointer,qBulkPointer,
30  qDrainPointer,qSourcePointer)
31  register CKTcircuit *ckt;
32  double vgd;
33  double vgs;
34  double vgb;
35  double args[8];
36  /*
37  double GateDrainOverlapCap;
38  double GateSourceOverlapCap;
39  double GateBulkOverlapCap;
40  double capbd;
41  double capbs;
42  double cggb;
43  double cgdb;
44  double cgsb;
45  */
46  double cbgb;
47  double cbdb;
48  double cbsb;
49  double cdgb;
50  double cddb;
51  double cdsb;
52  double *gcggbPointer;
53  double *gcgdbPointer;
54  double *gcgsbPointer;
55  double *gcbgbPointer;
56  double *gcbdbPointer;
57  double *gcbsbPointer;
58  double *gcdgbPointer;
59  double *gcddbPointer;
60  double *gcdsbPointer;
61  double *gcsgbPointer;
62  double *gcsdbPointer;
63  double *gcssbPointer;
64  double *qGatePointer;
65  double *qBulkPointer;
66  double *qDrainPointer;
67  double *qSourcePointer;
68 
69 {
70  double qgd;
71  double qgs;
72  double qgb;
73  double ag0;
74 
75  ag0 = ckt->CKTag[0];
76  /* compute equivalent conductance */
77  *gcdgbPointer = (cdgb - args[0]) * ag0;
78  *gcddbPointer = (cddb + args[3] + args[0]) * ag0;
79  *gcdsbPointer = cdsb * ag0;
80  *gcsgbPointer = -(args[5] + cbgb + cdgb + args[1]) * ag0;
81  *gcsdbPointer = -(args[6] + cbdb + cddb ) * ag0;
82  *gcssbPointer = (args[4] + args[1] -
83  (args[7] + cbsb + cdsb )) * ag0;
84  *gcggbPointer = (args[5] + args[0] +
85  args[1] + args[2] ) * ag0;
86  *gcgdbPointer = (args[6] - args[0]) * ag0;
87  *gcgsbPointer = (args[7] - args[1]) * ag0;
88  *gcbgbPointer = (cbgb - args[2]) * ag0;
89  *gcbdbPointer = (cbdb - args[3]) * ag0;
90  *gcbsbPointer = (cbsb - args[4]) * ag0;
91 
92  /* compute total terminal charge */
93  qgd = args[0] * vgd;
94  qgs = args[1] * vgs;
95  qgb = args[2] * vgb;
96  *qGatePointer = *qGatePointer + qgd + qgs + qgb;
97  *qBulkPointer = *qBulkPointer - qgb;
98  *qDrainPointer = *qDrainPointer - qgd;
99  *qSourcePointer = -(*qGatePointer + *qBulkPointer + *qDrainPointer);
100 }
101 
102 
double CKTag[7]
Definition: cktdefs.h:83
void B1mosCap(CKTcircuit *ckt, double vgd, double vgs, double vgb, args, double cbgb, double cbdb, double cbsb, double cdgb, double cddb, double cdsb, double *gcggbPointer, double *gcgdbPointer, double *gcgsbPointer, double *gcbgbPointer, double *gcbdbPointer, double *gcbsbPointer, double *gcdgbPointer, double *gcddbPointer, double *gcdsbPointer, double *gcsgbPointer, double *gcsdbPointer, double *gcssbPointer, double *qGatePointer, double *qBulkPointer, double *qDrainPointer, double *qSourcePointer)
Definition: b1moscap.c:19