Two improvements: (1) Command extension "ext2spice lvs" sets up
all the settings normally used for LVS (hierarchy on, cthresh infinite, subcircuit top auto, etc.). (2) Extract and extract unique ignore cells marked as abstract views (property LEFview is set) when checking for unconnected nets with the same name label.
This commit is contained in:
parent
fa17436fef
commit
6f8ec21a11
|
|
@ -211,7 +211,8 @@ Exttospice_Init(interp)
|
|||
#define EXTTOSPC_BLACKBOX 11
|
||||
#define EXTTOSPC_RENUMBER 12
|
||||
#define EXTTOSPC_MERGENAMES 13
|
||||
#define EXTTOSPC_HELP 14
|
||||
#define EXTTOSPC_LVS 14
|
||||
#define EXTTOSPC_HELP 15
|
||||
|
||||
void
|
||||
CmdExtToSpice(w, cmd)
|
||||
|
|
@ -262,6 +263,7 @@ CmdExtToSpice(w, cmd)
|
|||
"renumber [on|off] on = number instances X1, X2, etc.\n"
|
||||
" off = keep instance ID names",
|
||||
"global [on|off] on = merge unconnected global nets by name",
|
||||
"lvs apply typical default settings for LVS",
|
||||
"help print help information",
|
||||
NULL
|
||||
};
|
||||
|
|
@ -418,6 +420,27 @@ CmdExtToSpice(w, cmd)
|
|||
esMergeNames = FALSE;
|
||||
break;
|
||||
|
||||
case EXTTOSPC_LVS:
|
||||
/* Apply default command settings for LVS */
|
||||
/* hierarchy = on */
|
||||
/* format = ngspice */
|
||||
/* cthresh = infinite */
|
||||
/* rthresh = infinite */
|
||||
/* renumber = off */
|
||||
/* scale = off */
|
||||
/* blackbox = on */
|
||||
/* subcircuit top = auto */
|
||||
|
||||
esDoHierarchy = TRUE;
|
||||
esFormat = NGSPICE;
|
||||
LocCapThreshold = (EFCapValue)INFINITE_THRESHOLD_F;
|
||||
LocResistThreshold = INFINITE_THRESHOLD;
|
||||
esDoRenumber = FALSE;
|
||||
esScale = 0.0;
|
||||
esDoBlackBox = TRUE;
|
||||
esDoSubckt = 2;
|
||||
break;
|
||||
|
||||
case EXTTOSPC_SUBCIRCUITS:
|
||||
if (cmd->tx_argc == 2)
|
||||
{
|
||||
|
|
@ -489,7 +512,7 @@ CmdExtToSpice(w, cmd)
|
|||
if (idx < 0)
|
||||
{
|
||||
Tcl_SetResult(magicinterp, "Bad format type. Formats are:"
|
||||
"spice2, spice3, and hspice.", NULL);
|
||||
"spice2, spice3, hspice, and ngspice.", NULL);
|
||||
return;
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -262,11 +262,17 @@ extBasic(def, outFile)
|
|||
if (!SigInterruptPending)
|
||||
ExtLabelRegions(def, ExtCurStyle->exts_nodeConn, &nodeList, &TiPlaneRect);
|
||||
|
||||
/* Check for "LEFview", for which special output handling */
|
||||
/* can be specified in ext2spice. */
|
||||
|
||||
DBPropGet(def, "LEFview", &isabstract);
|
||||
|
||||
/*
|
||||
* Make sure all geometry with the same label is part of the
|
||||
* same electrical node.
|
||||
* same electrical node. However: Unconnected labels are allowed
|
||||
* on abstract views.
|
||||
*/
|
||||
if (!SigInterruptPending && (ExtDoWarn & EXTWARN_DUP))
|
||||
if (!SigInterruptPending && (ExtDoWarn & EXTWARN_DUP) && !isabstract)
|
||||
extFindDuplicateLabels(def, nodeList);
|
||||
|
||||
/*
|
||||
|
|
@ -306,10 +312,6 @@ extBasic(def, outFile)
|
|||
}
|
||||
}
|
||||
|
||||
/* Check for "LEFview", for which special output handling */
|
||||
/* can be specified in ext2spice. */
|
||||
|
||||
DBPropGet(def, "LEFview", &isabstract);
|
||||
if (isabstract) fprintf(outFile, "abstract\n");
|
||||
|
||||
/* Output each node, along with its resistance and capacitance to substrate */
|
||||
|
|
|
|||
|
|
@ -85,8 +85,14 @@ extUniqueCell(def, option)
|
|||
Label *lab;
|
||||
char *text;
|
||||
int nwarn;
|
||||
bool isabstract;
|
||||
|
||||
nwarn = 0;
|
||||
|
||||
/* Check for "LEFview", as we do not care about unique names in abstract views */
|
||||
DBPropGet(def, "LEFview", &isabstract);
|
||||
if (isabstract) return nwarn;
|
||||
|
||||
HashInit(&labelHash, 32, HT_STRINGKEYS);
|
||||
TxPrintf("Processing %s\n", def->cd_name);
|
||||
TxFlush();
|
||||
|
|
|
|||
Loading…
Reference in New Issue