Corrected the lefRead routine so that LEF annotation works properly

on cells with multiple ports per pin.  As written, the code was
erasing all labels before creating a new port label, which would
erase all previous port labels.  This should have been done only on
the first port.
This commit is contained in:
Tim Edwards 2020-11-23 14:28:46 -05:00
parent 0ad9ac91e3
commit 3a42a1aa58
2 changed files with 4 additions and 2 deletions

View File

@ -1 +1 @@
8.3.87
8.3.88

View File

@ -1385,6 +1385,7 @@ LefReadPin(lefMacro, f, pinname, pinNum, oscale, is_imported)
int pinUse = PORT_USE_DEFAULT;
int pinShape = PORT_SHAPE_DEFAULT;
Label *firstlab;
bool firstport = TRUE;
static char *pin_keys[] = {
"DIRECTION",
@ -1636,13 +1637,14 @@ LefReadPin(lefMacro, f, pinname, pinNum, oscale, is_imported)
if (needRect)
{
if (lab == NULL)
if ((lab == NULL) && (firstport == TRUE))
DBEraseLabelsByContent(lefMacro, NULL, -1, testpin);
LefReadPort(lefMacro, f, testpin, pinNum, pinDir, pinUse,
pinShape, oscale, lab);
}
else
LefSkipSection(f, NULL);
firstport = FALSE;
}
else
LefReadPort(lefMacro, f, testpin, pinNum, pinDir, pinUse,