options.c replaced by optionsc.c

This commit is contained in:
h_vogt 2008-10-11 17:33:21 +00:00
parent 00fd0da88a
commit 2de3f5ec42
1 changed files with 0 additions and 163 deletions

View File

@ -1,163 +0,0 @@
/**********
Copyright 1991 Regents of the University of California. All rights reserved.
Author: 1991 David A. Gates, U. C. Berkeley CAD Group
Modified: 2001 Paolo Nenzi
**********/
#include "ngspice.h"
#include "numcards.h"
#include "numgen.h"
#include "optndefs.h"
#include "devdefs.h"
#include "sperror.h"
#include "suffix.h"
#define M_TO_CM 1.0e2
#define M2_TO_CM2 (M_TO_CM * M_TO_CM)
#define UM_TO_CM 1.0e-4
#define UM2_TO_CM2 (UM_TO_CM * UM_TO_CM)
extern int OPTNnewCard(void**,void*);
extern int OPTNparam(int,IFvalue*,void*);
IFparm OPTNpTable[] = {
/* Supported Types of Devices. Ideally should be automatically extracted */
IP("resistor",OPTN_RESISTOR, IF_FLAG, "Resistor"),
IP("capacitor",OPTN_CAPACITOR, IF_FLAG, "Capacitor"),
IP("diode", OPTN_DIODE, IF_FLAG, "Diode"),
IP("bipolar", OPTN_BIPOLAR, IF_FLAG, "Bipolar Transistor"),
IP("bjt", OPTN_BIPOLAR, IF_FLAG, "Bipolar Transistor"),
IP("soibjt", OPTN_SOIBJT, IF_FLAG, "SOI Bipolar"),
IP("moscap", OPTN_MOSCAP, IF_FLAG, "MOS Capacitor"),
IP("mosfet", OPTN_MOSFET, IF_FLAG, "MOSFET"),
IP("soimos", OPTN_SOIMOS, IF_FLAG, "SOI MOSFET"),
IP("jfet", OPTN_JFET, IF_FLAG, "Junction FET"),
IP("mesfet", OPTN_MESFET, IF_FLAG, "MESFET"),
/* Various layout dimensions */
IP("defa", OPTN_DEFA, IF_REAL, "Default Mask Area"),
IP("defw", OPTN_DEFW, IF_REAL, "Default Mask Width"),
IP("defl", OPTN_DEFL, IF_REAL, "Default Mask Length"),
IP("base.area",OPTN_BASE_AREA, IF_REAL, "1D BJT Base Area"),
IP("base.length",OPTN_BASE_LENGTH,IF_REAL, "1D BJT Base Length"),
IP("base.depth",OPTN_BASE_DEPTH, IF_REAL, "1D BJT Base Depth"),
/* Values */
IP("tnom", OPTN_TNOM, IF_REAL, "Nominal Temperature"),
/* Device Initial Condition File */
IP("ic.file", OPTN_IC_FILE, IF_STRING, "Initial condition file"),
IP("unique", OPTN_UNIQUE, IF_FLAG, "Generate unique filename")
};
IFcardInfo OPTNinfo = {
"options",
"Provide optional information and hints",
NUMELEMS(OPTNpTable),
OPTNpTable,
OPTNnewCard,
OPTNparam,
NULL
};
int
OPTNnewCard(void **inCard, void *inModel)
{
OPTNcard *tmpCard, *newCard;
GENnumModel *model = (GENnumModel *)inModel;
tmpCard = model->GENoptions;
if (!tmpCard) { /* First in list */
newCard = NEW( OPTNcard );
if (!newCard) {
*inCard = (void *)NULL;
return(E_NOMEM);
}
newCard->OPTNnextCard = (OPTNcard *)NULL;
*inCard = (void *)newCard;
model->GENoptions = newCard;
} else { /* Only one card of this type allowed */
*inCard = (void *)tmpCard;
}
return(OK);
}
int
OPTNparam(int param, IFvalue *value, void *inCard)
{
OPTNcard *card = (OPTNcard *)inCard;
switch (param) {
case OPTN_RESISTOR:
card->OPTNdeviceType = OPTN_RESISTOR;
card->OPTNdeviceTypeGiven = TRUE;
break;
case OPTN_CAPACITOR:
card->OPTNdeviceType = OPTN_CAPACITOR;
card->OPTNdeviceTypeGiven = TRUE;
break;
case OPTN_DIODE:
card->OPTNdeviceType = OPTN_DIODE;
card->OPTNdeviceTypeGiven = TRUE;
break;
case OPTN_MOSCAP:
card->OPTNdeviceType = OPTN_MOSCAP;
card->OPTNdeviceTypeGiven = TRUE;
break;
case OPTN_BIPOLAR:
case OPTN_SOIBJT: /* XXX Treat SOI as normal */
card->OPTNdeviceType = OPTN_BIPOLAR;
card->OPTNdeviceTypeGiven = TRUE;
break;
case OPTN_MOSFET:
case OPTN_SOIMOS: /* XXX Treat SOI as normal */
card->OPTNdeviceType = OPTN_MOSFET;
card->OPTNdeviceTypeGiven = TRUE;
break;
case OPTN_JFET:
case OPTN_MESFET: /* XXX Treat MES as junction */
card->OPTNdeviceType = OPTN_JFET;
card->OPTNdeviceTypeGiven = TRUE;
break;
case OPTN_DEFA:
card->OPTNdefa = value->rValue * M2_TO_CM2;
card->OPTNdefaGiven = TRUE;
break;
case OPTN_DEFW:
card->OPTNdefw = value->rValue * M_TO_CM;
card->OPTNdefwGiven = TRUE;
break;
case OPTN_DEFL:
card->OPTNdefl = value->rValue * M_TO_CM;
card->OPTNdeflGiven = TRUE;
break;
case OPTN_BASE_AREA:
card->OPTNbaseArea = value->rValue;
card->OPTNbaseAreaGiven = TRUE;
break;
case OPTN_BASE_LENGTH:
card->OPTNbaseLength = value->rValue * UM_TO_CM;
card->OPTNbaseLengthGiven = TRUE;
break;
case OPTN_BASE_DEPTH:
card->OPTNbaseDepth = value->rValue * UM_TO_CM;
card->OPTNbaseDepthGiven = TRUE;
break;
case OPTN_TNOM:
card->OPTNtnom = value->rValue;
card->OPTNtnomGiven = TRUE;
break;
case OPTN_IC_FILE:
card->OPTNicFile = value->sValue;
card->OPTNicFileGiven = TRUE;
break;
case OPTN_UNIQUE:
card->OPTNunique = value->iValue;
card->OPTNuniqueGiven = TRUE;
break;
default:
return(E_BADPARM);
break;
}
return(OK);
}