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

📄 b1disto.c

📁 spice中支持多层次元件模型仿真的可单独运行的插件源码
💻 C
📖 第 1 页 / 共 3 页
字号:
        here->qd_z2,        here->qd_xy,        here->qd_yz,        here->qd_xz,        here->qd_x3,        here->qd_y3,        here->qd_z3,        here->qd_x2y,        here->qd_x2z,        here->qd_xy2,        here->qd_y2z,        here->qd_xz2,        here->qd_yz2,        here->qd_xyz,        r1h1x,        i1h1x,        r1h1y,        i1h1y,        r1h1z,        i1h1z,        r2h11x,        i2h11x,        r2h11y,        i2h11y,        r2h11z,        i2h11z);        *(ckt->CKTrhs + here->B1dNodePrime) -= temp;        *(ckt->CKTirhs + here->B1dNodePrime) -= itemp;        *(ckt->CKTrhs + here->B1sNodePrime) += temp;        *(ckt->CKTirhs + here->B1sNodePrime) += itemp;        /* qd term over */        /* loading here->B1gbs term */        r1h1x = *(job->r1H1ptr + here->B1bNode) -            *(job->r1H1ptr + here->B1sNodePrime);        i1h1x = *(job->i1H1ptr + here->B1bNode) -            *(job->i1H1ptr + here->B1sNodePrime);        r2h11x = *(job->r2H11ptr + here->B1bNode) -            *(job->r2H11ptr + here->B1sNodePrime);        i2h11x = *(job->i2H11ptr + here->B1bNode) -            *(job->i2H11ptr + here->B1sNodePrime);        /* now r1h1x = vbs */        temp = D1n3F1(here->gbs2,        here->gbs3,        r1h1x,        i1h1x,        r2h11x,        i2h11x);        itemp = D1i3F1(here->gbs2,        here->gbs3,        r1h1x,        i1h1x,        r2h11x,        i2h11x);        *(ckt->CKTrhs + here->B1bNode) -= temp;        *(ckt->CKTirhs + here->B1bNode) -= itemp;        *(ckt->CKTrhs + here->B1sNodePrime) += temp;        *(ckt->CKTirhs + here->B1sNodePrime) += itemp;        /* here->B1gbs term over */        /* loading here->B1gbd term */        r1h1x = *(job->r1H1ptr + here->B1bNode) -            *(job->r1H1ptr + here->B1dNodePrime);        i1h1x = *(job->i1H1ptr + here->B1bNode) -            *(job->i1H1ptr + here->B1dNodePrime);        r2h11x = *(job->r2H11ptr + here->B1bNode) -            *(job->r2H11ptr + here->B1dNodePrime);        i2h11x = *(job->i2H11ptr + here->B1bNode) -            *(job->i2H11ptr + here->B1dNodePrime);        /* now r1h1x = vbd */        temp = D1n3F1(here->gbd2,        here->gbd3,        r1h1x,        i1h1x,        r2h11x,        i2h11x);        itemp = D1i3F1(here->gbd2,        here->gbd3,        r1h1x,        i1h1x,        r2h11x,        i2h11x);        *(ckt->CKTrhs + here->B1bNode) -= temp;        *(ckt->CKTirhs + here->B1bNode) -= itemp;        *(ckt->CKTrhs + here->B1dNodePrime) += temp;        *(ckt->CKTirhs + here->B1dNodePrime) += itemp;        /* here->B1gbd term over */        /* all done */      }      break;    case D_F1PF2:      /* from now on, in the 3-var case, x=vgs,y=vbs,z=vds */      {        /* draincurrent term */        r1h1x = *(job->r1H1ptr + here->B1gNode) -             *(job->r1H1ptr + here->B1sNodePrime);        i1h1x = *(job->i1H1ptr + here->B1gNode) -             *(job->i1H1ptr + here->B1sNodePrime);        r1h1y = *(job->r1H1ptr + here->B1bNode) -            *(job->r1H1ptr + here->B1sNodePrime);        i1h1y = *(job->i1H1ptr + here->B1bNode) -            *(job->i1H1ptr + here->B1sNodePrime);        r1h1z = *(job->r1H1ptr + here->B1dNodePrime) -            *(job->r1H1ptr + here->B1sNodePrime);        i1h1z = *(job->i1H1ptr + here->B1dNodePrime) -            *(job->i1H1ptr + here->B1sNodePrime);        r1h2x = *(job->r1H2ptr + here->B1gNode) -             *(job->r1H2ptr + here->B1sNodePrime);        i1h2x = (*(job->i1H2ptr + here->B1gNode) -             *(job->i1H2ptr + here->B1sNodePrime));        r1h2y = *(job->r1H2ptr + here->B1bNode) -            *(job->r1H2ptr + here->B1sNodePrime);        i1h2y = (*(job->i1H2ptr + here->B1bNode) -            *(job->i1H2ptr + here->B1sNodePrime));        r1h2z = *(job->r1H2ptr + here->B1dNodePrime) -            *(job->r1H2ptr + here->B1sNodePrime);        i1h2z = (*(job->i1H2ptr + here->B1dNodePrime) -            *(job->i1H2ptr + here->B1sNodePrime));        /* draincurrent is a function of vgs,vbs,and vds;         * have got their linear kernels; now to call         * load functions          */                 temp = DFnF12(here->DrC_x2,         here->DrC_y2,         here->DrC_z2,         here->DrC_xy,         here->DrC_yz,         here->DrC_xz,         r1h1x,         i1h1x,         r1h1y,         i1h1y,         r1h1z,         i1h1z,         r1h2x,         i1h2x,         r1h2y,         i1h2y,         r1h2z,         i1h2z);                 itemp = DFiF12(here->DrC_x2,         here->DrC_y2,         here->DrC_z2,         here->DrC_xy,         here->DrC_yz,         here->DrC_xz,         r1h1x,         i1h1x,         r1h1y,         i1h1y,         r1h1z,         i1h1z,         r1h2x,         i1h2x,         r1h2y,         i1h2y,         r1h2z,         i1h2z);                 *(ckt->CKTrhs + here->B1dNodePrime) -= temp;         *(ckt->CKTirhs + here->B1dNodePrime) -= itemp;                 *(ckt->CKTrhs + here->B1sNodePrime) += temp;         *(ckt->CKTirhs + here->B1sNodePrime) += itemp;                 /* draincurrent term loading over */        /* loading qg term */        /* kernels for vgs,vbs and vds already set up */        temp = -ckt->CKTomega * DFiF12(here->qg_x2,        here->qg_y2,        here->qg_z2,        here->qg_xy,        here->qg_yz,        here->qg_xz,        r1h1x,        i1h1x,        r1h1y,        i1h1y,        r1h1z,        i1h1z,        r1h2x,        i1h2x,        r1h2y,        i1h2y,        r1h2z,        i1h2z);        itemp = ckt->CKTomega * DFnF12(here->qg_x2,        here->qg_y2,        here->qg_z2,        here->qg_xy,        here->qg_yz,        here->qg_xz,        r1h1x,        i1h1x,        r1h1y,        i1h1y,        r1h1z,        i1h1z,        r1h2x,        i1h2x,        r1h2y,        i1h2y,        r1h2z,        i1h2z);        *(ckt->CKTrhs + here->B1gNode) -= temp;        *(ckt->CKTirhs + here->B1gNode) -= itemp;        *(ckt->CKTrhs + here->B1sNodePrime) += temp;        *(ckt->CKTirhs + here->B1sNodePrime) += itemp;        /* qg term over */        /* loading qb term */        /* kernels for vgs,vbs and vds already set up */        temp = -ckt->CKTomega * DFiF12(here->qb_x2,        here->qb_y2, /* XXX Bug fixed: fewer arguments passed than declared */        here->qb_z2,        here->qb_xy,        here->qb_yz,        here->qb_xz,        r1h1x,        i1h1x,        r1h1y,        i1h1y,        r1h1z,        i1h1z,        r1h2x,        i1h2x,        r1h2y,        i1h2y,        r1h2z,        i1h2z);        itemp = ckt->CKTomega * DFnF12(here->qb_x2,        here->qb_y2,        here->qb_z2,        here->qb_xy,        here->qb_yz,        here->qb_xz,        r1h1x,        i1h1x,        r1h1y,        i1h1y,        r1h1z,        i1h1z,        r1h2x,        i1h2x,        r1h2y,        i1h2y,        r1h2z,        i1h2z);        *(ckt->CKTrhs + here->B1bNode) -= temp;        *(ckt->CKTirhs + here->B1bNode) -= itemp;        *(ckt->CKTrhs + here->B1sNodePrime) += temp;        *(ckt->CKTirhs + here->B1sNodePrime) += itemp;        /* qb term over */        /* loading qd term */        /* kernels for vgs,vbs and vds already set up */        temp = -ckt->CKTomega * DFiF12(here->qd_x2,        here->qd_y2,        here->qd_z2,        here->qd_xy,        here->qd_yz,        here->qd_xz,        r1h1x,        i1h1x,        r1h1y,        i1h1y,        r1h1z,        i1h1z,        r1h2x,        i1h2x,        r1h2y,        i1h2y,        r1h2z,        i1h2z);        itemp = ckt->CKTomega * DFnF12(here->qd_x2,        here->qd_y2,        here->qd_z2,        here->qd_xy,        here->qd_yz,        here->qd_xz,        r1h1x,        i1h1x,        r1h1y,        i1h1y,        r1h1z,        i1h1z,        r1h2x,        i1h2x,        r1h2y,        i1h2y,        r1h2z,        i1h2z);        *(ckt->CKTrhs + here->B1dNodePrime) -= temp;        *(ckt->CKTirhs + here->B1dNodePrime) -= itemp;        *(ckt->CKTrhs + here->B1sNodePrime) += temp;        *(ckt->CKTirhs + here->B1sNodePrime) += itemp;        /* qd term over */        /* loading here->B1gbs term */        r1h1x = *(job->r1H1ptr + here->B1bNode) -            *(job->r1H1ptr + here->B1sNodePrime);        i1h1x = *(job->i1H1ptr + here->B1bNode) -            *(job->i1H1ptr + here->B1sNodePrime);        r1h2x = *(job->r1H2ptr + here->B1bNode) -            *(job->r1H2ptr + here->B1sNodePrime);        i1h2x = *(job->i1H2ptr + here->B1bNode) -            *(job->i1H2ptr + here->B1sNodePrime);        /* now r1h1x = vbs */        temp = D1nF12(here->gbs2,        r1h1x,        i1h1x,        r1h2x,        i1h2x);        itemp = D1iF12(here->gbs2,        r1h1x,        i1h1x,        r1h2x,        i1h2x);        *(ckt->CKTrhs + here->B1bNode) -= temp;        *(ckt->CKTirhs + here->B1bNode) -= itemp;        *(ckt->CKTrhs + here->B1sNodePrime) += temp;        *(ckt->CKTirhs + here->B1sNodePrime) += itemp;        /* here->B1gbs term over */        /* loading here->B1gbd term */        r1h1x = *(job->r1H1ptr + here->B1bNode) -            *(job->r1H1ptr + here->B1dNodePrime);        i1h1x = *(job->i1H1ptr + here->B1bNode) -            *(job->i1H1ptr + here->B1dNodePrime);        r1h2x = *(job->r1H2ptr + here->B1bNode) -            *(job->r1H2ptr + here->B1dNodePrime);        i1h2x = *(job->i1H2ptr + here->B1bNode) -            *(job->i1H2ptr + here->B1dNodePrime);        /* now r1h1x = vbd */        temp = D1nF12(here->gbd2,        r1h1x,        i1h1x,        r1h2x,        i1h2x);        itemp = D1iF12(here->gbd2,        r1h1x,        i1h1x,        r1h2x,        i1h2x);        *(ckt->CKTrhs + here->B1gNode) -= temp;        *(ckt->CKTirhs + here->B1gNode) -= itemp;        *(ckt->CKTrhs + here->B1dNodePrime) += temp;        *(ckt->CKTirhs + here->B1dNodePrime) += itemp;        /* here->B1gbd term over */        /* all done */      }      break;    case D_F1MF2:      /* from now on, in the 3-var case, x=vgs,y=vbs,z=vds */      {        /* draincurrent term */        r1h1x = *(job->r1H1ptr + here->B1gNode) -             *(job->r1H1ptr + here->B1sNodePrime);        i1h1x = *(job->i1H1ptr + here->B1gNode) -             *(job->i1H1ptr + here->B1sNodePrime);        r1h1y = *(job->r1H1ptr + here->B1bNode) -            *(job->r1H1ptr + here->B1sNodePrime);        i1h1y = *(job->i1H1ptr + here->B1bNode) -            *(job->i1H1ptr + here->B1sNodePrime);        r1h1z = *(job->r1H1ptr + here->B1dNodePrime) -            *(job->r1H1ptr + here->B1sNodePrime);        i1h1z = *(job->i1H1ptr + here->B1dNodePrime) -            *(job->i1H1ptr + here->B1sNodePrime);        r1hm2x = *(job->r1H2ptr + here->B1gNode) -             *(job->r1H2ptr + here->B1sNodePrime);        i1hm2x = -(*(job->i1H2ptr + here->B1gNode) -             *(job->i1H2ptr + here->B1sNodePrime));        r1hm2y = *(job->r1H2ptr + here->B1bNode) -            *(job->r1H2ptr + here->B1sNodePrime);        i1hm2y = -(*(job->i1H2ptr + here->B1bNode) -            *(job->i1H2ptr + here->B1sNodePrime));        r1hm2z = *(job->r1H2ptr + here->B1dNodePrime) -            *(job->r1H2ptr + here->B1sNodePrime);        i1hm2z = -(*(job->i1H2ptr + here->B1dNodePrime) -            *(job->i1H2ptr + here->B1sNodePrime));        /* draincurrent is a function of vgs,vbs,and vds;         * have got their linear kernels; now to call         * load functions          */                 temp = DFnF12(here->DrC_x2,         here->DrC_y2,         here->DrC_z2,         here->DrC_xy,         here->DrC_yz,         here->DrC_xz,         r1h1x,         i1h1x,         r1h1y,         i1h1y,         r1h1z,         i1h1z,         r1hm2x,         i1hm2x,         r1hm2y,         i1hm2y,         r1hm2z,         i1hm2z);                 itemp = DFiF12(here->DrC_x2,         here->DrC_y2,         here->DrC_z2,         here->DrC_xy,         here->DrC_yz,         here->DrC_xz,         r1h1x,         i1h1x,         r1h1y,         i1h1y,         r1h1z,         i1h1z,         r1hm2x,         i1hm2x,         r1hm2y,         i1hm2y,         r1hm2z,         i1hm2z);                 *(ckt->CKTrhs + here->B1dNodePrime) -= temp;         *(ckt->CKTirhs + here->B1dNodePrime) -= itemp;                 *(ckt->CKTrhs + here->B1sNodePrime) += temp;         *(ckt->CKTirhs + here->B1sNodePrime) += itemp;                 /* draincurrent term loading over */        /* loading qg term */        /* kernels for vgs,vbs and vds already set up */        temp = -ckt->CKTomega * DFiF12(here->qg_x2,        here->qg_y2,        here->qg_z2,        here->qg_xy,        here->qg_yz,        here->qg_xz,        r1h1x,        i1h1x,        r1h1y,        i1h1y,        r1h1z,        i1h1z,        r1hm2x,        i1hm2x,        r1hm2y,        i1hm2y,        r1hm2z,        i1hm2z);        itemp = ckt->CKTomega * DFnF12(here->qg_x2,        here->qg_y2,        here->qg_z2,        here->qg_xy,        here->qg_yz,        here->qg_xz,        r1h1x,        i1h1x,        r1h1y,        i1h1y,        r1h1z,        i1h1z,        r1hm2x,        i1hm2x,        r1hm2y,        i1hm2y,        r1hm2z,        i1hm2z);        *(ckt->CKTrhs + here->B1gNode) -= temp;        *(ckt->CKTirhs + here->B1gNode) -= itemp;        *(ckt->CKTrhs + here->B1sNodePrime) += temp;        *(ckt->CKTirhs + here->B1sNodePrime) += itemp;        /* qg term over */        /* loading qb term */        /* kernels for vgs,vbs and vds already set up */        temp = -ckt->CKTomega * DFiF12(here->qb_x2,        here->qb_y2, /* XXX Bug fixed: fewer arguments passed than declared */        here->qb_z2,        here->qb_xy,        here->qb_yz,        here->qb_xz,        r1h1x,        i1h1x,        r1h1y,        i1h1y,        r1h1z,

⌨️ 快捷键说明

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