/*************************************************************************** JSPICE3 adaptation of Spice3f2 - Copyright (c) Stephen R. Whiteley 1992 Copyright 1990 Regents of the University of California. All rights reserved. Authors: 1985 Thomas L. Quarles 1993 Stephen R. Whiteley ****************************************************************************/ #include "spice.h" #include #include "cktdefs.h" #include "tfdefs.h" #include "jobdefs.h" #include "iferrmsg.h" #include "util.h" #include "cktext.h" /* ARGSUSED */ int TFsetParm(cktp,anal,which,value) GENERIC *cktp; GENERIC *anal; int which; IFvalue *value; { TFAN *job = (TFAN *) anal; switch (which) { case TF_OUTPOS: job->TFoutPos = (CKTnode *)value->nValue; job->TFoutIsV = TRUE; job->TFoutIsI = FALSE; break; case TF_OUTNEG: job->TFoutNeg = (CKTnode *)value->nValue; job->TFoutIsV = TRUE; job->TFoutIsI = FALSE; break; case TF_OUTNAME: job->TFoutName = value->sValue; break; case TF_OUTSRC: job->TFoutSrc = value->uValue; job->TFoutIsV = FALSE; job->TFoutIsI = TRUE; break; case TF_INSRC: job->TFinSrc = value->uValue; break; default: if (ACsetp(&job->AC,which,value) == OK) return (OK); if (DCTsetp(&job->DC,which,value) == OK) return (OK); return (E_BADPARM); } return (OK); } static IFparm TFparms[] = { { "outpos", TF_OUTPOS, IFP|IF_NODE, "Positive output node" }, { "outneg", TF_OUTNEG, IFP|IF_NODE, "Negative output node" }, { "outname", TF_OUTNAME, IFP|IF_STRING, "Name of output variable"}, { "outsrc", TF_OUTSRC, IFP|IF_INSTANCE, "Output source" }, { "insrc", TF_INSRC, IFP|IF_INSTANCE, "Input source" }, { "start", AC_START, IFP|IF_REAL, "starting frequency" }, { "stop", AC_STOP, IFP|IF_REAL, "ending frequency" }, { "numsteps", AC_STEPS, IFP|IF_INTEGER, "number of frequencies"}, { "dec", AC_DEC, IFP|IF_FLAG, "step by decades" }, { "oct", AC_OCT, IFP|IF_FLAG, "step by octaves" }, { "lin", AC_LIN, IFP|IF_FLAG, "step linearly" }, { "name1", DC_NAME1, IFP|IF_INSTANCE, "name of source to step" }, { "start1", DC_START1, IFP|IF_REAL, "starting voltage/current"}, { "stop1", DC_STOP1, IFP|IF_REAL, "ending voltage/current" }, { "step1", DC_STEP1, IFP|IF_REAL, "voltage/current step" }, { "name2", DC_NAME2, IFP|IF_INSTANCE, "name of source to step" }, { "start2", DC_START2, IFP|IF_REAL, "starting voltage/current"}, { "stop2", DC_STOP2, IFP|IF_REAL, "ending voltage/current" }, { "step2", DC_STEP2, IFP|IF_REAL, "voltage/current step" } }; SPICEanalysis TFinfo = { { "TF", "transfer function analysis", sizeof(TFparms)/sizeof(IFparm), TFparms }, sizeof(TFAN), NODOMAIN, TFparse, TFsetParm, TFaskQuest, TFan };