Added new statements "connect" and "disconnect" to the extract
section of the tech file, which can be used to alter the layer connectivity tables from the default. This can be used, for example, to disconnect substrate and well from taps, to generate a netlist that checks for soft-connect errors.
This commit is contained in:
parent
a2390167e6
commit
d6d8620a7c
|
|
@ -34,11 +34,15 @@ Convert extracted file(s) to a SPICE format file.
|
|||
(see Summary, below).
|
||||
<DT> <B>default</B>
|
||||
<DD> Reset to default values
|
||||
<DT> <B>format hspice</B>|<B>spice2</B>|<B>spice3</B>|<B>ngspice</B>
|
||||
<DT> <B>format hspice</B>|<B>spice2</B>|<B>spice3</B>|<B>ngspice</B>|<B>cdl</B>
|
||||
<DD> Set output format. <B>spice3</B> is the default,
|
||||
for compatibility with <B>tclspice</B>. This is a
|
||||
change from previous versions of magic, where the
|
||||
default was <B>hspice</B>.
|
||||
default was <B>hspice</B>. <B>ngspice</B> is set as
|
||||
default by the <B>ext2spice lvs</B> option. <B>cdl</B>
|
||||
format incorporates some common syntax used by CDL format
|
||||
files, including placing a slash between a subcircuit's
|
||||
pins and the subcircuit name.
|
||||
<DT> <B>rthresh</B> [<I>value</I>]
|
||||
<DD> Set resistance threshold value. Lumped resistances
|
||||
below this value will not be written to the output. The
|
||||
|
|
@ -46,7 +50,6 @@ Convert extracted file(s) to a SPICE format file.
|
|||
to prohibit writing any lumped resistances to the output.
|
||||
<DT> <B>cthresh</B> [<I>value</I>]
|
||||
<DD> Set capacitance threshold value. The value is in femtofarads,
|
||||
or may be the keyword <B>infinite</B> to prohibit writing
|
||||
any parasitic capacitances to the output.
|
||||
<DT> <B>merge</B> [<I>merge_option</I>]
|
||||
<DD> Merge parallel devices/transistors. The valid merge options are:
|
||||
|
|
@ -235,7 +238,7 @@ Convert extracted file(s) to a SPICE format file.
|
|||
class, and substrate node name for device type <I>device</I>.
|
||||
Resistance classes are indexed by number and must match the
|
||||
definition in the technology file's extract section.
|
||||
<DT> <B>-f spice2</B>|<B>spice3</B>|<B>hspice</B>|<B>ngspice</B>
|
||||
<DT> <B>-f spice2</B>|<B>spice3</B>|<B>hspice</B>|<B>ngspice</B>|<B>cdl</B>
|
||||
<DD> Choose the output SPICE format for compatibility with
|
||||
different versions of SPICE.
|
||||
<DT> <B>-d</B>
|
||||
|
|
|
|||
|
|
@ -78,10 +78,10 @@ void ExtTechScale(int, int);
|
|||
|
||||
typedef enum
|
||||
{
|
||||
AREAC, CONTACT, CSCALE,
|
||||
AREAC, CONNECT, CONTACT, CSCALE,
|
||||
DEFAULTAREACAP, DEFAULTOVERLAP, DEFAULTPERIMETER, DEFAULTSIDEOVERLAP,
|
||||
DEFAULTSIDEWALL,
|
||||
DEVICE, DEVRESIST, FET, FETRESIST, FRINGESHIELDHALO,
|
||||
DEVICE, DEVRESIST, DISCONNECT, FET, FETRESIST, FRINGESHIELDHALO,
|
||||
HEIGHT, ANTENNA, MODEL, TIEDOWN, LAMBDA, OVERC,
|
||||
PERIMC, PLANEORDER, NOPLANEORDER, RESIST, RSCALE, SIDEHALO, SIDEOVERLAP,
|
||||
SIDEWALL, STEP, STYLE, SUBSTRATE, UNITS, VARIANT
|
||||
|
|
@ -100,6 +100,9 @@ static const keydesc keyTable[] = {
|
|||
{"areacap", AREAC, 3, 3,
|
||||
"types capacitance"},
|
||||
|
||||
{"connect", CONNECT, 3, 3,
|
||||
"types1 types1"},
|
||||
|
||||
{"contact", CONTACT, 3, 6,
|
||||
"type resistance"},
|
||||
|
||||
|
|
@ -127,6 +130,9 @@ static const keydesc keyTable[] = {
|
|||
{"devresist", DEVRESIST, 4, 4,
|
||||
"type region ohms-per-square"},
|
||||
|
||||
{"disconnect", DISCONNECT, 3, 3,
|
||||
"types1 types1"},
|
||||
|
||||
{"fet", FET, 8, 9,
|
||||
"types terminal-types min-#-terminals name [subs-types] subs-node gscap gate-chan-cap"},
|
||||
|
||||
|
|
@ -935,16 +941,24 @@ extTechStyleInit(style)
|
|||
}
|
||||
doConvert = FALSE;
|
||||
|
||||
// The exts_globSubstratePlane setting of -1 will be used to set a
|
||||
// backwards-compatibility mode matching previous behavior with
|
||||
// respect to the substrate when there is no "substrate" line in
|
||||
// the techfile.
|
||||
/* The exts_globSubstratePlane setting of -1 will be used to set a
|
||||
* backwards-compatibility mode matching previous behavior with
|
||||
* respect to the substrate when there is no "substrate" line in
|
||||
* the techfile.
|
||||
*/
|
||||
|
||||
style->exts_globSubstratePlane = -1;
|
||||
style->exts_globSubstrateDefaultType = -1;
|
||||
TTMaskZero(&style->exts_globSubstrateTypes);
|
||||
TTMaskZero(&style->exts_globSubstrateShieldTypes);
|
||||
style->exts_globSubstrateName = (char *)NULL;
|
||||
|
||||
/* Initialize exts_nodeConn to match DBConnectTbl, so that "connect"
|
||||
* and "disconnect" statements in the extract section can be used to
|
||||
* modify the defaults.
|
||||
*/
|
||||
for (r = 0; r < NT; r++)
|
||||
style->exts_nodeConn[r] = DBConnectTbl[r];
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1959,7 +1973,7 @@ ExtTechLine(sectionName, argc, argv)
|
|||
TileTypeBitMask types1, types2, termtypes[MAXSD];
|
||||
TileTypeBitMask near, far, ov, shield, subsTypes, idTypes;
|
||||
char *subsName, *transName, *cp, *endptr, *paramName;
|
||||
TileType s, t, r, o;
|
||||
TileType s, t, t2, r, o;
|
||||
const keydesc *kp, *dv;
|
||||
HashEntry *he;
|
||||
EdgeCap *cnew;
|
||||
|
|
@ -2182,10 +2196,12 @@ ExtTechLine(sectionName, argc, argv)
|
|||
switch (kp->k_key)
|
||||
{
|
||||
case AREAC:
|
||||
case CONNECT:
|
||||
case CONTACT:
|
||||
case DEVRESIST:
|
||||
case DISCONNECT:
|
||||
case FET:
|
||||
case FETRESIST:
|
||||
case DEVRESIST:
|
||||
case HEIGHT:
|
||||
case ANTENNA:
|
||||
case TIEDOWN:
|
||||
|
|
@ -2220,6 +2236,19 @@ ExtTechLine(sectionName, argc, argv)
|
|||
ExtCurStyle->exts_overlapMult[0][t] = (float) capVal * FRINGE_MULT;
|
||||
}
|
||||
break;
|
||||
case CONNECT:
|
||||
/* Parse like a line from the "connect" section */
|
||||
DBTechNoisyNameMask(argv[2], &types2);
|
||||
TTMaskSetMask(allExtractTypes, &types2);
|
||||
for (t = 0; t < DBNumTypes; t++)
|
||||
if (TTMaskHasType(&types1, t))
|
||||
for (t2 = 0; t2 < DBNumTypes; t2++)
|
||||
if (TTMaskHasType(&types2, t2))
|
||||
{
|
||||
TTMaskSetType(&ExtCurStyle->exts_nodeConn[t], t2);
|
||||
TTMaskSetType(&ExtCurStyle->exts_nodeConn[t2], t);
|
||||
}
|
||||
break;
|
||||
case CONTACT:
|
||||
/* Contact size, border, spacing deprecated (now taken from */
|
||||
/* cifoutput "squares" generation parameters). */
|
||||
|
|
@ -2252,6 +2281,22 @@ ExtTechLine(sectionName, argc, argv)
|
|||
ExtCurStyle->exts_capScale = 1;
|
||||
}
|
||||
break;
|
||||
case DISCONNECT:
|
||||
/* Parse like a line from the "connect" section; however, */
|
||||
/* "disconnect" overrides an existing connection in the */
|
||||
/* DBConnectTbl array by removing the connection between */
|
||||
/* layers. */
|
||||
DBTechNoisyNameMask(argv[2], &types2);
|
||||
TTMaskSetMask(allExtractTypes, &types2);
|
||||
for (t = 0; t < DBNumTypes; t++)
|
||||
if (TTMaskHasType(&types1, t))
|
||||
for (t2 = 0; t2 < DBNumTypes; t2++)
|
||||
if (TTMaskHasType(&types2, t2))
|
||||
{
|
||||
TTMaskClearType(&ExtCurStyle->exts_nodeConn[t], t2);
|
||||
TTMaskClearType(&ExtCurStyle->exts_nodeConn[t2], t);
|
||||
}
|
||||
break;
|
||||
case FET:
|
||||
|
||||
/* Original FET format, kept for backwards compatibility */
|
||||
|
|
@ -3492,7 +3537,7 @@ extTechFinalStyle(style)
|
|||
|
||||
for (r = TT_TECHDEPBASE; r < DBNumTypes; r++)
|
||||
{
|
||||
maskBits = style->exts_nodeConn[r] = DBConnectTbl[r];
|
||||
maskBits = style->exts_nodeConn[r];
|
||||
if (!TTMaskHasType(&style->exts_deviceMask, r))
|
||||
{
|
||||
TTMaskZero(&style->exts_deviceConn[r]);
|
||||
|
|
|
|||
Loading…
Reference in New Issue