⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mos1dist.c

📁 spice中支持多层次元件模型仿真的可单独运行的插件源码
💻 C
📖 第 1 页 / 共 3 页
字号:
		/* capgs over */		/* loading capgd term */		temp = -ckt->CKTomega *			    D1iF12(here->capgd2,						r1h1x - r1h1z,						i1h1x - i1h1z,						r1hm2x - r1hm2z,						i1hm2x - i1hm2z);		itemp = ckt->CKTomega *			    D1nF12(here->capgd2,						r1h1x - r1h1z,						i1h1x - i1h1z,						r1hm2x - r1hm2z,						i1hm2x - i1hm2z);	    *(ckt->CKTrhs + (here->MOS1gNode)) -= temp;	    *(ckt->CKTirhs + (here->MOS1gNode)) -= itemp;	    *(ckt->CKTrhs + (here->MOS1dNodePrime)) += temp;	    *(ckt->CKTirhs + (here->MOS1dNodePrime)) += itemp;		/* capgd over */		/* loading capgb term */		temp = -ckt->CKTomega *			    D1iF12(here->capgb2,						r1h1x - r1h1y,						i1h1x - i1h1y,						r1hm2x - r1hm2y,						i1hm2x - i1hm2y);		itemp = ckt->CKTomega *			    D1nF12(here->capgb2,						r1h1x - r1h1y,						i1h1x - i1h1y,						r1hm2x - r1hm2y,						i1hm2x - i1hm2y);	    *(ckt->CKTrhs + (here->MOS1gNode)) -= temp;	    *(ckt->CKTirhs + (here->MOS1gNode)) -= itemp;	    *(ckt->CKTrhs + (here->MOS1bNode)) += temp;	    *(ckt->CKTirhs + (here->MOS1bNode)) += itemp;		/* capgb over */		/* loading capbs term */		temp = -ckt->CKTomega *			    D1iF12(here->capbs2,						r1h1y,						i1h1y,						r1hm2y,						i1hm2y);		itemp = ckt->CKTomega *			    D1nF12(here->capbs2,						r1h1y,						i1h1y,						r1hm2y,						i1hm2y);	    *(ckt->CKTrhs + (here->MOS1bNode)) -= temp;	    *(ckt->CKTirhs + (here->MOS1bNode)) -= itemp;	    *(ckt->CKTrhs + (here->MOS1sNodePrime)) += temp;	    *(ckt->CKTirhs + (here->MOS1sNodePrime)) += itemp;		/* capbs over */		/* loading capbd term */		temp = -ckt->CKTomega *			    D1iF12(here->capbd2,						r1h1y - r1h1z,						i1h1y - i1h1z,						r1hm2y - r1hm2z,						i1hm2y - i1hm2z);		itemp = ckt->CKTomega *			    D1nF12(here->capbd2,						r1h1y - r1h1z,						i1h1y - i1h1z,						r1hm2y - r1hm2z,						i1hm2y - i1hm2z);	    *(ckt->CKTrhs + (here->MOS1bNode)) -= temp;	    *(ckt->CKTirhs + (here->MOS1bNode)) -= itemp;	    *(ckt->CKTrhs + (here->MOS1dNodePrime)) += temp;	    *(ckt->CKTirhs + (here->MOS1dNodePrime)) += itemp;		/* capbd over */	/* all done */      break;    case D_2F1MF2:	/* x = vgs, y = vbs z = vds */	    /* getting first order (linear) Volterra kernel */	    r1h1x = *(job->r1H1ptr + (here->MOS1gNode)) -			*(job->r1H1ptr + (here->MOS1sNodePrime));	    i1h1x = *(job->i1H1ptr + (here->MOS1gNode)) -			*(job->i1H1ptr + (here->MOS1sNodePrime));	    r1h1y = *(job->r1H1ptr + (here->MOS1bNode)) -			*(job->r1H1ptr + (here->MOS1sNodePrime));	    i1h1y = *(job->i1H1ptr + (here->MOS1bNode)) -			*(job->i1H1ptr + (here->MOS1sNodePrime));	    r1h1z = *(job->r1H1ptr + (here->MOS1dNodePrime)) -			*(job->r1H1ptr + (here->MOS1sNodePrime));	    i1h1z = *(job->i1H1ptr + (here->MOS1dNodePrime)) -			*(job->i1H1ptr + (here->MOS1sNodePrime));	    r1hm2x = *(job->r1H2ptr + (here->MOS1gNode)) -			*(job->r1H2ptr + (here->MOS1sNodePrime));	    i1hm2x = -(*(job->i1H2ptr + (here->MOS1gNode)) -			*(job->i1H2ptr + (here->MOS1sNodePrime)));	    r1hm2y = *(job->r1H2ptr + (here->MOS1bNode)) -			*(job->r1H2ptr + (here->MOS1sNodePrime));	    i1hm2y = -(*(job->i1H2ptr + (here->MOS1bNode)) -			*(job->i1H2ptr + (here->MOS1sNodePrime)));	    r1hm2z = *(job->r1H2ptr + (here->MOS1dNodePrime)) -			*(job->r1H2ptr + (here->MOS1sNodePrime));	i1hm2z = -(*(job->i1H2ptr + (here->MOS1dNodePrime)) -			*(job->i1H2ptr + (here->MOS1sNodePrime)));	    r2h11x = *(job->r1H1ptr + (here->MOS1gNode)) -			*(job->r1H1ptr + (here->MOS1sNodePrime));	    i2h11x = *(job->i1H1ptr + (here->MOS1gNode)) -			*(job->i1H1ptr + (here->MOS1sNodePrime));	    r2h11y = *(job->r1H1ptr + (here->MOS1bNode)) -			*(job->r1H1ptr + (here->MOS1sNodePrime));	    i2h11y = *(job->i1H1ptr + (here->MOS1bNode)) -			*(job->i1H1ptr + (here->MOS1sNodePrime));	    r2h11z = *(job->r1H1ptr + (here->MOS1dNodePrime)) -			*(job->r1H1ptr + (here->MOS1sNodePrime));	    i2h11z = *(job->i1H1ptr + (here->MOS1dNodePrime)) -			*(job->i1H1ptr + (here->MOS1sNodePrime));    r2h1m2x = *(job->r2H1m2ptr + (here->MOS1gNode)) -		*(job->r2H1m2ptr + (here->MOS1sNodePrime));    i2h1m2x = *(job->i2H1m2ptr + (here->MOS1gNode)) -		*(job->i2H1m2ptr + (here->MOS1sNodePrime));    r2h1m2y = *(job->r2H1m2ptr + (here->MOS1bNode)) -		*(job->r2H1m2ptr + (here->MOS1sNodePrime));    i2h1m2y = *(job->i2H1m2ptr + (here->MOS1bNode)) -		*(job->i2H1m2ptr + (here->MOS1sNodePrime));r2h1m2z = *(job->r2H1m2ptr + (here->MOS1dNodePrime)) -		*(job->r2H1m2ptr + (here->MOS1sNodePrime));i2h1m2z = *(job->i2H1m2ptr + (here->MOS1dNodePrime)) -		*(job->i2H1m2ptr + (here->MOS1sNodePrime));		/* loading starts here */		/* loading cdrain term  */pass.cxx = here->cdr_x2;pass.cyy = here->cdr_y2;pass.czz = here->cdr_z2;pass.cxy = here->cdr_xy;pass.cyz = here->cdr_yz;pass.cxz = here->cdr_xz;pass.cxxx = here->cdr_x3;pass.cyyy = here->cdr_y3;pass.czzz = here->cdr_z3;pass.cxxy = here->cdr_x2y;pass.cxxz = here->cdr_x2z;pass.cxyy = here->cdr_xy2;pass.cyyz = here->cdr_y2z;pass.cxzz = here->cdr_xz2;pass.cyzz = here->cdr_yz2;pass.cxyz = here->cdr_xyz;pass.r1h1x = r1h1x;pass.i1h1x = i1h1x;pass.r1h1y = r1h1y;pass.i1h1y = i1h1y;pass.r1h1z = r1h1z;pass.i1h1z = i1h1z;pass.r1h2x = r1hm2x;pass.i1h2x = i1hm2x;pass.r1h2y = r1hm2y;pass.i1h2y = i1hm2y;pass.r1h2z = r1hm2z;pass.i1h2z = i1hm2z;pass.r2h11x = r2h11x;pass.i2h11x = i2h11x;pass.r2h11y = r2h11y;pass.i2h11y = i2h11y;pass.r2h11z = r2h11z;pass.i2h11z = i2h11z;pass.h2f1f2x = r2h1m2x;pass.ih2f1f2x = i2h1m2x;pass.h2f1f2y = r2h1m2y;pass.ih2f1f2y = i2h1m2y;pass.h2f1f2z = r2h1m2z;pass.ih2f1f2z = i2h1m2z;	temp = DFn2F12(&pass);	itemp = DFi2F12(&pass);	    *(ckt->CKTrhs + (here->MOS1dNodePrime)) -= temp;	    *(ckt->CKTirhs + (here->MOS1dNodePrime)) -= itemp;	    *(ckt->CKTrhs + (here->MOS1sNodePrime)) += temp;	    *(ckt->CKTirhs + (here->MOS1sNodePrime)) += itemp;		    /* cdrain term over */		/* loading gbs term */		temp = D1n2F12(here->gbs2,						here->gbs3,						r1h1y,						i1h1y,						r1hm2y,						i1hm2y,						r2h11y,						i2h11y,						r2h1m2y,						i2h1m2y);		itemp = D1i2F12(here->gbs2,						here->gbs3,						r1h1y,						i1h1y,						r1hm2y,						i1hm2y,						r2h11y,						i2h11y,						r2h1m2y,						i2h1m2y);	    *(ckt->CKTrhs + (here->MOS1bNode)) -= temp;	    *(ckt->CKTirhs + (here->MOS1bNode)) -= itemp;	    *(ckt->CKTrhs + (here->MOS1sNodePrime)) += temp;	    *(ckt->CKTirhs + (here->MOS1sNodePrime)) += itemp;		/* gbs over */		/* loading gbd term */		temp = D1n2F12(here->gbd2,						here->gbd3,						r1h1y - r1h1z,						i1h1y - i1h1z,						r1hm2y - r1hm2z,						i1hm2y - i1hm2z,						r2h11y - r2h11z,						i2h11y - i2h11z,					    r2h1m2y - r2h1m2z,					i2h1m2y - i2h1m2z);		itemp = D1i2F12(here->gbd2,						here->gbd3,						r1h1y - r1h1z,						i1h1y - i1h1z,						r1hm2y - r1hm2z,					    i1hm2y - i1hm2z,						r2h11y - r2h11z,						i2h11y - i2h11z,					    r2h1m2y - r2h1m2z,					i2h1m2y - i2h1m2z);	    *(ckt->CKTrhs + (here->MOS1bNode)) -= temp;	    *(ckt->CKTirhs + (here->MOS1bNode)) -= itemp;	    *(ckt->CKTrhs + (here->MOS1dNodePrime)) += temp;	    *(ckt->CKTirhs + (here->MOS1dNodePrime)) += itemp;		/* gbd over */		/* loading capgs term */		temp = -ckt->CKTomega *			D1i2F12(here->capgs2,						here->capgs3,						r1h1x,						i1h1x,						r1hm2x,						i1hm2x,						r2h11x,						i2h11x,						r2h1m2x,						i2h1m2x);		itemp = ckt->CKTomega *			D1n2F12(here->capgs2,						here->capgs3,						r1h1x,						i1h1x,						r1hm2x,						i1hm2x,						r2h11x,						i2h11x,						r2h1m2x,						i2h1m2x);	    *(ckt->CKTrhs + (here->MOS1gNode)) -= temp;	    *(ckt->CKTirhs + (here->MOS1gNode)) -= itemp;	    *(ckt->CKTrhs + (here->MOS1sNodePrime)) += temp;	    *(ckt->CKTirhs + (here->MOS1sNodePrime)) += itemp;		/* capgs over */		/* loading capgd term */		temp = -ckt->CKTomega *			D1i2F12(here->capgd2,						here->capgd3,						r1h1x - r1h1z,						i1h1x - i1h1z,						r1hm2x - r1hm2z,					    i1hm2x - i1hm2z,						r2h11x - r2h11z,						i2h11x - i2h11z,					    r2h1m2x - r2h1m2z,					i2h1m2x - i2h1m2z);		itemp = ckt->CKTomega *			D1n2F12(here->capgd2,						here->capgd3,						r1h1x - r1h1z,						i1h1x - i1h1z,						r1hm2x - r1hm2z,					    i1hm2x - i1hm2z,						r2h11x - r2h11z,						i2h11x - i2h11z,					    r2h1m2x - r2h1m2z,					i2h1m2x - i2h1m2z);	    *(ckt->CKTrhs + (here->MOS1gNode)) -= temp;	    *(ckt->CKTirhs + (here->MOS1gNode)) -= itemp;	    *(ckt->CKTrhs + (here->MOS1dNodePrime)) += temp;	    *(ckt->CKTirhs + (here->MOS1dNodePrime)) += itemp;		/* capgd over */		/* loading capgb term */		temp = -ckt->CKTomega *			D1i2F12(here->capgb2,						here->capgb3,						r1h1x - r1h1y,						i1h1x - i1h1y,						r1hm2x - r1hm2y,					    i1hm2x - i1hm2y,						r2h11x - r2h11y,						i2h11x - i2h11y,					    r2h1m2x - r2h1m2y,					i2h1m2x - i2h1m2y);		itemp = ckt->CKTomega *			D1n2F12(here->capgb2,						here->capgb3,						r1h1x - r1h1y,						i1h1x - i1h1y,						r1hm2x - r1hm2y,					    i1hm2x - i1hm2y,						r2h11x - r2h11y,						i2h11x - i2h11y,					    r2h1m2x - r2h1m2y,					i2h1m2x - i2h1m2y);	    *(ckt->CKTrhs + (here->MOS1gNode)) -= temp;	    *(ckt->CKTirhs + (here->MOS1gNode)) -= itemp;	    *(ckt->CKTrhs + (here->MOS1bNode)) += temp;	    *(ckt->CKTirhs + (here->MOS1bNode)) += itemp;		/* capgb over */		/* loading capbs term */		temp = -ckt->CKTomega *			D1i2F12(here->capbs2,						here->capbs3,						r1h1y,						i1h1y,						r1hm2y,						i1hm2y,						r2h11y,						i2h11y,						r2h1m2y,						i2h1m2y);		itemp = ckt->CKTomega *			D1n2F12(here->capbs2,						here->capbs3,						r1h1y,						i1h1y,						r1hm2y,						i1hm2y,						r2h11y,						i2h11y,						r2h1m2y,						i2h1m2y);	    *(ckt->CKTrhs + (here->MOS1bNode)) -= temp;	    *(ckt->CKTirhs + (here->MOS1bNode)) -= itemp;	    *(ckt->CKTrhs + (here->MOS1sNodePrime)) += temp;	    *(ckt->CKTirhs + (here->MOS1sNodePrime)) += itemp;		/* capbs over */		/* loading capbd term */		temp = -ckt->CKTomega *			D1i2F12(here->capbd2,						here->capbd3,						r1h1y - r1h1z,						i1h1y - i1h1z,						r1hm2y - r1hm2z,					    i1hm2y - i1hm2z,						r2h11y - r2h11z,						i2h11y - i2h11z,					    r2h1m2y - r2h1m2z,					i2h1m2y - i2h1m2z);		itemp = ckt->CKTomega *			D1n2F12(here->capbd2,						here->capbd3,						r1h1y - r1h1z,						i1h1y - i1h1z,						r1hm2y - r1hm2z,					    i1hm2y - i1hm2z,						r2h11y - r2h11z,						i2h11y - i2h11z,					    r2h1m2y - r2h1m2z,					i2h1m2y - i2h1m2z);	    *(ckt->CKTrhs + (here->MOS1bNode)) -= temp;	    *(ckt->CKTirhs + (here->MOS1bNode)) -= itemp;	    *(ckt->CKTrhs + (here->MOS1dNodePrime)) += temp;	    *(ckt->CKTirhs + (here->MOS1dNodePrime)) += itemp;		/* capbd over */	/* all done */      break;    default:;    }  }}return(OK);}  else    return(E_BADPARM);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -