diff --git a/src/spicelib/parser/inp2q.c b/src/spicelib/parser/inp2q.c index e6f28ade7..f3c79b49d 100644 --- a/src/spicelib/parser/inp2q.c +++ b/src/spicelib/parser/inp2q.c @@ -58,8 +58,9 @@ void INP2Q(CKTcircuit *ckt, INPtables * tab, card * current, CKTnode *gnode) printf("INP2Q: Parsing '%s'\n", current->line); #endif - nodeflag = 4; /* initially specify a 4 terminal device */ + nodeflag = 4; /* initially specify a 4 terminal device */ line = current->line; + INPgetTok(&line, &name, 1); INPinsert(&name, tab); @@ -105,45 +106,49 @@ void INP2Q(CKTcircuit *ckt, INPtables * tab, card * current, CKTnode *gnode) printf("INP2Q: Looking up model\n"); #endif - if (thismodel->INPmodType != INPtypelook("BJT") && + if (thismodel->INPmodType != INPtypelook("BJT") && #ifdef CIDER - thismodel->INPmodType != INPtypelook("NBJT") && - thismodel->INPmodType != INPtypelook("NBJT2") && + thismodel->INPmodType != INPtypelook("NBJT") && + thismodel->INPmodType != INPtypelook("NBJT2") && #endif #ifdef ADMS - thismodel->INPmodType != INPtypelook("hicum0") && - thismodel->INPmodType != INPtypelook("hicum2") && - thismodel->INPmodType != INPtypelook("bjt504t") && + thismodel->INPmodType != INPtypelook("hicum0") && + thismodel->INPmodType != INPtypelook("hicum2") && + thismodel->INPmodType != INPtypelook("bjt504t") && #endif - thismodel->INPmodType != INPtypelook("VBIC")) - { - LITERR("incorrect model type"); - return; - } - if (nodeflag > model_numnodes(thismodel->INPmodType)) - { - LITERR("Too much nodes for this model type"); - return; - } - type = thismodel->INPmodType; - mdfast = thismodel->INPmodfast; + thismodel->INPmodType != INPtypelook("VBIC")) + { + LITERR("incorrect model type"); + return; + } + + if (nodeflag > model_numnodes(thismodel->INPmodType)) + { + LITERR("Too much nodes for this model type"); + return; + } + + type = thismodel->INPmodType; + mdfast = thismodel->INPmodfast; #ifdef TRACE printf("INP2Q: Type: %d nodeflag: %d instancename: %s\n", type, nodeflag, name); #endif + IFC(newInstance, (ckt, mdfast, &fast, name)); for (i = 0; i < nodeflag; i++) IFC(bindNode, (ckt, fast, i + 1, node[i])); PARSECALL((&line, ckt, type, fast, &leadval, &waslead, tab)); + if (waslead) { #ifdef CIDER - if( type == INPtypelook("NBJT2") ) { + if (type == INPtypelook("NBJT2")) { LITERR(" error: no unlabeled parameter permitted on NBJT2\n"); return; } #endif - ptemp.rValue = leadval; - GCA(INPpName, ("area", &ptemp, ckt, type, fast)); - } + ptemp.rValue = leadval; + GCA(INPpName, ("area", &ptemp, ckt, type, fast)); + } }