Browse Source

allow geometry scaling by option `scale'

pre-master-46
dwarning 13 years ago
committed by rlar
parent
commit
921aca9d7e
  1. 18
      src/spicelib/devices/bsim4/b4par.c
  2. 18
      src/spicelib/devices/bsimsoi/b4soipar.c
  3. 18
      src/spicelib/devices/hisim2/hsm2par.c
  4. 18
      src/spicelib/devices/hisimhv1/hsmhvpar.c
  5. 18
      src/spicelib/devices/mos1/mos1par.c
  6. 18
      src/spicelib/devices/mos2/mos2par.c
  7. 18
      src/spicelib/devices/mos3/mos3par.c

18
src/spicelib/devices/bsim4/b4par.c

@ -19,6 +19,7 @@
#include "bsim4def.h"
#include "ngspice/sperror.h"
#include "ngspice/suffix.h"
#include "ngspice/fteext.h"
int
BSIM4param(
@ -27,17 +28,22 @@ IFvalue *value,
GENinstance *inst,
IFvalue *select)
{
double scale;
BSIM4instance *here = (BSIM4instance*)inst;
NG_IGNORE(select);
if (!cp_getvar("scale", CP_REAL, &scale))
scale = 1;
switch(param)
{ case BSIM4_W:
here->BSIM4w = value->rValue;
here->BSIM4w = value->rValue * scale;
here->BSIM4wGiven = TRUE;
break;
case BSIM4_L:
here->BSIM4l = value->rValue;
here->BSIM4l = value->rValue * scale;
here->BSIM4lGiven = TRUE;
break;
case BSIM4_M:
@ -53,19 +59,19 @@ IFvalue *select)
here->BSIM4minGiven = TRUE;
break;
case BSIM4_AS:
here->BSIM4sourceArea = value->rValue;
here->BSIM4sourceArea = value->rValue * scale * scale;
here->BSIM4sourceAreaGiven = TRUE;
break;
case BSIM4_AD:
here->BSIM4drainArea = value->rValue;
here->BSIM4drainArea = value->rValue * scale * scale;
here->BSIM4drainAreaGiven = TRUE;
break;
case BSIM4_PS:
here->BSIM4sourcePerimeter = value->rValue;
here->BSIM4sourcePerimeter = value->rValue * scale;
here->BSIM4sourcePerimeterGiven = TRUE;
break;
case BSIM4_PD:
here->BSIM4drainPerimeter = value->rValue;
here->BSIM4drainPerimeter = value->rValue * scale;
here->BSIM4drainPerimeterGiven = TRUE;
break;
case BSIM4_NRS:

18
src/spicelib/devices/bsimsoi/b4soipar.c

@ -19,6 +19,7 @@
#include "b4soidef.h"
#include "ngspice/sperror.h"
#include "ngspice/suffix.h"
#include "ngspice/fteext.h"
int
B4SOIparam(
@ -27,17 +28,22 @@ IFvalue *value,
GENinstance *inst,
IFvalue *select)
{
double scale;
B4SOIinstance *here = (B4SOIinstance*)inst;
NG_IGNORE(select);
if (!cp_getvar("scale", CP_REAL, &scale))
scale = 1;
switch(param)
{ case B4SOI_W:
here->B4SOIw = value->rValue;
here->B4SOIw = value->rValue * scale;
here->B4SOIwGiven = TRUE;
break;
case B4SOI_L:
here->B4SOIl = value->rValue;
here->B4SOIl = value->rValue * scale;
here->B4SOIlGiven = TRUE;
break;
case B4SOI_M:
@ -45,19 +51,19 @@ IFvalue *select)
here->B4SOImGiven = TRUE;
break;
case B4SOI_AS:
here->B4SOIsourceArea = value->rValue;
here->B4SOIsourceArea = value->rValue * scale * scale;
here->B4SOIsourceAreaGiven = TRUE;
break;
case B4SOI_AD:
here->B4SOIdrainArea = value->rValue;
here->B4SOIdrainArea = value->rValue * scale * scale;
here->B4SOIdrainAreaGiven = TRUE;
break;
case B4SOI_PS:
here->B4SOIsourcePerimeter = value->rValue;
here->B4SOIsourcePerimeter = value->rValue * scale;
here->B4SOIsourcePerimeterGiven = TRUE;
break;
case B4SOI_PD:
here->B4SOIdrainPerimeter = value->rValue;
here->B4SOIdrainPerimeter = value->rValue * scale;
here->B4SOIdrainPerimeterGiven = TRUE;
break;
case B4SOI_NRS:

18
src/spicelib/devices/hisim2/hsm2par.c

@ -20,6 +20,7 @@
#include "hsm2def.h"
#include "ngspice/sperror.h"
#include "ngspice/suffix.h"
#include "ngspice/fteext.h"
int HSM2param(
int param,
@ -27,33 +28,38 @@ int HSM2param(
GENinstance *inst,
IFvalue *select)
{
double scale;
HSM2instance *here = (HSM2instance*)inst;
NG_IGNORE(select);
if (!cp_getvar("scale", CP_REAL, &scale))
scale = 1;
switch (param) {
case HSM2_W:
here->HSM2_w = value->rValue;
here->HSM2_w = value->rValue * scale;
here->HSM2_w_Given = TRUE;
break;
case HSM2_L:
here->HSM2_l = value->rValue;
here->HSM2_l = value->rValue * scale;
here->HSM2_l_Given = TRUE;
break;
case HSM2_AS:
here->HSM2_as = value->rValue;
here->HSM2_as = value->rValue * scale * scale;
here->HSM2_as_Given = TRUE;
break;
case HSM2_AD:
here->HSM2_ad = value->rValue;
here->HSM2_ad = value->rValue * scale * scale;
here->HSM2_ad_Given = TRUE;
break;
case HSM2_PS:
here->HSM2_ps = value->rValue;
here->HSM2_ps = value->rValue * scale;
here->HSM2_ps_Given = TRUE;
break;
case HSM2_PD:
here->HSM2_pd = value->rValue;
here->HSM2_pd = value->rValue * scale;
here->HSM2_pd_Given = TRUE;
break;
case HSM2_NRS:

18
src/spicelib/devices/hisimhv1/hsmhvpar.c

@ -20,6 +20,7 @@
#include "hsmhvdef.h"
#include "ngspice/sperror.h"
#include "ngspice/suffix.h"
#include "ngspice/fteext.h"
int HSMHVparam(
int param,
@ -27,10 +28,15 @@ int HSMHVparam(
GENinstance *inst,
IFvalue *select)
{
double scale;
HSMHVinstance *here = (HSMHVinstance*)inst;
NG_IGNORE(select);
if (!cp_getvar("scale", CP_REAL, &scale))
scale = 1;
switch (param) {
case HSMHV_COSELFHEAT:
here->HSMHV_coselfheat = value->iValue;
@ -41,27 +47,27 @@ int HSMHVparam(
here->HSMHV_cosubnode_Given = TRUE;
break;
case HSMHV_W:
here->HSMHV_w = value->rValue;
here->HSMHV_w = value->rValue * scale;
here->HSMHV_w_Given = TRUE;
break;
case HSMHV_L:
here->HSMHV_l = value->rValue;
here->HSMHV_l = value->rValue * scale;
here->HSMHV_l_Given = TRUE;
break;
case HSMHV_AS:
here->HSMHV_as = value->rValue;
here->HSMHV_as = value->rValue * scale * scale;
here->HSMHV_as_Given = TRUE;
break;
case HSMHV_AD:
here->HSMHV_ad = value->rValue;
here->HSMHV_ad = value->rValue * scale * scale;
here->HSMHV_ad_Given = TRUE;
break;
case HSMHV_PS:
here->HSMHV_ps = value->rValue;
here->HSMHV_ps = value->rValue * scale;
here->HSMHV_ps_Given = TRUE;
break;
case HSMHV_PD:
here->HSMHV_pd = value->rValue;
here->HSMHV_pd = value->rValue * scale;
here->HSMHV_pd_Given = TRUE;
break;
case HSMHV_NRS:

18
src/spicelib/devices/mos1/mos1par.c

@ -12,16 +12,22 @@ Modified: 2000 AlansFixes
#include "mos1defs.h"
#include "ngspice/sperror.h"
#include "ngspice/suffix.h"
#include "ngspice/fteext.h"
/* ARGSUSED */
int
MOS1param(int param, IFvalue *value, GENinstance *inst, IFvalue *select)
{
double scale;
MOS1instance *here = (MOS1instance *)inst;
NG_IGNORE(select);
if (!cp_getvar("scale", CP_REAL, &scale))
scale = 1;
switch(param) {
case MOS1_TEMP:
here->MOS1temp = value->rValue+CONSTCtoK;
@ -36,27 +42,27 @@ MOS1param(int param, IFvalue *value, GENinstance *inst, IFvalue *select)
here->MOS1mGiven = TRUE;
break;
case MOS1_W:
here->MOS1w = value->rValue;
here->MOS1w = value->rValue * scale;
here->MOS1wGiven = TRUE;
break;
case MOS1_L:
here->MOS1l = value->rValue;
here->MOS1l = value->rValue * scale;
here->MOS1lGiven = TRUE;
break;
case MOS1_AS:
here->MOS1sourceArea = value->rValue;
here->MOS1sourceArea = value->rValue * scale * scale;
here->MOS1sourceAreaGiven = TRUE;
break;
case MOS1_AD:
here->MOS1drainArea = value->rValue;
here->MOS1drainArea = value->rValue * scale * scale;
here->MOS1drainAreaGiven = TRUE;
break;
case MOS1_PS:
here->MOS1sourcePerimiter = value->rValue;
here->MOS1sourcePerimiter = value->rValue * scale;
here->MOS1sourcePerimiterGiven = TRUE;
break;
case MOS1_PD:
here->MOS1drainPerimiter = value->rValue;
here->MOS1drainPerimiter = value->rValue * scale;
here->MOS1drainPerimiterGiven = TRUE;
break;
case MOS1_NRS:

18
src/spicelib/devices/mos2/mos2par.c

@ -12,6 +12,7 @@ Modified: 2000 AlansFixes
#include "mos2defs.h"
#include "ngspice/sperror.h"
#include "ngspice/suffix.h"
#include "ngspice/fteext.h"
/* ARGSUSED */
@ -19,10 +20,15 @@ int
MOS2param(int param, IFvalue *value, GENinstance *inst,
IFvalue *select)
{
double scale;
MOS2instance *here = (MOS2instance *)inst;
NG_IGNORE(select);
if (!cp_getvar("scale", CP_REAL, &scale))
scale = 1;
switch(param) {
case MOS2_TEMP:
here->MOS2temp = value->rValue+CONSTCtoK;
@ -37,27 +43,27 @@ MOS2param(int param, IFvalue *value, GENinstance *inst,
here->MOS2mGiven = TRUE;
break;
case MOS2_W:
here->MOS2w = value->rValue;
here->MOS2w = value->rValue * scale;
here->MOS2wGiven = TRUE;
break;
case MOS2_L:
here->MOS2l = value->rValue;
here->MOS2l = value->rValue * scale;
here->MOS2lGiven = TRUE;
break;
case MOS2_AS:
here->MOS2sourceArea = value->rValue;
here->MOS2sourceArea = value->rValue * scale * scale;
here->MOS2sourceAreaGiven = TRUE;
break;
case MOS2_AD:
here->MOS2drainArea = value->rValue;
here->MOS2drainArea = value->rValue * scale * scale;
here->MOS2drainAreaGiven = TRUE;
break;
case MOS2_PS:
here->MOS2sourcePerimiter = value->rValue;
here->MOS2sourcePerimiter = value->rValue * scale;
here->MOS2sourcePerimiterGiven = TRUE;
break;
case MOS2_PD:
here->MOS2drainPerimiter = value->rValue;
here->MOS2drainPerimiter = value->rValue * scale;
here->MOS2drainPerimiterGiven = TRUE;
break;
case MOS2_NRS:

18
src/spicelib/devices/mos3/mos3par.c

@ -12,16 +12,22 @@ Modified: 2000 AlansFixes
#include "mos3defs.h"
#include "ngspice/sperror.h"
#include "ngspice/suffix.h"
#include "ngspice/fteext.h"
/* ARGSUSED */
int
MOS3param(int param, IFvalue *value, GENinstance *inst, IFvalue *select)
{
double scale;
MOS3instance *here = (MOS3instance *)inst;
NG_IGNORE(select);
if (!cp_getvar("scale", CP_REAL, &scale))
scale = 1;
switch(param) {
case MOS3_M:
@ -29,27 +35,27 @@ MOS3param(int param, IFvalue *value, GENinstance *inst, IFvalue *select)
here->MOS3mGiven = TRUE;
break;
case MOS3_W:
here->MOS3w = value->rValue;
here->MOS3w = value->rValue * scale;
here->MOS3wGiven = TRUE;
break;
case MOS3_L:
here->MOS3l = value->rValue;
here->MOS3l = value->rValue * scale;
here->MOS3lGiven = TRUE;
break;
case MOS3_AS:
here->MOS3sourceArea = value->rValue;
here->MOS3sourceArea = value->rValue * scale * scale;
here->MOS3sourceAreaGiven = TRUE;
break;
case MOS3_AD:
here->MOS3drainArea = value->rValue;
here->MOS3drainArea = value->rValue * scale * scale;
here->MOS3drainAreaGiven = TRUE;
break;
case MOS3_PS:
here->MOS3sourcePerimiter = value->rValue;
here->MOS3sourcePerimiter = value->rValue * scale;
here->MOS3sourcePerimiterGiven = TRUE;
break;
case MOS3_PD:
here->MOS3drainPerimiter = value->rValue;
here->MOS3drainPerimiter = value->rValue * scale;
here->MOS3drainPerimiterGiven = TRUE;
break;
case MOS3_NRS:

Loading…
Cancel
Save