removed ancient PARALLEL_ARCH feature
removed variables ARCHme ARCHsize removed functions SMPcombine() SMPcCombine() CKTpartition() removed files spcombin.c cktpartn.c removed struct slots STATcombineTime STATtranCombTime STATacCombTime GENowner <MODEL>owner
This commit is contained in:
parent
cb0ff8049a
commit
c23bd59c44
|
|
@ -84,11 +84,6 @@ OUTpBeginPlot(CKTcircuit *circuitPtr, JOB *analysisPtr,
|
|||
{
|
||||
char *name;
|
||||
|
||||
#ifdef PARALLEL_ARCH
|
||||
if (ARCHme != 0)
|
||||
return (OK);
|
||||
#endif
|
||||
|
||||
if (ft_curckt->ci_ckt == circuitPtr)
|
||||
name = ft_curckt->ci_name;
|
||||
else
|
||||
|
|
@ -108,11 +103,6 @@ OUTwBeginPlot(CKTcircuit *circuitPtr, JOB *analysisPtr,
|
|||
int numNames, IFuid *dataNames, int dataType, runDesc **plotPtr)
|
||||
{
|
||||
|
||||
#ifdef PARALLEL_ARCH
|
||||
if (ARCHme != 0)
|
||||
return (OK);
|
||||
#endif
|
||||
|
||||
return (beginPlot(analysisPtr, circuitPtr, "circuit name",
|
||||
analName, refName, refType, numNames,
|
||||
dataNames, dataType, TRUE,
|
||||
|
|
@ -448,11 +438,6 @@ OUTpData(runDesc *plotPtr, IFvalue *refValue, IFvalue *valuePtr)
|
|||
runDesc *run = plotPtr; // FIXME
|
||||
int i;
|
||||
|
||||
#ifdef PARALLEL_ARCH
|
||||
if (ARCHme != 0)
|
||||
return (OK);
|
||||
#endif
|
||||
|
||||
run->pointCount++;
|
||||
|
||||
#ifdef TCL_MODULE
|
||||
|
|
@ -675,11 +660,6 @@ OUTendPlot(runDesc *plotPtr)
|
|||
{
|
||||
runDesc *run = plotPtr; // FIXME
|
||||
|
||||
#ifdef PARALLEL_ARCH
|
||||
if (ARCHme != 0)
|
||||
return (OK);
|
||||
#endif
|
||||
|
||||
if (run->writeOut) {
|
||||
fileEnd(run);
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -250,9 +250,6 @@ dosim(
|
|||
ft_intrpt = FALSE;
|
||||
/* command "run" is given with rawfile name in wl */
|
||||
if (dofile) {
|
||||
#ifdef PARALLEL_ARCH
|
||||
if (ARCHme == 0) {
|
||||
#endif /* PARALLEL_ARCH */
|
||||
if (!*wl->wl_word)
|
||||
rawfileFp = stdout;
|
||||
#if defined(__MINGW32__) || defined(_MSC_VER)
|
||||
|
|
@ -283,11 +280,6 @@ dosim(
|
|||
}
|
||||
#endif /* __MINGW32__ */
|
||||
rawfileBinary = !ascii;
|
||||
#ifdef PARALLEL_ARCH
|
||||
} else {
|
||||
rawfileFp = NULL;
|
||||
}
|
||||
#endif /* PARALLEL_ARCH */
|
||||
} else {
|
||||
rawfileFp = NULL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -98,9 +98,6 @@ com_resume(wordlist *wl)
|
|||
}
|
||||
|
||||
if (dofile) {
|
||||
#ifdef PARALLEL_ARCH
|
||||
if (ARCHme == 0) {
|
||||
#endif /* PARALLEL_ARCH */
|
||||
if (!last_used_rawfile)
|
||||
rawfileFp = stdout;
|
||||
#if defined(__MINGW32__) || defined(_MSC_VER)
|
||||
|
|
@ -129,11 +126,6 @@ com_resume(wordlist *wl)
|
|||
return;
|
||||
}
|
||||
#endif
|
||||
#ifdef PARALLEL_ARCH
|
||||
} else {
|
||||
rawfileFp = NULL;
|
||||
}
|
||||
#endif /* PARALLEL_ARCH */
|
||||
rawfileBinary = !ascii;
|
||||
} else {
|
||||
rawfileFp = NULL;
|
||||
|
|
|
|||
|
|
@ -345,7 +345,6 @@ extern int CKTop(CKTcircuit *, long, long, int);
|
|||
extern int CKTpModName(char *, IFvalue *, CKTcircuit *, int , IFuid , GENmodel **);
|
||||
extern int CKTpName(char *, IFvalue *, CKTcircuit *, int , char *, GENinstance **);
|
||||
extern int CKTparam(CKTcircuit *, GENinstance *, int , IFvalue *, IFvalue *);
|
||||
extern int CKTpartition(register CKTcircuit *ckt);
|
||||
extern int CKTpzFindZeros(CKTcircuit *, PZtrial **, int *);
|
||||
extern int CKTpzLoad(CKTcircuit *, SPcomplex *);
|
||||
extern int CKTpzSetup(CKTcircuit *, int);
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@ struct GENinstance {
|
|||
GENinstance *GENnextInstance; /* pointer to next instance of
|
||||
* current model*/
|
||||
IFuid GENname; /* pointer to character string naming this instance */
|
||||
int GENowner; /* number of owner process */
|
||||
int GENstate; /* state index number */
|
||||
int GENnode1; /* appropriate node numbers */
|
||||
int GENnode2; /* appropriate node numbers */
|
||||
|
|
|
|||
|
|
@ -232,9 +232,6 @@ extern char *Help_Path;
|
|||
extern char *Lib_Path;
|
||||
extern char *Inp_Path;
|
||||
|
||||
extern int ARCHme; /* My logical process number */
|
||||
extern int ARCHsize; /* Total number of processes */
|
||||
|
||||
#if ADMS >= 3
|
||||
int load_vadev(CKTcircuit *ckt, char *name);
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -33,20 +33,17 @@ typedef struct {
|
|||
double STATdecompTime; /* total time spent in LU decomposition */
|
||||
double STATsolveTime; /* total time spent in F-B subst. */
|
||||
double STATreorderTime; /* total time spent reordering */
|
||||
double STATcombineTime; /* total time spent combining */
|
||||
double STATsyncTime; /* total time spent sync'ing after load */
|
||||
double STATtranTime; /* transient analysis time */
|
||||
double STATtranDecompTime; /* time spent in transient LU decomposition */
|
||||
double STATtranSolveTime; /* time spent in transient F-B subst. */
|
||||
double STATtranLoadTime; /* time spent in transient device loading */
|
||||
double STATtranTruncTime; /* time spent calculating LTE and new step */
|
||||
double STATtranCombTime; /* time spent in transient combining */
|
||||
double STATtranSyncTime; /* time spent in transient sync'ing */
|
||||
double STATacTime; /* AC analysis time */
|
||||
double STATacDecompTime; /* time spent in AC LU decomposition */
|
||||
double STATacSolveTime; /* time spent in AC F-B subst. */
|
||||
double STATacLoadTime; /* time spent in AC device loading */
|
||||
double STATacCombTime; /* time spent in AC combining */
|
||||
double STATacSyncTime; /* time spent in transient sync'ing */
|
||||
STATdevList *STATdevNum; /* PN: Number of instances and models for each device */
|
||||
} STATistics;
|
||||
|
|
@ -106,9 +103,6 @@ typedef struct {
|
|||
#define OPT_ORIGNZ 52
|
||||
#define OPT_FILLNZ 53
|
||||
#define OPT_TOTALNZ 54
|
||||
#define OPT_COMBTIME 55
|
||||
#define OPT_TRANCOMB 56
|
||||
#define OPT_ACCOMB 57
|
||||
#define OPT_SYNCTIME 58
|
||||
#define OPT_TRANSYNC 59
|
||||
#define OPT_ACSYNC 60
|
||||
|
|
|
|||
|
|
@ -39,10 +39,5 @@ SMPelement * SMPfindElt( SMPmatrix *, int , int , int );
|
|||
int SMPcZeroCol(SMPmatrix *eMatrix, int Col);
|
||||
int SMPcAddCol(SMPmatrix *eMatrix, int Accum_Col, int Addend_Col);
|
||||
int SMPzeroRow(SMPmatrix *eMatrix, int Row);
|
||||
#ifdef PARALLEL_ARCH
|
||||
void SMPcombine(SMPmatrix *Matrix, double RHS[], double Spare[]);
|
||||
void SMPcCombine(SMPmatrix *Matrix, double RHS[], double Spare[],
|
||||
double iRHS[], double iSpare[]);
|
||||
#endif
|
||||
|
||||
#endif /*SMP*/
|
||||
|
|
|
|||
|
|
@ -30,9 +30,6 @@ Author: 1985 Thomas L. Quarles
|
|||
#define E_NOF2SRC (E_PRIVATE+15) /* no source at F2 for IM disto analysis */
|
||||
#define E_NODISTO (E_PRIVATE+16) /* no distortion analysis - NODISTO defined */
|
||||
#define E_NONOISE (E_PRIVATE+17) /* no noise analysis - NONOISE defined */
|
||||
#ifdef PARALLEL_ARCH
|
||||
#define E_MULTIERR (E_PRIVATE+18) /* multiple errors from diff. processes */
|
||||
#endif /* PARALLEL_ARCH */
|
||||
|
||||
const char *SPerror(int type);
|
||||
|
||||
|
|
|
|||
28
src/main.c
28
src/main.c
|
|
@ -105,10 +105,6 @@ char *ft_rawfile = "rawspice.raw";
|
|||
/* Frontend and circuit options */
|
||||
IFsimulator *ft_sim = NULL;
|
||||
|
||||
/* (Virtual) Machine architecture parameters */
|
||||
int ARCHme;
|
||||
int ARCHsize;
|
||||
|
||||
char *errRtn; /* name of the routine declaring error */
|
||||
char *errMsg; /* descriptive message about what went wrong */
|
||||
char *cp_program; /* program name 'ngspice' */
|
||||
|
|
@ -494,13 +490,6 @@ static void
|
|||
sp_shutdown(int exitval)
|
||||
{
|
||||
destroy_ivars();
|
||||
#ifdef PARALLEL_ARCH
|
||||
{
|
||||
Error("Fatal error in SPICE", -1);
|
||||
} else {
|
||||
PEND_();
|
||||
}
|
||||
#endif /* PARALLEL_ARCH */
|
||||
#ifdef HAS_WINDOWS
|
||||
if (exitval == EXIT_BAD)
|
||||
winmessage("Fatal error in SPICE");
|
||||
|
|
@ -833,19 +822,6 @@ main(int argc, char **argv)
|
|||
application_name = argv[0];
|
||||
#endif
|
||||
|
||||
#ifdef PARALLEL_ARCH
|
||||
PBEGIN_(argc, argv);
|
||||
ARCHme = NODEID_();
|
||||
ARCHsize = NNODES_();
|
||||
SETDBG_(&debug_flag);
|
||||
fprintf( stderr, "On-line: process %d of %d total.\n", ARCHme, ARCHsize );
|
||||
evlog(EVKEY_ENABLE, EVKEY_EVENT, "On-line", EVKEY_DUMP, EVKEY_DISABLE,
|
||||
EVKEY_LAST_ARG);
|
||||
#else
|
||||
ARCHme = 0;
|
||||
ARCHsize = 1;
|
||||
#endif
|
||||
|
||||
ivars(argv[0]);
|
||||
|
||||
cp_in = stdin;
|
||||
|
|
@ -950,11 +926,7 @@ main(int argc, char **argv)
|
|||
if (optarg) {
|
||||
/* turn off buffering for stdout */
|
||||
setbuf(stdout, NULL);
|
||||
#ifdef PARALLEL_ARCH
|
||||
sprintf (log_file, "%s%03d", optarg, ARCHme);
|
||||
#else
|
||||
sprintf (log_file, "%s", optarg);
|
||||
#endif
|
||||
orflag = TRUE;
|
||||
}
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ noinst_LTLIBRARIES = libsparse.la
|
|||
libsparse_la_SOURCES = \
|
||||
spalloc.c \
|
||||
spbuild.c \
|
||||
spcombin.c \
|
||||
spconfig.h \
|
||||
spdefs.h \
|
||||
spextra.c \
|
||||
|
|
|
|||
|
|
@ -66,10 +66,6 @@
|
|||
#include "spconfig.h"
|
||||
#include "ngspice/spmatrix.h"
|
||||
#include "spdefs.h"
|
||||
#ifdef PARALLEL_ARCH
|
||||
#define COMBINE 1
|
||||
#endif /* PARALLEL_ARCH */
|
||||
|
||||
|
||||
/*
|
||||
* Function declarations
|
||||
|
|
|
|||
|
|
@ -1,300 +0,0 @@
|
|||
/*
|
||||
* MATRIX UTILITY MODULE
|
||||
*
|
||||
* Author: Advising professor:
|
||||
* Kenneth S. Kundert Alberto Sangiovanni-Vincentelli
|
||||
* UC Berkeley
|
||||
*
|
||||
* This file contains various optional utility routines.
|
||||
*
|
||||
* >>> User accessible functions contained in this file:
|
||||
* spCombine
|
||||
*
|
||||
* >>> Other functions contained in this file:
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* Revision and copyright information.
|
||||
*
|
||||
* Copyright (c) 1985,86,87,88,89,90
|
||||
* by Kenneth S. Kundert and the University of California.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software and
|
||||
* its documentation for any purpose and without fee is hereby granted,
|
||||
* provided that the copyright notices appear in all copies and
|
||||
* supporting documentation and that the authors and the University of
|
||||
* California are properly credited. The authors and the University of
|
||||
* California make no representations as to the suitability of this
|
||||
* software for any purpose. It is provided `as is', without express
|
||||
* or implied warranty.
|
||||
*/
|
||||
|
||||
/*
|
||||
* IMPORTS
|
||||
*
|
||||
* >>> Import descriptions:
|
||||
* spConfig.h
|
||||
* Macros that customize the sparse matrix routines.
|
||||
* spMatrix.h
|
||||
* Macros and declarations to be imported by the user.
|
||||
* spDefs.h
|
||||
* Matrix type and macro definitions for the sparse matrix routines.
|
||||
*/
|
||||
|
||||
#define spINSIDE_SPARSE
|
||||
#include "spconfig.h"
|
||||
#include "ngspice/spmatrix.h"
|
||||
#include "spdefs.h"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#ifdef PARALLEL_ARCH
|
||||
#define COMBINE 1
|
||||
#endif /* PARALLEL_ARCH */
|
||||
|
||||
|
||||
#if COMBINE
|
||||
static void CombineComplexMatrix( MatrixPtr,
|
||||
RealVector, RealVector, RealVector, RealVector );
|
||||
static void ClearBuffer( MatrixPtr, int, int, ElementPtr );
|
||||
static void ClearComplexBuffer( MatrixPtr, int, int, ElementPtr );
|
||||
|
||||
/*
|
||||
* COMBINE MATRICES ON A MULTIPROCESSOR
|
||||
*
|
||||
* >>> Arguments:
|
||||
* eMatrix <input> (char *)
|
||||
* Pointer to the matrix to be combined.
|
||||
*
|
||||
* >>> Local variables:
|
||||
* Size (int)
|
||||
* Local version of the size of the matrix.
|
||||
* pElement (ElementPtr)
|
||||
* Pointer to an element in the matrix.
|
||||
*/
|
||||
|
||||
#define SPBSIZE 256*1024
|
||||
static double Buffer[SPBSIZE];
|
||||
|
||||
void
|
||||
spCombine( eMatrix, RHS, Spare, iRHS, iSolution )
|
||||
|
||||
char *eMatrix;
|
||||
RealVector RHS, Spare, iRHS, iSolution;
|
||||
{
|
||||
MatrixPtr Matrix = (MatrixPtr)eMatrix;
|
||||
register ElementPtr pElement;
|
||||
register int I, Size;
|
||||
ElementPtr FirstBufElement, pLastElement;
|
||||
int FirstBufCol, BufIndex;
|
||||
struct ElementListNodeStruct *pListNode;
|
||||
long type = MT_COMBINE, length = Matrix->Size + 1;
|
||||
|
||||
/* Begin `spCombine'. */
|
||||
assert( IS_VALID(Matrix) && !Matrix->Factored );
|
||||
if (!Matrix->InternalVectorsAllocated)
|
||||
spcCreateInternalVectors( Matrix );
|
||||
|
||||
if (Matrix->Complex) {
|
||||
CombineComplexMatrix( Matrix, RHS, Spare, iRHS, iSolution );
|
||||
return;
|
||||
}
|
||||
|
||||
Size = Matrix->Size;
|
||||
|
||||
/* Mark original non-zeroes. */
|
||||
pListNode = Matrix->FirstElementListNode;
|
||||
while (pListNode != NULL)
|
||||
{ pElement = pListNode->pElementList;
|
||||
if (pListNode == Matrix->LastElementListNode) {
|
||||
pLastElement = Matrix->NextAvailElement - 1;
|
||||
} else {
|
||||
pLastElement = &(pElement[ pListNode->NumberOfElementsInList - 1 ]);
|
||||
}
|
||||
while (pElement <= pLastElement)
|
||||
{
|
||||
(pElement++)->Col = -1;
|
||||
}
|
||||
pListNode = pListNode->Next;
|
||||
}
|
||||
|
||||
/* Stripmine the communication to reduce overhead */
|
||||
BufIndex = 0;
|
||||
FirstBufCol = 1;
|
||||
FirstBufElement = Matrix->FirstInCol[ FirstBufCol ];
|
||||
for (I = 1; I <= Size; I++)
|
||||
{
|
||||
pElement = Matrix->FirstInCol[I];
|
||||
while (pElement != NULL)
|
||||
{
|
||||
if ( BufIndex >= SPBSIZE )
|
||||
{ /* Buffer is Full. */
|
||||
ClearBuffer( Matrix, BufIndex, FirstBufCol, FirstBufElement );
|
||||
BufIndex = 0;
|
||||
FirstBufCol = I;
|
||||
FirstBufElement = pElement;
|
||||
}
|
||||
if ( pElement->Col == -1 ) {
|
||||
Buffer[ BufIndex++ ] = pElement->Real;
|
||||
}
|
||||
pElement = pElement->NextInCol;
|
||||
}
|
||||
}
|
||||
/* Clean out the last, partially full buffer. */
|
||||
if ( BufIndex != 0 )
|
||||
{
|
||||
ClearBuffer( Matrix, BufIndex, FirstBufCol, FirstBufElement );
|
||||
}
|
||||
|
||||
/* Sum all RHS's together */
|
||||
DGOP_( &type, RHS, &length, "+" );
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
CombineComplexMatrix( Matrix, RHS, Spare, iRHS, iSolution )
|
||||
|
||||
MatrixPtr Matrix;
|
||||
RealVector RHS, Spare, iRHS, iSolution;
|
||||
{
|
||||
register ElementPtr pElement;
|
||||
register int I, Size;
|
||||
ElementPtr FirstBufElement, pLastElement;
|
||||
int FirstBufCol, BufIndex;
|
||||
struct ElementListNodeStruct *pListNode;
|
||||
long type = MT_COMBINE, length = Matrix->Size + 1;
|
||||
|
||||
/* Begin `CombineComplexMatrix'. */
|
||||
assert(Matrix->Complex);
|
||||
Size = Matrix->Size;
|
||||
|
||||
/* Mark original non-zeroes. */
|
||||
pListNode = Matrix->FirstElementListNode;
|
||||
while (pListNode != NULL)
|
||||
{ pElement = pListNode->pElementList;
|
||||
if (pListNode == Matrix->LastElementListNode) {
|
||||
pLastElement = Matrix->NextAvailElement - 1;
|
||||
} else {
|
||||
pLastElement = &(pElement[ pListNode->NumberOfElementsInList - 1 ]);
|
||||
}
|
||||
while (pElement <= pLastElement)
|
||||
{
|
||||
(pElement++)->Col = -1;
|
||||
}
|
||||
pListNode = pListNode->Next;
|
||||
}
|
||||
|
||||
/* Stripmine the communication to reduce overhead */
|
||||
BufIndex = 0;
|
||||
FirstBufCol = 1;
|
||||
FirstBufElement = Matrix->FirstInCol[ FirstBufCol ];
|
||||
for (I = 1; I <= Size; I++)
|
||||
{
|
||||
pElement = Matrix->FirstInCol[I];
|
||||
while (pElement != NULL)
|
||||
{
|
||||
if ( BufIndex >= SPBSIZE/2 )
|
||||
{ /* Buffer is Full. */
|
||||
ClearComplexBuffer( Matrix, BufIndex, FirstBufCol,
|
||||
FirstBufElement );
|
||||
BufIndex = 0;
|
||||
FirstBufCol = I;
|
||||
FirstBufElement = pElement;
|
||||
}
|
||||
if ( pElement->Col == -1 ) {
|
||||
Buffer[ BufIndex++ ] = pElement->Real;
|
||||
Buffer[ BufIndex++ ] = pElement->Imag;
|
||||
}
|
||||
pElement = pElement->NextInCol;
|
||||
}
|
||||
}
|
||||
/* Clean out the last, partially full buffer. */
|
||||
if ( BufIndex != 0 )
|
||||
{
|
||||
ClearComplexBuffer( Matrix, BufIndex, FirstBufCol, FirstBufElement );
|
||||
}
|
||||
|
||||
/* Sum all RHS's together */
|
||||
DGOP_( &type, RHS, &length, "+" );
|
||||
DGOP_( &type, iRHS, &length, "+" );
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
ClearBuffer( Matrix, NumElems, StartCol, StartElement )
|
||||
|
||||
MatrixPtr Matrix;
|
||||
int NumElems, StartCol;
|
||||
ElementPtr StartElement;
|
||||
{
|
||||
register ElementPtr pElement = StartElement;
|
||||
register int Index, Col = StartCol;
|
||||
long type = MT_COMBINE;
|
||||
|
||||
/* First globalize the buffer. */
|
||||
DGOP_( &type, Buffer, &NumElems, "+" );
|
||||
|
||||
/* Now, copy all of the data back into the matrix. */
|
||||
for ( Index = 0; Index < NumElems; Index++ )
|
||||
{
|
||||
if ( pElement == NULL )
|
||||
{
|
||||
pElement = Matrix->FirstInCol[ ++Col ];
|
||||
}
|
||||
while ( pElement->Col != -1 ) {
|
||||
pElement = pElement->NextInCol;
|
||||
if ( pElement == NULL )
|
||||
{
|
||||
pElement = Matrix->FirstInCol[ ++Col ];
|
||||
}
|
||||
}
|
||||
pElement->Real = Buffer[ Index ];
|
||||
pElement->Col = Col;
|
||||
pElement = pElement->NextInCol;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
ClearComplexBuffer( Matrix, DataCount, StartCol, StartElement )
|
||||
|
||||
MatrixPtr Matrix;
|
||||
int DataCount, StartCol;
|
||||
ElementPtr StartElement;
|
||||
{
|
||||
register ElementPtr pElement = StartElement;
|
||||
register int Index, Col = StartCol;
|
||||
long type = MT_COMBINE;
|
||||
|
||||
/* First globalize the buffer. */
|
||||
DGOP_( &type, Buffer, &DataCount, "+" );
|
||||
|
||||
/* Now, copy all of the data back into the matrix. */
|
||||
for ( Index = 0; Index < DataCount; )
|
||||
{
|
||||
if ( pElement == NULL )
|
||||
{
|
||||
pElement = Matrix->FirstInCol[ ++Col ];
|
||||
}
|
||||
while ( pElement->Col != -1 ) {
|
||||
pElement = pElement->NextInCol;
|
||||
if ( pElement == NULL )
|
||||
{
|
||||
pElement = Matrix->FirstInCol[ ++Col ];
|
||||
}
|
||||
}
|
||||
pElement->Real = Buffer[ Index++ ];
|
||||
pElement->Imag = Buffer[ Index++ ];
|
||||
pElement->Col = Col;
|
||||
pElement = pElement->NextInCol;
|
||||
}
|
||||
}
|
||||
#endif /* COMBINE */
|
||||
|
|
@ -31,8 +31,6 @@
|
|||
* SMPcProdDiag
|
||||
* LoadGmin
|
||||
* SMPfindElt
|
||||
* SMPcombine
|
||||
* SMPcCombine
|
||||
*/
|
||||
|
||||
/*
|
||||
|
|
@ -558,26 +556,3 @@ SMPzeroRow(SMPmatrix *eMatrix, int Row)
|
|||
|
||||
return spError( Matrix );
|
||||
}
|
||||
|
||||
#ifdef PARALLEL_ARCH
|
||||
/*
|
||||
* SMPcombine()
|
||||
*/
|
||||
void
|
||||
SMPcombine(SMPmatrix *Matrix, double RHS[], double Spare[])
|
||||
{
|
||||
spSetReal( Matrix );
|
||||
spCombine( Matrix, RHS, Spare, NULL, NULL );
|
||||
}
|
||||
|
||||
/*
|
||||
* SMPcCombine()
|
||||
*/
|
||||
void
|
||||
SMPcCombine(SMPmatrix *Matrix, double RHS[], double Spare[],
|
||||
double iRHS[], double iSpare[])
|
||||
{
|
||||
spSetComplex( Matrix );
|
||||
spCombine( Matrix, RHS, Spare, iRHS, iSpare );
|
||||
}
|
||||
#endif /* PARALLEL_ARCH */
|
||||
|
|
|
|||
|
|
@ -100,9 +100,6 @@ seconds(void)
|
|||
int ret;
|
||||
struct rusage ruse;
|
||||
|
||||
#ifdef PARALLEL_ARCH
|
||||
return (TCGTIME_());
|
||||
#else
|
||||
memset(&ruse, 0, sizeof(ruse));
|
||||
ret = getrusage(RUSAGE_SELF, &ruse);
|
||||
if(ret == -1) {
|
||||
|
|
@ -110,7 +107,6 @@ seconds(void)
|
|||
return 1;
|
||||
}
|
||||
return ((double)ruse.ru_utime.tv_sec + (double) ruse.ru_utime.tv_usec / 1000000.0);
|
||||
#endif /* PARALLEL_ARCH */
|
||||
#else
|
||||
#ifdef HAVE_TIMES
|
||||
|
||||
|
|
|
|||
|
|
@ -50,7 +50,6 @@ libckt_la_SOURCES = \
|
|||
cktnum2n.c \
|
||||
cktop.c \
|
||||
cktparam.c \
|
||||
cktpartn.c \
|
||||
cktpmnam.c \
|
||||
cktpname.c \
|
||||
cktpzld.c \
|
||||
|
|
|
|||
|
|
@ -29,7 +29,6 @@ do { \
|
|||
startdTime = ckt->CKTstat->STATdecompTime; \
|
||||
startsTime = ckt->CKTstat->STATsolveTime; \
|
||||
startlTime = ckt->CKTstat->STATloadTime; \
|
||||
startcTime = ckt->CKTstat->STATcombineTime; \
|
||||
startkTime = ckt->CKTstat->STATsyncTime; \
|
||||
} while(0)
|
||||
|
||||
|
|
@ -40,7 +39,6 @@ do { \
|
|||
ckt->CKTstat->STATacDecompTime += ckt->CKTstat->STATdecompTime - startdTime; \
|
||||
ckt->CKTstat->STATacSolveTime += ckt->CKTstat->STATsolveTime - startsTime; \
|
||||
ckt->CKTstat->STATacLoadTime += ckt->CKTstat->STATloadTime - startlTime; \
|
||||
ckt->CKTstat->STATacCombTime += ckt->CKTstat->STATcombineTime - startcTime; \
|
||||
ckt->CKTstat->STATacSyncTime += ckt->CKTstat->STATsyncTime - startkTime; \
|
||||
} while(0)
|
||||
|
||||
|
|
@ -55,7 +53,6 @@ ACan(CKTcircuit *ckt, int restart)
|
|||
double startdTime;
|
||||
double startsTime;
|
||||
double startlTime;
|
||||
double startcTime;
|
||||
double startkTime;
|
||||
double startTime;
|
||||
int error;
|
||||
|
|
@ -405,9 +402,6 @@ CKTacLoad(CKTcircuit *ckt)
|
|||
int i;
|
||||
int size;
|
||||
int error;
|
||||
#ifdef PARALLEL_ARCH
|
||||
long type = MT_ACLOAD, length = 1;
|
||||
#endif /* PARALLEL_ARCH */
|
||||
double startTime;
|
||||
|
||||
startTime = SPfrontEnd->IFseconds();
|
||||
|
|
@ -421,11 +415,7 @@ CKTacLoad(CKTcircuit *ckt)
|
|||
for (i=0;i<DEVmaxnum;i++) {
|
||||
if ( DEVices[i] && DEVices[i]->DEVacLoad && ckt->CKThead[i] ) {
|
||||
error = DEVices[i]->DEVacLoad (ckt->CKThead[i], ckt);
|
||||
#ifdef PARALLEL_ARCH
|
||||
if (error) goto combine;
|
||||
#else
|
||||
if(error) return(error);
|
||||
#endif /* PARALLEL_ARCH */
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -457,24 +447,6 @@ CKTacLoad(CKTcircuit *ckt)
|
|||
#endif
|
||||
|
||||
|
||||
#ifdef PARALLEL_ARCH
|
||||
combine:
|
||||
ckt->CKTstat->STATloadTime += SPfrontEnd->IFseconds() - startTime;
|
||||
startTime = SPfrontEnd->IFseconds();
|
||||
/* See if any of the DEVload functions bailed. If not, proceed. */
|
||||
IGOP_( &type, &error, &length, "max" );
|
||||
ckt->CKTstat->STATsyncTime += SPfrontEnd->IFseconds() - startTime;
|
||||
if (error == OK) {
|
||||
startTime = SPfrontEnd->IFseconds();
|
||||
SMPcCombine( ckt->CKTmatrix, ckt->CKTrhs, ckt->CKTrhsSpare,
|
||||
ckt->CKTirhs, ckt->CKTirhsSpare );
|
||||
ckt->CKTstat->STATcombineTime += SPfrontEnd->IFseconds() - startTime;
|
||||
return(OK);
|
||||
} else {
|
||||
return(error);
|
||||
}
|
||||
#else
|
||||
ckt->CKTstat->STATloadTime += SPfrontEnd->IFseconds() - startTime;
|
||||
return(OK);
|
||||
#endif /* PARALLEL_ARCH */
|
||||
}
|
||||
|
|
|
|||
|
|
@ -85,9 +85,6 @@ CKTacct(CKTcircuit *ckt, JOB *anal, int which, IFvalue *val)
|
|||
case OPT_SYNCTIME:
|
||||
val->rValue = ckt->CKTstat->STATsyncTime;
|
||||
break;
|
||||
case OPT_COMBTIME:
|
||||
val->rValue = ckt->CKTstat->STATcombineTime;
|
||||
break;
|
||||
case OPT_REORDTIME:
|
||||
val->rValue = ckt->CKTstat->STATreorderTime;
|
||||
break;
|
||||
|
|
@ -103,9 +100,6 @@ CKTacct(CKTcircuit *ckt, JOB *anal, int which, IFvalue *val)
|
|||
case OPT_TRANSYNC:
|
||||
val->rValue = ckt->CKTstat->STATtranSyncTime;
|
||||
break;
|
||||
case OPT_TRANCOMB:
|
||||
val->rValue = ckt->CKTstat->STATtranCombTime;
|
||||
break;
|
||||
case OPT_TRANDECOMP:
|
||||
val->rValue = ckt->CKTstat->STATtranDecompTime;
|
||||
break;
|
||||
|
|
@ -121,9 +115,6 @@ CKTacct(CKTcircuit *ckt, JOB *anal, int which, IFvalue *val)
|
|||
case OPT_ACSYNC:
|
||||
val->rValue = ckt->CKTstat->STATacSyncTime;
|
||||
break;
|
||||
case OPT_ACCOMB:
|
||||
val->rValue = ckt->CKTstat->STATacCombTime;
|
||||
break;
|
||||
case OPT_ACDECOMP:
|
||||
val->rValue = ckt->CKTstat->STATacDecompTime;
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -34,10 +34,6 @@ CKTload(CKTcircuit *ckt)
|
|||
double startTime;
|
||||
CKTnode *node;
|
||||
int error;
|
||||
#ifdef PARALLEL_ARCH
|
||||
int ibuf[2];
|
||||
long type = MT_LOAD, length = 2;
|
||||
#endif /* PARALLEL_ARCH */
|
||||
#ifdef STEPDEBUG
|
||||
int noncon;
|
||||
#endif /* STEPDEBUG */
|
||||
|
|
@ -74,11 +70,7 @@ CKTload(CKTcircuit *ckt)
|
|||
noncon = ckt->CKTnoncon;
|
||||
}
|
||||
#endif /* STEPDEBUG */
|
||||
#ifdef PARALLEL_ARCH
|
||||
if (error) goto combine;
|
||||
#else
|
||||
if (error) return(error);
|
||||
#endif /* PARALLEL_ARCH */
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -167,31 +159,8 @@ CKTload(CKTcircuit *ckt)
|
|||
/* SMPprint(ckt->CKTmatrix, stdout); if you want to debug, this is a
|
||||
good place to start ... */
|
||||
|
||||
#ifdef PARALLEL_ARCH
|
||||
combine:
|
||||
ckt->CKTstat->STATloadTime += SPfrontEnd->IFseconds() - startTime;
|
||||
startTime = SPfrontEnd->IFseconds();
|
||||
/* See if any of the DEVload functions bailed. If not, proceed. */
|
||||
ibuf[0] = error;
|
||||
ibuf[1] = ckt->CKTnoncon;
|
||||
IGOP_(&type, ibuf, &length, "+");
|
||||
ckt->CKTnoncon = ibuf[1];
|
||||
ckt->CKTstat->STATsyncTime += SPfrontEnd->IFseconds() - startTime;
|
||||
if (ibuf[0] == OK) {
|
||||
startTime = SPfrontEnd->IFseconds();
|
||||
SMPcombine(ckt->CKTmatrix, ckt->CKTrhs, ckt->CKTrhsSpare);
|
||||
ckt->CKTstat->STATcombineTime += SPfrontEnd->IFseconds() - startTime;
|
||||
return(OK);
|
||||
} else {
|
||||
if (ibuf[0] != error) {
|
||||
error = E_MULTIERR;
|
||||
}
|
||||
return(error);
|
||||
}
|
||||
#else
|
||||
ckt->CKTstat->STATloadTime += SPfrontEnd->IFseconds()-startTime;
|
||||
return(OK);
|
||||
#endif /* PARALLEL_ARCH */
|
||||
}
|
||||
|
||||
static int
|
||||
|
|
|
|||
|
|
@ -95,10 +95,6 @@ CKTconvTest (CKTcircuit * ckt)
|
|||
{
|
||||
int i;
|
||||
int error = OK;
|
||||
#ifdef PARALLEL_ARCH
|
||||
int ibuf[2];
|
||||
long type = MT_CONV, length = 2;
|
||||
#endif /* PARALLEL_ARCH */
|
||||
|
||||
for (i = 0; i < DEVmaxnum; i++)
|
||||
{
|
||||
|
|
@ -106,10 +102,6 @@ CKTconvTest (CKTcircuit * ckt)
|
|||
{
|
||||
error = DEVices[i]->DEVconvTest (ckt->CKThead[i], ckt);
|
||||
}
|
||||
#ifdef PARALLEL_ARCH
|
||||
if (error || ckt->CKTnoncon)
|
||||
goto combine;
|
||||
#else
|
||||
if (error)
|
||||
return (error);
|
||||
if (ckt->CKTnoncon)
|
||||
|
|
@ -118,23 +110,8 @@ CKTconvTest (CKTcircuit * ckt)
|
|||
* DEVices[i]->DEVpublic.name); */
|
||||
return (OK);
|
||||
}
|
||||
#endif /* PARALLEL_ARCH */
|
||||
}
|
||||
#ifdef PARALLEL_ARCH
|
||||
combine:
|
||||
/* See if any of the DEVconvTest functions bailed. If not, proceed. */
|
||||
ibuf[0] = error;
|
||||
ibuf[1] = ckt->CKTnoncon;
|
||||
IGOP_ (&type, ibuf, &length, "+");
|
||||
ckt->CKTnoncon = ibuf[1];
|
||||
if (ibuf[0] != error)
|
||||
{
|
||||
error = E_MULTIERR;
|
||||
}
|
||||
return (error);
|
||||
#else
|
||||
return (OK);
|
||||
#endif /* PARALLEL_ARCH */
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,46 +0,0 @@
|
|||
/**********
|
||||
Copyright 1990 Regents of the University of California. All rights reserved.
|
||||
Author: 1992 David A. Gates, UC Berkeley CADgroup
|
||||
**********/
|
||||
|
||||
/* CKTpartition(ckt)
|
||||
* this labels each instance of a circuit as belonging to a
|
||||
* particular processor in a multiprocessor computer.
|
||||
*/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/smpdefs.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "ngspice/const.h"
|
||||
#include "ngspice/devdefs.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
|
||||
#ifdef XSPICE
|
||||
extern int *DEVicesfl;
|
||||
#endif
|
||||
|
||||
int
|
||||
CKTpartition(CKTcircuit *ckt)
|
||||
{
|
||||
int i, instNum = 0;
|
||||
GENmodel *model;
|
||||
GENinstance *inst;
|
||||
|
||||
for (i=0;i<DEVmaxnum;i++) {
|
||||
if ( (ckt->CKThead[i] != NULL)
|
||||
#ifdef XSPICE
|
||||
&& DEVicesfl[i] == 0
|
||||
#endif
|
||||
){
|
||||
for (model = ckt->CKThead[i]; model; model = model->GENnextModel) {
|
||||
for (inst = model->GENinstances; inst;
|
||||
inst = inst->GENnextInstance) {
|
||||
inst->GENowner = instNum % ARCHsize;
|
||||
instNum++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -18,9 +18,6 @@ CKTpzLoad(CKTcircuit *ckt, SPcomplex *s)
|
|||
|
||||
int error;
|
||||
int i;
|
||||
#ifdef PARALLEL_ARCH
|
||||
long type = MT_PZLOAD, length = 1;
|
||||
#endif /* PARALLEL_ARCH */
|
||||
|
||||
for (i = 0; i <= SMPmatSize(ckt->CKTmatrix); i++) {
|
||||
ckt->CKTrhs[i] = 0.0;
|
||||
|
|
@ -31,24 +28,9 @@ CKTpzLoad(CKTcircuit *ckt, SPcomplex *s)
|
|||
for (i = 0; i < DEVmaxnum; i++) {
|
||||
if (DEVices[i] && DEVices[i]->DEVpzLoad != NULL && ckt->CKThead[i] != NULL) {
|
||||
error = DEVices[i]->DEVpzLoad (ckt->CKThead[i], ckt, s);
|
||||
#ifdef PARALLEL_ARCH
|
||||
if (error) goto combine;
|
||||
#else
|
||||
if(error) return(error);
|
||||
#endif /* PARALLEL_ARCH */
|
||||
}
|
||||
}
|
||||
#ifdef PARALLEL_ARCH
|
||||
combine:
|
||||
/* See if any of the DEVload functions bailed. If not, proceed. */
|
||||
IGOP_( &type, &error, &length, "max" );
|
||||
if (error == OK) {
|
||||
SMPcCombine(ckt->CKTmatrix, ckt->CKTrhs, ckt->CKTrhsSpare,
|
||||
ckt->CKTirhs, ckt->CKTirhsSpare );
|
||||
} else {
|
||||
return(error);
|
||||
}
|
||||
#endif /* PARALLEL_ARCH */
|
||||
|
||||
if (job->PZbalance_col && job->PZsolution_col) {
|
||||
SMPcAddCol(ckt->CKTmatrix, job->PZbalance_col, job->PZsolution_col);
|
||||
|
|
|
|||
|
|
@ -54,8 +54,6 @@ CKTsetup(CKTcircuit *ckt)
|
|||
if (ckt->CKTisSetup)
|
||||
return E_NOCHANGE;
|
||||
|
||||
CKTpartition(ckt);
|
||||
|
||||
error = NIinit(ckt);
|
||||
if (error) return(error);
|
||||
ckt->CKTisSetup = 1;
|
||||
|
|
|
|||
|
|
@ -282,14 +282,12 @@ static IFparm OPTtbl[] = {
|
|||
{ "time", OPT_TOTANALTIME, IF_ASK|IF_REAL,"Total analysis time" },
|
||||
{ "loadtime", OPT_LOADTIME, IF_ASK|IF_REAL,"Matrix load time" },
|
||||
{ "synctime", OPT_SYNCTIME, IF_ASK|IF_REAL,"Matrix synchronize time" },
|
||||
{ "combinetime", OPT_COMBTIME, IF_ASK|IF_REAL,"Matrix combine time" },
|
||||
{ "reordertime", OPT_REORDTIME, IF_ASK|IF_REAL,"Matrix reorder time" },
|
||||
{ "factortime", OPT_DECOMP, IF_ASK|IF_REAL,"Matrix factor time" },
|
||||
{ "solvetime", OPT_SOLVE, IF_ASK|IF_REAL,"Matrix solve time" },
|
||||
{ "trantime", OPT_TRANTIME, IF_ASK|IF_REAL,"Transient analysis time" },
|
||||
{ "tranloadtime", OPT_TRANLOAD, IF_ASK|IF_REAL,"Transient load time" },
|
||||
{ "transynctime", OPT_TRANSYNC, IF_ASK|IF_REAL,"Transient sync time" },
|
||||
{ "trancombinetime", OPT_TRANCOMB, IF_ASK|IF_REAL,"Transient combine time" },
|
||||
{ "tranfactortime", OPT_TRANDECOMP,IF_ASK|IF_REAL,"Transient factor time" },
|
||||
{ "transolvetime", OPT_TRANSOLVE, IF_ASK|IF_REAL,"Transient solve time" },
|
||||
{ "trantrunctime", OPT_TRANTRUNC, IF_ASK|IF_REAL,"Transient trunc time" },
|
||||
|
|
@ -298,7 +296,6 @@ static IFparm OPTtbl[] = {
|
|||
{ "actime", OPT_ACTIME, IF_ASK|IF_REAL,"AC analysis time" },
|
||||
{ "acloadtime", OPT_ACLOAD, IF_ASK|IF_REAL,"AC load time" },
|
||||
{ "acsynctime", OPT_ACSYNC, IF_ASK|IF_REAL,"AC sync time" },
|
||||
{ "accombinetime", OPT_ACCOMB, IF_ASK|IF_REAL,"AC combine time" },
|
||||
{ "acfactortime", OPT_ACDECOMP,IF_ASK|IF_REAL,"AC factor time" },
|
||||
{ "acsolvetime", OPT_ACSOLVE, IF_ASK|IF_REAL,"AC solve time" },
|
||||
{ "trytocompact", OPT_TRYTOCOMPACT, IF_SET|IF_FLAG,
|
||||
|
|
|
|||
|
|
@ -22,9 +22,6 @@ CKTtrunc(CKTcircuit *ckt, double *timeStep)
|
|||
#ifndef NEWTRUNC
|
||||
int i;
|
||||
double timetemp;
|
||||
#ifdef PARALLEL_ARCH
|
||||
long type = MT_TRUNC, length = 1;
|
||||
#endif /* PARALLEL_ARCH */
|
||||
#ifdef STEPDEBUG
|
||||
double debugtemp;
|
||||
#endif /* STEPDEBUG */
|
||||
|
|
@ -55,10 +52,6 @@ CKTtrunc(CKTcircuit *ckt, double *timeStep)
|
|||
}
|
||||
*timeStep = MIN(2 * *timeStep,timetemp);
|
||||
|
||||
#ifdef PARALLEL_ARCH
|
||||
DGOP_( &type, timeStep, &length, "min" );
|
||||
#endif /* PARALLEL_ARCH */
|
||||
|
||||
ckt->CKTstat->STATtranTruncTime += SPfrontEnd->IFseconds() - startTime;
|
||||
return(OK);
|
||||
#else /* NEWTRUNC */
|
||||
|
|
@ -188,9 +181,6 @@ CKTtrunc(CKTcircuit *ckt, double *timeStep)
|
|||
|
||||
}
|
||||
*timeStep = MIN(2 * *timeStep,timetemp);
|
||||
#ifdef PARALLEL_ARCH
|
||||
DGOP_( &type, timeStep, &length, "min" );
|
||||
#endif /* PARALLEL_ARCH */
|
||||
ckt->CKTstat->STATtranTruncTime += SPfrontEnd->IFseconds() - startTime;
|
||||
return(OK);
|
||||
#endif /* NEWTRUNC */
|
||||
|
|
|
|||
|
|
@ -51,7 +51,6 @@ do { \
|
|||
startdTime = ckt->CKTstat->STATdecompTime; \
|
||||
startsTime = ckt->CKTstat->STATsolveTime; \
|
||||
startlTime = ckt->CKTstat->STATloadTime; \
|
||||
startcTime = ckt->CKTstat->STATcombineTime; \
|
||||
startkTime = ckt->CKTstat->STATsyncTime; \
|
||||
} while(0)
|
||||
|
||||
|
|
@ -63,7 +62,6 @@ do { \
|
|||
ckt->CKTstat->STATtranDecompTime += ckt->CKTstat->STATdecompTime - startdTime; \
|
||||
ckt->CKTstat->STATtranSolveTime += ckt->CKTstat->STATsolveTime - startsTime; \
|
||||
ckt->CKTstat->STATtranLoadTime += ckt->CKTstat->STATloadTime - startlTime; \
|
||||
ckt->CKTstat->STATtranCombTime += ckt->CKTstat->STATcombineTime - startcTime; \
|
||||
ckt->CKTstat->STATtranSyncTime += ckt->CKTstat->STATsyncTime - startkTime; \
|
||||
} while(0)
|
||||
|
||||
|
|
@ -84,7 +82,6 @@ DCpss(CKTcircuit *ckt, int restart)
|
|||
double startdTime;
|
||||
double startsTime;
|
||||
double startlTime;
|
||||
double startcTime;
|
||||
double startkTime;
|
||||
double startTime;
|
||||
int startIters;
|
||||
|
|
@ -106,9 +103,6 @@ DCpss(CKTcircuit *ckt, int restart)
|
|||
|
||||
int ltra_num;
|
||||
CKTnode *node;
|
||||
#ifdef PARALLEL_ARCH
|
||||
long type = MT_TRANAN, length = 1;
|
||||
#endif /* PARALLEL_ARCH */
|
||||
#ifdef XSPICE
|
||||
/* gtri - add - wbk - 12/19/90 - Add IPC stuff */
|
||||
Ipc_Boolean_t ipc_firsttime = IPC_TRUE;
|
||||
|
|
@ -970,9 +964,6 @@ resume:
|
|||
exit(0);
|
||||
}
|
||||
#endif
|
||||
#ifdef PARALLEL_ARCH
|
||||
DGOP_( &type, &(ckt->CKTdelta), &length, "min" );
|
||||
#endif /* PARALLEL_ARCH */
|
||||
|
||||
#endif /* XSPICE */
|
||||
|
||||
|
|
@ -1271,9 +1262,6 @@ resume:
|
|||
#endif
|
||||
}
|
||||
}
|
||||
#ifdef PARALLEL_ARCH
|
||||
DGOP_( &type, &(ckt->CKTdelta), &length, "min" );
|
||||
#endif /* PARALLEL_ARCH */
|
||||
|
||||
if (ckt->CKTdelta <= ckt->CKTdelmin) {
|
||||
if (olddelta > ckt->CKTdelmin) {
|
||||
|
|
|
|||
|
|
@ -50,7 +50,6 @@ do { \
|
|||
startdTime = ckt->CKTstat->STATdecompTime; \
|
||||
startsTime = ckt->CKTstat->STATsolveTime; \
|
||||
startlTime = ckt->CKTstat->STATloadTime; \
|
||||
startcTime = ckt->CKTstat->STATcombineTime; \
|
||||
startkTime = ckt->CKTstat->STATsyncTime; \
|
||||
} while(0)
|
||||
|
||||
|
|
@ -62,7 +61,6 @@ do { \
|
|||
ckt->CKTstat->STATtranDecompTime += ckt->CKTstat->STATdecompTime - startdTime; \
|
||||
ckt->CKTstat->STATtranSolveTime += ckt->CKTstat->STATsolveTime - startsTime; \
|
||||
ckt->CKTstat->STATtranLoadTime += ckt->CKTstat->STATloadTime - startlTime; \
|
||||
ckt->CKTstat->STATtranCombTime += ckt->CKTstat->STATcombineTime - startcTime; \
|
||||
ckt->CKTstat->STATtranSyncTime += ckt->CKTstat->STATsyncTime - startkTime; \
|
||||
} while(0)
|
||||
|
||||
|
|
@ -81,7 +79,6 @@ DCtran(CKTcircuit *ckt,
|
|||
double startdTime;
|
||||
double startsTime;
|
||||
double startlTime;
|
||||
double startcTime;
|
||||
double startkTime;
|
||||
double startTime;
|
||||
int startIters;
|
||||
|
|
@ -102,9 +99,6 @@ DCtran(CKTcircuit *ckt,
|
|||
|
||||
int ltra_num;
|
||||
CKTnode *node;
|
||||
#ifdef PARALLEL_ARCH
|
||||
long type = MT_TRANAN, length = 1;
|
||||
#endif /* PARALLEL_ARCH */
|
||||
#ifdef XSPICE
|
||||
/* gtri - add - wbk - 12/19/90 - Add IPC stuff */
|
||||
Ipc_Boolean_t ipc_firsttime = IPC_TRUE;
|
||||
|
|
@ -629,9 +623,6 @@ resume:
|
|||
exit(0);
|
||||
}
|
||||
#endif
|
||||
#ifdef PARALLEL_ARCH
|
||||
DGOP_( &type, &(ckt->CKTdelta), &length, "min" );
|
||||
#endif /* PARALLEL_ARCH */
|
||||
|
||||
#endif /* XSPICE */
|
||||
|
||||
|
|
@ -894,9 +885,6 @@ resume:
|
|||
#endif
|
||||
}
|
||||
}
|
||||
#ifdef PARALLEL_ARCH
|
||||
DGOP_( &type, &(ckt->CKTdelta), &length, "min" );
|
||||
#endif /* PARALLEL_ARCH */
|
||||
|
||||
if (ckt->CKTdelta <= ckt->CKTdelmin) {
|
||||
if (olddelta > ckt->CKTdelmin) {
|
||||
|
|
|
|||
|
|
@ -3563,7 +3563,6 @@ typedef struct s$(module)instance {
|
|||
struct s$(module)model *$(module)modPtr; /* pointer to model */
|
||||
struct s$(module)instance *$(module)nextInstance; /* pointer to next instance of current model*/
|
||||
IFuid $(module)name; /* pointer to character string naming this instance */
|
||||
int $(module)owner; /* number of owner process */
|
||||
int $(module)state; /* index into state table for this device */
|
||||
|
||||
/* node */
|
||||
|
|
|
|||
|
|
@ -191,7 +191,6 @@ typedef struct s$(module)instance {
|
|||
struct s$(module)model *$(module)modPtr; /* pointer to model */
|
||||
struct s$(module)instance *$(module)nextInstance; /* pointer to next instance of current model*/
|
||||
IFuid $(module)name; /* pointer to character string naming this instance */
|
||||
int $(module)owner; /* number of owner process */
|
||||
int $(module)state; /* index into state table for this device */
|
||||
|
||||
/* node */
|
||||
|
|
|
|||
|
|
@ -52,7 +52,6 @@ $(module)noise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, Nd
|
|||
{
|
||||
for (inst=model->$(module)instances; inst != NULL; inst=inst->$(module)nextInstance)
|
||||
{
|
||||
if (inst->$(module)owner != ARCHme) continue;
|
||||
switch (operation)
|
||||
{
|
||||
case N_OPEN:
|
||||
|
|
|
|||
|
|
@ -41,9 +41,6 @@ ASRCacLoad(GENmodel *inModel, CKTcircuit *ckt)
|
|||
for (here = model->ASRCinstances; here != NULL ;
|
||||
here = here->ASRCnextInstance) {
|
||||
|
||||
if (here->ASRCowner != ARCHme)
|
||||
continue;
|
||||
|
||||
difference = (here->ASRCtemp + here->ASRCdtemp) - 300.15;
|
||||
factor = 1.0 + (here->ASRCtc1)*difference +
|
||||
(here->ASRCtc2)*difference*difference;
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ ASRCconvTest(GENmodel *inModel, CKTcircuit *ckt)
|
|||
for( ; model != NULL; model = model->ASRCnextModel) {
|
||||
for( here = model->ASRCinstances; here != NULL;
|
||||
here = here->ASRCnextInstance) {
|
||||
if (here->ASRCowner != ARCHme) continue;
|
||||
|
||||
i = here->ASRCtree->numVars;
|
||||
if (asrc_nvals < i) {
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ typedef struct sASRCinstance {
|
|||
struct sASRCinstance *ASRCnextInstance; /* pointer to next instance of
|
||||
* current model */
|
||||
IFuid ASRCname; /* pointer to character string naming this instance */
|
||||
int ASRCowner; /* number of owner process */
|
||||
int ASRCstates; /* state info */
|
||||
int ASRCposNode; /* number of positive node of source */
|
||||
int ASRCnegNode; /* number of negative node of source */
|
||||
|
|
|
|||
|
|
@ -38,9 +38,6 @@ ASRCload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
for (here = model->ASRCinstances; here != NULL ;
|
||||
here=here->ASRCnextInstance)
|
||||
{
|
||||
if (here->ASRCowner != ARCHme)
|
||||
continue;
|
||||
|
||||
difference = (here->ASRCtemp + here->ASRCdtemp) - 300.15;
|
||||
factor = 1.0 + (here->ASRCtc1)*difference + (here->ASRCtc2)*difference*difference;
|
||||
if(here->ASRCreciproctc == 1) {
|
||||
|
|
|
|||
|
|
@ -34,9 +34,6 @@ ASRCpzLoad(GENmodel *inModel, CKTcircuit *ckt, SPcomplex *s)
|
|||
for (here = model->ASRCinstances; here != NULL ;
|
||||
here=here->ASRCnextInstance)
|
||||
{
|
||||
if (here->ASRCowner != ARCHme)
|
||||
continue;
|
||||
|
||||
difference = (here->ASRCtemp + here->ASRCdtemp) - 300.15;
|
||||
factor = 1.0 + (here->ASRCtc1)*difference +
|
||||
(here->ASRCtc2)*difference*difference;
|
||||
|
|
|
|||
|
|
@ -21,8 +21,6 @@ ASRCtemp(GENmodel *inModel, CKTcircuit *ckt)
|
|||
for (here = model->ASRCinstances; here != NULL ;
|
||||
here=here->ASRCnextInstance) {
|
||||
|
||||
if (here->ASRCowner != ARCHme) continue;
|
||||
|
||||
/* Default Value Processing for Source Instance */
|
||||
|
||||
if(!here->ASRCtempGiven) {
|
||||
|
|
|
|||
|
|
@ -40,7 +40,6 @@ BJTacLoad(GENmodel *inModel, CKTcircuit *ckt)
|
|||
for( ; model != NULL; model = model->BJTnextModel) {
|
||||
for( here = model->BJTinstances; here!= NULL;
|
||||
here = here->BJTnextInstance) {
|
||||
if (here->BJTowner != ARCHme) continue;
|
||||
|
||||
m = here->BJTm;
|
||||
|
||||
|
|
|
|||
|
|
@ -34,7 +34,6 @@ BJTconvTest(GENmodel *inModel, CKTcircuit *ckt)
|
|||
|
||||
for( ; model != NULL; model = model->BJTnextModel) {
|
||||
for(here=model->BJTinstances;here!=NULL;here = here->BJTnextInstance){
|
||||
if (here->BJTowner != ARCHme) continue;
|
||||
|
||||
vbe=model->BJTtype*(
|
||||
*(ckt->CKTrhsOld+here->BJTbasePrimeNode)-
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ typedef struct sBJTinstance {
|
|||
struct sBJTinstance *BJTnextInstance; /* pointer to next instance of
|
||||
* current model*/
|
||||
IFuid BJTname; /* pointer to character string naming this instance */
|
||||
int BJTowner; /* number of owner process */
|
||||
int BJTstate; /* pointer to start of state vector for bjt */
|
||||
|
||||
int BJTcolNode; /* number of collector node of bjt */
|
||||
|
|
|
|||
|
|
@ -58,7 +58,6 @@ BJTdisto(int mode, GENmodel *genmodel, CKTcircuit *ckt)
|
|||
/* loop through all the instances of the model */
|
||||
for (here = model->BJTinstances; here != NULL ;
|
||||
here=here->BJTnextInstance) {
|
||||
if (here->BJTowner != ARCHme) continue;
|
||||
|
||||
/* getting Volterra kernels */
|
||||
/* until further notice x = vbe, y = vbc, z= vbed */
|
||||
|
|
|
|||
|
|
@ -31,7 +31,6 @@ BJTgetic(GENmodel *inModel, CKTcircuit *ckt)
|
|||
|
||||
for( ; model ; model = model->BJTnextModel) {
|
||||
for(here = model->BJTinstances; here ; here = here->BJTnextInstance) {
|
||||
if (here->BJTowner != ARCHme) continue;
|
||||
|
||||
if(!here->BJTicVBEGiven) {
|
||||
here->BJTicVBE =
|
||||
|
|
|
|||
|
|
@ -144,7 +144,6 @@ BJTload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
/* loop through all the instances of the model */
|
||||
for (here = model->BJTinstances; here != NULL ;
|
||||
here=here->BJTnextInstance) {
|
||||
if (here->BJTowner != ARCHme) continue;
|
||||
|
||||
vt = here->BJTtemp * CONSTKoverQ;
|
||||
|
||||
|
|
|
|||
|
|
@ -54,7 +54,6 @@ BJTnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt,
|
|||
for (model=firstModel; model != NULL; model=model->BJTnextModel) {
|
||||
for (inst=model->BJTinstances; inst != NULL;
|
||||
inst=inst->BJTnextInstance) {
|
||||
if (inst->BJTowner != ARCHme) continue;
|
||||
|
||||
switch (operation) {
|
||||
|
||||
|
|
|
|||
|
|
@ -36,7 +36,6 @@ BJTpzLoad(GENmodel *inModel, CKTcircuit *ckt, SPcomplex *s)
|
|||
for( ; model != NULL; model = model->BJTnextModel) {
|
||||
for( here = model->BJTinstances; here!= NULL;
|
||||
here = here->BJTnextInstance) {
|
||||
if (here->BJTowner != ARCHme) continue;
|
||||
|
||||
m = here->BJTm;
|
||||
|
||||
|
|
|
|||
|
|
@ -341,9 +341,6 @@ BJTsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
|
|||
CKTnode *tmpNode;
|
||||
IFuid tmpName;
|
||||
|
||||
if (here->BJTowner != ARCHme)
|
||||
goto matrixpointers;
|
||||
|
||||
if(!here->BJTareaGiven) {
|
||||
here->BJTarea = 1.0;
|
||||
}
|
||||
|
|
@ -363,7 +360,6 @@ BJTsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
|
|||
*states += 8 * (ckt->CKTsenInfo->SENparms);
|
||||
}
|
||||
|
||||
matrixpointers:
|
||||
if(model->BJTcollectorResist == 0) {
|
||||
here->BJTcolPrimeNode = here->BJTcolNode;
|
||||
} else if(here->BJTcolPrimeNode == 0) {
|
||||
|
|
|
|||
|
|
@ -91,7 +91,6 @@ BJTsLoad(GENmodel *inModel, CKTcircuit *ckt)
|
|||
/* loop through all the instances of the model */
|
||||
for (here = model->BJTinstances; here != NULL ;
|
||||
here=here->BJTnextInstance) {
|
||||
if (here->BJTowner != ARCHme) continue;
|
||||
|
||||
#ifdef SENSDEBUG
|
||||
printf("base = %d , baseprm = %d ,col = %d, colprm = %d\n",
|
||||
|
|
|
|||
|
|
@ -34,7 +34,6 @@ BJTsPrint(GENmodel *inModel, CKTcircuit *ckt)
|
|||
/* loop through all the instances of the model */
|
||||
for (here = model->BJTinstances; here != NULL ;
|
||||
here=here->BJTnextInstance) {
|
||||
if (here->BJTowner != ARCHme) continue;
|
||||
|
||||
ckt->CKTsenInfo->SEN_parmVal[here->BJTsenParmNo] = here->BJTarea;
|
||||
|
||||
|
|
@ -50,4 +49,3 @@ BJTsPrint(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -36,7 +36,6 @@ BJTsSetup(SENstruct *info, GENmodel *inModel)
|
|||
/* loop through all the instances of the model */
|
||||
for (here = model->BJTinstances; here != NULL ;
|
||||
here=here->BJTnextInstance) {
|
||||
if (here->BJTowner != ARCHme) continue;
|
||||
|
||||
if(here->BJTsenParmNo){
|
||||
here->BJTsenParmNo = ++(info->SENparms);
|
||||
|
|
@ -48,4 +47,3 @@ BJTsSetup(SENstruct *info, GENmodel *inModel)
|
|||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -48,7 +48,6 @@ BJTsUpdate(GENmodel *inModel, CKTcircuit *ckt)
|
|||
/* loop through all the instances of the model */
|
||||
for (here = model->BJTinstances; here != NULL ;
|
||||
here=here->BJTnextInstance) {
|
||||
if (here->BJTowner != ARCHme) continue;
|
||||
|
||||
sxpbe = 0;
|
||||
sxpbc = 0;
|
||||
|
|
|
|||
|
|
@ -100,7 +100,6 @@ BJTtemp(GENmodel *inModel, CKTcircuit *ckt)
|
|||
/* loop through all the instances of the model */
|
||||
for (here = model->BJTinstances; here != NULL ;
|
||||
here=here->BJTnextInstance) {
|
||||
if (here->BJTowner != ARCHme) continue;
|
||||
|
||||
if(!here->BJTdtempGiven)
|
||||
here->BJTdtemp = 0.0;
|
||||
|
|
|
|||
|
|
@ -26,7 +26,6 @@ BJTtrunc(GENmodel *inModel, CKTcircuit *ckt, double *timeStep)
|
|||
|
||||
for( ; model != NULL; model = model->BJTnextModel) {
|
||||
for(here=model->BJTinstances;here!=NULL;here = here->BJTnextInstance){
|
||||
if (here->BJTowner != ARCHme) continue;
|
||||
|
||||
CKTterr(here->BJTqbe,ckt,timeStep);
|
||||
CKTterr(here->BJTqbc,ckt,timeStep);
|
||||
|
|
|
|||
|
|
@ -56,7 +56,6 @@ B1acLoad(GENmodel *inModel, CKTcircuit *ckt)
|
|||
for( ; model != NULL; model = model->B1nextModel) {
|
||||
for(here = model->B1instances; here!= NULL;
|
||||
here = here->B1nextInstance) {
|
||||
if (here->B1owner != ARCHme) continue;
|
||||
|
||||
if (here->B1mode >= 0) {
|
||||
xnrm=1;
|
||||
|
|
|
|||
|
|
@ -46,7 +46,6 @@ B1convTest(GENmodel *inModel, CKTcircuit *ckt)
|
|||
/* loop through all the instances of the model */
|
||||
for (here = model->B1instances; here != NULL ;
|
||||
here=here->B1nextInstance) {
|
||||
if (here->B1owner != ARCHme) continue;
|
||||
|
||||
vbs = model->B1type * (
|
||||
*(ckt->CKTrhsOld+here->B1bNode) -
|
||||
|
|
|
|||
|
|
@ -51,7 +51,6 @@ for( ; model != NULL; model = model->B1nextModel ) {
|
|||
/* loop through all the instances of the model */
|
||||
for (here = model->B1instances; here != NULL ;
|
||||
here=here->B1nextInstance) {
|
||||
if (here->B1owner != ARCHme) continue;
|
||||
|
||||
/* loading starts here */
|
||||
|
||||
|
|
|
|||
|
|
@ -130,8 +130,6 @@ B1dSetup(GENmodel *inModel, CKTcircuit *ckt)
|
|||
/* loop through all the instances of the model */
|
||||
for (here = model->B1instances; here != NULL ;
|
||||
here=here->B1nextInstance) {
|
||||
|
||||
if (here->B1owner != ARCHme) continue;
|
||||
|
||||
EffectiveLength=here->B1l - model->B1deltaL * 1.e-6;/* m */
|
||||
DrainArea = here->B1m * here->B1drainArea;
|
||||
|
|
|
|||
|
|
@ -25,7 +25,6 @@ B1getic(GENmodel *inModel, CKTcircuit *ckt)
|
|||
|
||||
for( ; model ; model = model->B1nextModel) {
|
||||
for(here = model->B1instances; here ; here = here->B1nextInstance) {
|
||||
if (here->B1owner != ARCHme) continue;
|
||||
|
||||
if(!here->B1icVBSGiven) {
|
||||
here->B1icVBS =
|
||||
|
|
|
|||
|
|
@ -134,7 +134,6 @@ B1load(GENmodel *inModel, CKTcircuit *ckt)
|
|||
/* loop through all the instances of the model */
|
||||
for (here = model->B1instances; here != NULL ;
|
||||
here=here->B1nextInstance) {
|
||||
if (here->B1owner != ARCHme) continue;
|
||||
|
||||
EffectiveLength=here->B1l - model->B1deltaL * 1.e-6;/* m */
|
||||
DrainArea = here->B1drainArea;
|
||||
|
|
|
|||
|
|
@ -48,7 +48,6 @@ B1noise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt,
|
|||
|
||||
for (model=firstModel; model != NULL; model=model->B1nextModel) {
|
||||
for (inst=model->B1instances; inst != NULL; inst=inst->B1nextInstance) {
|
||||
if (inst->B1owner != ARCHme) continue;
|
||||
|
||||
switch (operation) {
|
||||
|
||||
|
|
|
|||
|
|
@ -56,7 +56,6 @@ B1pzLoad(GENmodel *inModel, CKTcircuit *ckt, SPcomplex *s)
|
|||
for( ; model != NULL; model = model->B1nextModel) {
|
||||
for(here = model->B1instances; here!= NULL;
|
||||
here = here->B1nextInstance) {
|
||||
if (here->B1owner != ARCHme) continue;
|
||||
|
||||
if (here->B1mode >= 0) {
|
||||
xnrm=1;
|
||||
|
|
|
|||
|
|
@ -276,11 +276,9 @@ B1setup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt,
|
|||
CKTnode *tmpNode;
|
||||
IFuid tmpName;
|
||||
|
||||
if (here->B1owner == ARCHme) {
|
||||
/* allocate a chunk of the state vector */
|
||||
here->B1states = *states;
|
||||
*states += B1numStates;
|
||||
}
|
||||
|
||||
/* perform the parameter defaulting */
|
||||
if(!here->B1drainAreaGiven) {
|
||||
|
|
|
|||
|
|
@ -48,8 +48,6 @@ B1temp(GENmodel *inModel, CKTcircuit *ckt)
|
|||
for (here = model->B1instances; here != NULL ;
|
||||
here=here->B1nextInstance) {
|
||||
|
||||
if (here->B1owner != ARCHme) continue;
|
||||
|
||||
if( (EffChanLength = here->B1l - model->B1deltaL *1e-6 )<=0) {
|
||||
IFuid namarray[2];
|
||||
namarray[0] = model->B1modName;
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ B1trunc(GENmodel *inModel, CKTcircuit *ckt, double *timeStep)
|
|||
|
||||
for( ; model != NULL; model = model->B1nextModel) {
|
||||
for(here=model->B1instances;here!=NULL;here = here->B1nextInstance){
|
||||
if (here->B1owner != ARCHme) continue;
|
||||
|
||||
#ifdef STEPDEBUG
|
||||
debugtemp = *timeStep;
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@ typedef struct sBSIM1instance {
|
|||
struct sBSIM1instance *B1nextInstance; /* pointer to next instance of
|
||||
*current model*/
|
||||
IFuid B1name; /* pointer to character string naming this instance */
|
||||
int B1owner; /* number of owner process */
|
||||
int B1states; /* index into state table for this device */
|
||||
|
||||
int B1dNode; /* number of the gate node of the mosfet */
|
||||
|
|
|
|||
|
|
@ -57,7 +57,6 @@ B2acLoad(GENmodel *inModel, CKTcircuit *ckt)
|
|||
for( ; model != NULL; model = model->B2nextModel) {
|
||||
for(here = model->B2instances; here!= NULL;
|
||||
here = here->B2nextInstance) {
|
||||
if (here->B2owner != ARCHme) continue;
|
||||
|
||||
if (here->B2mode >= 0) {
|
||||
xnrm=1;
|
||||
|
|
|
|||
|
|
@ -46,7 +46,6 @@ B2convTest(GENmodel *inModel, CKTcircuit *ckt)
|
|||
/* loop through all the instances of the model */
|
||||
for (here = model->B2instances; here != NULL ;
|
||||
here=here->B2nextInstance) {
|
||||
if (here->B2owner != ARCHme) continue;
|
||||
|
||||
vbs = model->B2type * (
|
||||
*(ckt->CKTrhsOld+here->B2bNode) -
|
||||
|
|
|
|||
|
|
@ -25,7 +25,6 @@ B2getic(GENmodel *inModel, CKTcircuit *ckt)
|
|||
|
||||
for( ; model ; model = model->B2nextModel) {
|
||||
for(here = model->B2instances; here ; here = here->B2nextInstance) {
|
||||
if (here->B2owner != ARCHme) continue;
|
||||
|
||||
if(!here->B2icVBSGiven) {
|
||||
here->B2icVBS =
|
||||
|
|
|
|||
|
|
@ -135,7 +135,6 @@ B2load(GENmodel *inModel, CKTcircuit *ckt)
|
|||
/* loop through all the instances of the model */
|
||||
for (here = model->B2instances; here != NULL ;
|
||||
here=here->B2nextInstance) {
|
||||
if (here->B2owner != ARCHme) continue;
|
||||
|
||||
EffectiveLength=here->B2l - model->B2deltaL * 1.e-6;/* m */
|
||||
DrainArea = here->B2drainArea;
|
||||
|
|
|
|||
|
|
@ -48,7 +48,6 @@ B2noise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt,
|
|||
|
||||
for (model=firstModel; model != NULL; model=model->B2nextModel) {
|
||||
for (inst=model->B2instances; inst != NULL; inst=inst->B2nextInstance) {
|
||||
if (inst->B2owner != ARCHme) continue;
|
||||
|
||||
switch (operation) {
|
||||
|
||||
|
|
|
|||
|
|
@ -56,7 +56,6 @@ B2pzLoad(GENmodel *inModel, CKTcircuit *ckt, SPcomplex *s)
|
|||
for( ; model != NULL; model = model->B2nextModel) {
|
||||
for(here = model->B2instances; here!= NULL;
|
||||
here = here->B2nextInstance) {
|
||||
if (here->B2owner != ARCHme) continue;
|
||||
|
||||
if (here->B2mode >= 0) {
|
||||
xnrm=1;
|
||||
|
|
|
|||
|
|
@ -434,11 +434,9 @@ B2setup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
|
|||
for (here = model->B2instances; here != NULL ;
|
||||
here=here->B2nextInstance) {
|
||||
|
||||
if (here->B2owner == ARCHme) {
|
||||
/* allocate a chunk of the state vector */
|
||||
here->B2states = *states;
|
||||
*states += B2numStates;
|
||||
}
|
||||
|
||||
/* perform the parameter defaulting */
|
||||
|
||||
|
|
|
|||
|
|
@ -52,7 +52,6 @@ B2temp(GENmodel *inModel, CKTcircuit *ckt)
|
|||
/* loop through all the instances of the model */
|
||||
for (here = model->B2instances; here != NULL ;
|
||||
here=here->B2nextInstance) {
|
||||
if (here->B2owner != ARCHme) continue;
|
||||
|
||||
pSizeDependParamKnot = model->pSizeDependParamKnot;
|
||||
Size_Not_Found = 1;
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@ B2trunc(GENmodel *inModel, CKTcircuit *ckt, double *timeStep)
|
|||
|
||||
for( ; model != NULL; model = model->B2nextModel) {
|
||||
for(here=model->B2instances;here!=NULL;here = here->B2nextInstance){
|
||||
if (here->B2owner != ARCHme) continue;
|
||||
|
||||
#ifdef STEPDEBUG
|
||||
debugtemp = *timeStep;
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@ typedef struct sBSIM2instance {
|
|||
struct sBSIM2instance *B2nextInstance; /* pointer to next instance of
|
||||
*current model*/
|
||||
IFuid B2name; /* pointer to character string naming this instance */
|
||||
int B2owner; /* number of owner process */
|
||||
int B2states; /* index into state table for this device */
|
||||
|
||||
int B2dNode; /* number of the gate node of the mosfet */
|
||||
|
|
|
|||
|
|
@ -47,9 +47,6 @@ double m;
|
|||
{ for (here = model->BSIM3instances; here!= NULL;
|
||||
here = here->BSIM3nextInstance)
|
||||
{
|
||||
if (here->BSIM3owner != ARCHme)
|
||||
continue;
|
||||
|
||||
Csd = -(here->BSIM3cddb + here->BSIM3cgdb + here->BSIM3cbdb);
|
||||
Csg = -(here->BSIM3cdgb + here->BSIM3cggb + here->BSIM3cbgb);
|
||||
Css = -(here->BSIM3cdsb + here->BSIM3cgsb + here->BSIM3cbsb);
|
||||
|
|
|
|||
|
|
@ -34,9 +34,6 @@ double cbd, cbhat, cbs, cd, cdhat, tol, vgd, vgdo, vgs;
|
|||
for (here = model->BSIM3instances; here != NULL ;
|
||||
here=here->BSIM3nextInstance)
|
||||
{
|
||||
if (here->BSIM3owner != ARCHme)
|
||||
continue;
|
||||
|
||||
vbs = model->BSIM3type
|
||||
* (*(ckt->CKTrhsOld+here->BSIM3bNode)
|
||||
- *(ckt->CKTrhsOld+here->BSIM3sNodePrime));
|
||||
|
|
|
|||
|
|
@ -26,9 +26,6 @@ BSIM3instance *here;
|
|||
for (; model ; model = model->BSIM3nextModel)
|
||||
{ for (here = model->BSIM3instances; here; here = here->BSIM3nextInstance)
|
||||
{
|
||||
if (here->BSIM3owner != ARCHme)
|
||||
continue;
|
||||
|
||||
if (!here->BSIM3icVBSGiven)
|
||||
{ here->BSIM3icVBS = *(ckt->CKTrhs + here->BSIM3bNode)
|
||||
- *(ckt->CKTrhs + here->BSIM3sNode);
|
||||
|
|
|
|||
|
|
@ -186,8 +186,6 @@ for (; model != NULL; model = model->BSIM3nextModel)
|
|||
{ for (here = model->BSIM3instances; here != NULL;
|
||||
here = here->BSIM3nextInstance)
|
||||
{
|
||||
if (here->BSIM3owner != ARCHme)
|
||||
continue;
|
||||
#endif
|
||||
Check = 1;
|
||||
ByPass = 0;
|
||||
|
|
|
|||
|
|
@ -41,8 +41,6 @@ double m;
|
|||
{ for (here = model->BSIM3instances; here!= NULL;
|
||||
here = here->BSIM3nextInstance)
|
||||
{
|
||||
if (here->BSIM3owner != ARCHme)
|
||||
continue;
|
||||
if (here->BSIM3mode >= 0)
|
||||
{ Gm = here->BSIM3gm;
|
||||
Gmbs = here->BSIM3gmbs;
|
||||
|
|
|
|||
|
|
@ -864,12 +864,9 @@ BSIM3instance **InstArray;
|
|||
for (here = model->BSIM3instances; here != NULL ;
|
||||
here=here->BSIM3nextInstance)
|
||||
{
|
||||
if (here->BSIM3owner == ARCHme)
|
||||
{
|
||||
/* allocate a chunk of the state vector */
|
||||
here->BSIM3states = *states;
|
||||
*states += BSIM3numStates;
|
||||
}
|
||||
/* perform the parameter defaulting */
|
||||
if (!here->BSIM3drainAreaGiven)
|
||||
here->BSIM3drainArea = 0.0;
|
||||
|
|
|
|||
|
|
@ -145,7 +145,6 @@ int Size_Not_Found;
|
|||
for (here = model->BSIM3instances; here != NULL;
|
||||
here = here->BSIM3nextInstance)
|
||||
{
|
||||
if (here->BSIM3owner != ARCHme) continue;
|
||||
pSizeDependParamKnot = model->pSizeDependParamKnot;
|
||||
Size_Not_Found = 1;
|
||||
while ((pSizeDependParamKnot != NULL) && Size_Not_Found)
|
||||
|
|
|
|||
|
|
@ -32,8 +32,6 @@ BSIM3instance *here;
|
|||
{ for (here = model->BSIM3instances; here != NULL;
|
||||
here = here->BSIM3nextInstance)
|
||||
{
|
||||
if (here->BSIM3owner != ARCHme)
|
||||
continue;
|
||||
#ifdef STEPDEBUG
|
||||
debugtemp = *timeStep;
|
||||
#endif /* STEPDEBUG */
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ typedef struct sBSIM3instance
|
|||
struct sBSIM3model *BSIM3modPtr;
|
||||
struct sBSIM3instance *BSIM3nextInstance;
|
||||
IFuid BSIM3name;
|
||||
int BSIM3owner; /* number of owner process */
|
||||
int BSIM3states; /* index into state table for this device */
|
||||
int BSIM3dNode;
|
||||
int BSIM3gNode;
|
||||
|
|
|
|||
|
|
@ -81,7 +81,6 @@ double m;
|
|||
for (here = model->B4SOIinstances; here!= NULL;
|
||||
here = here->B4SOInextInstance)
|
||||
{
|
||||
if (here->B4SOIowner != ARCHme) continue;
|
||||
selfheat = (model->B4SOIshMod == 1) && (here->B4SOIrth0 != 0.0);
|
||||
if (here->B4SOImode >= 0)
|
||||
{ Gm = here->B4SOIgm;
|
||||
|
|
|
|||
|
|
@ -41,7 +41,6 @@ double cbd, cbhat, cbs, cd, cdhat, tol, vgd, vgdo, vgs;
|
|||
for (here = model->B4SOIinstances; here != NULL ;
|
||||
here=here->B4SOInextInstance)
|
||||
{
|
||||
if (here->B4SOIowner != ARCHme) continue;
|
||||
vbs = model->B4SOItype
|
||||
* (*(ckt->CKTrhsOld+here->B4SOIbNode)
|
||||
- *(ckt->CKTrhsOld+here->B4SOIsNodePrime));
|
||||
|
|
|
|||
|
|
@ -29,7 +29,6 @@ typedef struct sB4SOIinstance
|
|||
struct sB4SOImodel *B4SOImodPtr;
|
||||
struct sB4SOIinstance *B4SOInextInstance;
|
||||
IFuid B4SOIname;
|
||||
int B4SOIowner; /* number of owner process */
|
||||
int B4SOIstates; /* index into state table for this device */
|
||||
|
||||
int B4SOIdNode;
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ B4SOImodel *oldmod = NULL;
|
|||
prev = (B4SOIinstance *)NULL;
|
||||
for (here = mod->B4SOIinstances; here; here = here->B4SOInextInstance)
|
||||
{
|
||||
if (here->B4SOIowner != ARCHme) continue;
|
||||
if(prev) FREE(prev);
|
||||
prev = here;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,7 +33,6 @@ B4SOIinstance *here;
|
|||
for (; model ; model = model->B4SOInextModel)
|
||||
{ for (here = model->B4SOIinstances; here; here = here->B4SOInextInstance)
|
||||
{
|
||||
if (here->B4SOIowner != ARCHme) continue;
|
||||
if(!here->B4SOIicVBSGiven)
|
||||
{ here->B4SOIicVBS = *(ckt->CKTrhs + here->B4SOIbNode)
|
||||
- *(ckt->CKTrhs + here->B4SOIsNode);
|
||||
|
|
|
|||
|
|
@ -496,7 +496,6 @@ int B4SOILoadOMP(B4SOIinstance *here, CKTcircuit *ckt) {
|
|||
{ for (here = model->B4SOIinstances; here != NULL;
|
||||
here = here->B4SOInextInstance)
|
||||
{
|
||||
if (here->B4SOIowner != ARCHme) continue;
|
||||
#endif
|
||||
Check = 0;
|
||||
ByPass = 0;
|
||||
|
|
|
|||
|
|
@ -45,7 +45,6 @@ delgot:
|
|||
*oldmod = (*model)->B4SOInextModel; /* cut deleted device out of list */
|
||||
for (here = (*model)->B4SOIinstances; here; here = here->B4SOInextInstance)
|
||||
{
|
||||
if (here->B4SOIowner != ARCHme) continue;
|
||||
if(prev) FREE(prev);
|
||||
prev = here;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -152,8 +152,6 @@ double m;
|
|||
{ for (here = model->B4SOIinstances; here != NULL;
|
||||
here = here->B4SOInextInstance)
|
||||
{
|
||||
if (here->B4SOIowner != ARCHme) continue;
|
||||
|
||||
m = here->B4SOIm;
|
||||
|
||||
pParam = here->pParam;
|
||||
|
|
|
|||
|
|
@ -44,7 +44,6 @@ double m;
|
|||
{ for (here = model->B4SOIinstances; here!= NULL;
|
||||
here = here->B4SOInextInstance)
|
||||
{
|
||||
if (here->B4SOIowner != ARCHme) continue;
|
||||
if (here->B4SOImode >= 0)
|
||||
{ Gm = here->B4SOIgm;
|
||||
Gmbs = here->B4SOIgmbs;
|
||||
|
|
|
|||
|
|
@ -163,7 +163,6 @@ B4SOItemp(
|
|||
for (here = model->B4SOIinstances; here != NULL;
|
||||
here = here->B4SOInextInstance)
|
||||
{
|
||||
if (here->B4SOIowner != ARCHme) continue;
|
||||
here->B4SOIrbodyext = here->B4SOIbodySquares *
|
||||
model->B4SOIrbsh;
|
||||
pSizeDependParamKnot = model->pSizeDependParamKnot;
|
||||
|
|
|
|||
|
|
@ -38,7 +38,6 @@ register B4SOIinstance *here;
|
|||
{ for (here = model->B4SOIinstances; here != NULL;
|
||||
here = here->B4SOInextInstance)
|
||||
{
|
||||
if (here->B4SOIowner != ARCHme) continue;
|
||||
#ifdef STEPDEBUG
|
||||
debugtemp = *timeStep;
|
||||
#endif /* STEPDEBUG */
|
||||
|
|
|
|||
|
|
@ -54,10 +54,6 @@ double m;
|
|||
for (here = model->B3SOIDDinstances; here!= NULL;
|
||||
here = here->B3SOIDDnextInstance)
|
||||
{
|
||||
if (here->B3SOIDDowner != ARCHme)
|
||||
continue;
|
||||
|
||||
|
||||
selfheat = (model->B3SOIDDshMod == 1) && (here->B3SOIDDrth0 != 0.0);
|
||||
if (here->B3SOIDDdebugMod > 2)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -34,10 +34,6 @@ double cbd, cbhat, cbs, cd, cdhat, tol, vgd, vgdo, vgs;
|
|||
for (here = model->B3SOIDDinstances; here != NULL ;
|
||||
here=here->B3SOIDDnextInstance)
|
||||
{
|
||||
|
||||
if (here->B3SOIDDowner != ARCHme)
|
||||
continue;
|
||||
|
||||
vbs = model->B3SOIDDtype
|
||||
* (*(ckt->CKTrhsOld+here->B3SOIDDbNode)
|
||||
- *(ckt->CKTrhsOld+here->B3SOIDDsNodePrime));
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@ typedef struct sB3SOIDDinstance
|
|||
struct sB3SOIDDmodel *B3SOIDDmodPtr;
|
||||
struct sB3SOIDDinstance *B3SOIDDnextInstance;
|
||||
IFuid B3SOIDDname;
|
||||
int B3SOIDDowner; /* number of owner process */
|
||||
int B3SOIDDstates; /* index into state table for this device */
|
||||
|
||||
int B3SOIDDdNode;
|
||||
|
|
|
|||
|
|
@ -26,10 +26,6 @@ B3SOIDDinstance *here;
|
|||
for (; model ; model = model->B3SOIDDnextModel)
|
||||
{ for (here = model->B3SOIDDinstances; here; here = here->B3SOIDDnextInstance)
|
||||
{
|
||||
|
||||
if (here->B3SOIDDowner != ARCHme)
|
||||
continue;
|
||||
|
||||
if(!here->B3SOIDDicVBSGiven)
|
||||
{ here->B3SOIDDicVBS = *(ckt->CKTrhs + here->B3SOIDDbNode)
|
||||
- *(ckt->CKTrhs + here->B3SOIDDsNode);
|
||||
|
|
|
|||
|
|
@ -309,10 +309,6 @@ double m;
|
|||
{ for (here = model->B3SOIDDinstances; here != NULL;
|
||||
here = here->B3SOIDDnextInstance)
|
||||
{
|
||||
|
||||
if (here->B3SOIDDowner != ARCHme)
|
||||
continue;
|
||||
|
||||
Check = 0;
|
||||
ByPass = 0;
|
||||
selfheat = (model->B3SOIDDshMod == 1) && (here->B3SOIDDrth0 != 0.0);
|
||||
|
|
|
|||
|
|
@ -132,10 +132,6 @@ int i;
|
|||
{ for (here = model->B3SOIDDinstances; here != NULL;
|
||||
here = here->B3SOIDDnextInstance)
|
||||
{
|
||||
|
||||
if (here->B3SOIDDowner != ARCHme)
|
||||
continue;
|
||||
|
||||
pParam = here->pParam;
|
||||
switch (operation)
|
||||
{ case N_OPEN:
|
||||
|
|
|
|||
|
|
@ -38,10 +38,6 @@ double m;
|
|||
{ for (here = model->B3SOIDDinstances; here!= NULL;
|
||||
here = here->B3SOIDDnextInstance)
|
||||
{
|
||||
|
||||
if (here->B3SOIDDowner != ARCHme)
|
||||
continue;
|
||||
|
||||
if (here->B3SOIDDmode >= 0)
|
||||
{ Gm = here->B3SOIDDgm;
|
||||
Gmbs = here->B3SOIDDgmbs;
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue