inp2m.c, #3/9c, abstraction, introduce model_numnodes()

Note:
  This commit does not change behaviour in any way,
    yet one can instantly see some sickness now.
  Some of the models definitely do not have 7 nodes,
  Actually we would like to fetch the number of terminals from
    struct IFdevice, slot terms or slot numNames
  But it turns out several models publish bogus values.
  For example "B4SOI", which has 7 nodes, but claims to have 8
This commit is contained in:
rlar 2017-03-07 20:47:58 +01:00
parent 3bb68fbd7a
commit 396441e1ea
1 changed files with 19 additions and 7 deletions

View File

@ -13,6 +13,24 @@ Modified: 2001 Paolo Nenzi (Cider Integration)
#include "inpxx.h"
static int
model_numnodes(int type)
{
if (type == INPtypelook("B4SOI") ||
type == INPtypelook("B3SOIPD") ||
type == INPtypelook("B3SOIFD") ||
type == INPtypelook("B3SOIDD") ||
type == INPtypelook("HiSIMHV1") ||
type == INPtypelook("HiSIMHV2") ||
type == INPtypelook("SOI3"))
{
return 7;
}
return 4;
}
static bool
valid_numnodes(int numnodes, INPmodel *thismodel, card *current)
{
@ -220,13 +238,7 @@ INP2M(CKTcircuit *ckt, INPtables *tab, card *current)
IFC (bindNode, (ckt, fast, 4, node[3]));
/* use type - not thismodel->INPmodType as it might not exist! */
if (type == INPtypelook("B4SOI") ||
type == INPtypelook("B3SOIPD") ||
type == INPtypelook("B3SOIFD") ||
type == INPtypelook("B3SOIDD") ||
type == INPtypelook("HiSIMHV1") ||
type == INPtypelook("HiSIMHV2") ||
type == INPtypelook("SOI3"))
if (model_numnodes(type) > 4)
{
switch (numnodes) {
case 4: