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:
parent
adda4092d6
commit
5fcd4441c1
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue