Corrected the pin permutation check for pin matching; previously,

this was not doing the correct cross-check, instead looking in the
same netlist for the permutable pin and checking its node number,
which is useless since the node number is the same by definition
for permutable pins.  This error would result in occasional false
negative results during pin matching, showing matching where pins
are actually not matched.
This commit is contained in:
R. Timothy Edwards 2025-11-07 14:06:22 -05:00
parent dae6919d4f
commit 2ee286efb4
2 changed files with 5 additions and 5 deletions

View File

@ -1 +1 @@
1.5.305
1.5.306

View File

@ -8009,21 +8009,21 @@ int MatchPins(struct nlist *tc1, struct nlist *tc2, int dolist)
*/
for (permute1 = tc1->permutes; permute1; permute1 = permute1->next) {
if ((*matchfunc)(ob1->name, permute1->pin1)) {
ob1a = LookupObject(permute1->pin1, tc1);
ob2a = LookupObject(permute1->pin2, tc2);
break;
}
else if ((*matchfunc)(ob1->name, permute1->pin2)) {
ob1a = LookupObject(permute1->pin2, tc1);
ob2a = LookupObject(permute1->pin1, tc2);
break;
}
}
for (permute2 = tc2->permutes; permute2; permute2 = permute2->next) {
if ((*matchfunc)(ob2->name, permute2->pin1)) {
ob2a = LookupObject(permute2->pin1, tc2);
ob1a = LookupObject(permute2->pin2, tc1);
break;
}
else if ((*matchfunc)(ob2->name, permute2->pin2)) {
ob2a = LookupObject(permute2->pin2, tc2);
ob1a = LookupObject(permute2->pin1, tc1);
break;
}
}