Modified the "extract unique" behavior so that it treats "soft"

connections through the substrate as the same node, and so will
not force different nodes names on the soft connection to be
unique.  This should probably be selectable behavior.  However, as
written, the "extract" command will always merge soft connections,
so giving them unique names just causes problems with "extract".
This commit is contained in:
Tim Edwards 2021-12-04 15:04:01 -05:00
parent 5913643ad0
commit bfdf1227a7
3 changed files with 11 additions and 1 deletions

View File

@ -1 +1 @@
8.3.236
8.3.237

View File

@ -896,6 +896,7 @@ cmdExpandFunc(use, windowMask)
#define UNIQALL 0
#define UNIQTAGGED 1
#define UNIQNOPORTS 2
#define UNIQNOTOPPORTS 3
void
CmdExtract(w, cmd)

View File

@ -77,6 +77,7 @@ extUniqueCell(def, option)
CellDef *def;
int option;
{
NodeRegion *nodeList;
LabRegion *lregList, *lastreg, processedLabel;
LabRegion *lp;
LabelList *ll;
@ -87,6 +88,8 @@ extUniqueCell(def, option)
int nwarn;
bool isabstract;
NodeRegion *extFindNodes(); /* Forward reference */
nwarn = 0;
/* Check for "LEFview", as we do not care about unique names in abstract views */
@ -97,6 +100,11 @@ extUniqueCell(def, option)
TxPrintf("Processing %s\n", def->cd_name);
TxFlush();
/* Find and mark the substrate node. This prevents "soft connections" */
/* through the substrate from being separated into unique names. */
nodeList = extFindNodes(def, (Rect *)NULL, TRUE);
/* Build up a list of nodes and assign them to tiles */
lregList = (LabRegion *) ExtFindRegions(def, &TiPlaneRect,
&ExtCurStyle->exts_activeTypes,
@ -155,6 +163,7 @@ extUniqueCell(def, option)
HashKill(&labelHash);
ExtFreeLabRegions((LabRegion *) lregList);
freeMagic(nodeList);
ExtResetTiles(def, extUnInit);
if (nwarn)
TxError("%s: %d warnings\n", def->cd_name, nwarn);