Modified additional code in ext2spice in the subcircuit instance

output which matches the code for the subcircuit definition output,
so that the pin order matches between the two.  The previous fix
prevented pins from going missing in the subcircuit definition,
but didn't match that change in the instances.  This should
resolve github issue #488.
This commit is contained in:
R. Timothy Edwards 2026-02-05 17:17:25 -05:00
parent 736c507fe8
commit e2292f5d70
2 changed files with 21 additions and 1 deletions

View File

@ -1 +1 @@
8.3.601
8.3.602

View File

@ -1689,23 +1689,43 @@ subcktVisit(
HashStartSearch(&hs);
while ((he = HashNext(&def->def_nodes, &hs)))
{
bool found = FALSE;
sname = (EFNodeName *) HashGetValue(he);
if (sname == NULL) continue;
snode = sname->efnn_node;
if ((snode == NULL) || !(snode->efnode_flags & EF_PORT)) continue;
portidx = snode->efnode_name->efnn_port;
if (portidx >= 0)
{
if (nodeList[portidx] == NULL)
{
nodeList[portidx] = snode->efnode_name;
found = TRUE;
}
}
/* Normally there should be a port associated with snode, but
* if not, go looking for one in the node name aliases.
*/
for (nodeName = sname; nodeName != NULL; nodeName = nodeName->efnn_next)
{
if (found == TRUE) break;
portidx = nodeName->efnn_port;
if (portidx < 0) continue;
if (nodeList[portidx] == NULL)
{
nodeList[portidx] = nodeName;
found = TRUE;
}
else if (EFHNBest(nodeName->efnn_hier, nodeList[portidx]->efnn_hier))
{
nodeList[portidx] = nodeName;
found = TRUE;
}
}
}