Lines Matching refs:ms

60     struct mosstuff ms;  local
72 ms.ms_vt = CONSTKoverQ * here->MOStemp;
75 ms.ms_vbs = *(ckt->CKTrhsOld + here->MOSbNode) -
77 ms.ms_vgs = *(ckt->CKTrhsOld + here->MOSgNode) -
79 ms.ms_vds = *(ckt->CKTrhsOld + here->MOSdNodePrime) -
81 ms.ms_von = here->MOSvon;
84 ms.ms_vbs = *(ckt->CKTrhsOld + here->MOSsNodePrime) -
86 ms.ms_vgs = *(ckt->CKTrhsOld + here->MOSsNodePrime) -
88 ms.ms_vds = *(ckt->CKTrhsOld + here->MOSsNodePrime) -
90 ms.ms_von = -here->MOSvon;
92 ms.ms_vbd = ms.ms_vbs - ms.ms_vds;
93 ms.ms_vgd = ms.ms_vgs - ms.ms_vds;
94 ms.ms_vgb = ms.ms_vgs - ms.ms_vbs;
97 if (ckt->CKTbypass && mos_bypass(ckt,model,here,&ms)) {
101 (void)mos_limiting(ckt,here,&ms);
102 mos_iv(ckt,model,here,&ms);
104 mos_cap(ckt,model,here,&ms);
105 error = mos_integ(ckt,here,&ms);
107 mos_load(ckt,model,here,&ms);
110 mos_load_dc(ckt,model,here,&ms);
130 ms.ms_vt = CONSTKoverQ * here->MOStemp;
133 ms.ms_vbs = xf1* *(ckt->CKTstate1 + here->MOSvbs)
136 ms.ms_vgs = xf1* *(ckt->CKTstate1 + here->MOSvgs)
139 ms.ms_vds = xf1* *(ckt->CKTstate1 + here->MOSvds)
142 ms.ms_vbd = ms.ms_vbs - ms.ms_vds;
143 ms.ms_vgd = ms.ms_vgs - ms.ms_vds;
144 ms.ms_vgb = ms.ms_vgs - ms.ms_vbs;
146 ms.ms_von = here->MOSvon;
148 ms.ms_von = -here->MOSvon;
160 (void)mos_limiting(ckt,here,&ms);
162 mos_iv(ckt,model,here,&ms);
164 mos_cap(ckt,model,here,&ms);
165 error = mos_integ(ckt,here,&ms);
167 mos_load(ckt,model,here,&ms);
170 mos_load_dc(ckt,model,here,&ms);
186 ms.ms_vt = CONSTKoverQ * here->MOStemp;
189 ms.ms_vbs = 0;
190 ms.ms_vgs = 0;
191 ms.ms_vds = 0;
192 ms.ms_vbd = 0;
193 ms.ms_vgd = 0;
194 ms.ms_vgb = 0;
198 ms.ms_vbs = *(ckt->CKTrhsOld + here->MOSbNode) -
200 ms.ms_vgs = *(ckt->CKTrhsOld + here->MOSgNode) -
202 ms.ms_vds = *(ckt->CKTrhsOld + here->MOSdNodePrime) -
206 ms.ms_vbs = *(ckt->CKTrhsOld + here->MOSsNodePrime) -
208 ms.ms_vgs = *(ckt->CKTrhsOld + here->MOSsNodePrime) -
210 ms.ms_vds = *(ckt->CKTrhsOld + here->MOSsNodePrime) -
213 ms.ms_vbd = ms.ms_vbs - ms.ms_vds;
214 ms.ms_vgd = ms.ms_vgs - ms.ms_vds;
215 ms.ms_vgb = ms.ms_vgs - ms.ms_vbs;
219 ms.ms_von = here->MOSvon;
221 ms.ms_von = -here->MOSvon;
225 if (ckt->CKTbypass && mos_bypass(ckt,model,here,&ms)) {
229 if (!here->MOSoff && mos_limiting(ckt,here,&ms))
232 mos_iv(ckt,model,here,&ms);
233 mos_load_dc(ckt,model,here,&ms);
248 ms.ms_vt = CONSTKoverQ * here->MOStemp;
250 ms.ms_vbs = *(ckt->CKTstate1 + here->MOSvbs);
251 ms.ms_vgs = *(ckt->CKTstate1 + here->MOSvgs);
252 ms.ms_vds = *(ckt->CKTstate1 + here->MOSvds);
253 ms.ms_vbd = ms.ms_vbs - ms.ms_vds;
254 ms.ms_vgd = ms.ms_vgs - ms.ms_vds;
255 ms.ms_vgb = ms.ms_vgs - ms.ms_vbs;
257 mos_iv(ckt,model,here,&ms);
258 mos_cap(ckt,model,here,&ms);
259 error = mos_integ(ckt,here,&ms);
261 mos_load(ckt,model,here,&ms);
276 ms.ms_vt = CONSTKoverQ * here->MOStemp;
277 ms.ms_vbs = *(ckt->CKTstate0 + here->MOSvbs);
278 ms.ms_vgs = *(ckt->CKTstate0 + here->MOSvgs);
279 ms.ms_vds = *(ckt->CKTstate0 + here->MOSvds);
280 ms.ms_vbd = ms.ms_vbs - ms.ms_vds;
281 ms.ms_vgd = ms.ms_vgs - ms.ms_vds;
282 ms.ms_vgb = ms.ms_vgs - ms.ms_vbs;
284 mos_iv(ckt,model,here,&ms);
285 mos_cap(ckt,model,here,&ms);
301 ms.ms_vt = CONSTKoverQ * here->MOStemp;
303 ms.ms_vds = here->MOSicVDS;
304 ms.ms_vgs = here->MOSicVGS;
305 ms.ms_vbs = here->MOSicVBS;
308 ms.ms_vds = -here->MOSicVDS;
309 ms.ms_vgs = -here->MOSicVGS;
310 ms.ms_vbs = -here->MOSicVBS;
312 *(ckt->CKTstate0 + here->MOSvds) = ms.ms_vds;
313 *(ckt->CKTstate0 + here->MOSvgs) = ms.ms_vgs;
314 *(ckt->CKTstate0 + here->MOSvbs) = ms.ms_vbs;
329 ms.ms_vt = CONSTKoverQ * here->MOStemp;
332 ms.ms_vbs = 0;
333 ms.ms_vgs = 0;
334 ms.ms_vds = 0;
335 ms.ms_vbd = 0;
336 ms.ms_vgd = 0;
337 ms.ms_vgb = 0;
343 ms.ms_vbs = -1;
345 ms.ms_vgs = here->MOStVto;
347 ms.ms_vgs = -here->MOStVto;
348 ms.ms_vds = 0;
352 ms.ms_vds = here->MOSicVDS;
353 ms.ms_vgs = here->MOSicVGS;
354 ms.ms_vbs = here->MOSicVBS;
357 ms.ms_vds = -here->MOSicVDS;
358 ms.ms_vgs = -here->MOSicVGS;
359 ms.ms_vbs = -here->MOSicVBS;
362 ms.ms_vbd = ms.ms_vbs - ms.ms_vds;
363 ms.ms_vgd = ms.ms_vgs - ms.ms_vds;
364 ms.ms_vgb = ms.ms_vgs - ms.ms_vbs;
366 mos_iv(ckt,model,here,&ms);
367 mos_load_dc(ckt,model,here,&ms);
376 mos_limiting(ckt,here,ms) in mos_limiting() argument
380 struct mosstuff *ms;
392 mos_fetlim(&ms->ms_vgs,*(ckt->CKTstate0 + here->MOSvgs),ms->ms_von);
393 ms->ms_vds = ms->ms_vgs - ms->ms_vgd;
394 mos_limvds(&ms->ms_vds,*(ckt->CKTstate0 + here->MOSvds));
395 ms->ms_vgd = ms->ms_vgs - ms->ms_vds;
400 mos_fetlim(&ms->ms_vgd,vgdo,ms->ms_von);
401 ms->ms_vds = ms->ms_vgs - ms->ms_vgd;
403 ms->ms_vds = -ms->ms_vds;
404 mos_limvds(&ms->ms_vds,-(*(ckt->CKTstate0 + here->MOSvds)));
405 ms->ms_vds = -ms->ms_vds;
407 ms->ms_vgs = ms->ms_vgd + ms->ms_vds;
409 if (ms->ms_vds >= 0) {
410 check = mos_pnjlim(&ms->ms_vbs,*(ckt->CKTstate0 + here->MOSvbs),
411 ms->ms_vt,here->MOSsourceVcrit);
412 ms->ms_vbd = ms->ms_vbs - ms->ms_vds;
415 check = mos_pnjlim(&ms->ms_vbd,*(ckt->CKTstate0 + here->MOSvbd),
416 ms->ms_vt,here->MOSdrainVcrit);
417 ms->ms_vbs = ms->ms_vbd + ms->ms_vds;
419 ms->ms_vgb = ms->ms_vgs - ms->ms_vbs;
581 mos_bypass(ckt,model,here,ms) in mos_bypass() argument
586 struct mosstuff *ms;
598 delvbs = ms->ms_vbs - *(ckt->CKTstate0 + here->MOSvbs);
599 delvgs = ms->ms_vgs - *(ckt->CKTstate0 + here->MOSvgs);
600 delvds = ms->ms_vds - *(ckt->CKTstate0 + here->MOSvds);
601 delvbd = ms->ms_vbd - *(ckt->CKTstate0 + here->MOSvbd);
602 delvgd = ms->ms_vgd - (*(ckt->CKTstate0 + here->MOSvgs) -
618 A1 = FABS(ms->ms_vbs);
623 A1 = FABS(ms->ms_vbd);
628 A1 = FABS(ms->ms_vgs);
633 A1 = FABS(ms->ms_vds);
661 ms->ms_vbs = *(ckt->CKTstate0 + here->MOSvbs);
662 ms->ms_vgs = *(ckt->CKTstate0 + here->MOSvgs);
663 ms->ms_vds = *(ckt->CKTstate0 + here->MOSvds);
664 ms->ms_vbd = *(ckt->CKTstate0 + here->MOSvbd);
665 ms->ms_vgd = ms->ms_vgs - ms->ms_vds;
666 ms->ms_vgb = ms->ms_vgs - ms->ms_vbs;
668 ms->ms_cdrain = here->MOSmode * (here->MOScd + here->MOScbd);
672 ms->ms_capgs = *(ckt->CKTstate0 + here->MOScapgs) +
676 ms->ms_capgd = *(ckt->CKTstate0 + here->MOScapgd) +
680 ms->ms_capgb = *(ckt->CKTstate0 + here->MOScapgb) +
688 NI_INTEG(ckt,ms->ms_gcgs,ms->ms_ceqgs,ms->ms_capgs,here->MOSqgs);
690 NI_INTEG(ckt,ms->ms_gcgd,ms->ms_ceqgd,ms->ms_capgd,here->MOSqgd);
692 NI_INTEG(ckt,ms->ms_gcgb,ms->ms_ceqgb,ms->ms_capgb,here->MOSqgb);
694 ms->ms_ceqgs +=
696 - ms->ms_gcgs*ms->ms_vgs;
697 ms->ms_ceqgd +=
699 - ms->ms_gcgd*ms->ms_vgd;
700 ms->ms_ceqgb +=
702 - ms->ms_gcgb*ms->ms_vgb;
704 mos_load(ckt,model,here,ms);
707 mos_load_dc(ckt,model,here,ms);
715 mos_iv(ckt,model,here,ms) in mos_iv() argument
720 struct mosstuff *ms;
725 ms->ms_gcgs = 0;
726 ms->ms_ceqgs = 0;
727 ms->ms_gcgd = 0;
728 ms->ms_ceqgd = 0;
729 ms->ms_gcgb = 0;
730 ms->ms_ceqgb = 0;
737 if (ms->ms_vbs <= 0) {
738 here->MOSgbs = here->MOStSourceSatCur/ms->ms_vt;
739 here->MOScbs = here->MOSgbs*ms->ms_vbs;
743 evb = exp(ms->ms_vbs/ms->ms_vt);
745 here->MOStSourceSatCur*evb/ms->ms_vt + ckt->CKTgmin;
748 if (ms->ms_vbd <= 0) {
749 here->MOSgbd = here->MOStDrainSatCur/ms->ms_vt;
750 here->MOScbd = here->MOSgbd *ms->ms_vbd;
754 evb = exp(ms->ms_vbd/ms->ms_vt);
756 here->MOStDrainSatCur*evb/ms->ms_vt + ckt->CKTgmin;
777 if (ms->ms_vds >= 0) {
787 ms->ms_cdrain = MOSeq1(model,here,ms);
789 ms->ms_cdrain = MOSeq2(model,here,ms);
791 ms->ms_cdrain = MOSeq3(model,here,ms);
795 ms->ms_cdrain = cryoMOSeq(model,here,ms);
799 ms->ms_cdrain = MOSeq6(model,here,ms);
804 here->MOSvon = ms->ms_von;
805 here->MOSvdsat = ms->ms_vdsat;
808 here->MOSvon = -ms->ms_von;
809 here->MOSvdsat = -ms->ms_vdsat;
812 here->MOScd = ms->ms_cdrain - here->MOScbd;
814 here->MOScd = -ms->ms_cdrain - here->MOScbd;
819 mos_cap(ckt,model,here,ms) in mos_cap() argument
824 struct mosstuff *ms;
854 if (ms->ms_vbs < here->MOStDepCap) {
855 arg = 1 - ms->ms_vbs/here->MOStBulkPot;
870 ms->ms_vbs*(here->MOSf2s + .5*ms->ms_vbs*here->MOSf3s);
871 here->MOScapbs = here->MOSf2s + here->MOSf3s*ms->ms_vbs;
880 if (ms->ms_vbd < here->MOStDepCap) {
881 arg = 1 - ms->ms_vbd/here->MOStBulkPot;
896 ms->ms_vbd*(here->MOSf2d + .5*ms->ms_vbd*here->MOSf3d);
897 here->MOScapbd = here->MOSf2d + ms->ms_vbd*here->MOSf3d;
916 vgx = ms->ms_vgs;
917 vgy = ms->ms_vgd;
922 vgx = ms->ms_vgd;
923 vgy = ms->ms_vgs;
933 vgxt = vgx - ms->ms_von;
954 if (ms->ms_vdsat <= vxy) {
959 vddif1 = ms->ms_vdsat - vxy;
960 vddif2 = vddif1 + ms->ms_vdsat;
963 P33*(1.0 - ms->ms_vdsat*ms->ms_vdsat*vddif2);
989 ms->ms_capgs = *(ckt->CKTstate0 + here->MOScapgs) +
992 ms->ms_capgd = *(ckt->CKTstate0 + here->MOScapgd) +
995 ms->ms_capgb = *(ckt->CKTstate0 + here->MOScapgb) +
999 *(ckt->CKTstate0 + here->MOSqgs) = ms->ms_capgs*ms->ms_vgs;
1000 *(ckt->CKTstate0 + here->MOSqgd) = ms->ms_capgd*ms->ms_vgd;
1001 *(ckt->CKTstate0 + here->MOSqgb) = ms->ms_capgb*ms->ms_vgb;
1016 ms->ms_capgs = *(ckt->CKTstate0 + here->MOScapgs) +
1019 ms->ms_capgd = *(ckt->CKTstate0 + here->MOScapgd) +
1022 ms->ms_capgb = *(ckt->CKTstate0 + here->MOScapgb) +
1031 (ms->ms_vgs - vgx)*ms->ms_capgs +
1034 (ms->ms_vgd - vgy)*ms->ms_capgd +
1037 (ms->ms_vgb - vxy)*ms->ms_capgb +
1044 mos_integ(ckt,here,ms) in mos_integ() argument
1048 struct mosstuff *ms;
1069 if (ms->ms_capgs == 0)
1071 if (ms->ms_capgd == 0)
1073 if (ms->ms_capgb == 0)
1080 NI_INTEG(ckt,ms->ms_gcgs,ms->ms_ceqgs,ms->ms_capgs,here->MOSqgs);
1082 NI_INTEG(ckt,ms->ms_gcgd,ms->ms_ceqgd,ms->ms_capgd,here->MOSqgd);
1084 NI_INTEG(ckt,ms->ms_gcgb,ms->ms_ceqgb,ms->ms_capgb,here->MOSqgb);
1086 ms->ms_ceqgs +=
1088 - ms->ms_gcgs*ms->ms_vgs;
1089 ms->ms_ceqgd +=
1091 - ms->ms_gcgd*ms->ms_vgd;
1092 ms->ms_ceqgb +=
1094 - ms->ms_gcgb*ms->ms_vgb;
1101 mos_load(ckt,model,here,ms) in mos_load() argument
1106 struct mosstuff *ms;
1115 *(ckt->CKTstate0 + here->MOSvbs) = ms->ms_vbs;
1116 *(ckt->CKTstate0 + here->MOSvbd) = ms->ms_vbd;
1117 *(ckt->CKTstate0 + here->MOSvgs) = ms->ms_vgs;
1118 *(ckt->CKTstate0 + here->MOSvds) = ms->ms_vds;
1124 ceqbs = here->MOScbs - (here->MOSgbs - ckt->CKTgmin)*ms->ms_vbs;
1125 ceqbd = here->MOScbd - (here->MOSgbd - ckt->CKTgmin)*ms->ms_vbd;
1128 cdreq = ms->ms_cdrain - here->MOSgds*ms->ms_vds -
1129 here->MOSgm*ms->ms_vgs - here->MOSgmbs*ms->ms_vbs;
1132 cdreq = -(ms->ms_cdrain + here->MOSgds*ms->ms_vds -
1133 here->MOSgm*ms->ms_vgd - here->MOSgmbs*ms->ms_vbd);
1139 ms->ms_ceqgs + ms->ms_ceqgb + ms->ms_ceqgd;
1140 *(ckt->CKTrhs + here->MOSbNode) -= ceqbs + ceqbd - ms->ms_ceqgb;
1141 *(ckt->CKTrhs + here->MOSdNodePrime) += ceqbd - cdreq + ms->ms_ceqgd;
1142 *(ckt->CKTrhs + here->MOSsNodePrime) += cdreq + ceqbs + ms->ms_ceqgs;
1147 ms->ms_ceqgs + ms->ms_ceqgb + ms->ms_ceqgd;
1148 *(ckt->CKTrhs + here->MOSbNode) += ceqbs + ceqbd - ms->ms_ceqgb;
1149 *(ckt->CKTrhs + here->MOSdNodePrime) -= ceqbd - cdreq + ms->ms_ceqgd;
1150 *(ckt->CKTrhs + here->MOSsNodePrime) -= cdreq + ceqbs + ms->ms_ceqgs;
1173 *(here->MOSGgPtr) += ms->ms_gcgd + ms->ms_gcgs + ms->ms_gcgb;
1175 *(here->MOSBbPtr) += here->MOSgbd + here->MOSgbs + ms->ms_gcgb;
1177 *(here->MOSGbPtr) -= ms->ms_gcgb;
1178 *(here->MOSGdpPtr) -= ms->ms_gcgd;
1179 *(here->MOSGspPtr) -= ms->ms_gcgs;
1181 *(here->MOSBgPtr) -= ms->ms_gcgb;
1189 here->MOSgbd + ms->ms_gcgd;
1192 here->MOSgbs + here->MOSgm + here->MOSgmbs + ms->ms_gcgs;
1194 *(here->MOSDPgPtr) += here->MOSgm - ms->ms_gcgd;
1197 *(here->MOSSPgPtr) -= here->MOSgm + ms->ms_gcgs;
1203 here->MOSgbd + here->MOSgm + here->MOSgmbs + ms->ms_gcgd;
1206 here->MOSgbs + ms->ms_gcgs;
1208 *(here->MOSDPgPtr) -= here->MOSgm + ms->ms_gcgd;
1211 *(here->MOSSPgPtr) -= -here->MOSgm + ms->ms_gcgs;
1219 mos_load_dc(ckt,model,here,ms) in mos_load_dc() argument
1224 struct mosstuff *ms;
1237 *(ckt->CKTstate0 + here->MOSvbs) = ms->ms_vbs;
1238 *(ckt->CKTstate0 + here->MOSvbd) = ms->ms_vbd;
1239 *(ckt->CKTstate0 + here->MOSvgs) = ms->ms_vgs;
1240 *(ckt->CKTstate0 + here->MOSvds) = ms->ms_vds;
1246 ceqbs = here->MOScbs - (here->MOSgbs - ckt->CKTgmin)*ms->ms_vbs;
1247 ceqbd = here->MOScbd - (here->MOSgbd - ckt->CKTgmin)*ms->ms_vbd;
1250 cdreq = ms->ms_cdrain - here->MOSgds*ms->ms_vds -
1251 here->MOSgm*ms->ms_vgs - here->MOSgmbs*ms->ms_vbs;
1254 cdreq = -(ms->ms_cdrain + here->MOSgds*ms->ms_vds -
1255 here->MOSgm*ms->ms_vgd - here->MOSgmbs*ms->ms_vbd);