Added a conditional compilation switch for the KCL Verification

This commit is contained in:
Francesco Lannutti 2013-05-27 10:23:04 +02:00
parent e1cd74d3a3
commit a93d51a074
101 changed files with 401 additions and 96 deletions

View File

@ -182,6 +182,10 @@ AC_ARG_WITH([tcl],
AC_ARG_WITH([ngshared], AC_ARG_WITH([ngshared],
[AS_HELP_STRING([--with-ngshared], [Compiles ngspice as shared library (dll)])]) [AS_HELP_STRING([--with-ngshared], [Compiles ngspice as shared library (dll)])])
# --enable-kirchhoff: enable KCL
AC_ARG_ENABLE([kirchhoff],
[AS_HELP_STRING([--enable-kirchhoff], [Enables the Kirchhoff Current Law Verification])])
# readline and editline cannot both be enabled # readline and editline cannot both be enabled
if test "x$with_editline" = xyes; then if test "x$with_editline" = xyes; then
if test "x$with_readline" = xyes; then if test "x$with_readline" = xyes; then
@ -880,6 +884,12 @@ fi
AC_SUBST([XGRAPHDIR]) AC_SUBST([XGRAPHDIR])
AC_SUBST([NOTXGRAPH]) AC_SUBST([NOTXGRAPH])
if test "x$enable_kirchhoff" = xyes; then
AC_DEFINE([KIRCHHOFF], [], [Define if we want to enable the Kirchhoff Current Law Verification])
AC_MSG_RESULT([WARNING: Kirchhoff Current Law Verification Enabled (experimental)])
fi
AM_CONDITIONAL([KIRCHHOFF_WANTED], [test "x$enable_kirchhoff" = xyes])
AC_CHECK_PROGS([YACC], ['bison -y' byacc yacc]) AC_CHECK_PROGS([YACC], ['bison -y' byacc yacc])
################# XSPICE ################################################## ################# XSPICE ##################################################

View File

@ -110,8 +110,12 @@ struct CKTcircuit {
double *CKTrhs; /* current rhs value - being loaded */ double *CKTrhs; /* current rhs value - being loaded */
double *CKTrhsOld; /* previous rhs value for convergence double *CKTrhsOld; /* previous rhs value for convergence
testing */ testing */
#ifdef KIRCHHOFF
double *CKTfvk ; /* KCL Verification array */ double *CKTfvk ; /* KCL Verification array */
int *CKTnodeIsLinear ; /* Flag to indicate if a node is linear or non-linear */ int *CKTnodeIsLinear ; /* Flag to indicate if a node is linear or non-linear */
#endif
double *CKTrhsSpare; /* spare rhs value for reordering */ double *CKTrhsSpare; /* spare rhs value for reordering */
double *CKTirhs; /* current rhs value - being loaded double *CKTirhs; /* current rhs value - being loaded
(imag) */ (imag) */

View File

@ -112,9 +112,11 @@ typedef struct SPICEdev {
int *DEVinstSize; /* size of an instance */ int *DEVinstSize; /* size of an instance */
int *DEVmodSize; /* size of a model */ int *DEVmodSize; /* size of a model */
#ifdef KIRCHHOFF
/* Francesco Lannutti */ /* Francesco Lannutti */
int (*DEVnodeIsNonLinear)(GENmodel *, CKTcircuit *) ; int (*DEVnodeIsNonLinear)(GENmodel *, CKTcircuit *) ;
/* Routine to declare a node as NonLinear */ /* Routine to declare a node as NonLinear */
#endif
} SPICEdev; /* instance of structure for each possible type of device */ } SPICEdev; /* instance of structure for each possible type of device */

View File

@ -21,12 +21,16 @@ NIconvTest(CKTcircuit *ckt)
int i; /* generic loop variable */ int i; /* generic loop variable */
int size; /* size of the matrix */ int size; /* size of the matrix */
CKTnode *node; /* current matrix entry */ CKTnode *node; /* current matrix entry */
//#ifndef KIRCHHOFF
double old; double old;
double new; double new;
double tol; double tol;
//#endif
size = SMPmatSize (ckt->CKTmatrix) ; size = SMPmatSize (ckt->CKTmatrix) ;
//#ifndef KIRCHHOFF
#ifdef STEPDEBUG #ifdef STEPDEBUG
for (i=1;i<=size;i++) { for (i=1;i<=size;i++) {
new = ckt->CKTrhs [i] ; new = ckt->CKTrhs [i] ;
@ -55,6 +59,8 @@ NIconvTest(CKTcircuit *ckt)
} }
} }
//#else
#ifdef KIRCHHOFF
/* KCL Verification */ /* KCL Verification */
double maximum = 0 ; double maximum = 0 ;
@ -84,6 +90,7 @@ NIconvTest(CKTcircuit *ckt)
return 1 ; return 1 ;
} }
} }
#endif
#ifdef NEWCONV #ifdef NEWCONV
i = CKTconvTest(ckt); i = CKTconvTest(ckt);

View File

@ -21,19 +21,27 @@ Author: 1985 Thomas L. Quarles
int int
NIreinit( CKTcircuit *ckt) NIreinit( CKTcircuit *ckt)
{ {
int i, size; int size;
#if defined(PREDICTOR) || defined(KIRCHHOFF)
int i;
#endif
size = SMPmatSize(ckt->CKTmatrix); size = SMPmatSize(ckt->CKTmatrix);
CKALLOC(CKTrhs,size+1,double); CKALLOC(CKTrhs,size+1,double);
CKALLOC(CKTrhsOld,size+1,double); CKALLOC(CKTrhsOld,size+1,double);
CKALLOC(CKTfvk,size+1,double);
CKALLOC(CKTrhsSpare,size+1,double); CKALLOC(CKTrhsSpare,size+1,double);
CKALLOC(CKTirhs,size+1,double); CKALLOC(CKTirhs,size+1,double);
CKALLOC(CKTirhsOld,size+1,double); CKALLOC(CKTirhsOld,size+1,double);
CKALLOC(CKTirhsSpare,size+1,double); CKALLOC(CKTirhsSpare,size+1,double);
#ifdef KIRCHHOFF
CKALLOC(CKTfvk,size+1,double);
CKALLOC(CKTnodeIsLinear,size+1,int); CKALLOC(CKTnodeIsLinear,size+1,int);
for (i = 0 ; i <= size ; i++) for (i = 0 ; i <= size ; i++)
ckt->CKTnodeIsLinear [i] = 1 ; ckt->CKTnodeIsLinear [i] = 1 ;
#endif
#ifdef PREDICTOR #ifdef PREDICTOR
CKALLOC(CKTpred,size+1,double); CKALLOC(CKTpred,size+1,double);
for( i=0;i<8;i++) { for( i=0;i<8;i++) {

View File

@ -52,7 +52,11 @@ CKTload(CKTcircuit *ckt)
size = SMPmatSize(ckt->CKTmatrix); size = SMPmatSize(ckt->CKTmatrix);
for (i = 0; i <= size; i++) { for (i = 0; i <= size; i++) {
ckt->CKTrhs[i] = 0; ckt->CKTrhs[i] = 0;
#ifdef KIRCHHOFF
ckt->CKTfvk[i] = 0; ckt->CKTfvk[i] = 0;
#endif
} }
SMPclear(ckt->CKTmatrix); SMPclear(ckt->CKTmatrix);
#ifdef STEPDEBUG #ifdef STEPDEBUG

View File

@ -128,6 +128,7 @@ CKTsetup(CKTcircuit *ckt)
/* gtri - end - Setup for adding rshunt option resistors */ /* gtri - end - Setup for adding rshunt option resistors */
#endif #endif
#ifdef KIRCHHOFF
/** Marking node as Non-Linear when needed /** Marking node as Non-Linear when needed
* By default every node is Linear * By default every node is Linear
*/ */
@ -140,6 +141,7 @@ CKTsetup(CKTcircuit *ckt)
return (error) ; return (error) ;
} }
} }
#endif
return(OK); return(OK);
} }

View File

@ -17,13 +17,16 @@ libasrc_la_SOURCES = \
asrcinit.h \ asrcinit.h \
asrcload.c \ asrcload.c \
asrcmdel.c \ asrcmdel.c \
asrcnode.c \
asrcpar.c \ asrcpar.c \
asrcpzld.c \ asrcpzld.c \
asrcset.c \ asrcset.c \
asrctemp.c asrctemp.c
if KIRCHHOFF_WANTED
libasrc_la_SOURCES += asrcnode.c
endif
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
AM_CFLAGS = $(STATIC) AM_CFLAGS = $(STATIC)
MAINTAINERCLEANFILES = Makefile.in MAINTAINERCLEANFILES = Makefile.in

View File

@ -74,7 +74,11 @@ SPICEdev ASRCinfo = {
#endif #endif
/* DEVinstSize */ &ASRCiSize, /* DEVinstSize */ &ASRCiSize,
/* DEVmodSize */ &ASRCmSize, /* DEVmodSize */ &ASRCmSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ ASRCnodeIsNonLinear /* DEVnodeIsNonLinear */ ASRCnodeIsNonLinear
#endif
}; };

View File

@ -22,7 +22,6 @@ libbjt_la_SOURCES = \
bjtmask.c \ bjtmask.c \
bjtmdel.c \ bjtmdel.c \
bjtmpar.c \ bjtmpar.c \
bjtnode.c \
bjtnoise.c \ bjtnoise.c \
bjtparam.c \ bjtparam.c \
bjtpzld.c \ bjtpzld.c \
@ -36,6 +35,9 @@ libbjt_la_SOURCES = \
bjttrunc.c bjttrunc.c
if KIRCHHOFF_WANTED
libbjt_la_SOURCES += bjtnode.c
endif
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
AM_CFLAGS = $(STATIC) AM_CFLAGS = $(STATIC)

View File

@ -73,7 +73,10 @@ SPICEdev BJTinfo = { /* description from struct IFdevice */
#endif #endif
/* DEVinstSize */ &BJTiSize, /* DEVinstSize */ &BJTiSize,
/* DEVmodSize */ &BJTmSize, /* DEVmodSize */ &BJTmSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ BJTnodeIsNonLinear /* DEVnodeIsNonLinear */ BJTnodeIsNonLinear
#endif
}; };

View File

@ -19,7 +19,6 @@ libbsim1_la_SOURCES = \
b1moscap.c \ b1moscap.c \
b1mpar.c \ b1mpar.c \
b1par.c \ b1par.c \
b1node.c \
b1noi.c \ b1noi.c \
b1pzld.c \ b1pzld.c \
b1set.c \ b1set.c \
@ -32,6 +31,9 @@ libbsim1_la_SOURCES = \
bsim1itf.h bsim1itf.h
if KIRCHHOFF_WANTED
libbsim1_la_SOURCES += b1node.c
endif
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
AM_CFLAGS = $(STATIC) AM_CFLAGS = $(STATIC)

View File

@ -73,7 +73,10 @@ SPICEdev B1info = {
#endif #endif
/* DEVinstSize */ &B1iSize, /* DEVinstSize */ &B1iSize,
/* DEVmodSize */ &B1mSize, /* DEVmodSize */ &B1mSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ B1nodeIsNonLinear /* DEVnodeIsNonLinear */ B1nodeIsNonLinear
#endif
}; };

View File

@ -16,7 +16,6 @@ libbsim2_la_SOURCES = \
b2mdel.c \ b2mdel.c \
b2moscap.c \ b2moscap.c \
b2mpar.c \ b2mpar.c \
b2node.c \
b2noi.c \ b2noi.c \
b2par.c \ b2par.c \
b2pzld.c \ b2pzld.c \
@ -30,6 +29,9 @@ libbsim2_la_SOURCES = \
bsim2itf.h bsim2itf.h
if KIRCHHOFF_WANTED
libbsim2_la_SOURCES += b2node.c
endif
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
AM_CFLAGS = $(STATIC) AM_CFLAGS = $(STATIC)

View File

@ -721,7 +721,7 @@ line900:
*(here->B2SPbPtr) += m * (-gbs-(xnrm-xrev)*gmbs-gcsgb-gcsdb-gcssb); *(here->B2SPbPtr) += m * (-gbs-(xnrm-xrev)*gmbs-gcsgb-gcsdb-gcssb);
*(here->B2SPdpPtr) += m * (-gds-xrev*(gm+gmbs)+gcsdb); *(here->B2SPdpPtr) += m * (-gds-xrev*(gm+gmbs)+gcsdb);
#ifdef KIRCHHOFF
/* KCL verification - Dynamic Part */ /* KCL verification - Dynamic Part */
*(ckt->CKTfvk + here->B2gNode) += m * ceqqg_fvk ; *(ckt->CKTfvk + here->B2gNode) += m * ceqqg_fvk ;
*(ckt->CKTfvk + here->B2bNode) += m * (ceqbs_fvk + ceqbd_fvk + ceqqb_fvk) ; *(ckt->CKTfvk + here->B2bNode) += m * (ceqbs_fvk + ceqbd_fvk + ceqqb_fvk) ;
@ -738,6 +738,7 @@ line900:
*(ckt->CKTfvk + here->B2sNode) += m * (-here->B2sourceConductance) * *(ckt->CKTrhsOld + here->B2sNodePrime) ; *(ckt->CKTfvk + here->B2sNode) += m * (-here->B2sourceConductance) * *(ckt->CKTrhsOld + here->B2sNodePrime) ;
*(ckt->CKTfvk + here->B2dNodePrime) += m * (-here->B2drainConductance) * *(ckt->CKTrhsOld + here->B2dNode) ; *(ckt->CKTfvk + here->B2dNodePrime) += m * (-here->B2drainConductance) * *(ckt->CKTrhsOld + here->B2dNode) ;
*(ckt->CKTfvk + here->B2sNodePrime) += m * (-here->B2sourceConductance) * *(ckt->CKTrhsOld + here->B2sNode) ; *(ckt->CKTfvk + here->B2sNodePrime) += m * (-here->B2sourceConductance) * *(ckt->CKTrhsOld + here->B2sNode) ;
#endif
line1000: ; line1000: ;

View File

@ -73,7 +73,10 @@ SPICEdev B2info = {
#endif #endif
/* DEVinstSize */ &B2iSize, /* DEVinstSize */ &B2iSize,
/* DEVmodSize */ &B2mSize, /* DEVmodSize */ &B2mSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ B2nodeIsNonLinear /* DEVnodeIsNonLinear */ B2nodeIsNonLinear
#endif
}; };

View File

@ -15,7 +15,6 @@ libbsim3_la_SOURCES = \
b3mask.c \ b3mask.c \
b3mdel.c \ b3mdel.c \
b3mpar.c \ b3mpar.c \
b3node.c \
b3noi.c \ b3noi.c \
b3par.c \ b3par.c \
b3pzld.c \ b3pzld.c \
@ -29,6 +28,9 @@ libbsim3_la_SOURCES = \
bsim3itf.h bsim3itf.h
if KIRCHHOFF_WANTED
libbsim3_la_SOURCES += b3node.c
endif
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
AM_CFLAGS = $(STATIC) AM_CFLAGS = $(STATIC)

View File

@ -3142,6 +3142,7 @@ line900:
*(here->BSIM3QbPtr) += m * (ggtb - gcqbb); *(here->BSIM3QbPtr) += m * (ggtb - gcqbb);
} }
#ifdef KIRCHHOFF
/////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////
/* /*
*(ckt->CKTfvk + here->BSIM3gNode) += m * ceqqg ; *(ckt->CKTfvk + here->BSIM3gNode) += m * ceqqg ;
@ -3225,6 +3226,7 @@ line900:
*(ckt->CKTfvk+here->BSIM3sNodePrime) += m * (gcsgb + sxpart * ggtg + T1 * dsxpart_dVg) * *(ckt->CKTrhsOld+here->BSIM3gNode) ; *(ckt->CKTfvk+here->BSIM3sNodePrime) += m * (gcsgb + sxpart * ggtg + T1 * dsxpart_dVg) * *(ckt->CKTrhsOld+here->BSIM3gNode) ;
*(ckt->CKTfvk+here->BSIM3sNodePrime) -= m * (gcsgb + gcsdb + gcssb - sxpart * ggtb - T1 * dsxpart_dVb) * *(ckt->CKTrhsOld+here->BSIM3bNode) ; *(ckt->CKTfvk+here->BSIM3sNodePrime) -= m * (gcsgb + gcsdb + gcssb - sxpart * ggtb - T1 * dsxpart_dVb) * *(ckt->CKTrhsOld+here->BSIM3bNode) ;
*(ckt->CKTfvk+here->BSIM3sNodePrime) -= m * (- gcsdb - sxpart * ggtd - T1 * dsxpart_dVd) * *(ckt->CKTrhsOld+here->BSIM3dNodePrime) ; *(ckt->CKTfvk+here->BSIM3sNodePrime) -= m * (- gcsdb - sxpart * ggtd - T1 * dsxpart_dVd) * *(ckt->CKTrhsOld+here->BSIM3dNodePrime) ;
#endif
#endif #endif
line1000: ; line1000: ;

View File

@ -72,7 +72,10 @@ SPICEdev BSIM3info = {
#endif #endif
/* DEVinstSize */ &BSIM3iSize, /* DEVinstSize */ &BSIM3iSize,
/* DEVmodSize */ &BSIM3mSize, /* DEVmodSize */ &BSIM3mSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ BSIM3nodeIsNonLinear /* DEVnodeIsNonLinear */ BSIM3nodeIsNonLinear
#endif
}; };

View File

@ -15,7 +15,6 @@ libbsim3soidd_la_SOURCES = \
b3soiddmask.c \ b3soiddmask.c \
b3soiddmdel.c \ b3soiddmdel.c \
b3soiddmpar.c \ b3soiddmpar.c \
b3soiddnode.c \
b3soiddnoi.c \ b3soiddnoi.c \
b3soiddpar.c \ b3soiddpar.c \
b3soiddpzld.c \ b3soiddpzld.c \
@ -29,6 +28,9 @@ libbsim3soidd_la_SOURCES = \
b3soidditf.h b3soidditf.h
if KIRCHHOFF_WANTED
libbsim3soidd_la_SOURCES += b3soiddnode.c
endif
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
AM_CFLAGS = $(STATIC) AM_CFLAGS = $(STATIC)

View File

@ -70,7 +70,11 @@ SPICEdev B3SOIDDinfo = {
#endif #endif
/* DEVinstSize */ &B3SOIDDiSize, /* DEVinstSize */ &B3SOIDDiSize,
/* DEVmodSize */ &B3SOIDDmSize, /* DEVmodSize */ &B3SOIDDmSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ B3SOIDDnodeIsNonLinear /* DEVnodeIsNonLinear */ B3SOIDDnodeIsNonLinear
#endif
}; };
SPICEdev * SPICEdev *

View File

@ -15,7 +15,6 @@ libbsim3soifd_la_SOURCES = \
b3soifdmask.c \ b3soifdmask.c \
b3soifdmdel.c \ b3soifdmdel.c \
b3soifdmpar.c \ b3soifdmpar.c \
b3soifdnode.c \
b3soifdnoi.c \ b3soifdnoi.c \
b3soifdpar.c \ b3soifdpar.c \
b3soifdpzld.c \ b3soifdpzld.c \
@ -29,6 +28,9 @@ libbsim3soifd_la_SOURCES = \
b3soifditf.h b3soifditf.h
if KIRCHHOFF_WANTED
libbsim3soifd_la_SOURCES += b3soifdnode.c
endif
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
AM_CFLAGS = $(STATIC) AM_CFLAGS = $(STATIC)

View File

@ -71,7 +71,11 @@ SPICEdev B3SOIFDinfo = {
#endif #endif
/* DEVinstSize*/ &B3SOIFDiSize, /* DEVinstSize*/ &B3SOIFDiSize,
/* DEVmodSize*/ &B3SOIFDmSize, /* DEVmodSize*/ &B3SOIFDmSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ B3SOIFDnodeIsNonLinear /* DEVnodeIsNonLinear */ B3SOIFDnodeIsNonLinear
#endif
}; };

View File

@ -15,7 +15,6 @@ libbsim3soipd_la_SOURCES = \
b3soipdmask.c \ b3soipdmask.c \
b3soipdmdel.c \ b3soipdmdel.c \
b3soipdmpar.c \ b3soipdmpar.c \
b3soipdnode.c \
b3soipdnoi.c \ b3soipdnoi.c \
b3soipdpar.c \ b3soipdpar.c \
b3soipdpzld.c \ b3soipdpzld.c \
@ -29,6 +28,9 @@ libbsim3soipd_la_SOURCES = \
b3soipditf.h b3soipditf.h
if KIRCHHOFF_WANTED
libbsim3soipd_la_SOURCES += b3soipdnode.c
endif
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
AM_CFLAGS = $(STATIC) AM_CFLAGS = $(STATIC)

View File

@ -72,7 +72,11 @@ SPICEdev B3SOIPDinfo = {
#endif #endif
/* DEVinstSize*/ &B3SOIPDiSize, /* DEVinstSize*/ &B3SOIPDiSize,
/* DEVmodSize*/ &B3SOIPDmSize, /* DEVmodSize*/ &B3SOIPDmSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ B3SOIPDnodeIsNonLinear /* DEVnodeIsNonLinear */ B3SOIPDnodeIsNonLinear
#endif
}; };
SPICEdev * SPICEdev *

View File

@ -14,7 +14,6 @@ libbsim3v0_la_SOURCES = \
b3v0mask.c \ b3v0mask.c \
b3v0mdel.c \ b3v0mdel.c \
b3v0mpar.c \ b3v0mpar.c \
b3v0node.c \
b3v0noi.c \ b3v0noi.c \
b3v0par.c \ b3v0par.c \
b3v0pzld.c \ b3v0pzld.c \
@ -28,6 +27,9 @@ libbsim3v0_la_SOURCES = \
bsim3v0itf.h bsim3v0itf.h
if KIRCHHOFF_WANTED
libbsim3v0_la_SOURCES += b3v0node.c
endif
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
AM_CFLAGS = $(STATIC) AM_CFLAGS = $(STATIC)

View File

@ -71,7 +71,10 @@ SPICEdev B3v0info = {
#endif #endif
/* DEVinstSize */ &BSIM3v0iSize, /* DEVinstSize */ &BSIM3v0iSize,
/* DEVmodSize */ &BSIM3v0mSize, /* DEVmodSize */ &BSIM3v0mSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ BSIM3v0nodeIsNonLinear /* DEVnodeIsNonLinear */ BSIM3v0nodeIsNonLinear
#endif
}; };

View File

@ -15,7 +15,6 @@ libbsim3v1_la_SOURCES = \
b3v1mask.c \ b3v1mask.c \
b3v1mdel.c \ b3v1mdel.c \
b3v1mpar.c \ b3v1mpar.c \
b3v1node.c \
b3v1noi.c \ b3v1noi.c \
b3v1par.c \ b3v1par.c \
b3v1pzld.c \ b3v1pzld.c \
@ -29,6 +28,9 @@ libbsim3v1_la_SOURCES = \
bsim3v1itf.h bsim3v1itf.h
if KIRCHHOFF_WANTED
libbsim3v1_la_SOURCES += b3v1node.c
endif
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
AM_CFLAGS = $(STATIC) AM_CFLAGS = $(STATIC)

View File

@ -71,7 +71,10 @@ SPICEdev BSIM3v1info = {
#endif #endif
/* DEVinstSize */ &BSIM3v1iSize, /* DEVinstSize */ &BSIM3v1iSize,
/* DEVmodSize */ &BSIM3v1mSize, /* DEVmodSize */ &BSIM3v1mSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ BSIM3v1nodeIsNonLinear /* DEVnodeIsNonLinear */ BSIM3v1nodeIsNonLinear
#endif
}; };

View File

@ -15,7 +15,6 @@ libbsim3v32_la_SOURCES = \
b3v32mask.c \ b3v32mask.c \
b3v32mdel.c \ b3v32mdel.c \
b3v32mpar.c \ b3v32mpar.c \
b3v32node.c \
b3v32noi.c \ b3v32noi.c \
b3v32par.c \ b3v32par.c \
b3v32pzld.c \ b3v32pzld.c \
@ -29,6 +28,9 @@ libbsim3v32_la_SOURCES = \
bsim3v32itf.h bsim3v32itf.h
if KIRCHHOFF_WANTED
libbsim3v32_la_SOURCES += b3v32node.c
endif
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
AM_CFLAGS = $(STATIC) AM_CFLAGS = $(STATIC)

View File

@ -72,7 +72,10 @@ SPICEdev BSIM3v32info = {
#endif #endif
/* DEVinstSize */ &BSIM3v32iSize, /* DEVinstSize */ &BSIM3v32iSize,
/* DEVmodSize */ &BSIM3v32mSize, /* DEVmodSize */ &BSIM3v32mSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ BSIM3v32nodeIsNonLinear /* DEVnodeIsNonLinear */ BSIM3v32nodeIsNonLinear
#endif
}; };

View File

@ -16,7 +16,6 @@ libbsim4_la_SOURCES = \
b4mask.c \ b4mask.c \
b4mdel.c \ b4mdel.c \
b4mpar.c \ b4mpar.c \
b4node.c \
b4noi.c \ b4noi.c \
b4par.c \ b4par.c \
b4pzld.c \ b4pzld.c \
@ -30,6 +29,9 @@ libbsim4_la_SOURCES = \
bsim4itf.h bsim4itf.h
if KIRCHHOFF_WANTED
libbsim4_la_SOURCES += b4node.c
endif
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
AM_CFLAGS = $(STATIC) AM_CFLAGS = $(STATIC)

View File

@ -5346,6 +5346,7 @@ line900:
(*(here->BSIM4GPqPtr) -= m * here->BSIM4gtau); (*(here->BSIM4GPqPtr) -= m * here->BSIM4gtau);
} }
#ifdef KIRCHHOFF
/////////////////////////////////////////// ///////////////////////////////////////////
/* KCL verification - Linear and Dynamic Part */ /* KCL verification - Linear and Dynamic Part */
@ -5642,6 +5643,7 @@ line900:
*(ckt->CKTfvk + here->BSIM4sNodePrime) += m * sxpart * here->BSIM4gtau * *(ckt->CKTrhsOld + here->BSIM4qNode) ; *(ckt->CKTfvk + here->BSIM4sNodePrime) += m * sxpart * here->BSIM4gtau * *(ckt->CKTrhsOld + here->BSIM4qNode) ;
*(ckt->CKTfvk + here->BSIM4gNodePrime) -= m * here->BSIM4gtau * *(ckt->CKTrhsOld + here->BSIM4qNode) ; *(ckt->CKTfvk + here->BSIM4gNodePrime) -= m * here->BSIM4gtau * *(ckt->CKTrhsOld + here->BSIM4qNode) ;
} }
#endif
#endif #endif
line1000: ; line1000: ;

View File

@ -72,8 +72,12 @@ SPICEdev BSIM4info = {
NULL, /* DEVacct */ NULL, /* DEVacct */
#endif #endif
&BSIM4iSize, /* DEVinstSize */ &BSIM4iSize, /* DEVinstSize */
&BSIM4mSize, /* DEVmodSize */ &BSIM4mSize, /* DEVmodSize */
#ifdef KIRCHHOFF
BSIM4nodeIsNonLinear /* DEVnodeIsNonLinear */ BSIM4nodeIsNonLinear /* DEVnodeIsNonLinear */
#endif
}; };

View File

@ -16,7 +16,6 @@ libbsim4v4_la_SOURCES = \
b4v4mask.c \ b4v4mask.c \
b4v4mdel.c \ b4v4mdel.c \
b4v4mpar.c \ b4v4mpar.c \
b4v4node.c \
b4v4noi.c \ b4v4noi.c \
b4v4par.c \ b4v4par.c \
b4v4pzld.c \ b4v4pzld.c \
@ -30,6 +29,9 @@ libbsim4v4_la_SOURCES = \
bsim4v4itf.h bsim4v4itf.h
if KIRCHHOFF_WANTED
libbsim4v4_la_SOURCES += b4v4node.c
endif
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
AM_CFLAGS = $(STATIC) AM_CFLAGS = $(STATIC)

View File

@ -72,8 +72,12 @@ SPICEdev BSIM4v4info = {
NULL, /* DEVacct */ NULL, /* DEVacct */
#endif #endif
&BSIM4v4iSize, /* DEVinstSize */ &BSIM4v4iSize, /* DEVinstSize */
&BSIM4v4mSize, /* DEVmodSize */ &BSIM4v4mSize, /* DEVmodSize */
#ifdef KIRCHHOFF
BSIM4v4nodeIsNonLinear /* DEVnodeIsNonLinear */ BSIM4v4nodeIsNonLinear /* DEVnodeIsNonLinear */
#endif
}; };

View File

@ -16,7 +16,6 @@ libbsim4v5_la_SOURCES = \
b4v5mask.c \ b4v5mask.c \
b4v5mdel.c \ b4v5mdel.c \
b4v5mpar.c \ b4v5mpar.c \
b4v5node.c \
b4v5noi.c \ b4v5noi.c \
b4v5par.c \ b4v5par.c \
b4v5pzld.c \ b4v5pzld.c \
@ -30,6 +29,9 @@ libbsim4v5_la_SOURCES = \
bsim4v5itf.h bsim4v5itf.h
if KIRCHHOFF_WANTED
libbsim4v5_la_SOURCES += b4v5node.c
endif
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
AM_CFLAGS = $(STATIC) AM_CFLAGS = $(STATIC)

View File

@ -72,8 +72,12 @@ SPICEdev BSIM4v5info = {
NULL, /* DEVacct */ NULL, /* DEVacct */
#endif #endif
&BSIM4v5iSize, /* DEVinstSize */ &BSIM4v5iSize, /* DEVinstSize */
&BSIM4v5mSize, /* DEVmodSize */ &BSIM4v5mSize, /* DEVmodSize */
#ifdef KIRCHHOFF
BSIM4v5nodeIsNonLinear /* DEVnodeIsNonLinear */ BSIM4v5nodeIsNonLinear /* DEVnodeIsNonLinear */
#endif
}; };

View File

@ -16,7 +16,6 @@ libbsim4v6_la_SOURCES = \
b4v6mask.c \ b4v6mask.c \
b4v6mdel.c \ b4v6mdel.c \
b4v6mpar.c \ b4v6mpar.c \
b4v6node.c \
b4v6noi.c \ b4v6noi.c \
b4v6par.c \ b4v6par.c \
b4v6pzld.c \ b4v6pzld.c \
@ -30,6 +29,9 @@ libbsim4v6_la_SOURCES = \
bsim4v6itf.h bsim4v6itf.h
if KIRCHHOFF_WANTED
libbsim4v6_la_SOURCES += b4v6node.c
endif
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
AM_CFLAGS = $(STATIC) AM_CFLAGS = $(STATIC)

View File

@ -72,8 +72,12 @@ SPICEdev BSIM4v6info = {
NULL, /* DEVacct */ NULL, /* DEVacct */
#endif #endif
&BSIM4v6iSize, /* DEVinstSize */ &BSIM4v6iSize, /* DEVinstSize */
&BSIM4v6mSize, /* DEVmodSize */ &BSIM4v6mSize, /* DEVmodSize */
#ifdef KIRCHHOFF
BSIM4v6nodeIsNonLinear /* DEVnodeIsNonLinear */ BSIM4v6nodeIsNonLinear /* DEVnodeIsNonLinear */
#endif
}; };

View File

@ -15,7 +15,6 @@ libbsim4soi_la_SOURCES = \
b4soimask.c \ b4soimask.c \
b4soimdel.c \ b4soimdel.c \
b4soimpar.c \ b4soimpar.c \
b4soinode.c \
b4soinoi.c \ b4soinoi.c \
b4soipar.c \ b4soipar.c \
b4soipzld.c \ b4soipzld.c \
@ -29,6 +28,9 @@ libbsim4soi_la_SOURCES = \
b4soiitf.h b4soiitf.h
if KIRCHHOFF_WANTED
libbsim4soi_la_SOURCES += b4soinode.c
endif
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
AM_CFLAGS = $(STATIC) AM_CFLAGS = $(STATIC)

View File

@ -71,7 +71,11 @@ SPICEdev B4SOIinfo = {
#endif #endif
/* DEVinstSize */ &B4SOIiSize, /* DEVinstSize */ &B4SOIiSize,
/* DEVmodSize */ &B4SOImSize, /* DEVmodSize */ &B4SOImSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ B4SOInodeIsNonLinear /* DEVnodeIsNonLinear */ B4SOInodeIsNonLinear
#endif
}; };
SPICEdev * SPICEdev *

View File

@ -72,7 +72,11 @@ SPICEdev CAPinfo = {
#endif #endif
/* DEVinstSize */ &CAPiSize, /* DEVinstSize */ &CAPiSize,
/* DEVmodSize */ &CAPmSize, /* DEVmodSize */ &CAPmSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ NULL /* DEVnodeIsNonLinear */ NULL
#endif
}; };

View File

@ -78,8 +78,11 @@ CAPload(GENmodel *inModel, CKTcircuit *ckt)
*(ckt->CKTrhs+here->CAPposNode) -= m * ceq; *(ckt->CKTrhs+here->CAPposNode) -= m * ceq;
*(ckt->CKTrhs+here->CAPnegNode) += m * ceq; *(ckt->CKTrhs+here->CAPnegNode) += m * ceq;
#ifdef KIRCHHOFF
*(ckt->CKTfvk+here->CAPposNode) += m * *(ckt->CKTstate0+here->CAPqcap+1) ; *(ckt->CKTfvk+here->CAPposNode) += m * *(ckt->CKTstate0+here->CAPqcap+1) ;
*(ckt->CKTfvk+here->CAPnegNode) -= m * *(ckt->CKTstate0+here->CAPqcap+1) ; *(ckt->CKTfvk+here->CAPnegNode) -= m * *(ckt->CKTstate0+here->CAPqcap+1) ;
#endif
} else } else
*(ckt->CKTstate0+here->CAPqcap) = here->CAPcapac * vcap; *(ckt->CKTstate0+here->CAPqcap) = here->CAPcapac * vcap;
} }

View File

@ -72,7 +72,10 @@ SPICEdev CCCSinfo = {
#endif #endif
/* DEVinstSize */ &CCCSiSize, /* DEVinstSize */ &CCCSiSize,
/* DEVmodSize */ &CCCSmSize, /* DEVmodSize */ &CCCSmSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ NULL /* DEVnodeIsNonLinear */ NULL
#endif
}; };

View File

@ -35,8 +35,11 @@ CCCSload(GENmodel *inModel, CKTcircuit *ckt)
*(here->CCCSposContBrptr) += here->CCCScoeff ; *(here->CCCSposContBrptr) += here->CCCScoeff ;
*(here->CCCSnegContBrptr) -= here->CCCScoeff ; *(here->CCCSnegContBrptr) -= here->CCCScoeff ;
#ifdef KIRCHHOFF
*(ckt->CKTfvk+here->CCCSposNode) += here->CCCScoeff * *(ckt->CKTrhsOld+here->CCCScontBranch) ; *(ckt->CKTfvk+here->CCCSposNode) += here->CCCScoeff * *(ckt->CKTrhsOld+here->CCCScontBranch) ;
*(ckt->CKTfvk+here->CCCSnegNode) -= here->CCCScoeff * *(ckt->CKTrhsOld+here->CCCScontBranch) ; *(ckt->CKTfvk+here->CCCSnegNode) -= here->CCCScoeff * *(ckt->CKTrhsOld+here->CCCScontBranch) ;
#endif
} }
} }
return(OK); return(OK);

View File

@ -73,7 +73,10 @@ SPICEdev CCVSinfo = {
#endif #endif
/* DEVinstSize */ &CCVSiSize, /* DEVinstSize */ &CCVSiSize,
/* DEVmodSize */ &CCVSmSize, /* DEVmodSize */ &CCVSmSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ NULL /* DEVnodeIsNonLinear */ NULL
#endif
}; };

View File

@ -38,8 +38,11 @@ CCVSload(GENmodel *inModel, CKTcircuit *ckt)
*(here->CCVSibrNegptr) -= 1.0 ; *(here->CCVSibrNegptr) -= 1.0 ;
*(here->CCVSibrContBrptr) -= here->CCVScoeff ; *(here->CCVSibrContBrptr) -= here->CCVScoeff ;
#ifdef KIRCHHOFF
*(ckt->CKTfvk+here->CCVSposNode) += *(ckt->CKTrhsOld+here->CCVSbranch) ; *(ckt->CKTfvk+here->CCVSposNode) += *(ckt->CKTrhsOld+here->CCVSbranch) ;
*(ckt->CKTfvk+here->CCVSnegNode) -= *(ckt->CKTrhsOld+here->CCVSbranch) ; *(ckt->CKTfvk+here->CCVSnegNode) -= *(ckt->CKTrhsOld+here->CCVSbranch) ;
#endif
} }
} }
return(OK); return(OK);

View File

@ -73,7 +73,10 @@ SPICEdev CPLinfo = {
#endif #endif
/* DEVinstSize */ &CPLiSize, /* DEVinstSize */ &CPLiSize,
/* DEVmodSize */ &CPLmSize, /* DEVmodSize */ &CPLmSize,
#ifdef KIRCHHOFF
/* DEVnodeIsLinear */ NULL /* DEVnodeIsLinear */ NULL
#endif
}; };

View File

@ -75,7 +75,10 @@ SPICEdev CSWinfo = {
#endif #endif
/* DEVinstSize */ &CSWiSize, /* DEVinstSize */ &CSWiSize,
/* DEVmodSize */ &CSWmSize, /* DEVmodSize */ &CSWmSize,
#ifdef KIRCHHOFF
/* DEVnodeIsLinear */ NULL /* DEVnodeIsLinear */ NULL
#endif
}; };

View File

@ -21,7 +21,6 @@ libdio_la_SOURCES = \
diomask.c \ diomask.c \
diomdel.c \ diomdel.c \
diompar.c \ diompar.c \
dionode.c \
dionoise.c \ dionoise.c \
dioparam.c \ dioparam.c \
diopzld.c \ diopzld.c \
@ -35,6 +34,10 @@ libdio_la_SOURCES = \
diotrunc.c diotrunc.c
if KIRCHHOFF_WANTED
libdio_la_SOURCES += dionode.c
endif
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
AM_CFLAGS = $(STATIC) AM_CFLAGS = $(STATIC)
MAINTAINERCLEANFILES = Makefile.in MAINTAINERCLEANFILES = Makefile.in

View File

@ -74,7 +74,11 @@ SPICEdev DIOinfo = {
#endif #endif
/* DEVinstSize */ &DIOiSize, /* DEVinstSize */ &DIOiSize,
/* DEVmodSize */ &DIOmSize, /* DEVmodSize */ &DIOmSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ DIOnodeIsNonLinear /* DEVnodeIsNonLinear */ DIOnodeIsNonLinear
#endif
}; };

View File

@ -18,7 +18,6 @@ libhfet_la_SOURCES = \
hfetmask.c \ hfetmask.c \
hfetmdel.c \ hfetmdel.c \
hfetmpar.c \ hfetmpar.c \
hfetnode.c \
hfetparam.c \ hfetparam.c \
hfetpzl.c \ hfetpzl.c \
hfetsetup.c \ hfetsetup.c \
@ -26,6 +25,9 @@ libhfet_la_SOURCES = \
hfettrunc.c hfettrunc.c
if KIRCHHOFF_WANTED
libhfet_la_SOURCES += hfetnode.c
endif
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
AM_CFLAGS = $(STATIC) AM_CFLAGS = $(STATIC)

View File

@ -73,7 +73,10 @@ SPICEdev HFETAinfo = {
#endif #endif
/* DEVinstSize */ &HFETAiSize, /* DEVinstSize */ &HFETAiSize,
/* DEVmodSize */ &HFETAmSize, /* DEVmodSize */ &HFETAmSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ HFETAnodeIsNonLinear /* DEVnodeIsNonLinear */ HFETAnodeIsNonLinear
#endif
}; };

View File

@ -18,7 +18,6 @@ libhfet2_la_SOURCES = \
hfet2mask.c \ hfet2mask.c \
hfet2mdel.c \ hfet2mdel.c \
hfet2mpar.c \ hfet2mpar.c \
hfet2node.c \
hfet2param.c \ hfet2param.c \
hfet2pzl.c \ hfet2pzl.c \
hfet2setup.c \ hfet2setup.c \
@ -26,6 +25,9 @@ libhfet2_la_SOURCES = \
hfet2trunc.c hfet2trunc.c
if KIRCHHOFF_WANTED
libhfet2_la_SOURCES += hfet2node.c
endif
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
AM_CFLAGS = $(STATIC) AM_CFLAGS = $(STATIC)

View File

@ -73,7 +73,10 @@ SPICEdev HFET2info = {
#endif #endif
/* DEVinstSize */ &HFET2iSize, /* DEVinstSize */ &HFET2iSize,
/* DEVmodSize */ &HFET2mSize, /* DEVmodSize */ &HFET2mSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ HFET2nodeIsNonLinear /* DEVnodeIsNonLinear */ HFET2nodeIsNonLinear
#endif
}; };

View File

@ -4,34 +4,38 @@ EXTRA_DIST =
noinst_LTLIBRARIES = libhisim2.la noinst_LTLIBRARIES = libhisim2.la
libhisim2_la_SOURCES = hisim2.h \ libhisim2_la_SOURCES = \
hsm2.c \ hisim2.h \
hsm2acld.c \ hsm2.c \
hsm2ask.c \ hsm2acld.c \
hsm2cvtest.c \ hsm2ask.c \
hsm2def.h \ hsm2cvtest.c \
hsm2del.c \ hsm2def.h \
hsm2dest.c \ hsm2del.c \
hsm2eval.c \ hsm2dest.c \
hsm2evalenv.h \ hsm2eval.c \
hsm2ext.h \ hsm2evalenv.h \
hsm2getic.c \ hsm2ext.h \
hsm2init.c \ hsm2getic.c \
hsm2init.h \ hsm2init.c \
hsm2itf.h \ hsm2init.h \
hsm2ld.c \ hsm2itf.h \
hsm2mask.c \ hsm2ld.c \
hsm2mdel.c \ hsm2mask.c \
hsm2mpar.c \ hsm2mdel.c \
hsm2node.c \ hsm2mpar.c \
hsm2noi.c \ hsm2noi.c \
hsm2par.c \ hsm2par.c \
hsm2pzld.c \ hsm2pzld.c \
hsm2set.c \ hsm2set.c \
hsm2temp.c \ hsm2temp.c \
hsm2trunc.c hsm2trunc.c
if KIRCHHOFF_WANTED
libhisim2_la_SOURCES += hsm2node.c
endif
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
AM_CFLAGS = $(STATIC) AM_CFLAGS = $(STATIC)

View File

@ -71,7 +71,10 @@ SPICEdev HSM2info = {
#endif #endif
/* DEVinstSize */ &HSM2iSize, /* DEVinstSize */ &HSM2iSize,
/* DEVmodSize */ &HSM2mSize, /* DEVmodSize */ &HSM2mSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ HSM2nodeIsNonLinear /* DEVnodeIsNonLinear */ HSM2nodeIsNonLinear
#endif
}; };

View File

@ -2,35 +2,40 @@
noinst_LTLIBRARIES = libhisimhv1.la noinst_LTLIBRARIES = libhisimhv1.la
libhisimhv1_la_SOURCES = hisimhv.h \ libhisimhv1_la_SOURCES = \
hsmhv.c \ hisimhv.h \
hsmhvacld.c \ hsmhv.c \
hsmhvask.c \ hsmhvacld.c \
hsmhvcvtest.c \ hsmhvask.c \
hsmhvdef.h \ hsmhvcvtest.c \
hsmhvdel.c \ hsmhvdef.h \
hsmhvdest.c \ hsmhvdel.c \
hsmhveval.c \ hsmhvdest.c \
hsmhveval_qover.h \ hsmhveval.c \
hsmhvevalenv.h \ hsmhveval_qover.h \
hsmhvext.h \ hsmhvevalenv.h \
hsmhvgetic.c \ hsmhvext.h \
hsmhvinit.c \ hsmhvgetic.c \
hsmhvinit.h \ hsmhvinit.c \
hsmhvitf.h \ hsmhvinit.h \
hsmhvld.c \ hsmhvitf.h \
hsmhvld_info_eval.h \ hsmhvld.c \
hsmhvmask.c \ hsmhvld_info_eval.h \
hsmhvmdel.c \ hsmhvmask.c \
hsmhvmpar.c \ hsmhvmdel.c \
hsmhvnode.c \ hsmhvmpar.c \
hsmhvnoi.c \ hsmhvnoi.c \
hsmhvpar.c \ hsmhvpar.c \
hsmhvpzld.c \ hsmhvpzld.c \
hsmhvset.c \ hsmhvset.c \
hsmhvtemp.c \ hsmhvtemp.c \
hsmhvtemp_eval.h \ hsmhvtemp_eval.h \
hsmhvtrunc.c hsmhvtrunc.c
if KIRCHHOFF_WANTED
libhisimhv1_la_SOURCES += hsmhvnode.c
endif
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
AM_CFLAGS = $(STATIC) AM_CFLAGS = $(STATIC)

View File

@ -71,7 +71,10 @@ SPICEdev HSMHVinfo = {
#endif #endif
/* DEVinstSize */ &HSMHViSize, /* DEVinstSize */ &HSMHViSize,
/* DEVmodSize */ &HSMHVmSize, /* DEVmodSize */ &HSMHVmSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ HSMHVnodeIsNonLinear /* DEVnodeIsNonLinear */ HSMHVnodeIsNonLinear
#endif
}; };

View File

@ -72,7 +72,10 @@ SPICEdev INDinfo = {
#endif #endif
/* DEVinstSize */ &INDiSize, /* DEVinstSize */ &INDiSize,
/* DEVmodSize */ &INDmSize, /* DEVmodSize */ &INDmSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ NULL /* DEVnodeIsNonLinear */ NULL
#endif
}; };
@ -142,7 +145,10 @@ SPICEdev MUTinfo = {
#endif #endif
/* DEVinstSize */ &MUTiSize, /* DEVinstSize */ &MUTiSize,
/* DEVmodSize */ &MUTmSize, /* DEVmodSize */ &MUTmSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ NULL /* DEVnodeIsNonLinear */ NULL
#endif
}; };

View File

@ -122,8 +122,11 @@ INDload(GENmodel *inModel, CKTcircuit *ckt)
*(here->INDibrNegptr) -= 1; *(here->INDibrNegptr) -= 1;
*(here->INDibrIbrptr) -= req; *(here->INDibrIbrptr) -= req;
#ifdef KIRCHHOFF
*(ckt->CKTfvk+here->INDposNode) += *(ckt->CKTrhsOld+here->INDbrEq) ; *(ckt->CKTfvk+here->INDposNode) += *(ckt->CKTrhsOld+here->INDbrEq) ;
*(ckt->CKTfvk+here->INDnegNode) -= *(ckt->CKTrhsOld+here->INDbrEq) ; *(ckt->CKTfvk+here->INDnegNode) -= *(ckt->CKTrhsOld+here->INDbrEq) ;
#endif
} }
} }
return(OK); return(OK);

View File

@ -73,7 +73,11 @@ SPICEdev ISRCinfo = {
#endif #endif
/* DEVinstSize */ &ISRCiSize, /* DEVinstSize */ &ISRCiSize,
/* DEVmodSize */ &ISRCmSize, /* DEVmodSize */ &ISRCmSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ NULL /* DEVnodeIsNonLinear */ NULL
#endif
}; };

View File

@ -386,8 +386,10 @@ loadDone:
*(ckt->CKTrhs + (here->ISRCposNode)) += m * value; *(ckt->CKTrhs + (here->ISRCposNode)) += m * value;
*(ckt->CKTrhs + (here->ISRCnegNode)) -= m * value; *(ckt->CKTrhs + (here->ISRCnegNode)) -= m * value;
#ifdef KIRCHHOFF
*(ckt->CKTfvk + (here->ISRCposNode)) -= value; *(ckt->CKTfvk + (here->ISRCposNode)) -= value;
*(ckt->CKTfvk + (here->ISRCnegNode)) += value; *(ckt->CKTfvk + (here->ISRCnegNode)) += value;
#endif
/* gtri - end - wbk - modify to process srcFact, etc. for all sources */ /* gtri - end - wbk - modify to process srcFact, etc. for all sources */

View File

@ -20,7 +20,6 @@ libjfet_la_SOURCES = \
jfetmask.c \ jfetmask.c \
jfetmdel.c \ jfetmdel.c \
jfetmpar.c \ jfetmpar.c \
jfetnode.c \
jfetnoi.c \ jfetnoi.c \
jfetpar.c \ jfetpar.c \
jfetpzld.c \ jfetpzld.c \
@ -29,6 +28,9 @@ libjfet_la_SOURCES = \
jfettrun.c jfettrun.c
if KIRCHHOFF_WANTED
libjfet_la_SOURCES += jfetnode.c
endif
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
AM_CFLAGS = $(STATIC) AM_CFLAGS = $(STATIC)

View File

@ -73,7 +73,10 @@ SPICEdev JFETinfo = {
#endif #endif
/* DEVinstSize */ &JFETiSize, /* DEVinstSize */ &JFETiSize,
/* DEVmodSize */ &JFETmSize, /* DEVmodSize */ &JFETmSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ JFETnodeIsNonLinear /* DEVnodeIsNonLinear */ JFETnodeIsNonLinear
#endif
}; };

View File

@ -18,7 +18,6 @@ libjfet2_la_SOURCES = \
jfet2mask.c \ jfet2mask.c \
jfet2mdel.c \ jfet2mdel.c \
jfet2mpar.c \ jfet2mpar.c \
jfet2node.c \
jfet2noi.c \ jfet2noi.c \
jfet2par.c \ jfet2par.c \
jfet2parm.h \ jfet2parm.h \
@ -29,7 +28,9 @@ libjfet2_la_SOURCES = \
psmodel.h psmodel.h
if KIRCHHOFF_WANTED
libjfet2_la_SOURCES += jfet2node.c
endif
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
AM_CFLAGS = $(STATIC) AM_CFLAGS = $(STATIC)

View File

@ -73,7 +73,10 @@ SPICEdev JFET2info = {
#endif #endif
/* DEVinstSize */ &JFET2iSize, /* DEVinstSize */ &JFET2iSize,
/* DEVmodSize */ &JFET2mSize, /* DEVmodSize */ &JFET2mSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ JFET2nodeIsNonLinear /* DEVnodeIsNonLinear */ JFET2nodeIsNonLinear
#endif
}; };

View File

@ -73,7 +73,10 @@ SPICEdev LTRAinfo = {
#endif #endif
/* DEVinstSize */ &LTRAiSize, /* DEVinstSize */ &LTRAiSize,
/* DEVmodSize */ &LTRAmSize, /* DEVmodSize */ &LTRAmSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ NULL /* DEVnodeIsNonLinear */ NULL
#endif
}; };

View File

@ -20,7 +20,6 @@ libmes_la_SOURCES = \
mesmask.c \ mesmask.c \
mesmdel.c \ mesmdel.c \
mesmpar.c \ mesmpar.c \
mesnode.c \
mesnoise.c \ mesnoise.c \
mesparam.c \ mesparam.c \
mespzld.c \ mespzld.c \
@ -29,6 +28,9 @@ libmes_la_SOURCES = \
mestrunc.c mestrunc.c
if KIRCHHOFF_WANTED
libmes_la_SOURCES += mesnode.c
endif
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
AM_CFLAGS = $(STATIC) AM_CFLAGS = $(STATIC)

View File

@ -73,7 +73,10 @@ SPICEdev MESinfo = {
#endif #endif
/* DEVinstSize */ &MESiSize, /* DEVinstSize */ &MESiSize,
/* DEVmodSize */ &MESmSize, /* DEVmodSize */ &MESmSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ MESnodeIsNonLinear /* DEVnodeIsNonLinear */ MESnodeIsNonLinear
#endif
}; };

View File

@ -18,7 +18,6 @@ libmesa_la_SOURCES = \
mesamask.c \ mesamask.c \
mesamdel.c \ mesamdel.c \
mesamparam.c \ mesamparam.c \
mesanode.c \
mesaparam.c \ mesaparam.c \
mesapzl.c \ mesapzl.c \
mesasetup.c \ mesasetup.c \
@ -26,6 +25,9 @@ libmesa_la_SOURCES = \
mesatrunc.c mesatrunc.c
if KIRCHHOFF_WANTED
libmesa_la_SOURCES += mesanode.c
endif
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
AM_CFLAGS = $(STATIC) AM_CFLAGS = $(STATIC)

View File

@ -73,7 +73,10 @@ SPICEdev MESAinfo = {
#endif #endif
/* DEVinstSize */ &MESAiSize, /* DEVinstSize */ &MESAiSize,
/* DEVmodSize */ &MESAmSize, /* DEVmodSize */ &MESAmSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ MESAnodeIsNonLinear /* DEVnodeIsNonLinear */ MESAnodeIsNonLinear
#endif
}; };

View File

@ -21,7 +21,6 @@ libmos1_la_SOURCES = \
mos1mask.c \ mos1mask.c \
mos1mdel.c \ mos1mdel.c \
mos1mpar.c \ mos1mpar.c \
mos1node.c \
mos1noi.c \ mos1noi.c \
mos1par.c \ mos1par.c \
mos1pzld.c \ mos1pzld.c \
@ -35,6 +34,9 @@ libmos1_la_SOURCES = \
mos1trun.c mos1trun.c
if KIRCHHOFF_WANTED
libmos1_la_SOURCES += mos1node.c
endif
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
AM_CFLAGS = $(STATIC) AM_CFLAGS = $(STATIC)

View File

@ -73,7 +73,11 @@ SPICEdev MOS1info = {
#endif #endif
/* DEVinstSize */ &MOS1iSize, /* DEVinstSize */ &MOS1iSize,
/* DEVmodSize */ &MOS1mSize, /* DEVmodSize */ &MOS1mSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ MOS1nodeIsNonLinear /* DEVnodeIsNonLinear */ MOS1nodeIsNonLinear
#endif
}; };

View File

@ -945,7 +945,7 @@ next1: if(vbs <= -3*vt) {
*(here->MOS1SPdpPtr) += (-here->MOS1gds-xrev* *(here->MOS1SPdpPtr) += (-here->MOS1gds-xrev*
(here->MOS1gm+here->MOS1gmbs)); (here->MOS1gm+here->MOS1gmbs));
#ifdef KIRCHHOFF
/* KCL verification - Linear-Dynamic Part */ /* KCL verification - Linear-Dynamic Part */
*(ckt->CKTfvk+here->MOS1gNode) += model->MOS1type * (ceqgs_fvk + ceqgb_fvk + ceqgd_fvk) ; *(ckt->CKTfvk+here->MOS1gNode) += model->MOS1type * (ceqgs_fvk + ceqgb_fvk + ceqgd_fvk) ;
*(ckt->CKTfvk+here->MOS1bNode) += ceqbs_fvk + ceqbd_fvk - model->MOS1type * ceqgb_fvk ; *(ckt->CKTfvk+here->MOS1bNode) += ceqbs_fvk + ceqbd_fvk - model->MOS1type * ceqgb_fvk ;
@ -962,6 +962,8 @@ next1: if(vbs <= -3*vt) {
*(ckt->CKTfvk+here->MOS1sNode) -= here->MOS1sourceConductance * *(ckt->CKTrhsOld+here->MOS1sNodePrime) ; *(ckt->CKTfvk+here->MOS1sNode) -= here->MOS1sourceConductance * *(ckt->CKTrhsOld+here->MOS1sNodePrime) ;
*(ckt->CKTfvk+here->MOS1dNodePrime) -= here->MOS1drainConductance * *(ckt->CKTrhsOld+here->MOS1dNode) ; *(ckt->CKTfvk+here->MOS1dNodePrime) -= here->MOS1drainConductance * *(ckt->CKTrhsOld+here->MOS1dNode) ;
*(ckt->CKTfvk+here->MOS1sNodePrime) -= here->MOS1sourceConductance * *(ckt->CKTrhsOld+here->MOS1sNode) ; *(ckt->CKTfvk+here->MOS1sNodePrime) -= here->MOS1sourceConductance * *(ckt->CKTrhsOld+here->MOS1sNode) ;
#endif
} }
} }
return(OK); return(OK);

View File

@ -21,7 +21,6 @@ libmos2_la_SOURCES = \
mos2mask.c \ mos2mask.c \
mos2mdel.c \ mos2mdel.c \
mos2mpar.c \ mos2mpar.c \
mos2node.c \
mos2noi.c \ mos2noi.c \
mos2par.c \ mos2par.c \
mos2pzld.c \ mos2pzld.c \
@ -35,6 +34,10 @@ libmos2_la_SOURCES = \
mos2trun.c mos2trun.c
if KIRCHHOFF_WANTED
libmos2_la_SOURCES += mos2node.c
endif
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
AM_CFLAGS = $(STATIC) AM_CFLAGS = $(STATIC)
MAINTAINERCLEANFILES = Makefile.in MAINTAINERCLEANFILES = Makefile.in

View File

@ -73,7 +73,11 @@ SPICEdev MOS2info = {
#endif #endif
/* DEVinstSize */ &MOS2iSize, /* DEVinstSize */ &MOS2iSize,
/* DEVmodSize */ &MOS2mSize, /* DEVmodSize */ &MOS2mSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ MOS2nodeIsNonLinear /* DEVnodeIsNonLinear */ MOS2nodeIsNonLinear
#endif
}; };

View File

@ -21,7 +21,6 @@ libmos3_la_SOURCES = \
mos3mask.c \ mos3mask.c \
mos3mdel.c \ mos3mdel.c \
mos3mpar.c \ mos3mpar.c \
mos3node.c \
mos3noi.c \ mos3noi.c \
mos3par.c \ mos3par.c \
mos3pzld.c \ mos3pzld.c \
@ -35,6 +34,10 @@ libmos3_la_SOURCES = \
mos3trun.c mos3trun.c
if KIRCHHOFF_WANTED
libmos3_la_SOURCES += mos3node.c
endif
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
AM_CFLAGS = $(STATIC) AM_CFLAGS = $(STATIC)
MAINTAINERCLEANFILES = Makefile.in MAINTAINERCLEANFILES = Makefile.in

View File

@ -73,7 +73,10 @@ SPICEdev MOS3info = {
#endif #endif
/* DEVinstSize */ &MOS3iSize, /* DEVinstSize */ &MOS3iSize,
/* DEVmodSize */ &MOS3mSize, /* DEVmodSize */ &MOS3mSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ MOS3nodeIsNonLinear /* DEVnodeIsNonLinear */ MOS3nodeIsNonLinear
#endif
}; };

View File

@ -16,13 +16,15 @@ libmos6_la_SOURCES = \
mos6load.c \ mos6load.c \
mos6mask.c \ mos6mask.c \
mos6mpar.c \ mos6mpar.c \
mos6node.c \
mos6par.c \ mos6par.c \
mos6set.c \ mos6set.c \
mos6temp.c \ mos6temp.c \
mos6trun.c mos6trun.c
if KIRCHHOFF_WANTED
libmos6_la_SOURCES += mos6node.c
endif
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
AM_CFLAGS = $(STATIC) AM_CFLAGS = $(STATIC)

View File

@ -73,7 +73,11 @@ SPICEdev MOS6info = {
#endif #endif
/* DEVinstSize */ &MOS6iSize, /* DEVinstSize */ &MOS6iSize,
/* DEVmodSize */ &MOS6mSize, /* DEVmodSize */ &MOS6mSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ MOS6nodeIsNonLinear /* DEVnodeIsNonLinear */ MOS6nodeIsNonLinear
#endif
}; };

View File

@ -961,7 +961,7 @@ bypass:
*(here->MOS6SPdpPtr) += m * (-here->MOS6gds-xrev* *(here->MOS6SPdpPtr) += m * (-here->MOS6gds-xrev*
(here->MOS6gm+here->MOS6gmbs)); (here->MOS6gm+here->MOS6gmbs));
#ifdef KIRCHHOFF
/* KCL verification - Dynamic Part */ /* KCL verification - Dynamic Part */
*(ckt->CKTfvk+here->MOS6gNode) += model->MOS6type * (ceqgs_fvk + ceqgb_fvk + ceqgd_fvk) ; *(ckt->CKTfvk+here->MOS6gNode) += model->MOS6type * (ceqgs_fvk + ceqgb_fvk + ceqgd_fvk) ;
*(ckt->CKTfvk+here->MOS6bNode) += ceqbs_fvk + ceqbd_fvk - model->MOS6type * ceqgb_fvk ; *(ckt->CKTfvk+here->MOS6bNode) += ceqbs_fvk + ceqbd_fvk - model->MOS6type * ceqgb_fvk ;
@ -978,6 +978,8 @@ bypass:
*(ckt->CKTfvk+here->MOS6sNode) -= here->MOS6sourceConductance * *(ckt->CKTrhsOld+here->MOS6sNodePrime) ; *(ckt->CKTfvk+here->MOS6sNode) -= here->MOS6sourceConductance * *(ckt->CKTrhsOld+here->MOS6sNodePrime) ;
*(ckt->CKTfvk+here->MOS6dNodePrime) -= here->MOS6drainConductance * *(ckt->CKTrhsOld+here->MOS6dNode) ; *(ckt->CKTfvk+here->MOS6dNodePrime) -= here->MOS6drainConductance * *(ckt->CKTrhsOld+here->MOS6dNode) ;
*(ckt->CKTfvk+here->MOS6sNodePrime) -= here->MOS6sourceConductance * *(ckt->CKTrhsOld+here->MOS6sNode) ; *(ckt->CKTfvk+here->MOS6sNodePrime) -= here->MOS6sourceConductance * *(ckt->CKTrhsOld+here->MOS6sNode) ;
#endif
} }
} }
return(OK); return(OK);

View File

@ -21,7 +21,6 @@ libmos9_la_SOURCES = \
mos9mask.c \ mos9mask.c \
mos9mdel.c \ mos9mdel.c \
mos9mpar.c \ mos9mpar.c \
mos9node.c \
mos9noi.c \ mos9noi.c \
mos9par.c \ mos9par.c \
mos9pzld.c \ mos9pzld.c \
@ -35,6 +34,9 @@ libmos9_la_SOURCES = \
mos9trun.c mos9trun.c
if KIRCHHOFF_WANTED
libmos9_la_SOURCES += mos9node.c
endif
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
AM_CFLAGS = $(STATIC) AM_CFLAGS = $(STATIC)

View File

@ -73,7 +73,10 @@ SPICEdev MOS9info = {
#endif #endif
/* DEVinstSize */ &MOS9iSize, /* DEVinstSize */ &MOS9iSize,
/* DEVmodSize */ &MOS9mSize, /* DEVmodSize */ &MOS9mSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ MOS9nodeIsNonLinear /* DEVnodeIsNonLinear */ MOS9nodeIsNonLinear
#endif
}; };

View File

@ -73,7 +73,10 @@ SPICEdev RESinfo = {
#endif #endif
/* DEVinstSize */ &RESiSize, /* DEVinstSize */ &RESiSize,
/* DEVmodSize */ &RESmSize, /* DEVmodSize */ &RESmSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ NULL /* DEVnodeIsNonLinear */ NULL
#endif
}; };

View File

@ -35,8 +35,10 @@ RESload(GENmodel *inModel, CKTcircuit *ckt)
*(here->RESposNegptr) -= m * here->RESconduct; *(here->RESposNegptr) -= m * here->RESconduct;
*(here->RESnegPosptr) -= m * here->RESconduct; *(here->RESnegPosptr) -= m * here->RESconduct;
#ifdef KIRCHHOFF
*(ckt->CKTfvk+here->RESposNode) += here->REScurrent ; *(ckt->CKTfvk+here->RESposNode) += here->REScurrent ;
*(ckt->CKTfvk+here->RESnegNode) -= here->REScurrent ; *(ckt->CKTfvk+here->RESnegNode) -= here->REScurrent ;
#endif
} }
} }

View File

@ -20,7 +20,6 @@ libsoi3_la_SOURCES = \
soi3mask.c \ soi3mask.c \
soi3mdel.c \ soi3mdel.c \
soi3mpar.c \ soi3mpar.c \
soi3node.c \
soi3nois.c \ soi3nois.c \
soi3par.c \ soi3par.c \
soi3set.c \ soi3set.c \
@ -28,6 +27,9 @@ libsoi3_la_SOURCES = \
soi3trun.c soi3trun.c
if KIRCHHOFF_WANTED
libsoi3_la_SOURCES += soi3node.c
endif
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
AM_CFLAGS = $(STATIC) AM_CFLAGS = $(STATIC)

View File

@ -73,7 +73,10 @@ SPICEdev SOI3info = {
#endif #endif
/* DEVinstSize */ &SOI3iSize, /* DEVinstSize */ &SOI3iSize,
/* DEVmodSize */ &SOI3mSize, /* DEVmodSize */ &SOI3mSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ SOI3nodeIsNonLinear /* DEVnodeIsNonLinear */ SOI3nodeIsNonLinear
#endif
}; };

View File

@ -74,7 +74,10 @@ SPICEdev SWinfo = {
#endif /* CIDER */ #endif /* CIDER */
/* DEVinstSize */ &SWiSize, /* DEVinstSize */ &SWiSize,
/* DEVmodSize */ &SWmSize, /* DEVmodSize */ &SWmSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ NULL /* DEVnodeIsNonLinear */ NULL
#endif
}; };

View File

@ -73,7 +73,10 @@ SPICEdev TRAinfo = {
#endif #endif
/* DEVinstSize */ &TRAiSize, /* DEVinstSize */ &TRAiSize,
/* DEVmodSize */ &TRAmSize, /* DEVmodSize */ &TRAmSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ NULL /* DEVnodeIsNonLinear */ NULL
#endif
}; };

View File

@ -78,7 +78,10 @@ SPICEdev TXLinfo = {
#endif #endif
/* DEVinstSize */ &TXLiSize, /* DEVinstSize */ &TXLiSize,
/* DEVmodSize */ &TXLmSize, /* DEVmodSize */ &TXLmSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ NULL /* DEVnodeIsNonLinear */ NULL
#endif
}; };

View File

@ -73,7 +73,10 @@ SPICEdev URCinfo = {
#endif #endif
/* DEVinstSize */ &URCiSize, /* DEVinstSize */ &URCiSize,
/* DEVmodSize */ &URCmSize, /* DEVmodSize */ &URCmSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ NULL /* DEVnodeIsNonLinear */ NULL
#endif
}; };

View File

@ -19,7 +19,6 @@ libvbic_la_SOURCES = \
vbicmask.c \ vbicmask.c \
vbicmdel.c \ vbicmdel.c \
vbicmpar.c \ vbicmpar.c \
vbicnode.c \
vbicnoise.c \ vbicnoise.c \
vbicparam.c \ vbicparam.c \
vbicpzld.c \ vbicpzld.c \
@ -28,6 +27,9 @@ libvbic_la_SOURCES = \
vbictrunc.c vbictrunc.c
if KIRCHHOFF_WANTED
libvbic_la_SOURCES += vbicnode.c
endif
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
AM_CFLAGS = $(STATIC) AM_CFLAGS = $(STATIC)

View File

@ -78,7 +78,10 @@ SPICEdev VBICinfo = {
#endif #endif
&VBICiSize, /* DEVinstSize */ &VBICiSize, /* DEVinstSize */
&VBICmSize, /* DEVmodSize */ &VBICmSize, /* DEVmodSize */
#ifdef KIRCHHOFF
VBICnodeIsNonLinear /* DEVnodeIsNonLinear */ VBICnodeIsNonLinear /* DEVnodeIsNonLinear */
#endif
}; };

View File

@ -73,7 +73,10 @@ SPICEdev VCCSinfo = {
#endif #endif
/* DEVinstSize */ &VCCSiSize, /* DEVinstSize */ &VCCSiSize,
/* DEVmodSize */ &VCCSmSize, /* DEVmodSize */ &VCCSmSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ NULL /* DEVnodeIsNonLinear */ NULL
#endif
}; };

View File

@ -36,10 +36,13 @@ VCCSload(GENmodel *inModel, CKTcircuit *ckt)
*(here->VCCSnegContPosptr) -= here->VCCScoeff ; *(here->VCCSnegContPosptr) -= here->VCCScoeff ;
*(here->VCCSnegContNegptr) += here->VCCScoeff ; *(here->VCCSnegContNegptr) += here->VCCScoeff ;
#ifdef KIRCHHOFF
*(ckt->CKTfvk+here->VCCSposNode) += here->VCCScoeff * *(ckt->CKTrhsOld+here->VCCScontPosNode) ; *(ckt->CKTfvk+here->VCCSposNode) += here->VCCScoeff * *(ckt->CKTrhsOld+here->VCCScontPosNode) ;
*(ckt->CKTfvk+here->VCCSposNode) -= here->VCCScoeff * *(ckt->CKTrhsOld+here->VCCScontNegNode) ; *(ckt->CKTfvk+here->VCCSposNode) -= here->VCCScoeff * *(ckt->CKTrhsOld+here->VCCScontNegNode) ;
*(ckt->CKTfvk+here->VCCSnegNode) -= here->VCCScoeff * *(ckt->CKTrhsOld+here->VCCScontPosNode) ; *(ckt->CKTfvk+here->VCCSnegNode) -= here->VCCScoeff * *(ckt->CKTrhsOld+here->VCCScontPosNode) ;
*(ckt->CKTfvk+here->VCCSnegNode) += here->VCCScoeff * *(ckt->CKTrhsOld+here->VCCScontNegNode) ; *(ckt->CKTfvk+here->VCCSnegNode) += here->VCCScoeff * *(ckt->CKTrhsOld+here->VCCScontNegNode) ;
#endif
} }
} }
return(OK); return(OK);

View File

@ -73,7 +73,10 @@ SPICEdev VCVSinfo = {
#endif #endif
/* DEVinstSize */ &VCVSiSize, /* DEVinstSize */ &VCVSiSize,
/* DEVmodSize */ &VCVSmSize, /* DEVmodSize */ &VCVSmSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ NULL /* DEVnodeIsNonLinear */ NULL
#endif
}; };

View File

@ -38,8 +38,11 @@ VCVSload(GENmodel *inModel, CKTcircuit *ckt)
*(here->VCVSibrContPosptr) -= here->VCVScoeff ; *(here->VCVSibrContPosptr) -= here->VCVScoeff ;
*(here->VCVSibrContNegptr) += here->VCVScoeff ; *(here->VCVSibrContNegptr) += here->VCVScoeff ;
#ifdef KIRCHHOFF
*(ckt->CKTfvk+here->VCVSposNode) += *(ckt->CKTrhsOld+here->VCVSbranch) ; *(ckt->CKTfvk+here->VCVSposNode) += *(ckt->CKTrhsOld+here->VCVSbranch) ;
*(ckt->CKTfvk+here->VCVSnegNode) -= *(ckt->CKTrhsOld+here->VCVSbranch) ; *(ckt->CKTfvk+here->VCVSnegNode) -= *(ckt->CKTrhsOld+here->VCVSbranch) ;
#endif
} }
} }
return(OK); return(OK);

View File

@ -73,7 +73,11 @@ SPICEdev VSRCinfo = {
#endif #endif
/* DEVinstSize */ &VSRCiSize, /* DEVinstSize */ &VSRCiSize,
/* DEVmodSize */ &VSRCmSize, /* DEVmodSize */ &VSRCmSize,
#ifdef KIRCHHOFF
/* DEVnodeIsNonLinear */ NULL /* DEVnodeIsNonLinear */ NULL
#endif
}; };

Some files were not shown because too many files have changed in this diff Show More