Modified the handling of zero-valued resistors and voltage sources
so that they are *not* removed to make a better match if they are shorting across two ports. If removed, then the port lists will get screwed up. It is better to let the subcircuits fail matching. Then, after the mismatched subcircuits are flattened, if the zero- valued resistor or voltage source no longer connects two ports, it can be safely removed to make a better match.
This commit is contained in:
parent
b1374e2bc8
commit
619409556c
|
|
@ -1948,6 +1948,29 @@ PrematchLists(char *name1, int file1, char *name2, int file2)
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Do NOT remove shorting devices that */
|
||||
/* connect two ports. Otherwise the */
|
||||
/* port lists get screwed up. It is */
|
||||
/* better in that case to force the */
|
||||
/* cells to be declared mismatched. */
|
||||
|
||||
if (ecomp->cell1->class != CLASS_ISOURCE) {
|
||||
int found1 = FALSE;
|
||||
int found2 = FALSE;
|
||||
for (ob2 = tc1->cell; ob2; ob2 = ob2->next) {
|
||||
if (!IsPort(ob2)) break;
|
||||
else if (ob2->node == node1)
|
||||
found1 = TRUE;
|
||||
else if (ob2->node == node2)
|
||||
found2 = TRUE;
|
||||
if (found1 && found2) {
|
||||
found = FALSE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (found) break;
|
||||
}
|
||||
if (found) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue