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:
parent
5913643ad0
commit
bfdf1227a7
|
|
@ -896,6 +896,7 @@ cmdExpandFunc(use, windowMask)
|
||||||
#define UNIQALL 0
|
#define UNIQALL 0
|
||||||
#define UNIQTAGGED 1
|
#define UNIQTAGGED 1
|
||||||
#define UNIQNOPORTS 2
|
#define UNIQNOPORTS 2
|
||||||
|
#define UNIQNOTOPPORTS 3
|
||||||
|
|
||||||
void
|
void
|
||||||
CmdExtract(w, cmd)
|
CmdExtract(w, cmd)
|
||||||
|
|
|
||||||
|
|
@ -77,6 +77,7 @@ extUniqueCell(def, option)
|
||||||
CellDef *def;
|
CellDef *def;
|
||||||
int option;
|
int option;
|
||||||
{
|
{
|
||||||
|
NodeRegion *nodeList;
|
||||||
LabRegion *lregList, *lastreg, processedLabel;
|
LabRegion *lregList, *lastreg, processedLabel;
|
||||||
LabRegion *lp;
|
LabRegion *lp;
|
||||||
LabelList *ll;
|
LabelList *ll;
|
||||||
|
|
@ -87,6 +88,8 @@ extUniqueCell(def, option)
|
||||||
int nwarn;
|
int nwarn;
|
||||||
bool isabstract;
|
bool isabstract;
|
||||||
|
|
||||||
|
NodeRegion *extFindNodes(); /* Forward reference */
|
||||||
|
|
||||||
nwarn = 0;
|
nwarn = 0;
|
||||||
|
|
||||||
/* Check for "LEFview", as we do not care about unique names in abstract views */
|
/* 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);
|
TxPrintf("Processing %s\n", def->cd_name);
|
||||||
TxFlush();
|
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 */
|
/* Build up a list of nodes and assign them to tiles */
|
||||||
lregList = (LabRegion *) ExtFindRegions(def, &TiPlaneRect,
|
lregList = (LabRegion *) ExtFindRegions(def, &TiPlaneRect,
|
||||||
&ExtCurStyle->exts_activeTypes,
|
&ExtCurStyle->exts_activeTypes,
|
||||||
|
|
@ -155,6 +163,7 @@ extUniqueCell(def, option)
|
||||||
|
|
||||||
HashKill(&labelHash);
|
HashKill(&labelHash);
|
||||||
ExtFreeLabRegions((LabRegion *) lregList);
|
ExtFreeLabRegions((LabRegion *) lregList);
|
||||||
|
freeMagic(nodeList);
|
||||||
ExtResetTiles(def, extUnInit);
|
ExtResetTiles(def, extUnInit);
|
||||||
if (nwarn)
|
if (nwarn)
|
||||||
TxError("%s: %d warnings\n", def->cd_name, nwarn);
|
TxError("%s: %d warnings\n", def->cd_name, nwarn);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue