Corrected an error in ext2spice caused by recent changes, that can

generate an extra node in the extract output that comes out as a
"(none)" node in the SPICE netlist from ext2spice.
This commit is contained in:
Tim Edwards 2019-11-13 13:05:03 -05:00
parent e3624d3e5f
commit 3a6f868efc
2 changed files with 9 additions and 2 deletions

View File

@ -606,7 +606,7 @@ efBuildDevice(def, class, type, r, argc, argv)
Dev *newdev, devtmp; Dev *newdev, devtmp;
DevParam *newparm, *devp, *sparm; DevParam *newparm, *devp, *sparm;
char ptype, *pptr, **av; char ptype, *pptr, **av;
char devhash[24]; char devhash[64];
int argstart = 1; /* start of terminal list in argv[] */ int argstart = 1; /* start of terminal list in argv[] */
bool hasModel = strcmp(type, "None") ? TRUE : FALSE; bool hasModel = strcmp(type, "None") ? TRUE : FALSE;
@ -749,7 +749,7 @@ efBuildDevice(def, class, type, r, argc, argv)
/* Determine if this device has been seen before */ /* Determine if this device has been seen before */
sprintf(devhash, "%dx%d", r->r_xbot, r->r_ybot); sprintf(devhash, "%dx%d%s", r->r_xbot, r->r_ybot, type);
he = HashFind(&def->def_devs, devhash); he = HashFind(&def->def_devs, devhash);
newdev = (Dev *)HashGetValue(he); newdev = (Dev *)HashGetValue(he);
if (newdev) if (newdev)

View File

@ -1686,6 +1686,7 @@ extOutputDevices(def, transList, outFile)
while (TRUE) while (TRUE)
{ {
if (devptr == NULL) break; /* Bad device */
nsd = devptr->exts_deviceSDCount; nsd = devptr->exts_deviceSDCount;
for (termcount = 0; termcount < nsd; termcount++) for (termcount = 0; termcount < nsd; termcount++)
{ {
@ -1726,6 +1727,7 @@ extOutputDevices(def, transList, outFile)
devptr = extDevFindMatch(devptr, t); devptr = extDevFindMatch(devptr, t);
break; break;
} }
if (termcount == nsd) break; /* All terminals accounted for */
} }
if (termcount == nsd) break; /* All terminals accounted for */ if (termcount == nsd) break; /* All terminals accounted for */
if (devptr == deventry) break; /* No other device records available */ if (devptr == deventry) break; /* No other device records available */
@ -1771,6 +1773,11 @@ extOutputDevices(def, transList, outFile)
/* It is not an error condition to have more terminals */ /* It is not an error condition to have more terminals */
/* than the minimum. */ /* than the minimum. */
} }
if (devptr == NULL) {
TxError("Warning: No matching extraction type for device at (%d %d)\n",
reg->treg_tile->ti_ll.p_x, reg->treg_tile->ti_ll.p_y);
continue;
}
/* /*
* Output the transistor record. * Output the transistor record.