Added a new special device model name "Short" which enables the

use of a resistor type as a FET extended drain, allowing the
FET drain node to short across to the other side of the resistor
so that the resistor is absorbed into the FET device.  Used with
the GF180MCU process to describe the salicide-block ESD FET types.
This commit is contained in:
Tim Edwards 2022-12-13 16:02:49 -05:00
parent 86b4ac3e4c
commit 53682af668
2 changed files with 31 additions and 2 deletions

View File

@ -1 +1 @@
8.3.351
8.3.352

View File

@ -2005,6 +2005,30 @@ extOutputDevices(def, transList, outFile)
if (!strcmp(devptr->exts_deviceName, "Ignore"))
continue;
/* Model type "Short" in the techfile indicates a device */
/* to short across the first two nodes (the gate and the */
/* source). This solves the specific issue of a transistor */
/* extended drain where the drain is a resistor but the */
/* resistor is part of the model and should not be output. */
if (!strcmp(devptr->exts_deviceName, "Short"))
{
fprintf(outFile, "equiv ");
/* To do: Use parameters to specify which terminals */
/* are shorted. */
/* gate */
node = (NodeRegion *)extGetRegion(reg->treg_tile);
fprintf(outFile, "\"%s\" ", extNodeName(node));
/* First non-gate terminal */
node = (NodeRegion *)extTransRec.tr_termnode[0];
fprintf(outFile, "\"%s\"\n", extNodeName(node));
continue;
}
/* Original-style FET record backward compatibility */
if (devptr->exts_deviceClass != DEV_FET)
fprintf(outFile, "device ");
@ -2916,7 +2940,12 @@ extTransPerimFunc(bp)
}
else
{
TxError("Error: Asymmetric device with multiple terminals!\n");
/* Do not generate error messages on "Ignore" or "Short"
* device types
*/
if (strcmp(extTransRec.tr_devrec->exts_deviceName, "Ignore") &&
strcmp(extTransRec.tr_devrec->exts_deviceName, "Short"))
TxError("Error: Asymmetric device with multiple terminals!\n");
break;
}