57 for (i = 0, ll = deck; ll; ll = ll->
li_next)
61 if ((err = (*(
ft_sim->newCircuit))(&ckt)) !=
OK) {
85 err = (*(
ft_sim->newAnalysis))(ckt,which,optUid,
125 IFuid specUid,optUid;
128 if (
eq(what,
"sens") ||
eq(what,
"tran") ||
eq(what,
"ac") ||
129 eq(what,
"dc") ||
eq(what,
"op") ||
eq(what,
"pz") ||
130 eq(what,
"disto")||
eq(what,
"tf") ||
eq(what,
"noise")) {
135 (void) sprintf(buf,
".%s", tmp);
137 (
void) sprintf(buf,
".%s %s", what, tmp);
141 (
void) sprintf(buf,
".%s", what);
161 err = (*(
ft_sim->newTask))(ckt,
175 err = (*(
ft_sim->newAnalysis))(ckt,which,optUid,
195 if (
eq(what,
"run") ) {
200 if ( (
eq(what,
"tran")) ||
205 (
eq(what,
"disto")) ||
206 (
eq(what,
"sens")) ||
207 (
eq(what,
"noise")) ||
209 (
eq(what,
"run")) ) {
220 else if (
eq(what,
"resume")) {
232 fprintf(
cp_err,
"if_run: Internal Error: bad run type %s\n", what);
284 if (which == -1)
return;
347 if (
eq(name,
"acct")) {
351 else if (
eq(name,
"list")) {
355 else if (
eq(name,
"node")) {
359 else if (
eq(name,
"opts")) {
363 else if (
eq(name,
"nopage")) {
370 fprintf(
cp_err,
"Warning: .options card unsupported\n");
383 "Warning: option %s is currently unsupported.\n", name);
389 "Warning: option %s is obsolete.\n", name);
398 pval.
rValue = *((
double *) value);
400 pval.
rValue = *((
int *) value);
406 pval.
iValue = *((
int *) value);
408 pval.
iValue = *((
double *) value);
424 "if_option: Internal Error: bad option type %d.\n",
436 fprintf(
cp_err,
"Error: bad type given for option %s --\n", name);
437 fprintf(
cp_err,
"\ttype given was ");
444 default: fputs(
"something strange",
cp_err);
break;
446 fprintf(
cp_err,
", type expected was ");
452 default: fputs(
"something strange.\n",
cp_err);
break;
455 fputs(
"\t(Note that you must use an = to separate option name and value.)\n",
469 (*(
ft_sim->deleteCircuit))(cc);
530 fprintf(
cp_err,
"Internal Error: cktfree -- not in list\n");
574 int typecode, i, num;
580 if (param &&
eq(param,
"all")) {
583 if (typecode == -1) {
585 "Error: no such device or model name %s\n", *name);
599 for (i = 0; i < num; i++, opt++) {
601 pv =
doask(ckt, typecode, dev, mod, opt, ind);
622 "Internal Error: no parameter '%s' on device '%s'\n",
634 if (typecode == -1) {
636 "Error: no such device or model name %s\n", *name);
642 fprintf(
cp_err,
"Error: no such parameter %s.\n", param);
645 pv =
doask(ckt, typecode, dev, mod, opt, ind);
684 vv->va_num = pv->iValue;
689 vv->va_real = pv->rValue;
693 vv->va_string =
copy(pv->sValue);
697 vv->va_string =
copy((
char*)pv->uValue);
701 vv->va_bool = pv->iValue ?
true :
false;
706 for (i = 0; i < pv->v.numValue; i++) {
714 tv->va_real = (pv->v.vec.rVec)[i];
719 vv->va_string =
NULL;
721 vv->va_string =
copy(pv->tValue->line);
725 "parmtovar: Internal Error: bad PARM type %d.\n",
754 for (i = 0; i < *(device->numInstanceParms); i++) {
755 if ((device->instanceParms[i].dataType &
IF_ASK) &&
756 cieq(param,device->instanceParms[i].keyword))
757 return (&device->instanceParms[i]);
761 if (device->modelParms ==
NULL)
763 for (i = 0; i < *(device->numModelParms); i++)
764 if ((device->modelParms[i].dataType &
IF_ASK) &&
765 cieq(param,device->modelParms[i].keyword))
766 return (&device->modelParms[i]);
774 doask(ckt, typecode, dev, mod, opt, ind)
828 err = (*(
ft_sim->findModel))((
GENERIC *)ck,&type,modptr,name);
850 while (isspace(*line))
853 if (!*line || (*line ==
'*'))
857 if (
prefix(
"model",line)) {
903 fprintf(
cp_err,
"Warning: statistics unsupported\n");
921 (*keyword)->wl_word =
copy(
928 for (i = 0, vars = v =
NULL;
962 fprintf(
cp_err,
"if_getstat: Internal Error: can't get %s.\n",name);
1002 for (d = dbiplot; d; d = d->
db_next) {
static char buf[MAXPROMPT]
int if_run(char *what, wordlist *args)
wordlist * GetAnalysisFromDeck()
bool cp_getvar(char *n, int t, char *r)
static struct variable * parmtovar()
struct variable * spif_getparam(char *ckt, char **name, char *param, int ind, wordlist **keyword)
void if_setndnames(char *line)
static IFparm * parmlookup()
void if_option(char *ckt, char *name, int type, char *value)
static char * unsupported[]
struct circ * ft_circuits
char * if_errstring(int code)
static void set_options()
struct variable * ci_vars
char * if_inpdeck(struct line *deck, char **tab)
struct wordlist * wl_next
void if_setparam(char *ckt, char *name, char *param, struct variable *val)
struct variable * va_next
struct variable * if_getstat(char *ckt, char *name, wordlist **keyword)
void if_cktfree(char *ckt, char *tab)