Browse Source

add matrix entries for bulk diode

pre-master-46
Holger Vogt 8 years ago
committed by rlar
parent
commit
2bf70fa259
  1. 11
      src/spicelib/devices/vdmos/vdmosdefs.h
  2. 7
      src/spicelib/devices/vdmos/vdmosload.c
  3. 5
      src/spicelib/devices/vdmos/vdmosset.c

11
src/spicelib/devices/vdmos/vdmosdefs.h

@ -245,6 +245,17 @@ typedef struct sVDMOSinstance {
* (gate node, gate prime node) */ * (gate node, gate prime node) */
double *VDMOSGPgPtr; /* pointer to sparse matrix element at double *VDMOSGPgPtr; /* pointer to sparse matrix element at
* (gate prime node, gate node) */ * (gate prime node, gate node) */
/* bulk diode */
double *VDIORPdPtr; /* pointer to sparse matrix element at
* (diode prime node, drain node) */
double *VDIODrpPtr; /* pointer to sparse matrix element at
* (drain node, diode prime node) */
double *VDIORPrpPtr; /* pointer to sparse matrix element at
* (diode prime node, diode prime node) */
double *VDIOSrpPtr; /* pointer to sparse matrix element at
* (source node, diode prime node) */
double *VDIORPsPtr; /* pointer to sparse matrix element at
* (diode prime node, source node) */
} VDMOSinstance ; } VDMOSinstance ;

7
src/spicelib/devices/vdmos/vdmosload.c

@ -886,6 +886,13 @@ VDMOSload(GENmodel *inModel, CKTcircuit *ckt)
*(here->DIOposPrimePosPtr) -= gspr; *(here->DIOposPrimePosPtr) -= gspr;
*(here->DIOposPrimeNegPtr) -= gd; *(here->DIOposPrimeNegPtr) -= gd;
*/ */
*(here->VDMOSSsPtr) += gspr;
*(here->VDMOSDdPtr) += gd;
*(here->VDIORPrpPtr) += (gd + gspr);
*(here->VDIOSrpPtr) -= gspr;
*(here->VDIODrpPtr) -= gd;
*(here->VDIOSrpPtr) -= gspr;
*(here->VDIORPdPtr) -= gd;
} }
} }
return(OK); return(OK);

5
src/spicelib/devices/vdmos/vdmosset.c

@ -266,6 +266,11 @@ do { if((here->ptr = SMPmakeElt(matrix, here->first, here->second)) == NULL){\
TSTALLOC(VDMOSGgpPtr, VDMOSgNode, VDMOSgNodePrime); TSTALLOC(VDMOSGgpPtr, VDMOSgNode, VDMOSgNodePrime);
TSTALLOC(VDMOSGPgPtr, VDMOSgNodePrime, VDMOSgNode); TSTALLOC(VDMOSGPgPtr, VDMOSgNodePrime, VDMOSgNode);
TSTALLOC(VDIORPdPtr, VDIOposPrimeNode, VDMOSdNode);
TSTALLOC(VDIODrpPtr, VDMOSdNode, VDIOposPrimeNode);
TSTALLOC(VDIOSrpPtr, VDMOSsNode, VDIOposPrimeNode);
TSTALLOC(VDIORPsPtr, VDIOposPrimeNode, VDMOSsNode);
TSTALLOC(VDIORPrpPtr, VDIOposPrimeNode, VDIOposPrimeNode);
} }
} }
return(OK); return(OK);

Loading…
Cancel
Save