18 #define P16 .16666666667 19 #define MOD_D_DELTA 1e-5 25 double,
double,
double);
55 double lgbs, lgbs2, lgbs3;
56 double lgbd, lgbd2, lgbd3;
57 double lcapbs, lcapbs2, lcapbs3;
58 double lcapbd, lcapbd2, lcapbd3;
106 lgbs3 = lgbs2/(ms.
ms_vt*3);
110 lgbs3 = -lgbs2/(ms.
ms_vt*3);
123 lgbd3 = lgbd2/(ms.
ms_vt*3);
127 lgbd3 = -lgbd2/(ms.
ms_vt*3);
163 lcapbs3 = here->
MOSCbs*sarg*
174 lcapbs2 = 0.5*here->
MOSf3s;
191 lcapbd3 = here->
MOSCbd*sarg*
202 lcapbd2 = 0.5*here->
MOSf3d;
227 if (vgst <= -.5*here->MOStPhi) {
230 else if (vgst <= 0) {
243 double vddif, vddif1, vddif2, x1, x2;
247 vddif2 = vddif*vddif;
248 x1 = 1/(3*vddif*vddif2);
249 x2 = 1/(9*vddif2*vddif2);
267 here->capbs2 = lcapbs2;
268 here->capbs3 = lcapbs3;
269 here->capbd2 = lcapbd2;
270 here->capbd3 = lcapbd3;
275 here->capgb2 = lcapgb2;
276 here->capgb3 = lcapgb3;
286 here->capgs2 = lcapgs2;
287 here->capgs3 = lcapgs3;
288 here->capgd2 = lcapgd2;
289 here->capgd3 = lcapgd3;
292 here->cdr_x2 = .5*cd.
d2_p2;
293 here->cdr_y2 = .5*cd.
d2_q2;
294 here->cdr_z2 = .5*cd.
d2_r2;
295 here->cdr_xy = cd.
d2_pq;
296 here->cdr_yz = cd.
d2_qr;
297 here->cdr_xz = cd.
d2_pr;
300 here->cdr_x2 = -.5*cd.
d2_p2;
301 here->cdr_y2 = -.5*cd.
d2_q2;
302 here->cdr_z2 = -.5*cd.
d2_r2;
303 here->cdr_xy = -cd.
d2_pq;
304 here->cdr_yz = -cd.
d2_qr;
305 here->cdr_xz = -cd.
d2_pr;
310 here->cdr_x2z = .5*cd.
d3_p2r;
311 here->cdr_x2y = .5*cd.
d3_p2q;
312 here->cdr_y2z = .5*cd.
d3_q2r;
313 here->cdr_xy2 = .5*cd.
d3_pq2;
314 here->cdr_xz2 = .5*cd.
d3_pr2;
315 here->cdr_yz2 = .5*cd.
d3_qr2;
316 here->cdr_xyz = cd.
d3_pqr;
322 here->capgs2 = lcapgd2;
323 here->capgs3 = lcapgd3;
324 here->capgd2 = lcapgs2;
325 here->capgd3 = lcapgs3;
328 here->cdr_x2 = -.5*cd.
d2_p2;
329 here->cdr_y2 = -.5*cd.
d2_q2;
332 here->cdr_xy = -cd.
d2_pq;
337 here->cdr_x2 = .5*cd.
d2_p2;
338 here->cdr_y2 = .5*cd.
d2_q2;
341 here->cdr_xy = cd.
d2_pq;
353 here->cdr_x2y = -.5*cd.
d3_p2q;
355 here->cdr_xy2 = -.5*cd.
d3_pq2;
379 double a222 =
mos_exec(model,here,ms,0.0,0.0,0.0);
381 double a322 =
mos_exec(model,here,ms,delta,0.0,0.0);
382 double a232 =
mos_exec(model,here,ms,0.0,delta,0.0);
383 double a223 =
mos_exec(model,here,ms,0.0,0.0,delta);
385 double a122 =
mos_exec(model,here,ms,-delta,0.0,0.0);
386 double a212 =
mos_exec(model,here,ms,0.0,-delta,0.0);
387 double a221 =
mos_exec(model,here,ms,0.0,0.0,-delta);
389 double a233 =
mos_exec(model,here,ms,0.0,delta,delta);
390 double a323 =
mos_exec(model,here,ms,delta,0.0,delta);
391 double a332 =
mos_exec(model,here,ms,delta,delta,0.0);
393 double a333 =
mos_exec(model,here,ms,delta,delta,delta);
395 double a123 =
mos_exec(model,here,ms,-delta,0.0,delta);
396 double a132 =
mos_exec(model,here,ms,-delta,delta,0.0);
397 double a213 =
mos_exec(model,here,ms,0.0,-delta,delta);
398 double a312 =
mos_exec(model,here,ms,delta,-delta,0.0);
399 double a321 =
mos_exec(model,here,ms,delta,0.0,-delta);
400 double a231 =
mos_exec(model,here,ms,0.0,delta,-delta);
403 double a022 =
mos_exec(model,here,ms,-(delta+delta),0.0,0.0);
404 double a202 =
mos_exec(model,here,ms,0.0,-(delta+delta),0.0);
405 double a220 =
mos_exec(model,here,ms,0.0,0.0,-(delta+delta));
407 cd->
d2_p2 = ((a322 - a222)*dd - (a222 - a122)*dd)*dd;
408 cd->
d2_q2 = ((a232 - a222)*dd - (a222 - a212)*dd)*dd;
409 cd->
d2_r2 = ((a223 - a222)*dd - (a222 - a221)*dd)*dd;
410 cd->
d2_pq = ((a332 - a322)*dd - (a232 - a222)*dd)*dd;
411 cd->
d2_qr = ((a233 - a232)*dd - (a223 - a222)*dd)*dd;
412 cd->
d2_pr = ((a323 - a322)*dd - (a223 - a222)*dd)*dd;
414 cd->
d3_p3 = (((a322 - a222)*dd - (a222 - a122)*dd)*dd -
415 ((a222 - a122)*dd - (a122 - a022)*dd)*dd)*dd;
416 cd->
d3_q3 = (((a232 - a222)*dd - (a222 - a212)*dd)*dd -
417 ((a222 - a212)*dd - (a212 - a202)*dd)*dd)*dd;
418 cd->
d3_r3 = (((a223 - a222)*dd - (a222 - a221)*dd)*dd -
419 ((a222 - a221)*dd - (a221 - a220)*dd)*dd)*dd;
421 cd->
d3_p2r = (((a323 - a223)*dd - (a223 - a123)*dd)*dd -
422 ((a322 - a222)*dd - (a222 - a122)*dd)*dd)*dd;
424 cd->
d3_p2q = (((a332 - a232)*dd - (a232 - a132)*dd)*dd -
425 ((a322 - a222)*dd - (a222 - a122)*dd)*dd)*dd;
427 cd->
d3_q2r = (((a233 - a223)*dd - (a223 - a213)*dd)*dd -
428 ((a232 - a222)*dd - (a222 - a212)*dd)*dd)*dd;
430 cd->
d3_pq2 = (((a332 - a232)*dd - (a322 - a222)*dd)*dd -
431 ((a322 - a222)*dd - (a312 - a212)*dd)*dd)*dd;
433 cd->
d3_pr2 = (((a323 - a223)*dd - (a322 - a222)*dd)*dd -
434 ((a322 - a222)*dd - (a321 - a221)*dd)*dd)*dd;
436 cd->
d3_qr2 = (((a233 - a223)*dd - (a232 - a222)*dd)*dd -
437 ((a232 - a222)*dd - (a231 - a221)*dd)*dd)*dd;
439 cd->
d3_pqr = (((a333 - a233)*dd - (a323 - a223)*dd)*dd -
440 ((a332 - a232)*dd - (a322 - a222)*dd)*dd)*dd;
451 double dvgs, dvbs, dvds;
453 double vgs, vbs, vds;
466 if (model->MOSlevel == 1)
468 else if (model->MOSlevel == 2)
471 else if (model->MOSlevel == 8)
struct sMOSmodel * MOSnextModel
MOSinstance * MOSinstances
double MOSbulkJctBotGradingCoeff
double MOSbulkJctSideGradingCoeff
#define SARGS(arg, bot, side, sarg, sargsw)
int MOSdSetup(GENmodel *inModel, CKTcircuit *ckt)
struct sMOSinstance * MOSnextInstance