Corrected the "extresist" command behavior to ensure that

transistor records match between the ".ext" file and the ".res.ext"
file for the number of terminals per device.  Previously, the first
device type for the layer type was always being used, and if it had
fewer terminals (e.g., a MOScap), then one terminal would go missing
in the output.
This commit is contained in:
Tim Edwards 2023-02-13 10:57:43 -05:00
parent adda4092d6
commit 5fcd4441c1
2 changed files with 33 additions and 2 deletions

View File

@ -1 +1 @@
8.3.365
8.3.366

View File

@ -114,7 +114,7 @@ ResPrintExtDev(outextfile, devices)
{
TileType t;
char *subsName;
ExtDevice *devptr;
ExtDevice *devptr, *devtest;
for (; devices != NULL; devices = devices->nextDev)
{
@ -124,6 +124,37 @@ ResPrintExtDev(outextfile, devices)
{
t = devices->layout->rd_devtype;
devptr = ExtCurStyle->exts_device[t];
/* Make sure the number of S/D terminals matches for */
/* the device record. */
if ((devices->drain == NULL) && (devptr->exts_deviceSDCount == 2))
{
/* Check if there is a compatible device */
/* with 2 terminals */
for (devtest = devptr->exts_next; devtest;
devtest = devtest->exts_next)
if (devtest->exts_deviceSDCount == 1)
{
devptr = devtest;
break;
}
}
else if ((devices->drain != NULL) && (devptr->exts_deviceSDCount == 1))
{
/* Check if there is a compatible device */
/* with 3 terminals */
for (devtest = devptr->exts_next; devtest;
devtest = devtest->exts_next)
if (devtest->exts_deviceSDCount == 2)
{
devptr = devtest;
break;
}
}
subsName = devptr->exts_deviceSubstrateName;
#ifdef MAGIC_WRAPPER