BSIM3v3.3.0 added
This commit is contained in:
parent
b2e9e30a14
commit
468ddc23dc
|
|
@ -787,11 +787,12 @@ src/spicelib/devices/bjt/Makefile \
|
|||
src/spicelib/devices/bjt2/Makefile \
|
||||
src/spicelib/devices/bsim1/Makefile \
|
||||
src/spicelib/devices/bsim2/Makefile \
|
||||
src/spicelib/devices/bsim3/Makefile \
|
||||
src/spicelib/devices/bsim3v0/Makefile \
|
||||
src/spicelib/devices/bsim3v1/Makefile \
|
||||
src/spicelib/devices/bsim3v1a/Makefile \
|
||||
src/spicelib/devices/bsim3v1s/Makefile \
|
||||
src/spicelib/devices/bsim3/Makefile \
|
||||
src/spicelib/devices/bsim3v32/Makefile \
|
||||
src/spicelib/devices/bsim4/Makefile \
|
||||
src/spicelib/devices/bsim4v2/Makefile \
|
||||
src/spicelib/devices/bsim4v3/Makefile \
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ DYNAMIC_DEVICELIBS = \
|
|||
spicelib/devices/bsim3v1/libbsim3v1.a \
|
||||
spicelib/devices/bsim3v1s/libbsim3v1s.a \
|
||||
spicelib/devices/bsim3v1a/libbsim3v1a.a \
|
||||
spicelib/devices/bsim3v32/libbsim3v32.a \
|
||||
spicelib/devices/bsim4/libbsim4.a \
|
||||
spicelib/devices/bsim4v2/libbsim4v2.a \
|
||||
spicelib/devices/bsim4v3/libbsim4v3.a \
|
||||
|
|
|
|||
|
|
@ -15,8 +15,9 @@ SUBDIRS = \
|
|||
bsim4v5 \
|
||||
bsim3v0 \
|
||||
bsim3v1 \
|
||||
bsim3v1s \
|
||||
bsim3v1a \
|
||||
bsim3v1s \
|
||||
bsim3v32 \
|
||||
bsim3soi_pd \
|
||||
bsim3soi_fd \
|
||||
bsim3soi_dd \
|
||||
|
|
@ -71,8 +72,9 @@ DIST_SUBDIRS = \
|
|||
bsim4v5 \
|
||||
bsim3v0 \
|
||||
bsim3v1 \
|
||||
bsim3v1s \
|
||||
bsim3v1a \
|
||||
bsim3v1s \
|
||||
bsim3v32 \
|
||||
bsim3soi_pd \
|
||||
bsim3soi_fd \
|
||||
bsim3soi_dd \
|
||||
|
|
|
|||
|
|
@ -80,6 +80,7 @@ int add_udn(int,Evt_Udn_Info_t **);
|
|||
#include "bsim3v1/bsim3v1itf.h"
|
||||
#include "bsim3v1a/bsim3v1aitf.h"
|
||||
#include "bsim3v1s/bsim3v1sitf.h"
|
||||
#include "bsim3v32/bsim3v32itf.h"
|
||||
#include "bsim4/bsim4itf.h"
|
||||
#include "bsim4v2/bsim4v2itf.h"
|
||||
#include "bsim4v3/bsim4v3itf.h"
|
||||
|
|
@ -141,9 +142,9 @@ int add_udn(int,Evt_Udn_Info_t **);
|
|||
|
||||
/*saj in xspice the DEVices size can be varied so DEVNUM is an int*/
|
||||
#ifdef XSPICE
|
||||
static int DEVNUM = 64;
|
||||
static int DEVNUM = 65;
|
||||
#else
|
||||
#define DEVNUM 64
|
||||
#define DEVNUM 65
|
||||
#endif
|
||||
|
||||
/*Make this dynamic for later attempt to make all devices dynamic*/
|
||||
|
|
@ -190,81 +191,82 @@ spice_init_devices(void)
|
|||
DEVices[ 8] = get_bsim3v1_info();
|
||||
DEVices[ 9] = get_bsim3v1a_info();
|
||||
DEVices[10] = get_bsim3v1s_info();
|
||||
DEVices[11] = get_b3soi_info();
|
||||
DEVices[12] = get_bsim4_info();
|
||||
DEVices[13] = get_bsim4v2_info();
|
||||
DEVices[14] = get_bsim4v3_info();
|
||||
DEVices[15] = get_bsim4v4_info();
|
||||
DEVices[16] = get_bsim4v5_info();
|
||||
DEVices[17] = get_b3soipd_info();
|
||||
DEVices[18] = get_b3soifd_info();
|
||||
DEVices[19] = get_b3soidd_info();
|
||||
DEVices[20] = get_cap_info();
|
||||
DEVices[21] = get_cccs_info();
|
||||
DEVices[22] = get_ccvs_info();
|
||||
DEVices[23] = get_cpl_info();
|
||||
DEVices[24] = get_csw_info();
|
||||
DEVices[25] = get_dio_info();
|
||||
DEVices[26] = get_hfeta_info();
|
||||
DEVices[27] = get_hfet2_info();
|
||||
DEVices[28] = get_hsm1_info();
|
||||
DEVices[29] = get_ind_info();
|
||||
DEVices[30] = get_mut_info();
|
||||
DEVices[31] = get_isrc_info();
|
||||
DEVices[32] = get_jfet_info();
|
||||
DEVices[33] = get_jfet2_info();
|
||||
DEVices[34] = get_ltra_info();
|
||||
DEVices[35] = get_mes_info();
|
||||
DEVices[36] = get_mesa_info();
|
||||
DEVices[37] = get_mos1_info();
|
||||
DEVices[38] = get_mos2_info();
|
||||
DEVices[39] = get_mos3_info();
|
||||
DEVices[40] = get_mos6_info();
|
||||
DEVices[41] = get_mos9_info();
|
||||
DEVices[42] = get_res_info();
|
||||
DEVices[43] = get_soi3_info();
|
||||
DEVices[44] = get_sw_info();
|
||||
DEVices[45] = get_tra_info();
|
||||
DEVices[46] = get_txl_info();
|
||||
DEVices[47] = get_vbic_info();
|
||||
DEVices[48] = get_vccs_info();
|
||||
DEVices[49] = get_vcvs_info();
|
||||
DEVices[50] = get_vsrc_info();
|
||||
DEVices[11] = get_bsim3v32_info();
|
||||
DEVices[12] = get_b3soi_info();
|
||||
DEVices[13] = get_bsim4_info();
|
||||
DEVices[14] = get_bsim4v2_info();
|
||||
DEVices[15] = get_bsim4v3_info();
|
||||
DEVices[16] = get_bsim4v4_info();
|
||||
DEVices[17] = get_bsim4v5_info();
|
||||
DEVices[18] = get_b3soipd_info();
|
||||
DEVices[19] = get_b3soifd_info();
|
||||
DEVices[20] = get_b3soidd_info();
|
||||
DEVices[21] = get_cap_info();
|
||||
DEVices[22] = get_cccs_info();
|
||||
DEVices[23] = get_ccvs_info();
|
||||
DEVices[24] = get_cpl_info();
|
||||
DEVices[25] = get_csw_info();
|
||||
DEVices[26] = get_dio_info();
|
||||
DEVices[27] = get_hfeta_info();
|
||||
DEVices[28] = get_hfet2_info();
|
||||
DEVices[29] = get_hsm1_info();
|
||||
DEVices[30] = get_ind_info();
|
||||
DEVices[31] = get_mut_info();
|
||||
DEVices[32] = get_isrc_info();
|
||||
DEVices[33] = get_jfet_info();
|
||||
DEVices[34] = get_jfet2_info();
|
||||
DEVices[35] = get_ltra_info();
|
||||
DEVices[36] = get_mes_info();
|
||||
DEVices[37] = get_mesa_info();
|
||||
DEVices[38] = get_mos1_info();
|
||||
DEVices[39] = get_mos2_info();
|
||||
DEVices[40] = get_mos3_info();
|
||||
DEVices[41] = get_mos6_info();
|
||||
DEVices[42] = get_mos9_info();
|
||||
DEVices[43] = get_res_info();
|
||||
DEVices[44] = get_soi3_info();
|
||||
DEVices[45] = get_sw_info();
|
||||
DEVices[46] = get_tra_info();
|
||||
DEVices[47] = get_txl_info();
|
||||
DEVices[48] = get_vbic_info();
|
||||
DEVices[49] = get_vccs_info();
|
||||
DEVices[50] = get_vcvs_info();
|
||||
DEVices[51] = get_vsrc_info();
|
||||
#ifdef CIDER
|
||||
DEVices[51] = get_nbjt_info();
|
||||
DEVices[52] = get_nbjt2_info();
|
||||
DEVices[53] = get_numd_info();
|
||||
DEVices[54] = get_numd2_info();
|
||||
DEVices[55] = get_numos_info();
|
||||
DEVices[52] = get_nbjt_info();
|
||||
DEVices[53] = get_nbjt2_info();
|
||||
DEVices[54] = get_numd_info();
|
||||
DEVices[55] = get_numd2_info();
|
||||
DEVices[56] = get_numos_info();
|
||||
#else
|
||||
DEVices[51] = NULL;
|
||||
DEVices[52] = NULL;
|
||||
DEVices[53] = NULL;
|
||||
DEVices[54] = NULL;
|
||||
DEVices[55] = NULL;
|
||||
DEVices[55] = NULL;
|
||||
DEVices[56] = NULL;
|
||||
#endif
|
||||
|
||||
#ifdef ADMS
|
||||
DEVices[56] = get_hicum0_info();
|
||||
DEVices[57] = get_hicum2_info();
|
||||
DEVices[58] = get_mextram_info();
|
||||
DEVices[59] = get_ekv_info();
|
||||
DEVices[60] = get_psp102_info();
|
||||
DEVices[57] = get_hicum0_info();
|
||||
DEVices[58] = get_hicum2_info();
|
||||
DEVices[59] = get_mextram_info();
|
||||
DEVices[60] = get_ekv_info();
|
||||
DEVices[61] = get_psp102_info();
|
||||
#else
|
||||
DEVices[56] = NULL;
|
||||
DEVices[57] = NULL;
|
||||
DEVices[58] = NULL;
|
||||
DEVices[59] = NULL;
|
||||
DEVices[60] = NULL;
|
||||
DEVices[61] = NULL;
|
||||
#endif
|
||||
|
||||
#ifdef NDEV /* NDEV */
|
||||
DEVices[61] = get_ndev_info();
|
||||
DEVices[62] = get_ndev_info();
|
||||
#else
|
||||
DEVices[61] = NULL;
|
||||
#endif
|
||||
DEVices[62] = NULL;
|
||||
#endif
|
||||
DEVices[63] = NULL;
|
||||
DEVices[64] = NULL;
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -288,12 +290,12 @@ SPICEdev ** devices(void)
|
|||
/*not yet usable*/
|
||||
|
||||
#ifdef ADMS
|
||||
#define DEVICES_USED {"asrc", "bjt", "bjt2", "vbic", "bsim1", "bsim2", "bsim3", "bsim3v2", "bsim3v1", "bsim4", "bsim4v2", "bsim4v3", "bsim4v4", "bsim4v5", \
|
||||
#define DEVICES_USED {"asrc", "bjt", "bjt2", "vbic", "bsim1", "bsim2", "bsim3", "bsim3v32", "bsim3v2", "bsim3v1", "bsim4", "bsim4v2", "bsim4v3", "bsim4v4", "bsim4v5", \
|
||||
"bsim3soipd", "bsim3soifd", "bsim3soidd", \
|
||||
"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", "mextram", "ekv", "psp102"}
|
||||
#else
|
||||
#define DEVICES_USED {"asrc", "bjt", "bjt2", "vbic", "bsim1", "bsim2", "bsim3", "bsim3v2", "bsim3v1", "bsim4", "bsim4v4", "bsim4v2", "bsim4v3", "bsim4v4", "bsim4v5", \
|
||||
#define DEVICES_USED {"asrc", "bjt", "bjt2", "vbic", "bsim1", "bsim2", "bsim3", "bsim3v32", "bsim3v2", "bsim3v1", "bsim4", "bsim4v4", "bsim4v2", "bsim4v3", "bsim4v4", "bsim4v5", \
|
||||
"bsim3soipd", "bsim3soifd", "bsim3soidd", \
|
||||
"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"}
|
||||
|
|
|
|||
|
|
@ -210,6 +210,7 @@ INP2M (void *ckt, INPtables * tab, card * current)
|
|||
&& thismodel->INPmodType != INPtypelook ("BSIM1")
|
||||
&& thismodel->INPmodType != INPtypelook ("BSIM2")
|
||||
&& thismodel->INPmodType != INPtypelook ("BSIM3")
|
||||
&& thismodel->INPmodType != INPtypelook ("BSIM3v32")
|
||||
&& thismodel->INPmodType != INPtypelook ("B3SOI")
|
||||
&& thismodel->INPmodType != INPtypelook ("B3SOIPD")
|
||||
&& thismodel->INPmodType != INPtypelook ("B3SOIFD")
|
||||
|
|
|
|||
|
|
@ -273,8 +273,15 @@ char *INPdomodel(void *ckt, card * image, INPtables * tab)
|
|||
}
|
||||
break;
|
||||
case 8:
|
||||
type = INPtypelook("BSIM3");
|
||||
err = INPfindVer(line, ver);
|
||||
if ( (strstr(ver, "3.2.2")) || (strstr(ver, "3.22")) ||
|
||||
(strstr(ver, "3.2.3")) || (strstr(ver, "3.23")) ||
|
||||
(strstr(ver, "3.2.4")) || (strstr(ver, "3.24")) ) {
|
||||
type = INPtypelook("BSIM3v32");
|
||||
}
|
||||
if ( (strstr(ver, "3.3")) || (strstr(ver, "3.3.0")) || (strstr(ver, "3.30")) ) {
|
||||
type = INPtypelook("BSIM3");
|
||||
}
|
||||
if (type < 0) {
|
||||
err =
|
||||
INPmkTemp
|
||||
|
|
|
|||
|
|
@ -207,9 +207,10 @@ INPgetModBin( void* ckt, char* name, INPmodel** model, INPtables* tab, char* lin
|
|||
w = parse_values[1]*scale;
|
||||
|
||||
for ( modtmp = modtab; modtmp != (INPmodel*)NULL; modtmp = modtmp->INPnextModel ) {
|
||||
if ( modtmp->INPmodType != INPtypelook( "BSIM3" ) && modtmp->INPmodType != INPtypelook( "BSIM4" ) &&
|
||||
modtmp->INPmodType != INPtypelook( "BSIM4v2" ) && modtmp->INPmodType != INPtypelook( "BSIM4v3" ) &&
|
||||
modtmp->INPmodType != INPtypelook( "BSIM4v4" ) && modtmp->INPmodType != INPtypelook( "BSIM4v5" ) )
|
||||
if ( modtmp->INPmodType != INPtypelook( "BSIM3" ) && modtmp->INPmodType != INPtypelook( "BSIM3v32" ) &&
|
||||
modtmp->INPmodType != INPtypelook( "BSIM4" ) && modtmp->INPmodType != INPtypelook( "BSIM4v2" ) &&
|
||||
modtmp->INPmodType != INPtypelook( "BSIM4v3" ) && modtmp->INPmodType != INPtypelook( "BSIM4v4" ) &&
|
||||
modtmp->INPmodType != INPtypelook( "BSIM4v5" ) )
|
||||
continue;
|
||||
|
||||
if ( parse_line( modtmp->INPmodLine->line, model_tokens, 4, parse_values, parse_found ) != TRUE )
|
||||
|
|
|
|||
Loading…
Reference in New Issue