<@U016EM8L91B> Looks like this is caused by the ch...
# verification-be
m
@User Looks like this is caused by the change I suggested and was incorporated in 1.5.205. Removing the disconnected nets immediately after flattening, invalidates the pointer list in some cases. Here's
FlattenUnmatched
from
netcmp.c
with some debug statements I added
Copy code
Fprintf(stdout, "DEBUG: FlattenUnmatched recursing\n");
   changed = 1;
   struct objlist * next_ob = tc->cell;
   while (changed) {
      changed = 0;
      for (ob = tc->cell; ob != NULL; ob = ob->next) {
         next_ob = ob->next;
         tcsub = NULL;
         if (ob->type == FIRSTPIN) {
            /* First check if there is a class equivalent */
            tcsub = LookupCellFile(ob->model.class, tc->file);
            if (!tcsub || (tcsub->class != CLASS_SUBCKT)) continue;
            else if (tcsub == tc) continue;
            if (FlattenUnmatched(tcsub, tc->name, stoplevel, loclevel + 1)) {
               changed = 1;
               break;
            }
         }
         if (next_ob != ob->next) {
            Fprintf(stdout, "DEBUG2: %p %p %d\n", (void *) next_ob, (void *) ob->next, ob->type);
            Fprintf(stdout, "DEBUG2: ob overwrite %s\n", ob->model.class);
         }
      }
   }
   Fprintf(stdout, "DEBUG: FlattenUnmatched done %d\n", loclevel);
I added the
DEBUG2
statements to see if the next pointer unexpectedly changed after recursing. Unfortunately, it does. Looking for a solution now.