Initial HICUM2 integration
This commit is contained in:
parent
9238c0f9d4
commit
420ca90e55
|
|
@ -1173,6 +1173,7 @@ AC_CONFIG_FILES([Makefile
|
|||
src/spicelib/devices/isrc/Makefile
|
||||
src/spicelib/devices/hfet1/Makefile
|
||||
src/spicelib/devices/hfet2/Makefile
|
||||
src/spicelib/devices/hicum2/Makefile
|
||||
src/spicelib/devices/hisim2/Makefile
|
||||
src/spicelib/devices/hisimhv1/Makefile
|
||||
src/spicelib/devices/hisimhv2/Makefile
|
||||
|
|
|
|||
|
|
@ -73,6 +73,7 @@ DYNAMIC_DEVICELIBS = \
|
|||
spicelib/devices/isrc/libisrc.la \
|
||||
spicelib/devices/hfet1/libhfet.la \
|
||||
spicelib/devices/hfet2/libhfet2.la \
|
||||
spicelib/devices/hicum2/libhicum2.la \
|
||||
spicelib/devices/hisim2/libhisim2.la \
|
||||
spicelib/devices/hisimhv1/libhisimhv1.la \
|
||||
spicelib/devices/hisimhv2/libhisimhv2.la \
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ SUBDIRS = \
|
|||
isrc \
|
||||
hfet1 \
|
||||
hfet2 \
|
||||
hicum2 \
|
||||
hisim2 \
|
||||
hisimhv1 \
|
||||
hisimhv2 \
|
||||
|
|
@ -88,6 +89,7 @@ DIST_SUBDIRS = \
|
|||
isrc \
|
||||
hfet1 \
|
||||
hfet2 \
|
||||
hicum2 \
|
||||
hisim2 \
|
||||
hisimhv1 \
|
||||
hisimhv2 \
|
||||
|
|
|
|||
|
|
@ -93,6 +93,7 @@ int add_udn(int,Evt_Udn_Info_t **);
|
|||
#include "dio/dioitf.h"
|
||||
#include "hfet1/hfetitf.h"
|
||||
#include "hfet2/hfet2itf.h"
|
||||
#include "hicum2/hicumitf.h"
|
||||
#include "hisim2/hsm2itf.h"
|
||||
#include "hisimhv1/hsmhvitf.h"
|
||||
#include "hisimhv2/hsmhv2itf.h"
|
||||
|
|
@ -122,7 +123,6 @@ int add_udn(int,Evt_Udn_Info_t **);
|
|||
#include "vdmos/vdmositf.h"
|
||||
#ifdef ADMS
|
||||
#include "adms/hicum0/hicum0itf.h"
|
||||
#include "adms/hicum2/hicum2itf.h"
|
||||
#include "adms/mextram/bjt504titf.h"
|
||||
#include "adms/ekv/ekvitf.h"
|
||||
#include "adms/psp102/psp102itf.h"
|
||||
|
|
@ -166,6 +166,7 @@ static SPICEdev *(*static_devices[])(void) = {
|
|||
get_dio_info,
|
||||
get_hfeta_info,
|
||||
get_hfet2_info,
|
||||
get_hicum_info,
|
||||
get_hsm2_info,
|
||||
get_hsmhv_info,
|
||||
get_hsmhv2_info,
|
||||
|
|
@ -203,7 +204,6 @@ static SPICEdev *(*static_devices[])(void) = {
|
|||
|
||||
#ifdef ADMS
|
||||
(SPICEdev *(*)(void)) get_hicum0_info,
|
||||
(SPICEdev *(*)(void)) get_hicum2_info,
|
||||
(SPICEdev *(*)(void)) get_bjt504t_info,
|
||||
(SPICEdev *(*)(void)) get_ekv_info,
|
||||
(SPICEdev *(*)(void)) get_psp102_info,
|
||||
|
|
@ -294,12 +294,12 @@ SPICEdev ** devices(void)
|
|||
#define DEVICES_USED {"asrc", "bjt", "vbic", "bsim1", "bsim2", "bsim3", "bsim3v32", "bsim3v2", "bsim3v1", "bsim4", "bsim4v5", "bsim4v6", "bsim4v7", \
|
||||
"bsim4soi", "bsim3soipd", "bsim3soifd", "bsim3soidd", "hisim2", "hisimhv1", "hisimhv2", \
|
||||
"cap", "cccs", "ccvs", "csw", "dio", "hfet", "hfet2", "ind", "isrc", "jfet", "ltra", "mes", "mesa" ,"mos1", "mos2", "mos3", \
|
||||
"mos6", "mos9", "res", "soi3", "sw", "tra", "urc", "vccs", "vcvs", "vsrc", "hicum0", "hicum2", "bjt504t", "ekv", "psp102"}
|
||||
"mos6", "mos9", "res", "soi3", "sw", "tra", "urc", "vccs", "vcvs", "vsrc", "hicum0", "bjt504t", "ekv", "psp102"}
|
||||
#else
|
||||
#define DEVICES_USED {"asrc", "bjt", "vbic", "bsim1", "bsim2", "bsim3", "bsim3v32", "bsim3v2", "bsim3v1", "bsim4", "bsim4v5", "bsim4v6", "bsim4v7", \
|
||||
"bsim4soi", "bsim3soipd", "bsim3soifd", "bsim3soidd", "hisim2", "hisimhv1", "hisimhv2", \
|
||||
"cap", "cccs", "ccvs", "csw", "dio", "hfet", "hfet2", "ind", "isrc", "jfet", "ltra", "mes", "mesa" ,"mos1", "mos2", "mos3", \
|
||||
"mos6", "mos9", "res", "soi3", "sw", "tra", "urc", "vccs", "vcvs", "vsrc"}
|
||||
"mos6", "mos9", "res", "soi3", "sw", "tra", "urc", "vccs", "vcvs", "vsrc", "hicum2"}
|
||||
#endif
|
||||
int load_dev(char *name) {
|
||||
char *msg;
|
||||
|
|
|
|||
|
|
@ -233,7 +233,7 @@ VDMOStemp(GENmodel *inModel, CKTcircuit *ckt)
|
|||
if (cbv < here->VDIOtSatCur * tBreakdownVoltage / vt) {
|
||||
cbv = here->VDIOtSatCur * tBreakdownVoltage / vt;
|
||||
#ifdef TRACE
|
||||
SPfrontEnd->IFerrorf(ERR_WARNING, "%s: breakdown current increased to %g to resolve", here->DIOname, cbv);
|
||||
// SPfrontEnd->IFerrorf(ERR_WARNING, "%s: breakdown current increased to %g to resolve", here->DIOname, cbv);
|
||||
SPfrontEnd->IFerrorf(ERR_WARNING,
|
||||
"incompatibility with specified saturation current");
|
||||
#endif
|
||||
|
|
@ -252,7 +252,7 @@ VDMOStemp(GENmodel *inModel, CKTcircuit *ckt)
|
|||
if (fabs(xcbv - cbv) <= tol) goto matched;
|
||||
}
|
||||
#ifdef TRACE
|
||||
SPfrontEnd->IFerrorf(ERR_WARNING, "%s: unable to match forward and reverse diode regions: bv = %g, ibv = %g", here->DIOname, xbv, xcbv);
|
||||
// SPfrontEnd->IFerrorf(ERR_WARNING, "%s: unable to match forward and reverse diode regions: bv = %g, ibv = %g", here->DIOname, xbv, xcbv);
|
||||
#endif
|
||||
}
|
||||
matched:
|
||||
|
|
|
|||
|
|
@ -17,11 +17,11 @@ model_numnodes(int type)
|
|||
{
|
||||
#ifdef ADMS
|
||||
if (type == INPtypelook("hicum0") ||
|
||||
type == INPtypelook("hicum2") ||
|
||||
type == INPtypelook("bjt504t"))
|
||||
return 5;
|
||||
#else
|
||||
if (type == INPtypelook("VBIC"))
|
||||
if (type == INPtypelook("VBIC") ||
|
||||
type == INPtypelook("hicum2"))
|
||||
return 5;
|
||||
#endif
|
||||
|
||||
|
|
@ -101,9 +101,9 @@ void INP2Q(CKTcircuit *ckt, INPtables * tab, struct card *current, CKTnode *gnod
|
|||
#endif
|
||||
#ifdef ADMS
|
||||
thismodel->INPmodType != INPtypelook("hicum0") &&
|
||||
thismodel->INPmodType != INPtypelook("hicum2") &&
|
||||
thismodel->INPmodType != INPtypelook("bjt504t") &&
|
||||
#endif
|
||||
thismodel->INPmodType != INPtypelook("hicum2") &&
|
||||
thismodel->INPmodType != INPtypelook("VBIC"))
|
||||
{
|
||||
LITERR("incorrect model type");
|
||||
|
|
|
|||
|
|
@ -78,6 +78,7 @@ char *INPdomodel(CKTcircuit *ckt, struct card *image, INPtables * tab)
|
|||
"Device type HICUM0 not available in this binary\n");
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
case 8:
|
||||
type = INPtypelook("hicum2");
|
||||
if(type < 0) {
|
||||
|
|
@ -85,7 +86,6 @@ char *INPdomodel(CKTcircuit *ckt, struct card *image, INPtables * tab)
|
|||
"Device type HICUM2 not available in this binary\n");
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
default: /* placeholder; use level 4 for the next model */
|
||||
#ifdef ADMS
|
||||
err = INPmkTemp(
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue