"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "ext2spice/ext2spice.c" between
magic-8.2.177.tgz and magic-8.2.178.tgz

About: Magic is a VLSI (integrated circuit) layout system. Development version.

ext2spice.c  (magic-8.2.177.tgz):ext2spice.c  (magic-8.2.178.tgz)
skipping to change at line 1501 skipping to change at line 1501
{ {
nodeList[portidx] = nodeName; nodeList[portidx] = nodeName;
} }
} }
} }
for (portidx = 0; portidx <= portmax; portidx++) for (portidx = 0; portidx <= portmax; portidx++)
{ {
nodeName = nodeList[portidx]; nodeName = nodeList[portidx];
if (nodeName == NULL) if (nodeName != NULL)
TxError("No port connection on port %d; need to resolve.\n", por
tidx);
else
{ {
if (tchars > 80) if (tchars > 80)
{ {
fprintf(esSpiceF, "\n+"); fprintf(esSpiceF, "\n+");
tchars = 1; tchars = 1;
} }
tchars += spcdevOutNode(hierName, nodeName->efnn_hier, tchars += spcdevOutNode(hierName, nodeName->efnn_hier,
"subcircuit", esSpiceF); "subcircuit", esSpiceF);
} }
else
{
// As port indexes do not have to be contiguous, this does not
// necessarily indicate an error condition. No need to report?
// TxError("No port connection on port %d; need to resolve.\n",
portidx);
}
} }
freeMagic(nodeList); freeMagic(nodeList);
/* Look for all implicit substrate connections that are */ /* Look for all implicit substrate connections that are */
/* declared as local node names, and put them last. */ /* declared as local node names, and put them last. */
portorder = portmax; portorder = portmax;
while (portorder <= imp_max) while (portorder <= imp_max)
{ {
for (snode = (EFNode *) def->def_firstn.efnode_next; for (snode = (EFNode *) def->def_firstn.efnode_next;
skipping to change at line 1717 skipping to change at line 1721
{ {
/* Port numbers need not start at zero or be contiguous. */ /* Port numbers need not start at zero or be contiguous. */
/* They will be printed in numerical order. */ /* They will be printed in numerical order. */
portorder = 0; portorder = 0;
while (portorder <= portmax) while (portorder <= portmax)
{ {
HashStartSearch(&hs); HashStartSearch(&hs);
while (he = HashNext(&def->def_nodes, &hs)) while (he = HashNext(&def->def_nodes, &hs))
{ {
char stmp[MAX_STR_SIZE];
int portidx; int portidx;
EFNodeName *unnumbered; EFNodeName *unnumbered;
sname = (EFNodeName *) HashGetValue(he); sname = (EFNodeName *) HashGetValue(he);
if (sname == NULL) continue; /* Should not happen */ if (sname == NULL) continue; /* Should not happen */
snode = sname->efnn_node; snode = sname->efnn_node;
if (!(snode->efnode_flags & EF_PORT)) continue; if (!(snode->efnode_flags & EF_PORT)) continue;
for (nodeName = sname; nodeName != NULL; nodeName = nodeName->efn n_next) for (nodeName = sname; nodeName != NULL; nodeName = nodeName->efn n_next)
{ {
portidx = nodeName->efnn_port; portidx = nodeName->efnn_port;
if (portidx == portorder) if (portidx == portorder)
{ {
if (tchars > 80) if (tchars > 80)
{ {
/* Line continuation */ /* Line continuation */
fprintf(esSpiceF, "\n+"); fprintf(esSpiceF, "\n+");
tchars = 1; tchars = 1;
} }
pname = nodeSpiceName(snode->efnode_name->efnn_hier, NULL // If view is abstract, rely on the given port name, not
); // the node. Otherwise, artifacts of the abstract view
// may cause nodes to be merged and the names lost.
if (def->def_flags & DEF_ABSTRACT)
{
EFHNSprintf(stmp, nodeName->efnn_hier);
pname = stmp;
}
else
pname = nodeSpiceName(snode->efnode_name->efnn_hier,
NULL);
fprintf(esSpiceF, " %s", pname); fprintf(esSpiceF, " %s", pname);
tchars += strlen(pname) + 1; tchars += strlen(pname) + 1;
break; break;
} }
else if (portidx < 0) else if (portidx < 0)
unnumbered = nodeName; unnumbered = nodeName;
} }
if (nodeName != NULL) if (nodeName != NULL)
break; break;
else if (portidx < 0) else if (portidx < 0)
 End of changes. 4 change blocks. 
6 lines changed or deleted 21 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)