* src/Makefile.am src/main.c src/ngspice.c

src/devices/Makefile.am, src/devices/dev.c src/devices/dev.h:
	Refactored devices initialization code into the devices dir.
This commit is contained in:
arno 2000-05-01 17:43:38 +00:00
parent 905656c5a8
commit 7472642832
7 changed files with 187 additions and 140 deletions

View File

@ -1,5 +1,9 @@
2000-05-01 Arno W. Peters <A.W.Peters@ieee.org>
* src/devices/Makefile.am, src/devices/dev.c, src/devices/dev.h,
src/Makefile.am, src/ngspice.c, src/main.c: Refactored devices
initialization code into the devices dir.
* tests/respart.cir, tests/respart.out, tests/respart.sh:
additional tests for resistor.

View File

@ -67,6 +67,7 @@ ngspice_SOURCES = \
ngspice_LDADD = \
spice.o \
frontend/libfte.a \
devices/libdev.a \
$(DYNAMIC_DEVICELIBS) \
analysis/libckt.a \
parser/libparser.a \

View File

@ -23,6 +23,7 @@
#include "ftedev.h"
#include "ftedebug.h"
#include "const.h"
#include "devices/dev.h"
#ifdef HAVE_PWD_H
#include <pwd.h>
@ -160,6 +161,11 @@ IFfrontEnd *SPfrontEnd = NULL;
int SIMinit(IFfrontEnd *frontEnd, IFsimulator **simulator)
{
#ifdef SIMULATOR
SIMinfo.numDevices = num_devices();
SIMinfo.devices = devices_ptr();
#endif /* SIMULATOR */
SPfrontEnd = frontEnd;
*simulator = &SIMinfo;
CONSTroot2 = sqrt(2.);

View File

@ -16,41 +16,6 @@
#define AN_noise
#define AN_sense
/*
* Devices
*/
#define DEV_asrc
#define DEV_bjt
#define DEV_bsim1
#define DEV_bsim2
#define DEV_bsim3
#define DEV_bsim4
#define DEV_bsim3v1
#define DEV_bsim3v2
#define DEV_cap
#define DEV_cccs
#define DEV_ccvs
#define DEV_csw
#define DEV_dio
#define DEV_ind
#define DEV_isrc
#define DEV_jfet
#define DEV_jfet2
#define DEV_ltra
#define DEV_mes
#define DEV_mos1
#define DEV_mos2
#define DEV_mos3
#define DEV_mos6
#define DEV_res
#define DEV_sw
#define DEV_tra
#define DEV_urc
#define DEV_vccs
#define DEV_vcvs
#define DEV_vsrc
#define DEVICES_USED "asrc bjt bsim1 bsim2 bsim3 bsim3v2 bsim3v1 cap cccs ccvs csw dio ind isrc jfet ltra mes mos1 mos2 mos3 mos6 res sw tra urc vccs vcvs vsrc"
#define ANALYSES_USED "op dc tf ac tran pz disto noise sense"
/**********
@ -65,42 +30,10 @@ Copyright 1990 Regents of the University of California. All rights reserved.
#include <stdio.h>
#include "noisedef.h"
#include "devdefs.h"
#include "noisedef.h"
#include "suffix.h"
#include "asrc/asrcitf.h"
#include "bjt/bjtitf.h"
#include "cap/capitf.h"
#include "cccs/cccsitf.h"
#include "ccvs/ccvsitf.h"
#include "csw/cswitf.h"
#include "dio/dioitf.h"
#include "ind/inditf.h"
#include "isrc/isrcitf.h"
#include "mos1/mos1itf.h"
#include "mos6/mos6itf.h"
#include "res/resitf.h"
#include "sw/switf.h"
#include "vccs/vccsitf.h"
#include "vcvs/vcvsitf.h"
#include "vsrc/vsrcitf.h"
#include "bsim1/bsim1itf.h"
#include "bsim2/bsim2itf.h"
#include "bsim3/bsim3itf.h"
#include "bsim4/bsim4itf.h"
#include "bsim3v1/bsim3v1itf.h"
#include "bsim3v2/bsim3v2itf.h"
#include "mos2/mos2itf.h"
#include "mos3/mos3itf.h"
#include "jfet/jfetitf.h"
#include "jfet2/jfet2itf.h"
#include "mes/mesitf.h"
#include "ltra/ltraitf.h"
#include "tra/traitf.h"
#include "urc/urcitf.h"
extern SPICEanalysis OPTinfo;
extern SPICEanalysis ACinfo;
@ -129,44 +62,6 @@ SPICEanalysis *analInfo[] = {
};
int ANALmaxnum = sizeof(analInfo)/sizeof(SPICEanalysis*);
SPICEdev *DEVices[] = {
/* URC must appear before the resistor, capacitor, and diode */
&URCinfo,
&ASRCinfo,
&BJTinfo,
&B1info,
&B2info,
&BSIM3info,
&B4info,
&BSIM3V2info,
&BSIM3V1info,
&CAPinfo,
&CCCSinfo,
&CCVSinfo,
&CSWinfo,
&DIOinfo,
&INDinfo,
&MUTinfo,
&ISRCinfo,
&JFETinfo,
&JFET2info,
&LTRAinfo,
&MESinfo,
&MOS1info,
&MOS2info,
&MOS3info,
&MOS6info,
&RESinfo,
&SWinfo,
&TRAinfo,
&VCCSinfo,
&VCVSinfo,
&VSRCinfo,
};
/* my internal global constant for number of device types */
int DEVmaxnum = sizeof(DEVices)/sizeof(SPICEdev *);
/* XXX Should be -1 ? There is always an extra null element at the end ? */
static char * specSigList[] = {
"time"
@ -179,47 +74,47 @@ static IFparm nodeParms[] = {
};
IFsimulator SIMinfo = {
"ngspice", /* name */
"Circuit level simulation program", /* more about me */
Spice_Version, /* version */
"ngspice", /* name */
"Circuit level simulation program", /* more about me */
Spice_Version, /* version */
CKTinit, /* newCircuit function */
CKTdestroy, /* deleteCircuit function */
CKTinit, /* newCircuit function */
CKTdestroy, /* deleteCircuit function */
CKTnewNode, /* newNode function */
CKTground, /* groundNode function */
CKTbindNode, /* bindNode function */
CKTfndNode, /* findNode function */
CKTinst2Node, /* instToNode function */
CKTsetNodPm, /* setNodeParm function */
CKTaskNodQst, /* askNodeQuest function */
CKTdltNod, /* deleteNode function */
CKTnewNode, /* newNode function */
CKTground, /* groundNode function */
CKTbindNode, /* bindNode function */
CKTfndNode, /* findNode function */
CKTinst2Node, /* instToNode function */
CKTsetNodPm, /* setNodeParm function */
CKTaskNodQst, /* askNodeQuest function */
CKTdltNod, /* deleteNode function */
CKTcrtElt, /* newInstance function */
CKTparam, /* setInstanceParm function */
CKTask, /* askInstanceQuest function */
CKTfndDev, /* findInstance funciton */
CKTdltInst, /* deleteInstance function */
CKTcrtElt, /* newInstance function */
CKTparam, /* setInstanceParm function */
CKTask, /* askInstanceQuest function */
CKTfndDev, /* findInstance funciton */
CKTdltInst, /* deleteInstance function */
CKTmodCrt, /* newModel function */
CKTmodParam, /* setModelParm function */
CKTmodAsk, /* askModelQuest function */
CKTfndMod, /* findModel function */
CKTdltMod, /* deleteModel function */
CKTmodCrt, /* newModel function */
CKTmodParam, /* setModelParm function */
CKTmodAsk, /* askModelQuest function */
CKTfndMod, /* findModel function */
CKTdltMod, /* deleteModel function */
CKTnewTask, /* newTask function */
CKTnewAnal, /* newAnalysis function */
CKTsetAnalPm, /* setAnalysisParm function */
CKTaskAnalQ, /* askAnalysisQuest function */
CKTfndAnal, /* findAnalysis function */
CKTfndTask, /* findTask function */
CKTdelTask, /* deleteTask function */
CKTnewTask, /* newTask function */
CKTnewAnal, /* newAnalysis function */
CKTsetAnalPm, /* setAnalysisParm function */
CKTaskAnalQ, /* askAnalysisQuest function */
CKTfndAnal, /* findAnalysis function */
CKTfndTask, /* findTask function */
CKTdelTask, /* deleteTask function */
CKTdoJob, /* doAnalyses function */
CKTtrouble, /* non-convergence message function */
CKTdoJob, /* doAnalyses function */
CKTtrouble, /* non-convergence message function */
sizeof(DEVices)/sizeof(SPICEdev *),
(IFdevice**)DEVices,
0, /* Initialized in SIMinit() */
NULL, /* Initialized in SIMinit() */
sizeof(analInfo)/sizeof(SPICEanalysis *),
(IFanalysis **)analInfo,

View File

@ -34,5 +34,10 @@ SUBDIRS = \
vcvs \
vsrc
lib_LIBRARIES = libdev.a
libdev_a_SOURCES = dev.c
INCLUDES = -I$(top_srcdir)/src/include
MAINTAINERCLEANFILES = Makefile.in

126
src/spicelib/devices/dev.c Normal file
View File

@ -0,0 +1,126 @@
/* Configuration file for ng-spice */
#include <config.h>
#include "dev.h"
#include "devdefs.h"
/*
* Devices
*/
#define DEV_asrc
#define DEV_bjt
#define DEV_bsim1
#define DEV_bsim2
#define DEV_bsim3
#define DEV_bsim4
#define DEV_bsim3v1
#define DEV_bsim3v2
#define DEV_cap
#define DEV_cccs
#define DEV_ccvs
#define DEV_csw
#define DEV_dio
#define DEV_ind
#define DEV_isrc
#define DEV_jfet
#define DEV_jfet2
#define DEV_ltra
#define DEV_mes
#define DEV_mos1
#define DEV_mos2
#define DEV_mos3
#define DEV_mos6
#define DEV_res
#define DEV_sw
#define DEV_tra
#define DEV_urc
#define DEV_vccs
#define DEV_vcvs
#define DEV_vsrc
#define DEVICES_USED "asrc bjt bsim1 bsim2 bsim3 bsim3v2 bsim3v1 cap cccs ccvs csw dio ind isrc jfet ltra mes mos1 mos2 mos3 mos6 res sw tra urc vccs vcvs vsrc"
#include "asrc/asrcitf.h"
#include "bjt/bjtitf.h"
#include "cap/capitf.h"
#include "cccs/cccsitf.h"
#include "ccvs/ccvsitf.h"
#include "csw/cswitf.h"
#include "dio/dioitf.h"
#include "ind/inditf.h"
#include "isrc/isrcitf.h"
#include "mos1/mos1itf.h"
#include "mos6/mos6itf.h"
#include "res/resitf.h"
#include "sw/switf.h"
#include "vccs/vccsitf.h"
#include "vcvs/vcvsitf.h"
#include "vsrc/vsrcitf.h"
#include "bsim1/bsim1itf.h"
#include "bsim2/bsim2itf.h"
#include "bsim3/bsim3itf.h"
#include "bsim4/bsim4itf.h"
#include "bsim3v1/bsim3v1itf.h"
#include "bsim3v2/bsim3v2itf.h"
#include "mos2/mos2itf.h"
#include "mos3/mos3itf.h"
#include "jfet/jfetitf.h"
#include "jfet2/jfet2itf.h"
#include "mes/mesitf.h"
#include "ltra/ltraitf.h"
#include "tra/traitf.h"
#include "urc/urcitf.h"
SPICEdev *DEVices[] = {
/* URC must appear before the resistor, capacitor, and diode */
&URCinfo,
&ASRCinfo,
&BJTinfo,
&B1info,
&B2info,
&BSIM3info,
&B4info,
&BSIM3V2info,
&BSIM3V1info,
&CAPinfo,
&CCCSinfo,
&CCVSinfo,
&CSWinfo,
&DIOinfo,
&INDinfo,
&MUTinfo,
&ISRCinfo,
&JFETinfo,
&JFET2info,
&LTRAinfo,
&MESinfo,
&MOS1info,
&MOS2info,
&MOS3info,
&MOS6info,
&RESinfo,
&SWinfo,
&TRAinfo,
&VCCSinfo,
&VCVSinfo,
&VSRCinfo,
};
/* my internal global constant for number of device types */
int DEVmaxnum = sizeof(DEVices)/sizeof(SPICEdev *);
int
num_devices(void)
{
return sizeof(DEVices)/sizeof(SPICEdev *);
}
IFdevice **
devices_ptr(void)
{
return (IFdevice **) DEVices;
}

View File

@ -0,0 +1,10 @@
#ifndef _DEV_H
#define _DEV_H
#include <ifsim.h>
int num_devices(void);
IFdevice **devices_ptr(void);
#endif