Changed behavior of MatchPins so that disconnected pins that are to
be removed because they do not match pins on the other cell being compared, are marked with a different number (-2) than the usual (-1). CleanupPins then only removes those pins that are marked, rather than all disconnected pins.
This commit is contained in:
parent
44673a04b6
commit
39b3bb4d96
|
|
@ -1166,7 +1166,7 @@ struct nlist *cleanuppins(struct hashlist *p, void *clientdata)
|
|||
while (ob && obt && (ob->type > FIRSTPIN || ob == firstpin) &&
|
||||
ob->model.class != NULL) {
|
||||
nob = ob->next;
|
||||
if ((obt->type == PORT) && (obt->node == -1)) {
|
||||
if ((obt->type == PORT) && (obt->node == -2)) {
|
||||
|
||||
/* Remove this pin */
|
||||
|
||||
|
|
@ -1238,7 +1238,7 @@ int CleanupPins(char *name, int filenum)
|
|||
|
||||
for (ob = ThisCell->cell; ob != NULL; ob = ob->next) {
|
||||
if (ob->type != PORT) break;
|
||||
if (ob->node == -1) {
|
||||
if (ob->node == -2) {
|
||||
needscleanup = 1;
|
||||
break;
|
||||
}
|
||||
|
|
@ -1265,7 +1265,7 @@ int CleanupPins(char *name, int filenum)
|
|||
}
|
||||
else if (ob->type != PORT) break;
|
||||
nob = ob->next;
|
||||
if (ob->node == -1) {
|
||||
if (ob->node == -2) {
|
||||
if (lob == NULL) {
|
||||
ThisCell->cell = ob->next;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6729,7 +6729,7 @@ int MatchPins(struct nlist *tc1, struct nlist *tc2, int dolist)
|
|||
/* Make a pass through circuit 1 to find out if */
|
||||
/* the pin really is connected to anything, or */
|
||||
/* has been left orphaned after flattening. If */
|
||||
/* disconnected, set its node number to -1. */
|
||||
/* disconnected, set its node number to -2. */
|
||||
|
||||
for (obt = ob1->next; obt; obt = obt->next) {
|
||||
if (obt->type >= FIRSTPIN)
|
||||
|
|
@ -6737,7 +6737,7 @@ int MatchPins(struct nlist *tc1, struct nlist *tc2, int dolist)
|
|||
break;
|
||||
}
|
||||
if (obt == NULL) {
|
||||
ob1->node = -1; // Will run this through cleanuppins
|
||||
ob1->node = -2; // Will run this through cleanuppins
|
||||
needclean1 = 1;
|
||||
}
|
||||
}
|
||||
|
|
@ -6884,7 +6884,7 @@ int MatchPins(struct nlist *tc1, struct nlist *tc2, int dolist)
|
|||
break;
|
||||
}
|
||||
if (obt == NULL) {
|
||||
ob2->node = -1; // Will run this through cleanuppins
|
||||
ob2->node = -2; // Will run this through cleanuppins
|
||||
needclean2 = 1;
|
||||
continue;
|
||||
}
|
||||
|
|
@ -6986,6 +6986,7 @@ int MatchPins(struct nlist *tc1, struct nlist *tc2, int dolist)
|
|||
else if (ob1 != NULL && ob1->type == PORT) {
|
||||
/* Disconnected node was not meaningful, has no pin match in */
|
||||
/* the compared circuit, and so should be discarded. */
|
||||
ob1->node = -2;
|
||||
needclean1 = 1;
|
||||
|
||||
/* Adjust numbering around removed node */
|
||||
|
|
|
|||
Loading…
Reference in New Issue