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

📄 hfetask.c

📁 ngspice又一个电子CAD仿真软件代码.功能更全
💻 C
字号:
/**********Copyright 1990 Regents of the University of California.  All rights reserved.Author: 1987 Thomas L. Quarles**********//*Imported into HFETA source: Paolo Nenzi 2001 */#include "ngspice.h"#include "cktdefs.h"#include "devdefs.h"#include "ifsim.h"#include "hfetdefs.h"#include "sperror.h"#include "suffix.h"/* ARGSUSED */intHFETAask(CKTcircuit *ckt, GENinstance *inst, int which, IFvalue *value, IFvalue *select){    HFETAinstance *here = (HFETAinstance*)inst;    static char *msg = "Current and power not available in ac analysis";    switch(which) {        case HFETA_LENGTH:            value->rValue = here->HFETAlength;            return (OK);        case HFETA_WIDTH:            value->rValue = here->HFETAwidth;            value->rValue *= here->HFETAm;            return (OK);        case HFETA_M:            value->rValue = here->HFETAm;            return (OK);        case HFETA_IC_VDS:            value->rValue = here->HFETAicVDS;            return (OK);        case HFETA_IC_VGS:            value->rValue = here->HFETAicVGS;            return (OK);        case HFETA_OFF:            value->iValue = here->HFETAoff;            return (OK);        case HFETA_DRAINNODE:            value->iValue = here->HFETAdrainNode;            return (OK);        case HFETA_GATENODE:            value->iValue = here->HFETAgateNode;            return (OK);        case HFETA_SOURCENODE:            value->iValue = here->HFETAsourceNode;            return (OK);        case HFETA_DRAINPRIMENODE:            value->iValue = here->HFETAdrainPrimeNode;            return (OK);        case HFETA_SOURCEPRIMENODE:            value->iValue = here->HFETAsourcePrimeNode;            return (OK);         case HFETA_TEMP:            value->rValue = here->HFETAtemp - CONSTCtoK;            return(OK);         case HFETA_DTEMP:            value->rValue = here->HFETAdtemp;            return(OK);        case HFETA_VGS:            value->rValue = *(ckt->CKTstate0 + here->HFETAvgs);            return (OK);        case HFETA_VGD:            value->rValue = *(ckt->CKTstate0 + here->HFETAvgd);            return (OK);        case HFETA_CG:            value->rValue = *(ckt->CKTstate0 + here->HFETAcg);            value->rValue *= here->HFETAm;            return (OK);        case HFETA_CD:            value->rValue = *(ckt->CKTstate0 + here->HFETAcd);            value->rValue *= here->HFETAm;            return (OK);        case HFETA_CGD:            value->rValue = *(ckt->CKTstate0 + here->HFETAcgd);            value->rValue *= here->HFETAm;            return (OK);        case HFETA_GM:            value->rValue = *(ckt->CKTstate0 + here->HFETAgm);            value->rValue *= here->HFETAm;            return (OK);        case HFETA_GDS:            value->rValue = *(ckt->CKTstate0 + here->HFETAgds);            value->rValue *= here->HFETAm;            return (OK);        case HFETA_GGS:            value->rValue = *(ckt->CKTstate0 + here->HFETAggs);            value->rValue *= here->HFETAm;            return (OK);        case HFETA_GGD:            value->rValue = *(ckt->CKTstate0 + here->HFETAggd);            value->rValue *= here->HFETAm;            return (OK);        case HFETA_QGS:            value->rValue = *(ckt->CKTstate0 + here->HFETAqgs);            value->rValue *= here->HFETAm;            return (OK);        case HFETA_CQGS:            value->rValue = *(ckt->CKTstate0 + here->HFETAcqgs);            value->rValue *= here->HFETAm;            return (OK);        case HFETA_QGD:            value->rValue = *(ckt->CKTstate0 + here->HFETAqgd);            value->rValue *= here->HFETAm;            return (OK);        case HFETA_CQGD:            value->rValue = *(ckt->CKTstate0 + here->HFETAcqgd);            value->rValue *= here->HFETAm;            return (OK);        case HFETA_CS :             if (ckt->CKTcurrentAnalysis & DOING_AC) {                 errMsg = MALLOC(strlen(msg)+1);                 errRtn = "HFETAask";                 strcpy(errMsg,msg);                 return(E_ASKCURRENT);             } else {                 value->rValue = -*(ckt->CKTstate0 + here->HFETAcd);                 value->rValue -= *(ckt->CKTstate0 + here->HFETAcg);                 value->rValue *= here->HFETAm;             }             return(OK);        case HFETA_POWER :             if (ckt->CKTcurrentAnalysis & DOING_AC) {                 errMsg = MALLOC(strlen(msg)+1);                 errRtn = "HFETAask";                 strcpy(errMsg,msg);                 return(E_ASKPOWER);             } else {                 value->rValue = *(ckt->CKTstate0 + here->HFETAcd) *                         *(ckt->CKTrhsOld + here->HFETAdrainNode);                 value->rValue += *(ckt->CKTstate0 + here->HFETAcg) *                         *(ckt->CKTrhsOld + here->HFETAgateNode);                 value->rValue -= (*(ckt->CKTstate0+here->HFETAcd) +                         *(ckt->CKTstate0 + here->HFETAcg)) *                         *(ckt->CKTrhsOld + here->HFETAsourceNode);                 value->rValue *= here->HFETAm;             }             return(OK);        default:            return (E_BADPARM);    }    /* NOTREACHED */}

⌨️ 快捷键说明

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