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],
[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 ##################################################

View File

@ -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) */

View File

@ -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 */

View File

@ -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);

View File

@ -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++) {

View File

@ -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

View File

@ -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);
}

View File

@ -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

View File

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

View File

@ -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)

View File

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

View File

@ -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)

View File

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

View File

@ -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)

View File

@ -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: ;

View File

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

View File

@ -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)

View File

@ -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: ;

View File

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

View File

@ -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)

View File

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

View File

@ -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)

View File

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

View File

@ -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)

View File

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

View File

@ -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)

View File

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

View File

@ -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)

View File

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

View File

@ -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)

View File

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

View File

@ -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)

View File

@ -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: ;

View File

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

View File

@ -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)

View File

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

View File

@ -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)

View File

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

View File

@ -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)

View File

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

View File

@ -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)

View File

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

View File

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

View File

@ -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;
}

View File

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

View File

@ -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);

View File

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

View File

@ -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);

View File

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

View File

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

View File

@ -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

View File

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

View File

@ -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)

View File

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

View File

@ -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)

View File

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

View File

@ -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)

View File

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

View File

@ -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)

View File

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

View File

@ -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
};

View File

@ -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);

View File

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

View File

@ -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 */

View File

@ -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)

View File

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

View File

@ -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)

View File

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

View File

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

View File

@ -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)

View File

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

View File

@ -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)

View File

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

View File

@ -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)

View File

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

View File

@ -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);

View File

@ -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

View File

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

View File

@ -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

View File

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

View File

@ -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)

View File

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

View File

@ -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);

View File

@ -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)

View File

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

View File

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

View File

@ -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
}
}

View File

@ -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)

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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)

View File

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

View File

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

View File

@ -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);

View File

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

View File

@ -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);

View File

@ -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