Corrected an error in reworking verilog instances to add pins that

were implicit in the first instances but made explicit in a later
one.  If more than one such implicit pin was handled for the same
cell, then the pin count would become wrong and rather unpredictable
behavior results.
This commit is contained in:
Tim Edwards 2022-06-26 22:16:03 -04:00
parent a795981eff
commit 7550ef9258
3 changed files with 7 additions and 2 deletions

View File

@ -1 +1 @@
1.5.225
1.5.226

View File

@ -875,7 +875,11 @@ struct FormattedList *FormatBadNodeFragment(struct Node *N)
for (n = pins[i]->subelement->element->nodelist; n != NULL; n = n->next){
if (n->pin_magic == pins[i]->subelement->pin_magic) {
if ((permute == 0) && (ob->instance.name != NULL)) {
pinname = ob->name + strlen(ob->instance.name) + 1;
/* Handle "port_match_error" */
if ((ob->name[0] == 'p') && !strcmp(ob->name, "port_match_error"))
pinname = ob->name;
else
pinname = ob->name + strlen(ob->instance.name) + 1;
}
else if (ob->instance.name != NULL) {
char *pinsave = pinname;

View File

@ -2232,6 +2232,7 @@ nextinst:
Node(scan->net);
join(scan->net, nobj->name);
scan->flags |= PORT_FOUND;
obptr = nobj;
/* Now any previous instance of the same cell must */
/* insert the same additional pin as a no-connect. */