mirror of
https://github.com/RTimothyEdwards/magic.git
synced 2026-09-03 00:08:46 +02:00
Corrected an error that was causing disconnects in the hierarchical
SPICE netlist output that appears to have come from flags created for writing DEF that inappropriately got set during ext2spice. A redundant call to efAddNodes() was adding confusion by appearing to handle most cases but actually missing some. With the corrected flag, the redundant call is really redundant and can be removed. It has not been tested whether DEF output is affected by the change (DEF output from magic is rarely used, anyway).
This commit is contained in:
+8
-8
@@ -204,7 +204,7 @@ EFFlatBuildOneLevel(def, flags)
|
||||
efFlatRootUse.use_def = efFlatRootDef;
|
||||
|
||||
/* Record all nodes down the hierarchy from here */
|
||||
flatnodeflags = FLATNODE_STDCELL; /* No FLATDNODE_DOWARN flag */
|
||||
flatnodeflags = 0; /* No FLATNODE_DOWARN */
|
||||
efFlatNodes(&efFlatContext, (ClientData)flatnodeflags);
|
||||
|
||||
/* Expand all subcells that contain connectivity information but */
|
||||
@@ -219,10 +219,6 @@ EFFlatBuildOneLevel(def, flags)
|
||||
if ((usecount == 0) && (HashGetNumEntries(&efFlatRootUse.use_def->def_devs) == 0))
|
||||
efFlatRootUse.use_def->def_flags |= DEF_NODEVICES;
|
||||
|
||||
/* Record all local nodes */
|
||||
efAddNodes(&efFlatContext, FALSE);
|
||||
efAddConns(&efFlatContext, TRUE);
|
||||
|
||||
efFlatKills(&efFlatContext);
|
||||
if (!(flags & EF_NONAMEMERGE))
|
||||
efFlatGlob();
|
||||
@@ -297,6 +293,9 @@ EFFlatDone()
|
||||
* Adds node names to the table of flattened node names efNodeHashTable.
|
||||
* May merge nodes from the list efNodeList as per the connection
|
||||
* list hc->hc_use->use_def->def_conns.
|
||||
*
|
||||
* Note:
|
||||
* stdcell = TRUE is only used when writing DEF files.
|
||||
*
|
||||
* ----------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -499,15 +498,15 @@ efAddNodes(hc, stdcell)
|
||||
newnode->efnode_loc.r_ybot = (int)((float)(newnode->efnode_loc.r_ybot) * scale);
|
||||
newnode->efnode_loc.r_ytop = (int)((float)(newnode->efnode_loc.r_ytop) * scale);
|
||||
|
||||
/* Add each name for this node to the hash table */
|
||||
newnode->efnode_name = (EFNodeName *) NULL;
|
||||
|
||||
/* Prepend to global node list */
|
||||
newnode->efnode_next = efNodeList.efnode_next;
|
||||
newnode->efnode_prev = (EFNodeHdr *) &efNodeList;
|
||||
efNodeList.efnode_next->efnhdr_prev = (EFNodeHdr *) newnode;
|
||||
efNodeList.efnode_next = (EFNodeHdr *) newnode;
|
||||
|
||||
/* Add each name for this node to the hash table */
|
||||
newnode->efnode_name = (EFNodeName *) NULL;
|
||||
|
||||
for (nn = node->efnode_name; nn; nn = nn->efnn_next)
|
||||
{
|
||||
/*
|
||||
@@ -557,6 +556,7 @@ efAddNodes(hc, stdcell)
|
||||
newnode->efnode_name = newname;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user