Jspice3
mesacl.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 S. Hwang
5  1993 Stephen R. Whiteley
6 ****************************************************************************/
7 
8 #include "spice.h"
9 #include <stdio.h>
10 #include "mesdefs.h"
11 #include "sperror.h"
12 #include "util.h"
13 
14 
15 int
16 MESacLoad(inModel,ckt)
17  GENmodel *inModel;
18  register CKTcircuit *ckt;
19 {
20  register MESmodel *model = (MESmodel*)inModel;
21  register MESinstance *here;
22  double gdpr;
23  double gspr;
24  double gm;
25  double gds;
26  double ggs;
27  double xgs;
28  double ggd;
29  double xgd;
30 
31  for( ; model != NULL; model = model->MESnextModel ) {
32 
33  for( here = model->MESinstances; here != NULL;
34  here = here->MESnextInstance) {
35 
36 
37  gdpr=model->MESdrainConduct * here->MESarea;
38  gspr=model->MESsourceConduct * here->MESarea;
39  gm= *(ckt->CKTstate0 + here->MESgm) ;
40  gds= *(ckt->CKTstate0 + here->MESgds) ;
41  ggs= *(ckt->CKTstate0 + here->MESggs) ;
42  xgs= *(ckt->CKTstate0 + here->MESqgs) * ckt->CKTomega ;
43  ggd= *(ckt->CKTstate0 + here->MESggd) ;
44  xgd= *(ckt->CKTstate0 + here->MESqgd) * ckt->CKTomega ;
45  *(here->MESdrainDrainPtr ) += gdpr;
46  *(here->MESgateGatePtr ) += ggd+ggs;
47  *(here->MESgateGatePtr +1) += xgd+xgs;
48  *(here->MESsourceSourcePtr ) += gspr;
49  *(here->MESdrainPrimeDrainPrimePtr ) += gdpr+gds+ggd;
50  *(here->MESdrainPrimeDrainPrimePtr +1) += xgd;
51  *(here->MESsourcePrimeSourcePrimePtr ) += gspr+gds+gm+ggs;
52  *(here->MESsourcePrimeSourcePrimePtr +1) += xgs;
53  *(here->MESdrainDrainPrimePtr ) -= gdpr;
54  *(here->MESgateDrainPrimePtr ) -= ggd;
55  *(here->MESgateDrainPrimePtr +1) -= xgd;
56  *(here->MESgateSourcePrimePtr ) -= ggs;
57  *(here->MESgateSourcePrimePtr +1) -= xgs;
58  *(here->MESsourceSourcePrimePtr ) -= gspr;
59  *(here->MESdrainPrimeDrainPtr ) -= gdpr;
60  *(here->MESdrainPrimeGatePtr ) += (-ggd+gm);
61  *(here->MESdrainPrimeGatePtr +1) -= xgd;
62  *(here->MESdrainPrimeSourcePrimePtr ) += (-gds-gm);
63  *(here->MESsourcePrimeGatePtr ) += (-ggs-gm);
64  *(here->MESsourcePrimeGatePtr +1) -= xgs;
65  *(here->MESsourcePrimeSourcePtr ) -= gspr;
66  *(here->MESsourcePrimeDrainPrimePtr ) -= gds;
67 
68  }
69  }
70  return(OK);
71 }
double * MESdrainDrainPrimePtr
Definition: mesdefs.h:35
double * MESgateSourcePrimePtr
Definition: mesdefs.h:39
double * MESdrainDrainPtr
Definition: mesdefs.h:55
MESinstance * MESinstances
Definition: mesdefs.h:163
double MESdrainConduct
Definition: mesdefs.h:183
struct sMESmodel * MESnextModel
Definition: mesdefs.h:161
double MESsourceConduct
Definition: mesdefs.h:184
struct sMESinstance * MESnextInstance
Definition: mesdefs.h:22
#define OK
Definition: iferrmsg.h:17
double * MESgateGatePtr
Definition: mesdefs.h:57
#define NULL
Definition: spdefs.h:121
double * MESdrainPrimeDrainPtr
Definition: mesdefs.h:43
double * MESsourceSourcePtr
Definition: mesdefs.h:59
double * MESsourcePrimeSourcePtr
Definition: mesdefs.h:51
double * MESdrainPrimeSourcePrimePtr
Definition: mesdefs.h:47
double MESarea
Definition: mesdefs.h:32
double * MESsourcePrimeGatePtr
Definition: mesdefs.h:49
static char model[32]
Definition: subckt.c:76
double * MESsourcePrimeDrainPrimePtr
Definition: mesdefs.h:53
double * MESdrainPrimeGatePtr
Definition: mesdefs.h:45
double * MESsourcePrimeSourcePrimePtr
Definition: mesdefs.h:63
double * MESdrainPrimeDrainPrimePtr
Definition: mesdefs.h:61
double * MESsourceSourcePrimePtr
Definition: mesdefs.h:41
int MESacLoad(GENmodel *inModel, CKTcircuit *ckt)
Definition: mesacl.c:16
double * MESgateDrainPrimePtr
Definition: mesdefs.h:37