Added a conditional compilation switch for the KCL Verification
This commit is contained in:
parent
e1cd74d3a3
commit
a93d51a074
10
configure.ac
10
configure.ac
|
|
@ -182,6 +182,10 @@ AC_ARG_WITH([tcl],
|
|||
AC_ARG_WITH([ngshared],
|
||||
[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
|
||||
if test "x$with_editline" = xyes; then
|
||||
if test "x$with_readline" = xyes; then
|
||||
|
|
@ -880,6 +884,12 @@ fi
|
|||
AC_SUBST([XGRAPHDIR])
|
||||
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])
|
||||
|
||||
################# XSPICE ##################################################
|
||||
|
|
|
|||
|
|
@ -110,8 +110,12 @@ struct CKTcircuit {
|
|||
double *CKTrhs; /* current rhs value - being loaded */
|
||||
double *CKTrhsOld; /* previous rhs value for convergence
|
||||
testing */
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
double *CKTfvk ; /* KCL Verification array */
|
||||
int *CKTnodeIsLinear ; /* Flag to indicate if a node is linear or non-linear */
|
||||
#endif
|
||||
|
||||
double *CKTrhsSpare; /* spare rhs value for reordering */
|
||||
double *CKTirhs; /* current rhs value - being loaded
|
||||
(imag) */
|
||||
|
|
|
|||
|
|
@ -112,9 +112,11 @@ typedef struct SPICEdev {
|
|||
int *DEVinstSize; /* size of an instance */
|
||||
int *DEVmodSize; /* size of a model */
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* Francesco Lannutti */
|
||||
int (*DEVnodeIsNonLinear)(GENmodel *, CKTcircuit *) ;
|
||||
/* Routine to declare a node as NonLinear */
|
||||
#endif
|
||||
|
||||
} SPICEdev; /* instance of structure for each possible type of device */
|
||||
|
||||
|
|
|
|||
|
|
@ -21,12 +21,16 @@ NIconvTest(CKTcircuit *ckt)
|
|||
int i; /* generic loop variable */
|
||||
int size; /* size of the matrix */
|
||||
CKTnode *node; /* current matrix entry */
|
||||
|
||||
//#ifndef KIRCHHOFF
|
||||
double old;
|
||||
double new;
|
||||
double tol;
|
||||
//#endif
|
||||
|
||||
size = SMPmatSize (ckt->CKTmatrix) ;
|
||||
|
||||
//#ifndef KIRCHHOFF
|
||||
#ifdef STEPDEBUG
|
||||
for (i=1;i<=size;i++) {
|
||||
new = ckt->CKTrhs [i] ;
|
||||
|
|
@ -55,6 +59,8 @@ NIconvTest(CKTcircuit *ckt)
|
|||
}
|
||||
}
|
||||
|
||||
//#else
|
||||
#ifdef KIRCHHOFF
|
||||
/* KCL Verification */
|
||||
double maximum = 0 ;
|
||||
|
||||
|
|
@ -84,6 +90,7 @@ NIconvTest(CKTcircuit *ckt)
|
|||
return 1 ;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef NEWCONV
|
||||
i = CKTconvTest(ckt);
|
||||
|
|
|
|||
|
|
@ -21,19 +21,27 @@ Author: 1985 Thomas L. Quarles
|
|||
int
|
||||
NIreinit( CKTcircuit *ckt)
|
||||
{
|
||||
int i, size;
|
||||
int size;
|
||||
|
||||
#if defined(PREDICTOR) || defined(KIRCHHOFF)
|
||||
int i;
|
||||
#endif
|
||||
|
||||
size = SMPmatSize(ckt->CKTmatrix);
|
||||
CKALLOC(CKTrhs,size+1,double);
|
||||
CKALLOC(CKTrhsOld,size+1,double);
|
||||
CKALLOC(CKTfvk,size+1,double);
|
||||
CKALLOC(CKTrhsSpare,size+1,double);
|
||||
CKALLOC(CKTirhs,size+1,double);
|
||||
CKALLOC(CKTirhsOld,size+1,double);
|
||||
CKALLOC(CKTirhsSpare,size+1,double);
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
CKALLOC(CKTfvk,size+1,double);
|
||||
CKALLOC(CKTnodeIsLinear,size+1,int);
|
||||
for (i = 0 ; i <= size ; i++)
|
||||
ckt->CKTnodeIsLinear [i] = 1 ;
|
||||
#endif
|
||||
|
||||
#ifdef PREDICTOR
|
||||
CKALLOC(CKTpred,size+1,double);
|
||||
for( i=0;i<8;i++) {
|
||||
|
|
|
|||
|
|
@ -52,7 +52,11 @@ CKTload(CKTcircuit *ckt)
|
|||
size = SMPmatSize(ckt->CKTmatrix);
|
||||
for (i = 0; i <= size; i++) {
|
||||
ckt->CKTrhs[i] = 0;
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
ckt->CKTfvk[i] = 0;
|
||||
#endif
|
||||
|
||||
}
|
||||
SMPclear(ckt->CKTmatrix);
|
||||
#ifdef STEPDEBUG
|
||||
|
|
|
|||
|
|
@ -128,6 +128,7 @@ CKTsetup(CKTcircuit *ckt)
|
|||
/* gtri - end - Setup for adding rshunt option resistors */
|
||||
#endif
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/** Marking node as Non-Linear when needed
|
||||
* By default every node is Linear
|
||||
*/
|
||||
|
|
@ -140,6 +141,7 @@ CKTsetup(CKTcircuit *ckt)
|
|||
return (error) ;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return(OK);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,13 +17,16 @@ libasrc_la_SOURCES = \
|
|||
asrcinit.h \
|
||||
asrcload.c \
|
||||
asrcmdel.c \
|
||||
asrcnode.c \
|
||||
asrcpar.c \
|
||||
asrcpzld.c \
|
||||
asrcset.c \
|
||||
asrcset.c \
|
||||
asrctemp.c
|
||||
|
||||
|
||||
if KIRCHHOFF_WANTED
|
||||
libasrc_la_SOURCES += asrcnode.c
|
||||
endif
|
||||
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
|
||||
AM_CFLAGS = $(STATIC)
|
||||
MAINTAINERCLEANFILES = Makefile.in
|
||||
|
|
|
|||
|
|
@ -74,7 +74,11 @@ SPICEdev ASRCinfo = {
|
|||
#endif
|
||||
/* DEVinstSize */ &ASRCiSize,
|
||||
/* DEVmodSize */ &ASRCmSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ ASRCnodeIsNonLinear
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -22,7 +22,6 @@ libbjt_la_SOURCES = \
|
|||
bjtmask.c \
|
||||
bjtmdel.c \
|
||||
bjtmpar.c \
|
||||
bjtnode.c \
|
||||
bjtnoise.c \
|
||||
bjtparam.c \
|
||||
bjtpzld.c \
|
||||
|
|
@ -36,6 +35,9 @@ libbjt_la_SOURCES = \
|
|||
bjttrunc.c
|
||||
|
||||
|
||||
if KIRCHHOFF_WANTED
|
||||
libbjt_la_SOURCES += bjtnode.c
|
||||
endif
|
||||
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
|
||||
AM_CFLAGS = $(STATIC)
|
||||
|
|
|
|||
|
|
@ -73,7 +73,10 @@ SPICEdev BJTinfo = { /* description from struct IFdevice */
|
|||
#endif
|
||||
/* DEVinstSize */ &BJTiSize,
|
||||
/* DEVmodSize */ &BJTmSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ BJTnodeIsNonLinear
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@ libbsim1_la_SOURCES = \
|
|||
b1moscap.c \
|
||||
b1mpar.c \
|
||||
b1par.c \
|
||||
b1node.c \
|
||||
b1noi.c \
|
||||
b1pzld.c \
|
||||
b1set.c \
|
||||
|
|
@ -32,6 +31,9 @@ libbsim1_la_SOURCES = \
|
|||
bsim1itf.h
|
||||
|
||||
|
||||
if KIRCHHOFF_WANTED
|
||||
libbsim1_la_SOURCES += b1node.c
|
||||
endif
|
||||
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
|
||||
AM_CFLAGS = $(STATIC)
|
||||
|
|
|
|||
|
|
@ -73,7 +73,10 @@ SPICEdev B1info = {
|
|||
#endif
|
||||
/* DEVinstSize */ &B1iSize,
|
||||
/* DEVmodSize */ &B1mSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ B1nodeIsNonLinear
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@ libbsim2_la_SOURCES = \
|
|||
b2mdel.c \
|
||||
b2moscap.c \
|
||||
b2mpar.c \
|
||||
b2node.c \
|
||||
b2noi.c \
|
||||
b2par.c \
|
||||
b2pzld.c \
|
||||
|
|
@ -30,6 +29,9 @@ libbsim2_la_SOURCES = \
|
|||
bsim2itf.h
|
||||
|
||||
|
||||
if KIRCHHOFF_WANTED
|
||||
libbsim2_la_SOURCES += b2node.c
|
||||
endif
|
||||
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
|
||||
AM_CFLAGS = $(STATIC)
|
||||
|
|
|
|||
|
|
@ -721,7 +721,7 @@ line900:
|
|||
*(here->B2SPbPtr) += m * (-gbs-(xnrm-xrev)*gmbs-gcsgb-gcsdb-gcssb);
|
||||
*(here->B2SPdpPtr) += m * (-gds-xrev*(gm+gmbs)+gcsdb);
|
||||
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* KCL verification - Dynamic Part */
|
||||
*(ckt->CKTfvk + here->B2gNode) += m * ceqqg_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->B2dNodePrime) += m * (-here->B2drainConductance) * *(ckt->CKTrhsOld + here->B2dNode) ;
|
||||
*(ckt->CKTfvk + here->B2sNodePrime) += m * (-here->B2sourceConductance) * *(ckt->CKTrhsOld + here->B2sNode) ;
|
||||
#endif
|
||||
|
||||
line1000: ;
|
||||
|
||||
|
|
|
|||
|
|
@ -73,7 +73,10 @@ SPICEdev B2info = {
|
|||
#endif
|
||||
/* DEVinstSize */ &B2iSize,
|
||||
/* DEVmodSize */ &B2mSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ B2nodeIsNonLinear
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@ libbsim3_la_SOURCES = \
|
|||
b3mask.c \
|
||||
b3mdel.c \
|
||||
b3mpar.c \
|
||||
b3node.c \
|
||||
b3noi.c \
|
||||
b3par.c \
|
||||
b3pzld.c \
|
||||
|
|
@ -29,6 +28,9 @@ libbsim3_la_SOURCES = \
|
|||
bsim3itf.h
|
||||
|
||||
|
||||
if KIRCHHOFF_WANTED
|
||||
libbsim3_la_SOURCES += b3node.c
|
||||
endif
|
||||
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
|
||||
AM_CFLAGS = $(STATIC)
|
||||
|
|
|
|||
|
|
@ -3142,6 +3142,7 @@ line900:
|
|||
*(here->BSIM3QbPtr) += m * (ggtb - gcqbb);
|
||||
}
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
/*
|
||||
*(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 + 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) ;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
line1000: ;
|
||||
|
|
|
|||
|
|
@ -72,7 +72,10 @@ SPICEdev BSIM3info = {
|
|||
#endif
|
||||
/* DEVinstSize */ &BSIM3iSize,
|
||||
/* DEVmodSize */ &BSIM3mSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ BSIM3nodeIsNonLinear
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@ libbsim3soidd_la_SOURCES = \
|
|||
b3soiddmask.c \
|
||||
b3soiddmdel.c \
|
||||
b3soiddmpar.c \
|
||||
b3soiddnode.c \
|
||||
b3soiddnoi.c \
|
||||
b3soiddpar.c \
|
||||
b3soiddpzld.c \
|
||||
|
|
@ -29,6 +28,9 @@ libbsim3soidd_la_SOURCES = \
|
|||
b3soidditf.h
|
||||
|
||||
|
||||
if KIRCHHOFF_WANTED
|
||||
libbsim3soidd_la_SOURCES += b3soiddnode.c
|
||||
endif
|
||||
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
|
||||
AM_CFLAGS = $(STATIC)
|
||||
|
|
|
|||
|
|
@ -70,7 +70,11 @@ SPICEdev B3SOIDDinfo = {
|
|||
#endif
|
||||
/* DEVinstSize */ &B3SOIDDiSize,
|
||||
/* DEVmodSize */ &B3SOIDDmSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ B3SOIDDnodeIsNonLinear
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
SPICEdev *
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@ libbsim3soifd_la_SOURCES = \
|
|||
b3soifdmask.c \
|
||||
b3soifdmdel.c \
|
||||
b3soifdmpar.c \
|
||||
b3soifdnode.c \
|
||||
b3soifdnoi.c \
|
||||
b3soifdpar.c \
|
||||
b3soifdpzld.c \
|
||||
|
|
@ -29,6 +28,9 @@ libbsim3soifd_la_SOURCES = \
|
|||
b3soifditf.h
|
||||
|
||||
|
||||
if KIRCHHOFF_WANTED
|
||||
libbsim3soifd_la_SOURCES += b3soifdnode.c
|
||||
endif
|
||||
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
|
||||
AM_CFLAGS = $(STATIC)
|
||||
|
|
|
|||
|
|
@ -71,7 +71,11 @@ SPICEdev B3SOIFDinfo = {
|
|||
#endif
|
||||
/* DEVinstSize*/ &B3SOIFDiSize,
|
||||
/* DEVmodSize*/ &B3SOIFDmSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ B3SOIFDnodeIsNonLinear
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@ libbsim3soipd_la_SOURCES = \
|
|||
b3soipdmask.c \
|
||||
b3soipdmdel.c \
|
||||
b3soipdmpar.c \
|
||||
b3soipdnode.c \
|
||||
b3soipdnoi.c \
|
||||
b3soipdpar.c \
|
||||
b3soipdpzld.c \
|
||||
|
|
@ -29,6 +28,9 @@ libbsim3soipd_la_SOURCES = \
|
|||
b3soipditf.h
|
||||
|
||||
|
||||
if KIRCHHOFF_WANTED
|
||||
libbsim3soipd_la_SOURCES += b3soipdnode.c
|
||||
endif
|
||||
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
|
||||
AM_CFLAGS = $(STATIC)
|
||||
|
|
|
|||
|
|
@ -72,7 +72,11 @@ SPICEdev B3SOIPDinfo = {
|
|||
#endif
|
||||
/* DEVinstSize*/ &B3SOIPDiSize,
|
||||
/* DEVmodSize*/ &B3SOIPDmSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ B3SOIPDnodeIsNonLinear
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
SPICEdev *
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@ libbsim3v0_la_SOURCES = \
|
|||
b3v0mask.c \
|
||||
b3v0mdel.c \
|
||||
b3v0mpar.c \
|
||||
b3v0node.c \
|
||||
b3v0noi.c \
|
||||
b3v0par.c \
|
||||
b3v0pzld.c \
|
||||
|
|
@ -28,6 +27,9 @@ libbsim3v0_la_SOURCES = \
|
|||
bsim3v0itf.h
|
||||
|
||||
|
||||
if KIRCHHOFF_WANTED
|
||||
libbsim3v0_la_SOURCES += b3v0node.c
|
||||
endif
|
||||
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
|
||||
AM_CFLAGS = $(STATIC)
|
||||
|
|
|
|||
|
|
@ -71,7 +71,10 @@ SPICEdev B3v0info = {
|
|||
#endif
|
||||
/* DEVinstSize */ &BSIM3v0iSize,
|
||||
/* DEVmodSize */ &BSIM3v0mSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ BSIM3v0nodeIsNonLinear
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@ libbsim3v1_la_SOURCES = \
|
|||
b3v1mask.c \
|
||||
b3v1mdel.c \
|
||||
b3v1mpar.c \
|
||||
b3v1node.c \
|
||||
b3v1noi.c \
|
||||
b3v1par.c \
|
||||
b3v1pzld.c \
|
||||
|
|
@ -29,6 +28,9 @@ libbsim3v1_la_SOURCES = \
|
|||
bsim3v1itf.h
|
||||
|
||||
|
||||
if KIRCHHOFF_WANTED
|
||||
libbsim3v1_la_SOURCES += b3v1node.c
|
||||
endif
|
||||
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
|
||||
AM_CFLAGS = $(STATIC)
|
||||
|
|
|
|||
|
|
@ -71,7 +71,10 @@ SPICEdev BSIM3v1info = {
|
|||
#endif
|
||||
/* DEVinstSize */ &BSIM3v1iSize,
|
||||
/* DEVmodSize */ &BSIM3v1mSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ BSIM3v1nodeIsNonLinear
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@ libbsim3v32_la_SOURCES = \
|
|||
b3v32mask.c \
|
||||
b3v32mdel.c \
|
||||
b3v32mpar.c \
|
||||
b3v32node.c \
|
||||
b3v32noi.c \
|
||||
b3v32par.c \
|
||||
b3v32pzld.c \
|
||||
|
|
@ -29,6 +28,9 @@ libbsim3v32_la_SOURCES = \
|
|||
bsim3v32itf.h
|
||||
|
||||
|
||||
if KIRCHHOFF_WANTED
|
||||
libbsim3v32_la_SOURCES += b3v32node.c
|
||||
endif
|
||||
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
|
||||
AM_CFLAGS = $(STATIC)
|
||||
|
|
|
|||
|
|
@ -72,7 +72,10 @@ SPICEdev BSIM3v32info = {
|
|||
#endif
|
||||
/* DEVinstSize */ &BSIM3v32iSize,
|
||||
/* DEVmodSize */ &BSIM3v32mSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ BSIM3v32nodeIsNonLinear
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@ libbsim4_la_SOURCES = \
|
|||
b4mask.c \
|
||||
b4mdel.c \
|
||||
b4mpar.c \
|
||||
b4node.c \
|
||||
b4noi.c \
|
||||
b4par.c \
|
||||
b4pzld.c \
|
||||
|
|
@ -30,6 +29,9 @@ libbsim4_la_SOURCES = \
|
|||
bsim4itf.h
|
||||
|
||||
|
||||
if KIRCHHOFF_WANTED
|
||||
libbsim4_la_SOURCES += b4node.c
|
||||
endif
|
||||
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
|
||||
AM_CFLAGS = $(STATIC)
|
||||
|
|
|
|||
|
|
@ -5346,6 +5346,7 @@ line900:
|
|||
(*(here->BSIM4GPqPtr) -= m * here->BSIM4gtau);
|
||||
}
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
///////////////////////////////////////////
|
||||
|
||||
/* 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->BSIM4gNodePrime) -= m * here->BSIM4gtau * *(ckt->CKTrhsOld + here->BSIM4qNode) ;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
line1000: ;
|
||||
|
|
|
|||
|
|
@ -72,8 +72,12 @@ SPICEdev BSIM4info = {
|
|||
NULL, /* DEVacct */
|
||||
#endif
|
||||
&BSIM4iSize, /* DEVinstSize */
|
||||
&BSIM4mSize, /* DEVmodSize */
|
||||
&BSIM4mSize, /* DEVmodSize */
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
BSIM4nodeIsNonLinear /* DEVnodeIsNonLinear */
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@ libbsim4v4_la_SOURCES = \
|
|||
b4v4mask.c \
|
||||
b4v4mdel.c \
|
||||
b4v4mpar.c \
|
||||
b4v4node.c \
|
||||
b4v4noi.c \
|
||||
b4v4par.c \
|
||||
b4v4pzld.c \
|
||||
|
|
@ -30,6 +29,9 @@ libbsim4v4_la_SOURCES = \
|
|||
bsim4v4itf.h
|
||||
|
||||
|
||||
if KIRCHHOFF_WANTED
|
||||
libbsim4v4_la_SOURCES += b4v4node.c
|
||||
endif
|
||||
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
|
||||
AM_CFLAGS = $(STATIC)
|
||||
|
|
|
|||
|
|
@ -72,8 +72,12 @@ SPICEdev BSIM4v4info = {
|
|||
NULL, /* DEVacct */
|
||||
#endif
|
||||
&BSIM4v4iSize, /* DEVinstSize */
|
||||
&BSIM4v4mSize, /* DEVmodSize */
|
||||
&BSIM4v4mSize, /* DEVmodSize */
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
BSIM4v4nodeIsNonLinear /* DEVnodeIsNonLinear */
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@ libbsim4v5_la_SOURCES = \
|
|||
b4v5mask.c \
|
||||
b4v5mdel.c \
|
||||
b4v5mpar.c \
|
||||
b4v5node.c \
|
||||
b4v5noi.c \
|
||||
b4v5par.c \
|
||||
b4v5pzld.c \
|
||||
|
|
@ -30,6 +29,9 @@ libbsim4v5_la_SOURCES = \
|
|||
bsim4v5itf.h
|
||||
|
||||
|
||||
if KIRCHHOFF_WANTED
|
||||
libbsim4v5_la_SOURCES += b4v5node.c
|
||||
endif
|
||||
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
|
||||
AM_CFLAGS = $(STATIC)
|
||||
|
|
|
|||
|
|
@ -72,8 +72,12 @@ SPICEdev BSIM4v5info = {
|
|||
NULL, /* DEVacct */
|
||||
#endif
|
||||
&BSIM4v5iSize, /* DEVinstSize */
|
||||
&BSIM4v5mSize, /* DEVmodSize */
|
||||
&BSIM4v5mSize, /* DEVmodSize */
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
BSIM4v5nodeIsNonLinear /* DEVnodeIsNonLinear */
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@ libbsim4v6_la_SOURCES = \
|
|||
b4v6mask.c \
|
||||
b4v6mdel.c \
|
||||
b4v6mpar.c \
|
||||
b4v6node.c \
|
||||
b4v6noi.c \
|
||||
b4v6par.c \
|
||||
b4v6pzld.c \
|
||||
|
|
@ -30,6 +29,9 @@ libbsim4v6_la_SOURCES = \
|
|||
bsim4v6itf.h
|
||||
|
||||
|
||||
if KIRCHHOFF_WANTED
|
||||
libbsim4v6_la_SOURCES += b4v6node.c
|
||||
endif
|
||||
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
|
||||
AM_CFLAGS = $(STATIC)
|
||||
|
|
|
|||
|
|
@ -72,8 +72,12 @@ SPICEdev BSIM4v6info = {
|
|||
NULL, /* DEVacct */
|
||||
#endif
|
||||
&BSIM4v6iSize, /* DEVinstSize */
|
||||
&BSIM4v6mSize, /* DEVmodSize */
|
||||
&BSIM4v6mSize, /* DEVmodSize */
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
BSIM4v6nodeIsNonLinear /* DEVnodeIsNonLinear */
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@ libbsim4soi_la_SOURCES = \
|
|||
b4soimask.c \
|
||||
b4soimdel.c \
|
||||
b4soimpar.c \
|
||||
b4soinode.c \
|
||||
b4soinoi.c \
|
||||
b4soipar.c \
|
||||
b4soipzld.c \
|
||||
|
|
@ -29,6 +28,9 @@ libbsim4soi_la_SOURCES = \
|
|||
b4soiitf.h
|
||||
|
||||
|
||||
if KIRCHHOFF_WANTED
|
||||
libbsim4soi_la_SOURCES += b4soinode.c
|
||||
endif
|
||||
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
|
||||
AM_CFLAGS = $(STATIC)
|
||||
|
|
|
|||
|
|
@ -71,7 +71,11 @@ SPICEdev B4SOIinfo = {
|
|||
#endif
|
||||
/* DEVinstSize */ &B4SOIiSize,
|
||||
/* DEVmodSize */ &B4SOImSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ B4SOInodeIsNonLinear
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
SPICEdev *
|
||||
|
|
|
|||
|
|
@ -72,7 +72,11 @@ SPICEdev CAPinfo = {
|
|||
#endif
|
||||
/* DEVinstSize */ &CAPiSize,
|
||||
/* DEVmodSize */ &CAPmSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ NULL
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -78,8 +78,11 @@ CAPload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(ckt->CKTrhs+here->CAPposNode) -= m * ceq;
|
||||
*(ckt->CKTrhs+here->CAPnegNode) += m * ceq;
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
*(ckt->CKTfvk+here->CAPposNode) += m * *(ckt->CKTstate0+here->CAPqcap+1) ;
|
||||
*(ckt->CKTfvk+here->CAPnegNode) -= m * *(ckt->CKTstate0+here->CAPqcap+1) ;
|
||||
#endif
|
||||
|
||||
} else
|
||||
*(ckt->CKTstate0+here->CAPqcap) = here->CAPcapac * vcap;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -72,7 +72,10 @@ SPICEdev CCCSinfo = {
|
|||
#endif
|
||||
/* DEVinstSize */ &CCCSiSize,
|
||||
/* DEVmodSize */ &CCCSmSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ NULL
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -35,8 +35,11 @@ CCCSload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(here->CCCSposContBrptr) += here->CCCScoeff ;
|
||||
*(here->CCCSnegContBrptr) -= here->CCCScoeff ;
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
*(ckt->CKTfvk+here->CCCSposNode) += here->CCCScoeff * *(ckt->CKTrhsOld+here->CCCScontBranch) ;
|
||||
*(ckt->CKTfvk+here->CCCSnegNode) -= here->CCCScoeff * *(ckt->CKTrhsOld+here->CCCScontBranch) ;
|
||||
#endif
|
||||
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -73,7 +73,10 @@ SPICEdev CCVSinfo = {
|
|||
#endif
|
||||
/* DEVinstSize */ &CCVSiSize,
|
||||
/* DEVmodSize */ &CCVSmSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ NULL
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -38,8 +38,11 @@ CCVSload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(here->CCVSibrNegptr) -= 1.0 ;
|
||||
*(here->CCVSibrContBrptr) -= here->CCVScoeff ;
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
*(ckt->CKTfvk+here->CCVSposNode) += *(ckt->CKTrhsOld+here->CCVSbranch) ;
|
||||
*(ckt->CKTfvk+here->CCVSnegNode) -= *(ckt->CKTrhsOld+here->CCVSbranch) ;
|
||||
#endif
|
||||
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -73,7 +73,10 @@ SPICEdev CPLinfo = {
|
|||
#endif
|
||||
/* DEVinstSize */ &CPLiSize,
|
||||
/* DEVmodSize */ &CPLmSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsLinear */ NULL
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -75,7 +75,10 @@ SPICEdev CSWinfo = {
|
|||
#endif
|
||||
/* DEVinstSize */ &CSWiSize,
|
||||
/* DEVmodSize */ &CSWmSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsLinear */ NULL
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ libdio_la_SOURCES = \
|
|||
diomask.c \
|
||||
diomdel.c \
|
||||
diompar.c \
|
||||
dionode.c \
|
||||
dionoise.c \
|
||||
dioparam.c \
|
||||
diopzld.c \
|
||||
|
|
@ -35,6 +34,10 @@ libdio_la_SOURCES = \
|
|||
diotrunc.c
|
||||
|
||||
|
||||
if KIRCHHOFF_WANTED
|
||||
libdio_la_SOURCES += dionode.c
|
||||
endif
|
||||
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
|
||||
AM_CFLAGS = $(STATIC)
|
||||
MAINTAINERCLEANFILES = Makefile.in
|
||||
|
|
|
|||
|
|
@ -74,7 +74,11 @@ SPICEdev DIOinfo = {
|
|||
#endif
|
||||
/* DEVinstSize */ &DIOiSize,
|
||||
/* DEVmodSize */ &DIOmSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ DIOnodeIsNonLinear
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@ libhfet_la_SOURCES = \
|
|||
hfetmask.c \
|
||||
hfetmdel.c \
|
||||
hfetmpar.c \
|
||||
hfetnode.c \
|
||||
hfetparam.c \
|
||||
hfetpzl.c \
|
||||
hfetsetup.c \
|
||||
|
|
@ -26,6 +25,9 @@ libhfet_la_SOURCES = \
|
|||
hfettrunc.c
|
||||
|
||||
|
||||
if KIRCHHOFF_WANTED
|
||||
libhfet_la_SOURCES += hfetnode.c
|
||||
endif
|
||||
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
|
||||
AM_CFLAGS = $(STATIC)
|
||||
|
|
|
|||
|
|
@ -73,7 +73,10 @@ SPICEdev HFETAinfo = {
|
|||
#endif
|
||||
/* DEVinstSize */ &HFETAiSize,
|
||||
/* DEVmodSize */ &HFETAmSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ HFETAnodeIsNonLinear
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@ libhfet2_la_SOURCES = \
|
|||
hfet2mask.c \
|
||||
hfet2mdel.c \
|
||||
hfet2mpar.c \
|
||||
hfet2node.c \
|
||||
hfet2param.c \
|
||||
hfet2pzl.c \
|
||||
hfet2setup.c \
|
||||
|
|
@ -26,6 +25,9 @@ libhfet2_la_SOURCES = \
|
|||
hfet2trunc.c
|
||||
|
||||
|
||||
if KIRCHHOFF_WANTED
|
||||
libhfet2_la_SOURCES += hfet2node.c
|
||||
endif
|
||||
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
|
||||
AM_CFLAGS = $(STATIC)
|
||||
|
|
|
|||
|
|
@ -73,7 +73,10 @@ SPICEdev HFET2info = {
|
|||
#endif
|
||||
/* DEVinstSize */ &HFET2iSize,
|
||||
/* DEVmodSize */ &HFET2mSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ HFET2nodeIsNonLinear
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -4,34 +4,38 @@ EXTRA_DIST =
|
|||
|
||||
noinst_LTLIBRARIES = libhisim2.la
|
||||
|
||||
libhisim2_la_SOURCES = hisim2.h \
|
||||
hsm2.c \
|
||||
hsm2acld.c \
|
||||
hsm2ask.c \
|
||||
hsm2cvtest.c \
|
||||
hsm2def.h \
|
||||
hsm2del.c \
|
||||
hsm2dest.c \
|
||||
hsm2eval.c \
|
||||
hsm2evalenv.h \
|
||||
hsm2ext.h \
|
||||
hsm2getic.c \
|
||||
hsm2init.c \
|
||||
hsm2init.h \
|
||||
hsm2itf.h \
|
||||
hsm2ld.c \
|
||||
hsm2mask.c \
|
||||
hsm2mdel.c \
|
||||
hsm2mpar.c \
|
||||
hsm2node.c \
|
||||
hsm2noi.c \
|
||||
hsm2par.c \
|
||||
hsm2pzld.c \
|
||||
hsm2set.c \
|
||||
hsm2temp.c \
|
||||
hsm2trunc.c
|
||||
libhisim2_la_SOURCES = \
|
||||
hisim2.h \
|
||||
hsm2.c \
|
||||
hsm2acld.c \
|
||||
hsm2ask.c \
|
||||
hsm2cvtest.c \
|
||||
hsm2def.h \
|
||||
hsm2del.c \
|
||||
hsm2dest.c \
|
||||
hsm2eval.c \
|
||||
hsm2evalenv.h \
|
||||
hsm2ext.h \
|
||||
hsm2getic.c \
|
||||
hsm2init.c \
|
||||
hsm2init.h \
|
||||
hsm2itf.h \
|
||||
hsm2ld.c \
|
||||
hsm2mask.c \
|
||||
hsm2mdel.c \
|
||||
hsm2mpar.c \
|
||||
hsm2noi.c \
|
||||
hsm2par.c \
|
||||
hsm2pzld.c \
|
||||
hsm2set.c \
|
||||
hsm2temp.c \
|
||||
hsm2trunc.c
|
||||
|
||||
|
||||
if KIRCHHOFF_WANTED
|
||||
libhisim2_la_SOURCES += hsm2node.c
|
||||
endif
|
||||
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
|
||||
AM_CFLAGS = $(STATIC)
|
||||
|
||||
|
|
|
|||
|
|
@ -71,7 +71,10 @@ SPICEdev HSM2info = {
|
|||
#endif
|
||||
/* DEVinstSize */ &HSM2iSize,
|
||||
/* DEVmodSize */ &HSM2mSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ HSM2nodeIsNonLinear
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -2,35 +2,40 @@
|
|||
|
||||
noinst_LTLIBRARIES = libhisimhv1.la
|
||||
|
||||
libhisimhv1_la_SOURCES = hisimhv.h \
|
||||
hsmhv.c \
|
||||
hsmhvacld.c \
|
||||
hsmhvask.c \
|
||||
hsmhvcvtest.c \
|
||||
hsmhvdef.h \
|
||||
hsmhvdel.c \
|
||||
hsmhvdest.c \
|
||||
hsmhveval.c \
|
||||
hsmhveval_qover.h \
|
||||
hsmhvevalenv.h \
|
||||
hsmhvext.h \
|
||||
hsmhvgetic.c \
|
||||
hsmhvinit.c \
|
||||
hsmhvinit.h \
|
||||
hsmhvitf.h \
|
||||
hsmhvld.c \
|
||||
hsmhvld_info_eval.h \
|
||||
hsmhvmask.c \
|
||||
hsmhvmdel.c \
|
||||
hsmhvmpar.c \
|
||||
hsmhvnode.c \
|
||||
hsmhvnoi.c \
|
||||
hsmhvpar.c \
|
||||
hsmhvpzld.c \
|
||||
hsmhvset.c \
|
||||
hsmhvtemp.c \
|
||||
hsmhvtemp_eval.h \
|
||||
hsmhvtrunc.c
|
||||
libhisimhv1_la_SOURCES = \
|
||||
hisimhv.h \
|
||||
hsmhv.c \
|
||||
hsmhvacld.c \
|
||||
hsmhvask.c \
|
||||
hsmhvcvtest.c \
|
||||
hsmhvdef.h \
|
||||
hsmhvdel.c \
|
||||
hsmhvdest.c \
|
||||
hsmhveval.c \
|
||||
hsmhveval_qover.h \
|
||||
hsmhvevalenv.h \
|
||||
hsmhvext.h \
|
||||
hsmhvgetic.c \
|
||||
hsmhvinit.c \
|
||||
hsmhvinit.h \
|
||||
hsmhvitf.h \
|
||||
hsmhvld.c \
|
||||
hsmhvld_info_eval.h \
|
||||
hsmhvmask.c \
|
||||
hsmhvmdel.c \
|
||||
hsmhvmpar.c \
|
||||
hsmhvnoi.c \
|
||||
hsmhvpar.c \
|
||||
hsmhvpzld.c \
|
||||
hsmhvset.c \
|
||||
hsmhvtemp.c \
|
||||
hsmhvtemp_eval.h \
|
||||
hsmhvtrunc.c
|
||||
|
||||
|
||||
if KIRCHHOFF_WANTED
|
||||
libhisimhv1_la_SOURCES += hsmhvnode.c
|
||||
endif
|
||||
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
|
||||
AM_CFLAGS = $(STATIC)
|
||||
|
|
|
|||
|
|
@ -71,7 +71,10 @@ SPICEdev HSMHVinfo = {
|
|||
#endif
|
||||
/* DEVinstSize */ &HSMHViSize,
|
||||
/* DEVmodSize */ &HSMHVmSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ HSMHVnodeIsNonLinear
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -72,7 +72,10 @@ SPICEdev INDinfo = {
|
|||
#endif
|
||||
/* DEVinstSize */ &INDiSize,
|
||||
/* DEVmodSize */ &INDmSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ NULL
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
@ -142,7 +145,10 @@ SPICEdev MUTinfo = {
|
|||
#endif
|
||||
/* DEVinstSize */ &MUTiSize,
|
||||
/* DEVmodSize */ &MUTmSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ NULL
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -122,8 +122,11 @@ INDload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(here->INDibrNegptr) -= 1;
|
||||
*(here->INDibrIbrptr) -= req;
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
*(ckt->CKTfvk+here->INDposNode) += *(ckt->CKTrhsOld+here->INDbrEq) ;
|
||||
*(ckt->CKTfvk+here->INDnegNode) -= *(ckt->CKTrhsOld+here->INDbrEq) ;
|
||||
#endif
|
||||
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -73,7 +73,11 @@ SPICEdev ISRCinfo = {
|
|||
#endif
|
||||
/* DEVinstSize */ &ISRCiSize,
|
||||
/* DEVmodSize */ &ISRCmSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ NULL
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -386,8 +386,10 @@ loadDone:
|
|||
*(ckt->CKTrhs + (here->ISRCposNode)) += m * value;
|
||||
*(ckt->CKTrhs + (here->ISRCnegNode)) -= m * value;
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
*(ckt->CKTfvk + (here->ISRCposNode)) -= value;
|
||||
*(ckt->CKTfvk + (here->ISRCnegNode)) += value;
|
||||
#endif
|
||||
|
||||
/* gtri - end - wbk - modify to process srcFact, etc. for all sources */
|
||||
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@ libjfet_la_SOURCES = \
|
|||
jfetmask.c \
|
||||
jfetmdel.c \
|
||||
jfetmpar.c \
|
||||
jfetnode.c \
|
||||
jfetnoi.c \
|
||||
jfetpar.c \
|
||||
jfetpzld.c \
|
||||
|
|
@ -29,6 +28,9 @@ libjfet_la_SOURCES = \
|
|||
jfettrun.c
|
||||
|
||||
|
||||
if KIRCHHOFF_WANTED
|
||||
libjfet_la_SOURCES += jfetnode.c
|
||||
endif
|
||||
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
|
||||
AM_CFLAGS = $(STATIC)
|
||||
|
|
|
|||
|
|
@ -73,7 +73,10 @@ SPICEdev JFETinfo = {
|
|||
#endif
|
||||
/* DEVinstSize */ &JFETiSize,
|
||||
/* DEVmodSize */ &JFETmSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ JFETnodeIsNonLinear
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@ libjfet2_la_SOURCES = \
|
|||
jfet2mask.c \
|
||||
jfet2mdel.c \
|
||||
jfet2mpar.c \
|
||||
jfet2node.c \
|
||||
jfet2noi.c \
|
||||
jfet2par.c \
|
||||
jfet2parm.h \
|
||||
|
|
@ -29,7 +28,9 @@ libjfet2_la_SOURCES = \
|
|||
psmodel.h
|
||||
|
||||
|
||||
|
||||
if KIRCHHOFF_WANTED
|
||||
libjfet2_la_SOURCES += jfet2node.c
|
||||
endif
|
||||
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
|
||||
AM_CFLAGS = $(STATIC)
|
||||
|
|
|
|||
|
|
@ -73,7 +73,10 @@ SPICEdev JFET2info = {
|
|||
#endif
|
||||
/* DEVinstSize */ &JFET2iSize,
|
||||
/* DEVmodSize */ &JFET2mSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ JFET2nodeIsNonLinear
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -73,7 +73,10 @@ SPICEdev LTRAinfo = {
|
|||
#endif
|
||||
/* DEVinstSize */ <RAiSize,
|
||||
/* DEVmodSize */ <RAmSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ NULL
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@ libmes_la_SOURCES = \
|
|||
mesmask.c \
|
||||
mesmdel.c \
|
||||
mesmpar.c \
|
||||
mesnode.c \
|
||||
mesnoise.c \
|
||||
mesparam.c \
|
||||
mespzld.c \
|
||||
|
|
@ -29,6 +28,9 @@ libmes_la_SOURCES = \
|
|||
mestrunc.c
|
||||
|
||||
|
||||
if KIRCHHOFF_WANTED
|
||||
libmes_la_SOURCES += mesnode.c
|
||||
endif
|
||||
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
|
||||
AM_CFLAGS = $(STATIC)
|
||||
|
|
|
|||
|
|
@ -73,7 +73,10 @@ SPICEdev MESinfo = {
|
|||
#endif
|
||||
/* DEVinstSize */ &MESiSize,
|
||||
/* DEVmodSize */ &MESmSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ MESnodeIsNonLinear
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@ libmesa_la_SOURCES = \
|
|||
mesamask.c \
|
||||
mesamdel.c \
|
||||
mesamparam.c \
|
||||
mesanode.c \
|
||||
mesaparam.c \
|
||||
mesapzl.c \
|
||||
mesasetup.c \
|
||||
|
|
@ -26,6 +25,9 @@ libmesa_la_SOURCES = \
|
|||
mesatrunc.c
|
||||
|
||||
|
||||
if KIRCHHOFF_WANTED
|
||||
libmesa_la_SOURCES += mesanode.c
|
||||
endif
|
||||
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
|
||||
AM_CFLAGS = $(STATIC)
|
||||
|
|
|
|||
|
|
@ -73,7 +73,10 @@ SPICEdev MESAinfo = {
|
|||
#endif
|
||||
/* DEVinstSize */ &MESAiSize,
|
||||
/* DEVmodSize */ &MESAmSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ MESAnodeIsNonLinear
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ libmos1_la_SOURCES = \
|
|||
mos1mask.c \
|
||||
mos1mdel.c \
|
||||
mos1mpar.c \
|
||||
mos1node.c \
|
||||
mos1noi.c \
|
||||
mos1par.c \
|
||||
mos1pzld.c \
|
||||
|
|
@ -35,6 +34,9 @@ libmos1_la_SOURCES = \
|
|||
mos1trun.c
|
||||
|
||||
|
||||
if KIRCHHOFF_WANTED
|
||||
libmos1_la_SOURCES += mos1node.c
|
||||
endif
|
||||
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
|
||||
AM_CFLAGS = $(STATIC)
|
||||
|
|
|
|||
|
|
@ -73,7 +73,11 @@ SPICEdev MOS1info = {
|
|||
#endif
|
||||
/* DEVinstSize */ &MOS1iSize,
|
||||
/* DEVmodSize */ &MOS1mSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ MOS1nodeIsNonLinear
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -945,7 +945,7 @@ next1: if(vbs <= -3*vt) {
|
|||
*(here->MOS1SPdpPtr) += (-here->MOS1gds-xrev*
|
||||
(here->MOS1gm+here->MOS1gmbs));
|
||||
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* KCL verification - Linear-Dynamic Part */
|
||||
*(ckt->CKTfvk+here->MOS1gNode) += model->MOS1type * (ceqgs_fvk + ceqgb_fvk + ceqgd_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->MOS1dNodePrime) -= here->MOS1drainConductance * *(ckt->CKTrhsOld+here->MOS1dNode) ;
|
||||
*(ckt->CKTfvk+here->MOS1sNodePrime) -= here->MOS1sourceConductance * *(ckt->CKTrhsOld+here->MOS1sNode) ;
|
||||
#endif
|
||||
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ libmos2_la_SOURCES = \
|
|||
mos2mask.c \
|
||||
mos2mdel.c \
|
||||
mos2mpar.c \
|
||||
mos2node.c \
|
||||
mos2noi.c \
|
||||
mos2par.c \
|
||||
mos2pzld.c \
|
||||
|
|
@ -35,6 +34,10 @@ libmos2_la_SOURCES = \
|
|||
mos2trun.c
|
||||
|
||||
|
||||
if KIRCHHOFF_WANTED
|
||||
libmos2_la_SOURCES += mos2node.c
|
||||
endif
|
||||
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
|
||||
AM_CFLAGS = $(STATIC)
|
||||
MAINTAINERCLEANFILES = Makefile.in
|
||||
|
|
|
|||
|
|
@ -73,7 +73,11 @@ SPICEdev MOS2info = {
|
|||
#endif
|
||||
/* DEVinstSize */ &MOS2iSize,
|
||||
/* DEVmodSize */ &MOS2mSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ MOS2nodeIsNonLinear
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ libmos3_la_SOURCES = \
|
|||
mos3mask.c \
|
||||
mos3mdel.c \
|
||||
mos3mpar.c \
|
||||
mos3node.c \
|
||||
mos3noi.c \
|
||||
mos3par.c \
|
||||
mos3pzld.c \
|
||||
|
|
@ -35,6 +34,10 @@ libmos3_la_SOURCES = \
|
|||
mos3trun.c
|
||||
|
||||
|
||||
if KIRCHHOFF_WANTED
|
||||
libmos3_la_SOURCES += mos3node.c
|
||||
endif
|
||||
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
|
||||
AM_CFLAGS = $(STATIC)
|
||||
MAINTAINERCLEANFILES = Makefile.in
|
||||
|
|
|
|||
|
|
@ -73,7 +73,10 @@ SPICEdev MOS3info = {
|
|||
#endif
|
||||
/* DEVinstSize */ &MOS3iSize,
|
||||
/* DEVmodSize */ &MOS3mSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ MOS3nodeIsNonLinear
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -16,13 +16,15 @@ libmos6_la_SOURCES = \
|
|||
mos6load.c \
|
||||
mos6mask.c \
|
||||
mos6mpar.c \
|
||||
mos6node.c \
|
||||
mos6par.c \
|
||||
mos6set.c \
|
||||
mos6temp.c \
|
||||
mos6trun.c
|
||||
|
||||
|
||||
if KIRCHHOFF_WANTED
|
||||
libmos6_la_SOURCES += mos6node.c
|
||||
endif
|
||||
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
|
||||
AM_CFLAGS = $(STATIC)
|
||||
|
|
|
|||
|
|
@ -73,7 +73,11 @@ SPICEdev MOS6info = {
|
|||
#endif
|
||||
/* DEVinstSize */ &MOS6iSize,
|
||||
/* DEVmodSize */ &MOS6mSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ MOS6nodeIsNonLinear
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -961,7 +961,7 @@ bypass:
|
|||
*(here->MOS6SPdpPtr) += m * (-here->MOS6gds-xrev*
|
||||
(here->MOS6gm+here->MOS6gmbs));
|
||||
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* KCL verification - Dynamic Part */
|
||||
*(ckt->CKTfvk+here->MOS6gNode) += model->MOS6type * (ceqgs_fvk + ceqgb_fvk + ceqgd_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->MOS6dNodePrime) -= here->MOS6drainConductance * *(ckt->CKTrhsOld+here->MOS6dNode) ;
|
||||
*(ckt->CKTfvk+here->MOS6sNodePrime) -= here->MOS6sourceConductance * *(ckt->CKTrhsOld+here->MOS6sNode) ;
|
||||
#endif
|
||||
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ libmos9_la_SOURCES = \
|
|||
mos9mask.c \
|
||||
mos9mdel.c \
|
||||
mos9mpar.c \
|
||||
mos9node.c \
|
||||
mos9noi.c \
|
||||
mos9par.c \
|
||||
mos9pzld.c \
|
||||
|
|
@ -35,6 +34,9 @@ libmos9_la_SOURCES = \
|
|||
mos9trun.c
|
||||
|
||||
|
||||
if KIRCHHOFF_WANTED
|
||||
libmos9_la_SOURCES += mos9node.c
|
||||
endif
|
||||
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
|
||||
AM_CFLAGS = $(STATIC)
|
||||
|
|
|
|||
|
|
@ -73,7 +73,10 @@ SPICEdev MOS9info = {
|
|||
#endif
|
||||
/* DEVinstSize */ &MOS9iSize,
|
||||
/* DEVmodSize */ &MOS9mSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ MOS9nodeIsNonLinear
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -73,7 +73,10 @@ SPICEdev RESinfo = {
|
|||
#endif
|
||||
/* DEVinstSize */ &RESiSize,
|
||||
/* DEVmodSize */ &RESmSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ NULL
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -35,8 +35,10 @@ RESload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(here->RESposNegptr) -= m * here->RESconduct;
|
||||
*(here->RESnegPosptr) -= m * here->RESconduct;
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
*(ckt->CKTfvk+here->RESposNode) += here->REScurrent ;
|
||||
*(ckt->CKTfvk+here->RESnegNode) -= here->REScurrent ;
|
||||
#endif
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@ libsoi3_la_SOURCES = \
|
|||
soi3mask.c \
|
||||
soi3mdel.c \
|
||||
soi3mpar.c \
|
||||
soi3node.c \
|
||||
soi3nois.c \
|
||||
soi3par.c \
|
||||
soi3set.c \
|
||||
|
|
@ -28,6 +27,9 @@ libsoi3_la_SOURCES = \
|
|||
soi3trun.c
|
||||
|
||||
|
||||
if KIRCHHOFF_WANTED
|
||||
libsoi3_la_SOURCES += soi3node.c
|
||||
endif
|
||||
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
|
||||
AM_CFLAGS = $(STATIC)
|
||||
|
|
|
|||
|
|
@ -73,7 +73,10 @@ SPICEdev SOI3info = {
|
|||
#endif
|
||||
/* DEVinstSize */ &SOI3iSize,
|
||||
/* DEVmodSize */ &SOI3mSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ SOI3nodeIsNonLinear
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -74,7 +74,10 @@ SPICEdev SWinfo = {
|
|||
#endif /* CIDER */
|
||||
/* DEVinstSize */ &SWiSize,
|
||||
/* DEVmodSize */ &SWmSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ NULL
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -73,7 +73,10 @@ SPICEdev TRAinfo = {
|
|||
#endif
|
||||
/* DEVinstSize */ &TRAiSize,
|
||||
/* DEVmodSize */ &TRAmSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ NULL
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -78,7 +78,10 @@ SPICEdev TXLinfo = {
|
|||
#endif
|
||||
/* DEVinstSize */ &TXLiSize,
|
||||
/* DEVmodSize */ &TXLmSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ NULL
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -73,7 +73,10 @@ SPICEdev URCinfo = {
|
|||
#endif
|
||||
/* DEVinstSize */ &URCiSize,
|
||||
/* DEVmodSize */ &URCmSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ NULL
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@ libvbic_la_SOURCES = \
|
|||
vbicmask.c \
|
||||
vbicmdel.c \
|
||||
vbicmpar.c \
|
||||
vbicnode.c \
|
||||
vbicnoise.c \
|
||||
vbicparam.c \
|
||||
vbicpzld.c \
|
||||
|
|
@ -28,6 +27,9 @@ libvbic_la_SOURCES = \
|
|||
vbictrunc.c
|
||||
|
||||
|
||||
if KIRCHHOFF_WANTED
|
||||
libvbic_la_SOURCES += vbicnode.c
|
||||
endif
|
||||
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
|
||||
AM_CFLAGS = $(STATIC)
|
||||
|
|
|
|||
|
|
@ -78,7 +78,10 @@ SPICEdev VBICinfo = {
|
|||
#endif
|
||||
&VBICiSize, /* DEVinstSize */
|
||||
&VBICmSize, /* DEVmodSize */
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
VBICnodeIsNonLinear /* DEVnodeIsNonLinear */
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -73,7 +73,10 @@ SPICEdev VCCSinfo = {
|
|||
#endif
|
||||
/* DEVinstSize */ &VCCSiSize,
|
||||
/* DEVmodSize */ &VCCSmSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ NULL
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -36,10 +36,13 @@ VCCSload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(here->VCCSnegContPosptr) -= 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->VCCScontNegNode) ;
|
||||
*(ckt->CKTfvk+here->VCCSnegNode) -= here->VCCScoeff * *(ckt->CKTrhsOld+here->VCCScontPosNode) ;
|
||||
*(ckt->CKTfvk+here->VCCSnegNode) += here->VCCScoeff * *(ckt->CKTrhsOld+here->VCCScontNegNode) ;
|
||||
#endif
|
||||
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -73,7 +73,10 @@ SPICEdev VCVSinfo = {
|
|||
#endif
|
||||
/* DEVinstSize */ &VCVSiSize,
|
||||
/* DEVmodSize */ &VCVSmSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ NULL
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -38,8 +38,11 @@ VCVSload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(here->VCVSibrContPosptr) -= here->VCVScoeff ;
|
||||
*(here->VCVSibrContNegptr) += here->VCVScoeff ;
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
*(ckt->CKTfvk+here->VCVSposNode) += *(ckt->CKTrhsOld+here->VCVSbranch) ;
|
||||
*(ckt->CKTfvk+here->VCVSnegNode) -= *(ckt->CKTrhsOld+here->VCVSbranch) ;
|
||||
#endif
|
||||
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -73,7 +73,11 @@ SPICEdev VSRCinfo = {
|
|||
#endif
|
||||
/* DEVinstSize */ &VSRCiSize,
|
||||
/* DEVmodSize */ &VSRCmSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ NULL
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue